[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "allowed", "type": "bool" } ], "name": "OperatorAllowed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "blocked", "type": "bool" } ], "name": "OperatorBlocked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "RolesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "ADMIN_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MANAGER_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64[]", "name": "quantities", "type": "uint64[]" }, { "internalType": "address[]", "name": "recipients", "type": "address[]" } ], "name": "batchAirdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721AUpgradeable.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721AUpgradeable.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "grantRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "hasAllRoles", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "hasAnyRole", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "treasury_", "type": "address" }, { "internalType": "address", "name": "royalty_", "type": "address" }, { "internalType": "uint96", "name": "royaltyFee_", "type": "uint96" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isAllowedOperator", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "isOperator", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isBlockedOperator", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "quantity", "type": "uint64" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "quantity", "type": "uint64" } ], "name": "mintTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "ordinalsFromRoles", "outputs": [ { "internalType": "uint8[]", "name": "ordinals", "type": "uint8[]" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "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": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ownershipHandoverValidFor", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "presaleActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "quantity", "type": "uint64" }, { "internalType": "uint256", "name": "allowed", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "presaleMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "quantity", "type": "uint64" }, { "internalType": "uint256", "name": "allowed", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "presaleMintTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "renounceRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "revokeRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8[]", "name": "ordinals", "type": "uint8[]" } ], "name": "rolesFromOrdinals", "outputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "rolesOf", "outputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "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": [], "name": "saleActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "allowed", "type": "bool" } ], "name": "setAllowedOperator", "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": "newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "blocked", "type": "bool" } ], "name": "setBlockedOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "newRoot", "type": "bytes32" } ], "name": "setMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newTreasury", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxAmount", "type": "uint256" }, { "internalType": "uint256", "name": "newMaxPerMint", "type": "uint256" }, { "internalType": "uint256", "name": "newMaxPerWallet", "type": "uint256" }, { "internalType": "uint256", "name": "newPrice", "type": "uint256" }, { "internalType": "bool", "name": "presale", "type": "bool" } ], "name": "startSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stopSale", "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": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalRevenue", "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" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405260a2805461ffff191690553480156200001c57600080fd5b50620000276200002d565b620000ef565b600054610100900460ff16156200009a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000ed576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61457e80620000ff6000396000f3fe6080604052600436106103ce5760003560e01c806368428a1b116101fd578063b88d4fde11610118578063e36b0b37116100ab578063f0f442601161007a578063f0f4426014610b81578063f2fde38b14610ba1578063fb9d09c814610bc1578063fd51fae814610bd4578063fee81cf414610be757600080fd5b8063e36b0b3714610b17578063e985e9c514610b2c578063ec87621c14610b4c578063f04e283e14610b6157600080fd5b8063c87b56dd116100e7578063c87b56dd14610a80578063d53ab50114610aa0578063d7533f0214610ac0578063e18bc08a14610ade57600080fd5b8063b88d4fde146109fe578063bf2d9e0b14610a1e578063bfa9aadc14610a33578063c23dc68f14610a5357600080fd5b806388924a661161019057806395d89b411161015f57806395d89b411461099457806399a2557a146109a9578063a035b1fe146109c9578063a22cb465146109de57600080fd5b806388924a661461090f5780638afc7cb3146109485780638da5cb5b1461096857806393d756aa1461098157600080fd5b806375b238fc116101cc57806375b238fc1461088d578063789e3a55146108a25780637cb64759146108c25780638462151c146108e257600080fd5b806368428a1b1461080e57806370a082311461082b578063715018a61461084b5780637359e41f1461086057600080fd5b8063386bacdc116102ed57806353135ca0116102805780635bbb21771161024f5780635bbb21771461078e5780635f48f393146107bb57806361d027b3146107d05780636352211e146107ee57600080fd5b806353135ca01461072157806354d1f13d1461073957806355f804b31461074e5780635944c7531461076e57600080fd5b8063453c2310116102bc578063453c2310146106a05780634a4ee7b1146106b5578063507e094f146106d5578063514e62fc146106ea57600080fd5b8063386bacdc146106385780633ccfd60b1461064b57806342842e0e1461066057806342966c681461068057600080fd5b80631bace9a8116103655780632569296211610334578063256929621461059e578063282c51f3146105b35780632a55205a146105c85780632de948071461060757600080fd5b80631bace9a8146105075780631c10893f146105275780631cd64df41461054757806323b872dd1461057e57600080fd5b8063095ea7b3116103a1578063095ea7b31461048457806313a661ed146104a457806318160ddd146104d2578063183a4f6e146104e757600080fd5b806301ffc9a7146103d357806304634d8d1461040857806306fdde031461042a578063081812fc1461044c575b600080fd5b3480156103df57600080fd5b506103f36103ee3660046137f9565b610c18565b60405190151581526020015b60405180910390f35b34801561041457600080fd5b50610428610423366004613849565b610c47565b005b34801561043657600080fd5b5061043f610c8c565b6040516103ff91906138d4565b34801561045857600080fd5b5061046c6104673660046138e7565b610d27565b6040516001600160a01b0390911681526020016103ff565b34801561049057600080fd5b5061042861049f366004613900565b610d74565b3480156104b057600080fd5b506104c46104bf366004613970565b610e22565b6040519081526020016103ff565b3480156104de57600080fd5b506104c4610e55565b3480156104f357600080fd5b506104286105023660046138e7565b610e75565b34801561051357600080fd5b50610428610522366004613a38565b610e82565b34801561053357600080fd5b50610428610542366004613900565b610f19565b34801561055357600080fd5b506103f3610562366004613900565b60609190911b638b78c6d8176000908152602090205481161490565b34801561058a57600080fd5b50610428610599366004613a62565b610f42565b3480156105aa57600080fd5b50610428611127565b3480156105bf57600080fd5b506104c4600481565b3480156105d457600080fd5b506105e86105e3366004613a9e565b611177565b604080516001600160a01b0390931683526020830191909152016103ff565b34801561061357600080fd5b506104c4610622366004613ac0565b60601b638b78c6d8176000908152602090205490565b610428610646366004613b36565b611225565b34801561065757600080fd5b50610428611487565b34801561066c57600080fd5b5061042861067b366004613a62565b6115bc565b34801561068c57600080fd5b5061042861069b3660046138e7565b6115d7565b3480156106ac57600080fd5b5060a0546104c4565b3480156106c157600080fd5b506104286106d0366004613900565b611645565b3480156106e157600080fd5b50609f546104c4565b3480156106f657600080fd5b506103f3610705366004613900565b60609190911b638b78c6d8176000908152602090205416151590565b34801561072d57600080fd5b5060a25460ff166103f3565b34801561074557600080fd5b5061042861166a565b34801561075a57600080fd5b50610428610769366004613c06565b6116a7565b34801561077a57600080fd5b50610428610789366004613c3a565b6116e9565b34801561079a57600080fd5b506107ae6107a9366004613c76565b611730565b6040516103ff9190613cf3565b3480156107c757600080fd5b50609e546104c4565b3480156107dc57600080fd5b506098546001600160a01b031661046c565b3480156107fa57600080fd5b5061046c6108093660046138e7565b6117fb565b34801561081a57600080fd5b5060a254610100900460ff166103f3565b34801561083757600080fd5b506104c4610846366004613ac0565b611806565b34801561085757600080fd5b5061042861186e565b34801561086c57600080fd5b5061088061087b3660046138e7565b6118aa565b6040516103ff9190613d35565b34801561089957600080fd5b506104c4600181565b3480156108ae57600080fd5b506104286108bd366004613d70565b6118f2565b3480156108ce57600080fd5b506104286108dd3660046138e7565b611955565b3480156108ee57600080fd5b506109026108fd366004613ac0565b611991565b6040516103ff9190613db9565b34801561091b57600080fd5b506103f361092a366004613ac0565b6001600160a01b03166000908152609b602052604090205460ff1690565b34801561095457600080fd5b50610428610963366004613a38565b611a99565b34801561097457600080fd5b50638b78c6d8195461046c565b61042861098f366004613df1565b611b27565b3480156109a057600080fd5b5061043f611c99565b3480156109b557600080fd5b506109026109c4366004613e1b565b611cb1565b3480156109d557600080fd5b5060a1546104c4565b3480156109ea57600080fd5b506104286109f9366004613a38565b611e37565b348015610a0a57600080fd5b50610428610a19366004613e4e565b611ebf565b348015610a2a57600080fd5b506099546104c4565b348015610a3f57600080fd5b50610428610a4e366004613ec9565b611f03565b348015610a5f57600080fd5b50610a73610a6e3660046138e7565b612137565b6040516103ff9190613f6d565b348015610a8c57600080fd5b5061043f610a9b3660046138e7565b6121c4565b348015610aac57600080fd5b50610428610abb366004613f7b565b612247565b348015610acc57600080fd5b506040516202a30081526020016103ff565b348015610aea57600080fd5b506103f3610af9366004613ac0565b6001600160a01b03166000908152609a602052604090205460ff1690565b348015610b2357600080fd5b50610428612333565b348015610b3857600080fd5b506103f3610b47366004613fda565b612377565b348015610b5857600080fd5b506104c4600281565b348015610b6d57600080fd5b50610428610b7c366004613ac0565b6123d3565b348015610b8d57600080fd5b50610428610b9c366004613ac0565b612443565b348015610bad57600080fd5b50610428610bbc366004613ac0565b61249c565b610428610bcf366004614004565b6124f1565b610428610be236600461401f565b612663565b348015610bf357600080fd5b506104c4610c02366004613ac0565b60601b63389a75e1176000908152602090205490565b6000610c23826128a0565b80610c325750610c32826128ee565b80610c415750610c41826128a0565b92915050565b6001638b78c6d83360601b176000528060206000205416610c7d57638b78c6d819543314610c7d576382b429006000526004601cfd5b610c878383612913565b505050565b6060610c966129cd565b6002018054610ca49061408d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd09061408d565b8015610d1d5780601f10610cf257610100808354040283529160200191610d1d565b820191906000526020600020905b815481529060010190602001808311610d0057829003601f168201915b5050505050905090565b6000610d32826129f1565b610d4f576040516333d1c03960e21b815260040160405180910390fd5b610d576129cd565b60009283526006016020525060409020546001600160a01b031690565b6000610d7f826117fb565b9050336001600160a01b03821614610db857610d9b8133612377565b610db8576040516367d9dca160e11b815260040160405180910390fd5b82610dc16129cd565b6000848152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551849286811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a4505050565b600060208201825160051b81015b808214610e4e57600160ff8351161b83179250602082019150610e30565b5050919050565b60006001610e616129cd565b60010154610e6d6129cd565b540303919050565b610e7f3382612a3a565b50565b6002638b78c6d83360601b176000528060206000205416610eb857638b78c6d819543314610eb8576382b429006000526004601cfd5b6001600160a01b0383166000818152609b6020908152604091829020805460ff191686151590811790915591519182527fee6f72776cc4e6e5957f9692e86b52e270b1578d343bf9f46351ffab538487ac91015b60405180910390a2505050565b638b78c6d819543314610f34576382b429006000526004601cfd5b610f3e8282612a8b565b5050565b6000610f4d82612ad7565b9050836001600160a01b0316816001600160a01b031614610f805760405162a1148160e81b815260040160405180910390fd5b600080610f8c84612b6b565b91509150610fb18187610f9c3390565b6001600160a01b039081169116811491141790565b610fdc57610fbf8633612377565b610fdc57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661100357604051633a954ecd60e21b815260040160405180910390fd5b801561100e57600082555b6110166129cd565b6001600160a01b03871660009081526005919091016020526040902080546000190190556110426129cd565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b176110796129cd565b60008681526004919091016020526040812091909155600160e11b841690036110ef57600184016110a86129cd565b6000828152600491909101602052604081205490036110ed576110c96129cd565b5481146110ed57836110d96129cd565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b031660008051602061450983398151915260405160405180910390a45b505050505050565b60006202a3006001600160401b03164201905063389a75e13360601b1760005280602060002055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b60008281526066602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916111ec5750604080518082019091526065546001600160a01b0381168252600160a01b90046001600160601b031660208201525b60208101516000906127109061120b906001600160601b0316876140dd565b61121591906140fc565b91519350909150505b9250929050565b836000816001600160401b0316116112585760405162461bcd60e51b815260040161124f9061411e565b60405180910390fd5b6000609e541161126957600161128a565b609e54611287826001600160401b0316611281610e55565b90612b93565b11155b6112a65760405162461bcd60e51b815260040161124f90614145565b609f54816001600160401b031611156112d15760405162461bcd60e51b815260040161124f90614172565b6000856112dd33612b9f565b6112e791906141a1565b60a2546001600160401b0391909116915060ff1661133c5760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b604482015260640161124f565b609c546000036113805760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481b9bdd081cd95d608a1b604482015260640161124f565b60a0548111156113a25760405162461bcd60e51b815260040161124f906141cc565b848111156113c25760405162461bcd60e51b815260040161124f906141cc565b61143f84848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050609c546040516bffffffffffffffffffffffff193360601b166020820152603481018b905290925060540190505b60405160208183030381529060405280519060200120612bd2565b61147d5760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481a5b9d985b1a59608a1b604482015260640161124f565b61111f8633612be8565b600047116114c35760405162461bcd60e51b8152602060048201526009602482015268302062616c616e636560b81b604482015260640161124f565b609754604051639af608c960e01b81523060048201526001600160a01b039091169047906000908390639af608c990602401602060405180830381865afa158015611512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115369190614203565b60405163b9bff4bb60e01b8152600481018290529091506001600160a01b0384169063b9bff4bb90602401600060405180830381600087803b15801561157b57600080fd5b505af115801561158f573d6000803e3d6000fd5b5050505061159d8382612cdd565b609854610c87906001600160a01b03166115b78484612df6565b612cdd565b610c8783838360405180602001604052806000815250611ebf565b6004638b78c6d83360601b176000528060206000205416611600576382b429006000526004601cfd5b333b61163c5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08105b1b1bddd95960aa1b604482015260640161124f565b610f3e82612e02565b638b78c6d819543314611660576382b429006000526004601cfd5b610f3e8282612a3a565b63389a75e13360601b176000526000602060002055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6002638b78c6d83360601b1760005280602060002054166116dd57638b78c6d8195433146116dd576382b429006000526004601cfd5b609d610c878382614262565b6001638b78c6d83360601b17600052806020600020541661171f57638b78c6d81954331461171f576382b429006000526004601cfd5b61172a848484612e0d565b50505050565b6060816000816001600160401b0381111561174d5761174d61392a565b60405190808252806020026020018201604052801561179f57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161176b5790505b50905060005b8281146117f2576117cd8686838181106117c1576117c1614321565b90506020020135612137565b8282815181106117df576117df614321565b60209081029190910101526001016117a5565b50949350505050565b6000610c4182612ad7565b60006001600160a01b03821661182f576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b0361183f6129cd565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b638b78c6d819543314611889576382b429006000526004601cfd5b6000336000805160206144e9833981519152600080a36000638b78c6d81955565b606060206040510160005b8082526001841660051b820191508360011c935083156118d7576001016118b5565b5060405191508060405260208201810360051c825250919050565b6002638b78c6d83360601b17600052806020600020541661192857638b78c6d819543314611928576382b429006000526004601cfd5b5060a2805491151561ffff1990921691909117610100179055609e93909355609f9190915560a05560a155565b6002638b78c6d83360601b17600052806020600020541661198b57638b78c6d81954331461198b576382b429006000526004601cfd5b50609c55565b606060008060006119a185611806565b90506000816001600160401b038111156119bd576119bd61392a565b6040519080825280602002602001820160405280156119e6578160200160208202803683370190505b509050611a1360408051608081018252600080825260208201819052918101829052606081019190915290565b60015b838614611a8d57611a2681612ed8565b91508160400151611a855781516001600160a01b031615611a4657815194505b876001600160a01b0316856001600160a01b031603611a855780838780600101985081518110611a7857611a78614321565b6020026020010181815250505b600101611a16565b50909695505050505050565b6002638b78c6d83360601b176000528060206000205416611acf57638b78c6d819543314611acf576382b429006000526004601cfd5b6001600160a01b0383166000818152609a6020908152604091829020805460ff191686151590811790915591519182527f5d9603027afffb9569796fb6d9fc189bbf68724bd0430924681595302758b4f09101610f0c565b806000816001600160401b031611611b515760405162461bcd60e51b815260040161124f9061411e565b6000609e5411611b62576001611b7d565b609e54611b7a826001600160401b0316611281610e55565b11155b611b995760405162461bcd60e51b815260040161124f90614145565b609f54816001600160401b03161115611bc45760405162461bcd60e51b815260040161124f90614172565b60a25460ff1615611c085760405162461bcd60e51b815260206004820152600e60248201526d50726573616c652061637469766560901b604482015260640161124f565b60a254610100900460ff16611c515760405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b604482015260640161124f565b60a05482611c5e85612b9f565b611c6891906141a1565b6001600160401b03161115611c8f5760405162461bcd60e51b815260040161124f906141cc565b610c878284612be8565b6060611ca36129cd565b6003018054610ca49061408d565b6060818310611cd357604051631960ccad60e11b815260040160405180910390fd5b600080611cde612f1f565b90506001851015611cee57600194505b80841115611cfa578093505b6000611d0587611806565b905084861015611d245785850381811015611d1e578091505b50611d28565b5060005b6000816001600160401b03811115611d4257611d4261392a565b604051908082528060200260200182016040528015611d6b578160200160208202803683370190505b50905081600003611d81579350611e3092505050565b6000611d8c88612137565b905060008160400151611d9d575080515b885b888114158015611daf5750848714155b15611e2457611dbd81612ed8565b92508260400151611e1c5782516001600160a01b031615611ddd57825191505b8a6001600160a01b0316826001600160a01b031603611e1c5780848880600101995081518110611e0f57611e0f614321565b6020026020010181815250505b600101611d9f565b50505092835250909150505b9392505050565b6001600160a01b0382166000908152609b602052604090205460ff1615611eb55760405162461bcd60e51b815260206004820152602c60248201527f4f70657261746f7220686173206265656e20626c6f636b656420627920636f6e60448201526b3a3930b1ba1037bbb732b91760a11b606482015260840161124f565b610f3e8282612f2f565b611eca848484610f42565b6001600160a01b0383163b1561172a57611ee684848484612fd5565b61172a576040516368d2bf6b60e11b815260040160405180910390fd5b60008051602061452983398151915254610100900460ff16611f38576000805160206145298339815191525460ff1615611f3c565b303b155b611fae5760405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a6564000000000000000000606482015260840161124f565b60008051602061452983398151915254610100900460ff16158015611fea57600080516020614529833981519152805461ffff19166101011790555b600054610100900460ff161580801561200a5750600054600160ff909116105b806120245750303b158015612024575060005460ff166001145b6120875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161124f565b6000805460ff1916600117905580156120aa576000805461ff0019166101001790555b6120b487876130c1565b6120bc6130ff565b6120c88886868661313d565b801561210e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50801561212e57600080516020614529833981519152805461ff00191690555b50505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260408051608081018252600080825260208201819052918101829052606081019190915260018310806121955750612191612f1f565b8310155b156121a05792915050565b6121a983612ed8565b90508060400151156121bb5792915050565b611e30836131a8565b60606121cf826129f1565b6121ec57604051630a14c4b560e41b815260040160405180910390fd5b60006121f66131dd565b905080516000036122165760405180602001604052806000815250611e30565b80612220846131ec565b604051602001612231929190614337565b6040516020818303038152906040529392505050565b6002638b78c6d83360601b17600052806020600020541661227d57638b78c6d81954331461227d576382b429006000526004601cfd5b818481146122c15760405162461bcd60e51b8152602060048201526011602482015270496e76616c696420417267756d656e747360781b604482015260640161124f565b60005b8181101561212e5761232b8585838181106122e1576122e1614321565b90506020020160208101906122f69190613ac0565b88888481811061230857612308614321565b905060200201602081019061231d9190614004565b6001600160401b0316613224565b6001016122c4565b6002638b78c6d83360601b17600052806020600020541661236957638b78c6d819543314612369576382b429006000526004601cfd5b5060a2805461ffff19169055565b6001600160a01b0381166000908152609a602052604081205460ff16156123a057506001610c41565b6001600160a01b0382166000908152609b602052604090205460ff16156123c957506000610c41565b611e30838361323e565b638b78c6d8195433146123ee576382b429006000526004601cfd5b8060601b60601c905063389a75e18160601b176000526020600020805442111561242057636f5e88186000526004601cfd5b600081555080336000805160206144e9833981519152600080a3638b78c6d81955565b6001638b78c6d83360601b17600052806020600020541661247957638b78c6d819543314612479576382b429006000526004601cfd5b50609880546001600160a01b0319166001600160a01b0392909216919091179055565b638b78c6d8195433146124b7576382b429006000526004601cfd5b6001600160a01b0316806124d357637448fbae6000526004601cfd5b80336000805160206144e9833981519152600080a3638b78c6d81955565b806000816001600160401b03161161251b5760405162461bcd60e51b815260040161124f9061411e565b6000609e541161252c576001612547565b609e54612544826001600160401b0316611281610e55565b11155b6125635760405162461bcd60e51b815260040161124f90614145565b609f54816001600160401b0316111561258e5760405162461bcd60e51b815260040161124f90614172565b60a25460ff16156125d25760405162461bcd60e51b815260206004820152600e60248201526d50726573616c652061637469766560901b604482015260640161124f565b60a254610100900460ff1661261b5760405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b604482015260640161124f565b60a0548261262833612b9f565b61263291906141a1565b6001600160401b031611156126595760405162461bcd60e51b815260040161124f906141cc565b610f3e8233612be8565b836000816001600160401b03161161268d5760405162461bcd60e51b815260040161124f9061411e565b6000609e541161269e5760016126b9565b609e546126b6826001600160401b0316611281610e55565b11155b6126d55760405162461bcd60e51b815260040161124f90614145565b609f54816001600160401b031611156127005760405162461bcd60e51b815260040161124f90614172565b60008561270c88612b9f565b61271691906141a1565b60a2546001600160401b0391909116915060ff1661276b5760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b604482015260640161124f565b609c546000036127af5760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481b9bdd081cd95d608a1b604482015260640161124f565b60a0548111156127d15760405162461bcd60e51b815260040161124f906141cc565b848111156127f15760405162461bcd60e51b815260040161124f906141cc565b61285884848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050609c546040516bffffffffffffffffffffffff1960608e901b166020820152603481018b90529092506054019050611424565b6128965760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481a5b9d985b1a59608a1b604482015260640161124f565b61212e8688612be8565b60006301ffc9a760e01b6001600160e01b0319831614806128d157506380ac58cd60e01b6001600160e01b03198316145b80610c415750506001600160e01b031916635b5e139f60e01b1490565b60006001600160e01b03198216632fea6ab760e21b1480610c415750610c418261327b565b6127106001600160601b038216111561293e5760405162461bcd60e51b815260040161124f9061435d565b6001600160a01b0382166129945760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640161124f565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217606555565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b600081600111158015612a0b5750612a076129cd565b5482105b8015610c415750600160e01b612a1f6129cd565b60008481526004919091016020526040902054161592915050565b638b78c6d88260601b176000526020600020805482811681189050808255808460601b60601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a350505050565b638b78c6d88260601b17600052602060002081815417808255808460601b60601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a350505050565b60008180600111612b5257612aea6129cd565b54811015612b52576000612afc6129cd565b600083815260049190910160205260408120549150600160e01b82169003612b50575b80600003611e3057612b2f6129cd565b60001990920160008181526004939093016020526040909220549050612b1f565b505b604051636f96cda160e11b815260040160405180910390fd5b6000806000612b786129cd565b60009485526006016020525050604090912080549092909150565b6000611e3082846143a7565b600060c0612bab6129cd565b6001600160a01b03909316600090815260059390930160205260409092205490911c919050565b600082612bdf85846132b0565b14949350505050565b60a1543490612c00906001600160401b0385166132fd565b1115612c405760405162461bcd60e51b815260206004820152600f60248201526e15985b1d59481a5b98dbdc9c9958dd608a1b604482015260640161124f565b609954612c4d9034612b93565b609955612c6d8183612c5e82612b9f565b612c6891906141a1565b613309565b60975460405163107e9cf160e01b81523460048201526001600160a01b039091169063107e9cf190602401600060405180830381600087803b158015612cb257600080fd5b505af1158015612cc6573d6000803e3d6000fd5b50505050610f3e81836001600160401b0316613372565b80471015612d2d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161124f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612d7a576040519150601f19603f3d011682016040523d82523d6000602084013e612d7f565b606091505b5050905080610c875760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161124f565b6000611e3082846143bf565b610e7f816000613489565b6127106001600160601b0382161115612e385760405162461bcd60e51b815260040161124f9061435d565b6001600160a01b038216612e8e5760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d65746572730000000000604482015260640161124f565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752606690529190942093519051909116600160a01b029116179055565b604080516080810182526000808252602082018190529181018290526060810191909152610c41612f076129cd565b600084815260049190910160205260409020546135f8565b6000612f296129cd565b54919050565b336001600160a01b03831603612f585760405163b06307db60e01b815260040160405180910390fd5b80612f616129cd565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061300a9033908990889088906004016143d6565b6020604051808303816000875af1925050508015613045575060408051601f3d908101601f1916820190925261304291810190614413565b60015b6130a3573d808015613073576040519150601f19603f3d011682016040523d82523d6000602084013e613078565b606091505b50805160000361309b576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60008051602061452983398151915254610100900460ff166130f55760405162461bcd60e51b815260040161124f90614430565b610f3e828261363f565b60008051602061452983398151915254610100900460ff166131335760405162461bcd60e51b815260040161124f90614430565b61313b6136b2565b565b600054610100900460ff166131645760405162461bcd60e51b815260040161124f90614484565b61316d846136e6565b613175613710565b60978054336001600160a01b031991821617909155609880549091166001600160a01b03851617905561172a8282612913565b604080516080810182526000808252602082018190529181018290526060810191909152610c416131d883612ad7565b6135f8565b6060609d8054610ca49061408d565b604080516080019081905280825b600183039250600a81066030018353600a9004806131fa5750819003601f19909101908152919050565b610f3e828260405180602001604052806000815250613737565b60006132486129cd565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b60006001600160e01b0319821663152a902d60e11b1480610c4157506301ffc9a760e01b6001600160e01b0319831614610c41565b600081815b84518110156132f5576132e1828683815181106132d4576132d4614321565b60200260200101516137b4565b9150806132ed816144cf565b9150506132b5565b509392505050565b6000611e3082846140dd565b60006133136129cd565b6001600160a01b038416600090815260059190910160205260409020546001600160c01b031660c083901b179050818161334b6129cd565b6001600160a01b039095166000908152600595909501602052604090942093909355505050565b600061337c6129cd565b54905060008290036133a15760405163b562e8dd60e01b815260040160405180910390fd5b6801000000000000000182026133b56129cd565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b17176133f06129cd565b600083815260049190910160205260408120919091556001600160a01b0384169083830190839083906000805160206145098339815191528180a4600183015b8181146134565780836000600080516020614509833981519152600080a4600101613430565b508160000361347757604051622e076360e81b815260040160405180910390fd5b806134806129cd565b5550610c879050565b600061349483612ad7565b9050806000806134a386612b6b565b9150915084156134e3576134b8818433610f9c565b6134e3576134c68333612377565b6134e357604051632ce44b5f60e11b815260040160405180910390fd5b80156134ee57600082555b6fffffffffffffffffffffffffffffffff6135076129cd565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b17600360e01b176135406129cd565b60008881526004919091016020526040812091909155600160e11b851690036135b6576001860161356f6129cd565b6000828152600491909101602052604081205490036135b4576135906129cd565b5481146135b457846135a06129cd565b600083815260049190910160205260409020555b505b60405186906000906001600160a01b03861690600080516020614509833981519152908390a46135e46129cd565b600190810180549091019055505050505050565b604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b60008051602061452983398151915254610100900460ff166136735760405162461bcd60e51b815260040161124f90614430565b8161367c6129cd565b6002019061368a9082614262565b50806136946129cd565b600301906136a29082614262565b5060016136ad6129cd565b555050565b60008051602061452983398151915254610100900460ff1661313b5760405162461bcd60e51b815260040161124f90614430565b6001600160a01b0316638b78c6d8198190558060006000805160206144e98339815191528180a350565b600054610100900460ff1661313b5760405162461bcd60e51b815260040161124f90614484565b6137418383613372565b6001600160a01b0383163b15610c8757600061375b6129cd565b5490508281035b6137756000868380600101945086612fd5565b613792576040516368d2bf6b60e11b815260040160405180910390fd5b81811061376257816137a26129cd565b54146137ad57600080fd5b5050505050565b60008183106137d0576000828152602084905260409020611e30565b6000838152602083905260409020611e30565b6001600160e01b031981168114610e7f57600080fd5b60006020828403121561380b57600080fd5b8135611e30816137e3565b80356001600160a01b038116811461382d57600080fd5b919050565b80356001600160601b038116811461382d57600080fd5b6000806040838503121561385c57600080fd5b61386583613816565b915061387360208401613832565b90509250929050565b60005b8381101561389757818101518382015260200161387f565b8381111561172a5750506000910152565b600081518084526138c081602086016020860161387c565b601f01601f19169290920160200192915050565b602081526000611e3060208301846138a8565b6000602082840312156138f957600080fd5b5035919050565b6000806040838503121561391357600080fd5b61391c83613816565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156139685761396861392a565b604052919050565b6000602080838503121561398357600080fd5b82356001600160401b038082111561399a57600080fd5b818501915085601f8301126139ae57600080fd5b8135818111156139c0576139c061392a565b8060051b91506139d1848301613940565b81815291830184019184810190888411156139eb57600080fd5b938501935b83851015613a1c578435925060ff83168314613a0c5760008081fd5b82825293850193908501906139f0565b98975050505050505050565b8035801515811461382d57600080fd5b60008060408385031215613a4b57600080fd5b613a5483613816565b915061387360208401613a28565b600080600060608486031215613a7757600080fd5b613a8084613816565b9250613a8e60208501613816565b9150604084013590509250925092565b60008060408385031215613ab157600080fd5b50508035926020909101359150565b600060208284031215613ad257600080fd5b611e3082613816565b80356001600160401b038116811461382d57600080fd5b60008083601f840112613b0457600080fd5b5081356001600160401b03811115613b1b57600080fd5b6020830191508360208260051b850101111561121e57600080fd5b60008060008060608587031215613b4c57600080fd5b613b5585613adb565b93506020850135925060408501356001600160401b03811115613b7757600080fd5b613b8387828801613af2565b95989497509550505050565b60006001600160401b03831115613ba857613ba861392a565b613bbb601f8401601f1916602001613940565b9050828152838383011115613bcf57600080fd5b828260208301376000602084830101529392505050565b600082601f830112613bf757600080fd5b611e3083833560208501613b8f565b600060208284031215613c1857600080fd5b81356001600160401b03811115613c2e57600080fd5b6130b984828501613be6565b600080600060608486031215613c4f57600080fd5b83359250613c5f60208501613816565b9150613c6d60408501613832565b90509250925092565b60008060208385031215613c8957600080fd5b82356001600160401b03811115613c9f57600080fd5b613cab85828601613af2565b90969095509350505050565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b6020808252825182820181905260009190848201906040850190845b81811015611a8d57613d22838551613cb7565b9284019260809290920191600101613d0f565b6020808252825182820181905260009190848201906040850190845b81811015611a8d57835160ff1683529284019291840191600101613d51565b600080600080600060a08688031215613d8857600080fd5b85359450602086013593506040860135925060608601359150613dad60808701613a28565b90509295509295909350565b6020808252825182820181905260009190848201906040850190845b81811015611a8d57835183529284019291840191600101613dd5565b60008060408385031215613e0457600080fd5b613e0d83613816565b915061387360208401613adb565b600080600060608486031215613e3057600080fd5b613e3984613816565b95602085013595506040909401359392505050565b60008060008060808587031215613e6457600080fd5b613e6d85613816565b9350613e7b60208601613816565b92506040850135915060608501356001600160401b03811115613e9d57600080fd5b8501601f81018713613eae57600080fd5b613ebd87823560208401613b8f565b91505092959194509250565b60008060008060008060c08789031215613ee257600080fd5b613eeb87613816565b955060208701356001600160401b0380821115613f0757600080fd5b613f138a838b01613be6565b96506040890135915080821115613f2957600080fd5b50613f3689828a01613be6565b945050613f4560608801613816565b9250613f5360808801613816565b9150613f6160a08801613832565b90509295509295509295565b60808101610c418284613cb7565b60008060008060408587031215613f9157600080fd5b84356001600160401b0380821115613fa857600080fd5b613fb488838901613af2565b90965094506020870135915080821115613fcd57600080fd5b50613b8387828801613af2565b60008060408385031215613fed57600080fd5b613ff683613816565b915061387360208401613816565b60006020828403121561401657600080fd5b611e3082613adb565b60008060008060006080868803121561403757600080fd5b61404086613816565b945061404e60208701613adb565b93506040860135925060608601356001600160401b0381111561407057600080fd5b61407c88828901613af2565b969995985093965092949392505050565b600181811c908216806140a157607f821691505b6020821081036140c157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156140f7576140f76140c7565b500290565b60008261411957634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600d908201526c05175616e74697479206973203609c1b604082015260600190565b6020808252601390820152724578636565646564206d617820737570706c7960681b604082015260600190565b602080825260159082015274115e18d959591959081b585e081c195c881b5a5b9d605a1b604082015260600190565b60006001600160401b038083168185168083038211156141c3576141c36140c7565b01949350505050565b60208082526017908201527f4578636565646564206d6178207065722077616c6c6574000000000000000000604082015260600190565b60006020828403121561421557600080fd5b5051919050565b601f821115610c8757600081815260208120601f850160051c810160208610156142435750805b601f850160051c820191505b8181101561111f5782815560010161424f565b81516001600160401b0381111561427b5761427b61392a565b61428f81614289845461408d565b8461421c565b602080601f8311600181146142c457600084156142ac5750858301515b600019600386901b1c1916600185901b17855561111f565b600085815260208120601f198616915b828110156142f3578886015182559484019460019091019084016142d4565b50858210156143115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b6000835161434981846020880161387c565b8351908301906141c381836020880161387c565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b600082198211156143ba576143ba6140c7565b500190565b6000828210156143d1576143d16140c7565b500390565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614409908301846138a8565b9695505050505050565b60006020828403121561442557600080fd5b8151611e30816137e3565b60208082526034908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604082015273206973206e6f7420696e697469616c697a696e6760601b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000600182016144e1576144e16140c7565b506001019056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa2646970667358221220d441ed5a74919835ab5d9bf6f6ac60cd402cbdc4b0108a5206449e82dbee6b0b64736f6c634300080f0033