[ { "inputs": [ { "internalType": "address", "name": "_feeCollector", "type": "address" }, { "internalType": "address", "name": "__royaltiesReceiver", "type": "address" }, { "internalType": "string", "name": "_initBaseURI", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "group", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "enum WhitelistEquipment.Item", "name": "itemType", "type": "uint8" } ], "name": "MintedAction", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "enum WhitelistEquipment.Item", "name": "group", "type": "uint8" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "tokenURI", "type": "string" } ], "name": "MintedID", "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": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "group", "type": "string" }, { "indexed": false, "internalType": "address", "name": "member", "type": "address" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "qty", "type": "uint256" } ], "name": "WhitelistMemberAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "group", "type": "string" }, { "indexed": false, "internalType": "address", "name": "member", "type": "address" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" } ], "name": "WhitelistMemberRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "group", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" } ], "name": "WhitelistPriceUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "group", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "qty", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" } ], "name": "WhitelistQuantityUpdated", "type": "event" }, { "inputs": [], "name": "ROYALTIES_PERCENTAGE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "address[]", "name": "_members", "type": "address[]" }, { "internalType": "uint256", "name": "_multiplier", "type": "uint256" } ], "name": "addBatchMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "address", "name": "_member", "type": "address" }, { "internalType": "uint256", "name": "_multiplier", "type": "uint256" } ], "name": "addMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "enum WhitelistEquipment.Item", "name": "_itemType", "type": "uint8" }, { "internalType": "uint256", "name": "_itemPrice", "type": "uint256" }, { "internalType": "uint256", "name": "_itemQty", "type": "uint256" }, { "internalType": "uint256", "name": "_maxQty", "type": "uint256" }, { "internalType": "bool", "name": "_isPublic", "type": "bool" }, { "internalType": "bool", "name": "_isActive", "type": "bool" } ], "name": "addWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "address", "name": "_member", "type": "address" }, { "internalType": "uint256", "name": "_qty", "type": "uint256" } ], "name": "canConsume", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "string", "name": "_msgText", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "address", "name": "_member", "type": "address" }, { "internalType": "uint256", "name": "_qty", "type": "uint256" } ], "name": "consume", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "address", "name": "_member", "type": "address" } ], "name": "getConsumed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" } ], "name": "getStatus", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" } ], "name": "getWhitelist", "outputs": [ { "internalType": "enum WhitelistEquipment.Item", "name": "itemType", "type": "uint8" }, { "internalType": "uint256", "name": "itemPrice", "type": "uint256" }, { "internalType": "uint256", "name": "itemQty", "type": "uint256" }, { "internalType": "uint256", "name": "maxQty", "type": "uint256" }, { "internalType": "uint256", "name": "consumedQty", "type": "uint256" }, { "internalType": "uint256", "name": "memberCount", "type": "uint256" }, { "internalType": "bool", "name": "isPublic", "type": "bool" }, { "internalType": "bool", "name": "isActive", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWhitelistArray", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWhitelistCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "address", "name": "_account", "type": "address" } ], "name": "getWhitelistMemberData", "outputs": [ { "internalType": "uint256", "name": "reservedQty", "type": "uint256" }, { "internalType": "uint256", "name": "consumedQty", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "address", "name": "_member", "type": "address" } ], "name": "isWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "string", "name": "_tokenURI", "type": "string" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "address", "name": "_member", "type": "address" } ], "name": "removeMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" } ], "name": "removeWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "royaltiesReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "address", "name": "_member", "type": "address" }, { "internalType": "uint256", "name": "_multiplier", "type": "uint256" } ], "name": "safeAddMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeBurn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "string", "name": "_tokenURI", "type": "string" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "safeMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "setPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "uint256", "name": "_qty", "type": "uint256" } ], "name": "setQuantity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newRoyaltiesReceiver", "type": "address" } ], "name": "setRoyaltiesReceiver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_group", "type": "string" }, { "internalType": "bool", "name": "_status", "type": "bool" } ], "name": "setStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_subContract", "type": "address" } ], "name": "setSubContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "enum WhitelistEquipment.Item", "name": "_itemType", "type": "uint8" } ], "name": "totalOfConsumedQty", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "enum WhitelistEquipment.Item", "name": "_itemType", "type": "uint8" } ], "name": "totalOfItem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a060405261270f6080819052600d553480156200001c57600080fd5b5060405162004c8838038062004c888339810160408190526200003f916200068a565b6040518060400160405280601781526020017f57796e64626c6173742045717569706d656e74204e46540000000000000000008152506040518060400160405280600681526020016515d09153919560d21b815250620000ae620000a8620001bf60201b60201c565b620001c3565b8151620000c3906003906020850190620005c7565b508051620000d9906004906020840190620005c7565b505060408051808201909152601281527145515549504d454e542d50524553414c455360701b6020820152620001229150600066b1a2bc2ec500006101f4600a83600162000213565b60408051808201909152600f81526e45515549504d454e542d53414c455360881b60208201526200016690600066038d7ea4c680006127106103e860018062000213565b601080546001600160a01b0319166001600160a01b03851617905580516200019690600f906020840190620005c7565b5050601280546001600160a01b0319166001600160a01b0392909216919091179055506200092d565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620002735760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b8360008111620002c65760405162461bcd60e51b815260206004820152601760248201527f52657175697265206e6f6e207a65726f206e756d62657200000000000000000060448201526064016200026a565b8360008111620003195760405162461bcd60e51b815260206004820152601760248201527f52657175697265206e6f6e207a65726f206e756d62657200000000000000000060448201526064016200026a565b620003248962000464565b15620003735760405162461bcd60e51b815260206004820152601360248201527f57686974656c697374206973206578697374730000000000000000000000000060448201526064016200026a565b6000620003808962000512565b9050600060028b6040516200039691906200076a565b90815260405190819003602001902060006002820155600180820180549293508c92909160ff19909116908381811115620003d557620003d5620008eb565b021790555060038101899055600481018890556005810187905560006006820181905560078201805461ffff191688151561ff001916176101008815150217905560018054808201825591528b5162000456917fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6019060208e0190620005c7565b505050505050505050505050565b600080805b6001548110156200050b57836040516020016200048791906200076a565b6040516020818303038152906040528051906020012060018281548110620004b357620004b362000901565b90600052602060002001604051602001620004cf919062000788565b604051602081830303815290604052805190602001201415620004f657600191506200050b565b806200050281620008b7565b91505062000469565b5092915050565b600080805b6001548110156200050b5760006002600183815481106200053c576200053c62000901565b9060005260206000200160405162000555919062000788565b908152602001604051809103902090508460018111156200057a576200057a620008eb565b60018083015460ff1690811115620005965762000596620008eb565b1415620005b1576004810154620005ae90846200082c565b92505b5080620005be81620008b7565b91505062000517565b828054620005d5906200087a565b90600052602060002090601f016020900481019282620005f9576000855562000644565b82601f106200061457805160ff191683800117855562000644565b8280016001018555821562000644579182015b828111156200064457825182559160200191906001019062000627565b506200065292915062000656565b5090565b5b8082111562000652576000815560010162000657565b80516001600160a01b03811681146200068557600080fd5b919050565b600080600060608486031215620006a057600080fd5b620006ab846200066d565b9250620006bb602085016200066d565b60408501519092506001600160401b0380821115620006d957600080fd5b818601915086601f830112620006ee57600080fd5b81518181111562000703576200070362000917565b604051601f8201601f19908116603f011681019083821181831017156200072e576200072e62000917565b816040528281528960208487010111156200074857600080fd5b6200075b83602083016020880162000847565b80955050505050509250925092565b600082516200077e81846020870162000847565b9190910192915050565b600080835481600182811c915080831680620007a557607f831692505b6020808410821415620007c657634e487b7160e01b86526022600452602486fd5b818015620007dd5760018114620007ef576200081e565b60ff198616895284890196506200081e565b60008a81526020902060005b86811015620008165781548b820152908501908301620007fb565b505084890196505b509498975050505050505050565b60008219821115620008425762000842620008d5565b500190565b60005b83811015620008645781810151838201526020016200084a565b8381111562000874576000848401525b50505050565b600181811c908216806200088f57607f821691505b60208210811415620008b157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415620008ce57620008ce620008d5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61434b806200093d6000396000f3fe6080604052600436106102935760003560e01c8063715018a61161015a578063c87b56dd116100c1578063e985e9c51161007a578063e985e9c514610821578063ec10172d1461086a578063f188b9071461088c578063f2fde38b146108ac578063fa9807e3146108cc578063ff41506d146108ec57600080fd5b8063c87b56dd14610759578063cba676d714610779578063d298206614610799578063d41d9a27146107ce578063dbf51325146107e1578063e8b5c0bd1461080157600080fd5b8063ac9c700f11610113578063ac9c700f14610685578063acbbd571146106a5578063b0484322146106d9578063b5143715146106f9578063b88d4fde14610719578063ba5040ee1461073957600080fd5b8063715018a6146105ea5780638da5cb5b146105ff57806395d89b411461061d5780639880e93e14610632578063a22cb46514610647578063a3a51bd51461066757600080fd5b80633edff20f116101fe57806355f804b3116101b757806355f804b31461052a578063602149421461054a5780636352211e1461056a578063691a7dde1461058a5780636f9d5c6c146105aa57806370a08231146105ca57600080fd5b80633edff20f1461047557806342842e0e1461048a5780634729d404146104aa5780634cfef7e3146104ca5780634f017844146104ea5780634f6ccce71461050a57600080fd5b806322e011921161025057806322e011921461038857806323b872dd146103a85780632a55205a146103c85780632f745c5914610407578063375436f0146104275780633bbbcd531461045557600080fd5b806301ffc9a71461029857806306fdde03146102cd578063081812fc146102ef578063095ea7b31461032757806318160ddd1461034957806322b05ed214610368575b600080fd5b3480156102a457600080fd5b506102b86102b3366004613829565b61090c565b60405190151581526020015b60405180910390f35b3480156102d957600080fd5b506102e2610937565b6040516102c49190613f02565b3480156102fb57600080fd5b5061030f61030a366004613c17565b6109c9565b6040516001600160a01b0390911681526020016102c4565b34801561033357600080fd5b506103476103423660046137ff565b610a56565b005b34801561035557600080fd5b50600b545b6040519081526020016102c4565b34801561037457600080fd5b506102b861038336600461387e565b610b6c565b34801561039457600080fd5b506103476103a3366004613bd3565b610ba0565b3480156103b457600080fd5b506103476103c336600461371e565b610c2f565b3480156103d457600080fd5b506103e86103e3366004613c30565b610c60565b604080516001600160a01b0390931683526020830191909152016102c4565b34801561041357600080fd5b5061035a6104223660046137ff565b610cb9565b34801561043357600080fd5b506104476104423660046138f6565b610d4f565b6040516102c4929190613e5a565b34801561046157600080fd5b5061035a6104703660046138b2565b610d6f565b34801561048157600080fd5b5060015461035a565b34801561049657600080fd5b506103476104a536600461371e565b610db5565b3480156104b657600080fd5b506103476104c536600461393c565b610dd0565b3480156104d657600080fd5b5061035a6104e5366004613b56565b610f4f565b3480156104f657600080fd5b506103476105053660046138f6565b6111e3565b34801561051657600080fd5b5061035a610525366004613c17565b611300565b34801561053657600080fd5b5061034761054536600461387e565b611393565b34801561055657600080fd5b50610347610565366004613bd3565b6113d4565b34801561057657600080fd5b5061030f610585366004613c17565b6114e1565b34801561059657600080fd5b506103476105a536600461387e565b611558565b3480156105b657600080fd5b506103476105c53660046138b2565b611687565b3480156105d657600080fd5b5061035a6105e53660046136d0565b611751565b3480156105f657600080fd5b506103476117d8565b34801561060b57600080fd5b506000546001600160a01b031661030f565b34801561062957600080fd5b506102e261180e565b34801561063e57600080fd5b5061035a602381565b34801561065357600080fd5b506103476106623660046137d5565b61181d565b34801561067357600080fd5b506012546001600160a01b031661030f565b34801561069157600080fd5b506103476106a03660046136d0565b611828565b3480156106b157600080fd5b506106c56106c036600461387e565b611874565b6040516102c4989796959493929190613eba565b3480156106e557600080fd5b506103476106f4366004613a5f565b6118f3565b34801561070557600080fd5b506103476107143660046136d0565b611a93565b34801561072557600080fd5b5061034761073436600461375a565b611b3d565b34801561074557600080fd5b5061035a610754366004613863565b611b6f565b34801561076557600080fd5b506102e2610774366004613c17565b611c19565b34801561078557600080fd5b50610347610794366004613a1b565b611d43565b3480156107a557600080fd5b506107b96107b43660046138b2565b611daa565b604080519283526020830191909152016102c4565b61035a6107dc366004613aea565b611e2d565b3480156107ed57600080fd5b506103476107fc366004613c17565b6121ab565b34801561080d57600080fd5b5061034761081c3660046138f6565b6121b7565b34801561082d57600080fd5b506102b861083c3660046136eb565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b34801561087657600080fd5b5061087f6122e5565b6040516102c49190613df8565b34801561089857600080fd5b506102b86108a73660046138b2565b6123be565b3480156108b857600080fd5b506103476108c73660046136d0565b612466565b3480156108d857600080fd5b506103476108e73660046138f6565b6124fe565b3480156108f857600080fd5b5061035a610907366004613863565b612533565b60006001600160e01b0319821663152a902d60e11b14806109315750610931826125d6565b92915050565b60606003805461094690614211565b80601f016020809104026020016040519081016040528092919081815260200182805461097290614211565b80156109bf5780601f10610994576101008083540402835291602001916109bf565b820191906000526020600020905b8154815290600101906020018083116109a257829003601f168201915b5050505050905090565b60006109d4826125fb565b610a3a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600760205260409020546001600160a01b031690565b6000610a61826114e1565b9050806001600160a01b0316836001600160a01b03161415610acf5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a31565b336001600160a01b0382161480610aeb5750610aeb813361083c565b610b5d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a31565b610b678383612618565b505050565b6000600282604051610b7e9190613ca0565b9081526040519081900360200190206007015460ff6101009091041692915050565b6000546001600160a01b03163314610bca5760405162461bcd60e51b8152600401610a31906140cd565b80600283604051610bdb9190613ca0565b9081526020016040518091039020600301819055507fd84fa6032afa9068e48756b154a668abc6ca434270223c7912079f2a785164dc828233604051610c2393929190613f7e565b60405180910390a15050565b610c393382612686565b610c555760405162461bcd60e51b8152600401610a3190614102565b610b6783838361276c565b600080610c6c846125fb565b610c885760405162461bcd60e51b8152600401610a319061406b565b60006103e8610c986023866141af565b610ca2919061419b565b6012546001600160a01b0316969095509350505050565b6000610cc483611751565b8210610d265760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610a31565b506001600160a01b03919091166000908152600960209081526040808320938352929052205490565b60006060600080610d61878787612913565b909890975095505050505050565b600080600284604051610d829190613ca0565b908152604080519182900360209081019092206001600160a01b0386166000908152925290206001015491505092915050565b610b6783838360405180602001604052806000815250611b3d565b6000546001600160a01b03163314610dfa5760405162461bcd60e51b8152600401610a31906140cd565b6000825111610e1b5760405162461bcd60e51b8152600401610a3190613ff0565b60005b8251811015610f49576000838281518110610e3b57610e3b6142d3565b602002602001015190506000600286604051610e579190613ca0565b90815260408051602092819003830190206001600160a01b03851660009081529281905291205490915015610eb9576001600160a01b03821660009081526020829052604081208054869290610eae908490614183565b90915550610ef79050565b6001600160a01b0382166000908152602082905260408120858155600190810182905560028301805491929091610ef1908490614183565b90915550505b7ff105340f20585f58e0302388de46aae5622d0617bee44d6a12607c042f07142386833387604051610f2c9493929190613f48565b60405180910390a150508080610f419061424c565b915050610e1e565b50505050565b6011546000906001600160a01b03163314610f7c5760405162461bcd60e51b8152600401610a3190613ff0565b6000806000806000610f8d8a611874565b9750975050509550509450945060006001811115610fad57610fad6142a7565b856001811115610fbf57610fbf6142a7565b141561100d5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206265207573656420746f206d696e742067656e6573697300006044820152606401610a31565b808a60405160200161101f9190613ceb565b6040516020818303038152906040529061104c5760405162461bcd60e51b8152600401610a319190613f02565b5081611088576000806110608c8a8c612913565b915091508181906110845760405162461bcd60e51b8152600401610a319190613f02565b5050505b828811156110d85760405162461bcd60e51b815260206004820152601b60248201527f45786365656473206d617820616d6f756e7420706572206d696e7400000000006044820152606401610a31565b6000805b89811015611193576110f2600d80546001019055565b600d5491506111018983612b52565b611134828c61110f85612c91565b604051602001611120929190613cbc565b604051602081830303815290604052612d8e565b600061113f83611c19565b90507fc1b3ee3ddb0b94f376117b160d4e7519be17adf4ef440a407e655deee02faa9288888c8685604051611178959493929190613e75565b60405180910390a1508061118b8161424c565b9150506110dc565b507f9a2c5fce35455a5ef9c8454b3c9e91a2c324355ce4ff9691b98aff75501c041b8b868a8c8a6040516111cb959493929190613fb1565b60405180910390a1955050505050505b949350505050565b816001600160a01b03811661120a5760405162461bcd60e51b8152600401610a3190613ff0565b600060028560405161121c9190613ca0565b90815260408051602092819003830190206001600160a01b0387166000908152928190529120549091501561127e576001600160a01b03841660009081526020829052604081208054859290611273908490614183565b909155506112bc9050565b6001600160a01b03841660009081526020829052604081208481556001908101829055600283018054919290916112b6908490614183565b90915550505b7ff105340f20585f58e0302388de46aae5622d0617bee44d6a12607c042f071423858533866040516112f19493929190613f48565b60405180910390a15050505050565b600061130b600b5490565b821061136e5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610a31565b600b8281548110611381576113816142d3565b90600052602060002001549050919050565b6000546001600160a01b031633146113bd5760405162461bcd60e51b8152600401610a31906140cd565b80516113d090600f9060208401906134d4565b5050565b6000546001600160a01b031633146113fe5760405162461bcd60e51b8152600401610a31906140cd565b60008061140a84611874565b50505050509250509150600061141f83612533565b905060006002866040516114339190613ca0565b90815260200160405180910390209050806006015485116114965760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74206265206c657373207468616e20636f6e73756d6564000000006044820152606401610a31565b600481018590556040517f23f4fa7dd53f26ec10201dc8616b90a03bf97ea5480ff7db85a58c601f77b9ae906114d190889088903390613f7e565b60405180910390a1505050505050565b6000818152600560205260408120546001600160a01b0316806109315760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a31565b6000546001600160a01b031633146115825760405162461bcd60e51b8152600401610a31906140cd565b6002816040516115929190613ca0565b90815260405190819003602001902060018101805460ff19169055600060028201819055600382018190556004820181905560058201819055600682018190556007909101805461ffff191690556115e982612dd2565b6001549091508110156113d057600180546116059082906141ce565b81548110611615576116156142d3565b9060005260206000200160018281548110611632576116326142d3565b9060005260206000200190805461164890614211565b611653929190613558565b506001805480611665576116656142bd565b60019003818190600052602060002001600061168191906135d3565b90555050565b806001600160a01b0381166116ae5760405162461bcd60e51b8152600401610a3190613ff0565b60006002846040516116c09190613ca0565b90815260408051602092819003830190206001600160a01b03861660009081529281905290822082815560019081018390556002820180549294509092909161170a9084906141ce565b90915550506040517f15f017d2876016b918532b45c251385f9bfc09e5e822d12b236c89593718cab89061174390869086903390613f15565b60405180910390a150505050565b60006001600160a01b0382166117bc5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a31565b506001600160a01b031660009081526006602052604090205490565b6000546001600160a01b031633146118025760405162461bcd60e51b8152600401610a31906140cd565b61180c6000612e72565b565b60606004805461094690614211565b6113d0338383612ec2565b6000546001600160a01b031633146118525760405162461bcd60e51b8152600401610a31906140cd565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600080600080600080600080600060028a6040516118929190613ca0565b90815260405190819003602001902060018101546003820154600483015460058401546006850154600286015460079096015460ff9586169f50939d50919b5099509750919550818116945061010090910416915050919395975091939597565b6000546001600160a01b0316331461191d5760405162461bcd60e51b8152600401610a31906140cd565b836000811161193e5760405162461bcd60e51b8152600401610a3190614096565b836000811161195f5760405162461bcd60e51b8152600401610a3190614096565b61196889612f91565b156119ab5760405162461bcd60e51b815260206004820152601360248201527257686974656c6973742069732065786973747360681b6044820152606401610a31565b60006119b689612533565b9050600060028b6040516119ca9190613ca0565b90815260405190819003602001902060006002820155600180820180549293508c92909160ff19909116908381811115611a0657611a066142a7565b021790555060038101899055600481018890556005810187905560006006820181905560078201805461ffff191688151561ff001916176101008815150217905560018054808201825591528b51611a85917fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6019060208e01906134d4565b505050505050505050505050565b6000546001600160a01b03163314611abd5760405162461bcd60e51b8152600401610a31906140cd565b6012546001600160a01b0382811691161415611b1b5760405162461bcd60e51b815260206004820152601760248201527f53616d6520726f79616c746965732072656365697665720000000000000000006044820152606401610a31565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b611b473383612686565b611b635760405162461bcd60e51b8152600401610a3190614102565b610f498484848461302b565b600080805b600154811015611c12576000600260018381548110611b9557611b956142d3565b90600052602060002001604051611bac9190613d1f565b90815260200160405180910390209050846001811115611bce57611bce6142a7565b60018083015460ff1690811115611be757611be76142a7565b1415611bff576006810154611bfc9084614183565b92505b5080611c0a8161424c565b915050611b74565b5092915050565b6060611c24826125fb565b611c405760405162461bcd60e51b8152600401610a319061406b565b6000828152600e602052604081208054611c5990614211565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8590614211565b8015611cd25780601f10611ca757610100808354040283529160200191611cd2565b820191906000526020600020905b815481529060010190602001808311611cb557829003601f168201915b505050505090506000611ce361305e565b9050805160001415611cf6575092915050565b815115611d28578082604051602001611d10929190613cbc565b60405160208183030381529060405292505050919050565b80611d3285612c91565b604051602001611d10929190613cbc565b6000546001600160a01b03163314611d6d5760405162461bcd60e51b8152600401610a31906140cd565b80600283604051611d7e9190613ca0565b90815260405190819003602001902060070180549115156101000261ff00199092169190911790555050565b6000806000600285604051611dbf9190613ca0565b90815260408051602092819003830181206001600160a01b03881660009081529352908220549250600290611df5908890613ca0565b908152604080519182900360209081019092206001600160a01b03881660009081529252902060010154919350909150509250929050565b600080600080600080600080611e428b611874565b975097505096509650965096509650600180811115611e6357611e636142a7565b876001811115611e7557611e756142a7565b1415611ec35760405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f74207573656420746f206d696e74206e6f6e2067656e65736973006044820152606401610a31565b808b604051602001611ed59190613ceb565b60405160208183030381529060405290611f025760405162461bcd60e51b8152600401610a319190613f02565b5081611f3e57600080611f168d338d612913565b91509150818190611f3a5760405162461bcd60e51b8152600401610a319190613f02565b5050505b84611f498a85614183565b1115611f895760405162461bcd60e51b815260206004820152600f60248201526e105313081255115348135253951151608a1b6044820152606401610a31565b83891115611fd95760405162461bcd60e51b815260206004820152601b60248201527f45786365656473206d617820616d6f756e7420706572206d696e7400000000006044820152606401610a31565b34611fe48a886141af565b11156120265760405162461bcd60e51b8152602060048201526011602482015270496e737566666963656e742046756e647360781b6044820152606401610a31565b6010546040516000916001600160a01b03169034908381818185875af1925050503d8060008114612073576040519150601f19603f3d011682016040523d82523d6000602084013e612078565b606091505b50509050806120ba5760405162461bcd60e51b815260206004820152600e60248201526d10dbdd5b19081b9bdd081cd95b9960921b6044820152606401610a31565b6000805b8b811015612150576120d4600d80546001019055565b600d5491506120e33383612b52565b6120f1828e61110f85612c91565b60006120fc83611c19565b90507fc1b3ee3ddb0b94f376117b160d4e7519be17adf4ef440a407e655deee02faa928b8b338685604051612135959493929190613e75565b60405180910390a150806121488161424c565b9150506120be565b5061215c8d338d6121b7565b7f9a2c5fce35455a5ef9c8454b3c9e91a2c324355ce4ff9691b98aff75501c041b8d89338e8d604051612193959493929190613fb1565b60405180910390a19c9b505050505050505050505050565b6121b48161306d565b50565b336001600160a01b0383161461220f5760405162461bcd60e51b815260206004820152601c60248201527f43616e277420636f6e73756d6520616e6f74686572206d656d626572000000006044820152606401610a31565b600061221a84611874565b505050505050509050600080612231868686612913565b915091508181906122555760405162461bcd60e51b8152600401610a319190613f02565b5060006002876040516122689190613ca0565b9081526040519081900360200190209050600184600181111561228d5761228d6142a7565b146122dc57848160060160008282546122a69190614183565b90915550506001600160a01b038616600090815260208290526040812060010180548792906122d6908490614183565b90915550505b50505050505050565b60606001805480602002602001604051908101604052809291908181526020016000905b828210156123b557838290600052602060002001805461232890614211565b80601f016020809104026020016040519081016040528092919081815260200182805461235490614211565b80156123a15780601f10612376576101008083540402835291602001916123a1565b820191906000526020600020905b81548152906001019060200180831161238457829003601f168201915b505050505081526020019060010190612309565b50505050905090565b6000816001600160a01b0381166123e75760405162461bcd60e51b8152600401610a3190613ff0565b60006002856040516123f99190613ca0565b908152604051908190036020019020600781015490915060ff1615801561242957506007810154610100900460ff165b15612451576001600160a01b0384166000908152602091909152604090205415159150611c12565b60070154610100900460ff1691505092915050565b6000546001600160a01b031633146124905760405162461bcd60e51b8152600401610a31906140cd565b6001600160a01b0381166124f55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a31565b6121b481612e72565b6011546001600160a01b031633146125285760405162461bcd60e51b8152600401610a3190613ff0565b610b678383836111e3565b600080805b600154811015611c12576000600260018381548110612559576125596142d3565b906000526020600020016040516125709190613d1f565b90815260200160405180910390209050846001811115612592576125926142a7565b60018083015460ff16908111156125ab576125ab6142a7565b14156125c35760048101546125c09084614183565b92505b50806125ce8161424c565b915050612538565b60006001600160e01b0319821663780e9d6360e01b1480610931575061093182613114565b6000908152600560205260409020546001600160a01b0316151590565b600081815260076020526040902080546001600160a01b0319166001600160a01b038416908117909155819061264d826114e1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612691826125fb565b6126f25760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a31565b60006126fd836114e1565b9050806001600160a01b0316846001600160a01b031614806127385750836001600160a01b031661272d846109c9565b6001600160a01b0316145b806111db57506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff166111db565b826001600160a01b031661277f826114e1565b6001600160a01b0316146127e35760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610a31565b6001600160a01b0382166128455760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a31565b612850838383613164565b61285b600082612618565b6001600160a01b03831660009081526006602052604081208054600192906128849084906141ce565b90915550506001600160a01b03821660009081526006602052604081208054600192906128b2908490614183565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000606082600081116129385760405162461bcd60e51b8152600401610a3190614096565b600060028760405161294a9190613ca0565b908152604051908190036020019020600781015490915060ff6101009091041661299a576000876040516020016129819190613ceb565b6040516020818303038152906040529350935050612b49565b8060060154816004015414156129dc5760006040518060400160405280600d81526020016c125d195b481cdbdb19081bdd5d609a1b8152509350935050612b49565b600781015460ff16612b1f576001600160a01b03861660009081526020829052604090208054612a495760006040518060400160405280601781526020017f596f7520617265206e6f742077686974656c6973746564000000000000000000815250945094505050612b49565b8054861115612a955760006040518060400160405280601e81526020017f5175616e746974792065786365656473204d617820416c6c6f77616e63650000815250945094505050612b49565b85612aa88260000154836001015461316f565b10612adc57600160405180604001604052806009815260200168476f6f64204c75636b60b81b815250945094505050612b49565b60006040518060400160405280601981526020017f5174792065786365656473204d617820416c6c6f77616e636500000000000000815250945094505050612b49565b600160405180604001604052806009815260200168476f6f64204c75636b60b81b81525093509350505b50935093915050565b6001600160a01b038216612ba85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a31565b612bb1816125fb565b15612bfe5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a31565b612c0a60008383613164565b6001600160a01b0382166000908152600660205260408120805460019290612c33908490614183565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606081612cb55750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612cdf5780612cc98161424c565b9150612cd89050600a8361419b565b9150612cb9565b6000816001600160401b03811115612cf957612cf96142e9565b6040519080825280601f01601f191660200182016040528015612d23576020820181803683370190505b5090505b84156111db57612d386001836141ce565b9150612d45600a86614267565b612d50906030614183565b60f81b818381518110612d6557612d656142d3565b60200101906001600160f81b031916908160001a905350612d87600a8661419b565b9450612d27565b612d97826125fb565b612db35760405162461bcd60e51b8152600401610a319061406b565b6000828152600e602090815260409091208251610b67928401906134d4565b6000805b600154811015612e685782604051602001612df19190613ca0565b6040516020818303038152906040528051906020012060018281548110612e1a57612e1a6142d3565b90600052602060002001604051602001612e349190613d1f565b604051602081830303815290604052805190602001201415612e565792915050565b80612e608161424c565b915050612dd6565b5050600154919050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b816001600160a01b0316836001600160a01b03161415612f245760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a31565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600080805b600154811015611c125783604051602001612fb19190613ca0565b6040516020818303038152906040528051906020012060018281548110612fda57612fda6142d3565b90600052602060002001604051602001612ff49190613d1f565b6040516020818303038152906040528051906020012014156130195760019150611c12565b806130238161424c565b915050612f96565b61303684848461276c565b61304284848484613182565b610f495760405162461bcd60e51b8152600401610a3190614019565b6060600f805461094690614211565b6000613078826114e1565b905061308681600084613164565b613091600083612618565b6001600160a01b03811660009081526006602052604081208054600192906130ba9084906141ce565b909155505060008281526005602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006001600160e01b031982166380ac58cd60e01b148061314557506001600160e01b03198216635b5e139f60e01b145b8061093157506301ffc9a760e01b6001600160e01b0319831614610931565b610b6783838361328c565b600061317b82846141ce565b9392505050565b60006001600160a01b0384163b1561328457604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906131c6903390899088908890600401613dbb565b602060405180830381600087803b1580156131e057600080fd5b505af1925050508015613210575060408051601f3d908101601f1916820190925261320d91810190613846565b60015b61326a573d80801561323e576040519150601f19603f3d011682016040523d82523d6000602084013e613243565b606091505b5080516132625760405162461bcd60e51b8152600401610a3190614019565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506111db565b5060016111db565b6001600160a01b0383166132e7576132e281600b80546000838152600c60205260408120829055600182018355919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90155565b61330a565b816001600160a01b0316836001600160a01b03161461330a5761330a8382613344565b6001600160a01b03821661332157610b67816133e1565b826001600160a01b0316826001600160a01b031614610b6757610b678282613490565b6000600161335184611751565b61335b91906141ce565b6000838152600a60205260409020549091508082146133ae576001600160a01b03841660009081526009602090815260408083208584528252808320548484528184208190558352600a90915290208190555b506000918252600a602090815260408084208490556001600160a01b039094168352600981528383209183525290812055565b600b546000906133f3906001906141ce565b6000838152600c6020526040812054600b805493945090928490811061341b5761341b6142d3565b9060005260206000200154905080600b838154811061343c5761343c6142d3565b6000918252602080832090910192909255828152600c9091526040808220849055858252812055600b805480613474576134746142bd565b6001900381819060005260206000200160009055905550505050565b600061349b83611751565b6001600160a01b0390931660009081526009602090815260408083208684528252808320859055938252600a9052919091209190915550565b8280546134e090614211565b90600052602060002090601f0160209004810192826135025760008555613548565b82601f1061351b57805160ff1916838001178555613548565b82800160010185558215613548579182015b8281111561354857825182559160200191906001019061352d565b50613554929150613609565b5090565b82805461356490614211565b90600052602060002090601f0160209004810192826135865760008555613548565b82601f106135975780548555613548565b8280016001018555821561354857600052602060002091601f016020900482015b828111156135485782548255916001019190600101906135b8565b5080546135df90614211565b6000825580601f106135ef575050565b601f0160209004906000526020600020908101906121b491905b5b80821115613554576000815560010161360a565b60006001600160401b03831115613637576136376142e9565b61364a601f8401601f1916602001614153565b905082815283838301111561365e57600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b038116811461368c57600080fd5b919050565b8035801515811461368c57600080fd5b80356002811061368c57600080fd5b600082601f8301126136c157600080fd5b61317b8383356020850161361e565b6000602082840312156136e257600080fd5b61317b82613675565b600080604083850312156136fe57600080fd5b61370783613675565b915061371560208401613675565b90509250929050565b60008060006060848603121561373357600080fd5b61373c84613675565b925061374a60208501613675565b9150604084013590509250925092565b6000806000806080858703121561377057600080fd5b61377985613675565b935061378760208601613675565b92506040850135915060608501356001600160401b038111156137a957600080fd5b8501601f810187136137ba57600080fd5b6137c98782356020840161361e565b91505092959194509250565b600080604083850312156137e857600080fd5b6137f183613675565b915061371560208401613691565b6000806040838503121561381257600080fd5b61381b83613675565b946020939093013593505050565b60006020828403121561383b57600080fd5b813561317b816142ff565b60006020828403121561385857600080fd5b815161317b816142ff565b60006020828403121561387557600080fd5b61317b826136a1565b60006020828403121561389057600080fd5b81356001600160401b038111156138a657600080fd5b6111db848285016136b0565b600080604083850312156138c557600080fd5b82356001600160401b038111156138db57600080fd5b6138e7858286016136b0565b92505061371560208401613675565b60008060006060848603121561390b57600080fd5b83356001600160401b0381111561392157600080fd5b61392d868287016136b0565b93505061374a60208501613675565b60008060006060848603121561395157600080fd5b83356001600160401b038082111561396857600080fd5b613974878388016136b0565b945060209150818601358181111561398b57600080fd5b8601601f8101881361399c57600080fd5b8035828111156139ae576139ae6142e9565b8060051b92506139bf848401614153565b8181528481019083860185850187018c10156139da57600080fd5b600095505b83861015613a04576139f081613675565b8352600195909501949186019186016139df565b50979a979950505050604095909501359450505050565b60008060408385031215613a2e57600080fd5b82356001600160401b03811115613a4457600080fd5b613a50858286016136b0565b92505061371560208401613691565b600080600080600080600060e0888a031215613a7a57600080fd5b87356001600160401b03811115613a9057600080fd5b613a9c8a828b016136b0565b975050613aab602089016136a1565b9550604088013594506060880135935060808801359250613ace60a08901613691565b9150613adc60c08901613691565b905092959891949750929550565b600080600060608486031215613aff57600080fd5b83356001600160401b0380821115613b1657600080fd5b613b22878388016136b0565b94506020860135915080821115613b3857600080fd5b50613b45868287016136b0565b925050604084013590509250925092565b60008060008060808587031215613b6c57600080fd5b84356001600160401b0380821115613b8357600080fd5b613b8f888389016136b0565b95506020870135915080821115613ba557600080fd5b50613bb2878288016136b0565b93505060408501359150613bc860608601613675565b905092959194509250565b60008060408385031215613be657600080fd5b82356001600160401b03811115613bfc57600080fd5b613c08858286016136b0565b95602094909401359450505050565b600060208284031215613c2957600080fd5b5035919050565b60008060408385031215613c4357600080fd5b50508035926020909101359150565b60008151808452613c6a8160208601602086016141e5565b601f01601f19169290920160200192915050565b60028110613c9c57634e487b7160e01b600052602160045260246000fd5b9052565b60008251613cb28184602087016141e5565b9190910192915050565b60008351613cce8184602088016141e5565b835190830190613ce28183602088016141e5565b01949350505050565b60008251613cfd8184602087016141e5565b6f081cdd1859d9481a5cc818db1bdcd95960821b920191825250601001919050565b600080835481600182811c915080831680613d3b57607f831692505b6020808410821415613d5b57634e487b7160e01b86526022600452602486fd5b818015613d6f5760018114613d8057613dad565b60ff19861689528489019650613dad565b60008a81526020902060005b86811015613da55781548b820152908501908301613d8c565b505084890196505b509498975050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613dee90830184613c52565b9695505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613e4d57603f19888603018452613e3b858351613c52565b94509285019290850190600101613e1f565b5092979650505050505050565b82151581526040602082015260006111db6040830184613c52565b613e7f8187613c7e565b84602082015260018060a01b038416604082015282606082015260a060808201526000613eaf60a0830184613c52565b979650505050505050565b6101008101613ec9828b613c7e565b602082019890985260408101969096526060860194909452608085019290925260a0840152151560c0830152151560e090910152919050565b60208152600061317b6020830184613c52565b606081526000613f286060830186613c52565b6001600160a01b0394851660208401529290931660409091015292915050565b608081526000613f5b6080830187613c52565b6001600160a01b0395861660208401529390941660408201526060015292915050565b606081526000613f916060830186613c52565b6020830194909452506001600160a01b0391909116604090910152919050565b60a081526000613fc460a0830188613c52565b602083018790526001600160a01b0386166040840152606083018590529050613dee6080830184613c7e565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252601190820152702737b732bc34b9ba32b73a103a37b5b2b760791b604082015260600190565b60208082526017908201527f52657175697265206e6f6e207a65726f206e756d626572000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b604051601f8201601f191681016001600160401b038111828210171561417b5761417b6142e9565b604052919050565b600082198211156141965761419661427b565b500190565b6000826141aa576141aa614291565b500490565b60008160001904831182151516156141c9576141c961427b565b500290565b6000828210156141e0576141e061427b565b500390565b60005b838110156142005781810151838201526020016141e8565b83811115610f495750506000910152565b600181811c9082168061422557607f821691505b6020821081141561424657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156142605761426061427b565b5060010190565b60008261427657614276614291565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146121b457600080fdfea2646970667358221220187dde2609d928b2fc14c9aed7a6f1329fad0a34d54743e5dbdc932ec1f91fac64736f6c6343000807003300000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000003568747470733a2f2f6170692e73746167696e672e77796e64626c6173742e636f6d2f6d657461646174612d65717569706d656e742f0000000000000000000000