[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AIMeNFTUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "TransferFailed", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "AIMeNFTBurned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "creator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "aimeAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "powerAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "string", "name": "infoType", "type": "string" }, { "indexed": false, "internalType": "string", "name": "data", "type": "string" } ], "name": "AIMeNFTMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "buyer", "type": "address" }, { "indexed": false, "internalType": "address", "name": "prevOwner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "AIMeNFTSold", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "string", "name": "infoType", "type": "string" }, { "indexed": false, "internalType": "string", "name": "data", "type": "string" } ], "name": "AIMeNFTUpdated", "type": "event" }, { "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": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "NativeTokenWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" } ], "name": "RewardClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newFunding", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalRewards", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "dailyReward", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "duration", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "periodFinish", "type": "uint256" } ], "name": "RewardPoolFunded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "startTime", "type": "uint256" } ], "name": "RewardSystemInitialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TokenWithdrawn", "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": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "activeTokenIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "aimePower", "outputs": [ { "internalType": "contract IAIMePowerToken", "name": "", "type": "address" } ], "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": [], "name": "avatar", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burnNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "buyNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "buyNFTLockPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimRewardReserved", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "computeCollectionHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dailyRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "earned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "dailyReward", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "fundRewardPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getAIMePower", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBurnPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBurnPriceAfterFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBuyPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getLockedTokenAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintPriceAfterFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "id", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "id_", "type": "string" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "avatar_", "type": "string" }, { "internalType": "string", "name": "bio_", "type": "string" }, { "internalType": "string", "name": "image_", "type": "string" }, { "internalType": "uint256", "name": "startingPrice_", "type": "uint256" }, { "internalType": "address", "name": "powerAddress_", "type": "address" }, { "internalType": "contract IAIMeNFTPricing", "name": "nftPricing_", "type": "address" }, { "internalType": "address", "name": "manager_", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "lastMintTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastTimeRewardApplicable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "lastTokenUpdateTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastUpdateTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "string", "name": "key", "type": "string" }, { "internalType": "string", "name": "dataType", "type": "string" }, { "internalType": "string", "name": "data", "type": "string" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "imageBG", "type": "string" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nftPricing", "outputs": [ { "internalType": "contract IAIMeNFTPricing", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "period", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "priceStep", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "prices", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "remainingRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardPerToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardPerTokenStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardStartTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardStarted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "runningHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "", "type": "uint256" } ], "name": "tokenContents", "outputs": [ { "internalType": "string", "name": "key", "type": "string" }, { "internalType": "string", "name": "dataType", "type": "string" }, { "internalType": "string", "name": "data", "type": "string" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "imageBG", "type": "string" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenHashes", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalRewards", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "key", "type": "string" }, { "internalType": "string", "name": "dataType", "type": "string" }, { "internalType": "string", "name": "data", "type": "string" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "imageBG", "type": "string" } ], "name": "updateAIMeInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "userRewardPerTokenPaid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawNativeToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052610e10601355610e106015553480156200001d57600080fd5b50604080516020808201835260008083528351918201909352828152909162000047838262000104565b50600162000056828262000104565b505050620001d0565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200008a57607f821691505b602082108103620000ab57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620000ff57600081815260208120601f850160051c81016020861015620000da5750805b601f850160051c820191505b81811015620000fb57828155600101620000e6565b5050505b505050565b81516001600160401b038111156200012057620001206200005f565b620001388162000131845462000075565b84620000b1565b602080601f831160018114620001705760008415620001575750858301515b600019600386901b1c1916600185901b178555620000fb565b600085815260208120601f198616915b82811015620001a15788860151825594840194600190910190840162000180565b5085821015620001c05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6150ac80620001e06000396000f3fe6080604052600436106103a55760003560e01c806372434fd5116101e7578063ac39fe761161010d578063c8bfef77116100a0578063df136d651161006f578063df136d6514610a82578063e985e9c514610a98578063ef78d4fd14610ae1578063f520e7e514610af757600080fd5b8063c8bfef7714610a2c578063c8f33c9114610a42578063cd3daf9d14610a58578063dacf35b714610a6d57600080fd5b8063b88d4fde116100dc578063b88d4fde1461099f578063bc31c1c1146109bf578063c4b72b2d146109ec578063c87b56dd14610a0c57600080fd5b8063ac39fe761461094a578063af640d0f1461095f578063afb62e5614610974578063b88a802f1461098a57600080fd5b806396ab994d116101855780639d8ba1b6116101545780639d8ba1b6146108ea5780639e691cfd146108ff578063a22cb46514610915578063a7f93ebd1461093557600080fd5b806396ab994d1461088557806398f5a54f1461089f5780639a14691f146108b45780639d463520146108d457600080fd5b806388d519c4116101c157806388d519c41461080f5780638b876347146108255780638bef358c1461085257806395d89b411461087057600080fd5b806372434fd5146107ad5780637432a384146107cd57806380faa57d146107fa57600080fd5b806323b872dd116102cc578063481c6a751161026a5780635aef7de6116102395780635aef7de6146107265780635b6741711461073b5780636352211e1461076d57806370a082311461078d57600080fd5b8063481c6a75146106a857806351ed8288146106c6578063536c6bfa146106e657806356705d8f1461070657600080fd5b80632cc138be116102a65780632cc138be146106475780633f9eed981461065d57806342842e0e14610672578063473d30601461069257600080fd5b806323b872dd146105e35780632890e0d7146106035780632ae6218d1461062357600080fd5b8063081812fc1161034457806310d8f9691161031357806310d8f9691461053e578063150b7a021461055e57806317faf003146105975780631d7d1104146105c357600080fd5b8063081812fc146104b0578063095ea7b3146104e85780630d7c43f5146105085780630e15561a1461052857600080fd5b806301ffc9a71161038057806301ffc9a71461041b578063047fc9aa1461044b57806306fdde03146104615780630700037d1461048357600080fd5b80628cc262146103b1578063018a25e8146103e457806301e33667146103f957600080fd5b366103ac57005b600080fd5b3480156103bd57600080fd5b506103d16103cc366004614271565b610b0d565b6040519081526020015b60405180910390f35b3480156103f057600080fd5b506103d1610b83565b34801561040557600080fd5b5061041961041436600461428e565b610c2e565b005b34801561042757600080fd5b5061043b6104363660046142e5565b610e95565b60405190151581526020016103db565b34801561045757600080fd5b506103d1600f5481565b34801561046d57600080fd5b50610476610ee7565b6040516103db919061435a565b34801561048f57600080fd5b506103d161049e366004614271565b601f6020526000908152604090205481565b3480156104bc57600080fd5b506104d06104cb36600461436d565b610f79565b6040516001600160a01b0390911681526020016103db565b3480156104f457600080fd5b50610419610503366004614386565b61100e565b34801561051457600080fd5b506103d161052336600461445e565b611123565b34801561053457600080fd5b506103d160175481565b34801561054a57600080fd5b5061041961055936600461453f565b611554565b34801561056a57600080fd5b5061057e61057936600461456b565b6118aa565b6040516001600160e01b031990911681526020016103db565b3480156105a357600080fd5b506103d16105b236600461436d565b602080526000908152604090205481565b3480156105cf57600080fd5b506103d16105de36600461436d565b6118bb565b3480156105ef57600080fd5b506104196105fe36600461428e565b6118dc565b34801561060f57600080fd5b5061041961061e36600461436d565b61190d565b34801561062f57600080fd5b50600f546000908152601160205260409020546103d1565b34801561065357600080fd5b506103d1601b5481565b34801561066957600080fd5b50610419611d4e565b34801561067e57600080fd5b5061041961068d36600461428e565b611ec9565b34801561069e57600080fd5b506103d160235481565b3480156106b457600080fd5b50600d546001600160a01b03166104d0565b3480156106d257600080fd5b506104196106e136600461436d565b611ee4565b3480156106f257600080fd5b50610419610701366004614386565b612292565b34801561071257600080fd5b506104196107213660046145eb565b6123ad565b34801561073257600080fd5b50610476612528565b34801561074757600080fd5b5061075b61075636600461436d565b6125b6565b6040516103db969594939291906146f9565b34801561077957600080fd5b506104d061078836600461436d565b612892565b34801561079957600080fd5b506103d16107a8366004614271565b612909565b3480156107b957600080fd5b50600a546104d0906001600160a01b031681565b3480156107d957600080fd5b506103d16107e836600461436d565b60216020526000908152604090205481565b34801561080657600080fd5b506103d1612990565b34801561081b57600080fd5b506103d160125481565b34801561083157600080fd5b506103d1610840366004614271565b601e6020526000908152604090205481565b34801561085e57600080fd5b506009546001600160a01b03166104d0565b34801561087c57600080fd5b506104766129b0565b34801561089157600080fd5b50601a5461043b9060ff1681565b3480156108ab57600080fd5b506103d16129bf565b3480156108c057600080fd5b506009546104d0906001600160a01b031681565b3480156108e057600080fd5b506103d160145481565b3480156108f657600080fd5b506103d1612a7b565b34801561090b57600080fd5b506103d160155481565b34801561092157600080fd5b5061041961093036600461477c565b612aef565b34801561094157600080fd5b506103d1612afa565b34801561095657600080fd5b506103d1612c4e565b34801561096b57600080fd5b50610476612d07565b34801561098057600080fd5b506103d160185481565b34801561099657600080fd5b50610419612d14565b3480156109ab57600080fd5b506104196109ba36600461456b565b612df5565b3480156109cb57600080fd5b506103d16109da36600461436d565b60116020526000908152604090205481565b3480156109f857600080fd5b50610419610a073660046147b5565b612e2d565b348015610a1857600080fd5b50610476610a2736600461436d565b613054565b348015610a3857600080fd5b506103d160195481565b348015610a4e57600080fd5b506103d1601c5481565b348015610a6457600080fd5b506103d161324f565b348015610a7957600080fd5b506103d16132e5565b348015610a8e57600080fd5b506103d1601d5481565b348015610aa457600080fd5b5061043b610ab33660046148a1565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610aed57600080fd5b506103d160135481565b348015610b0357600080fd5b506103d160165481565b600080610b1983612909565b6001600160a01b0384166000908152601f6020908152604080832054601e9092529091205491925090670de0b6b3a764000090610b5461324f565b610b5e91906148e5565b610b6890846148fc565b610b729190614931565b610b7c9190614945565b9392505050565b600080610b98600d546001600160a01b031690565b6001600160a01b0316639d3f4c286040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf9919061495d565b90506000610c05612afa565b90506064610c138382614945565b610c1d90836148fc565b610c279190614931565b9250505090565b600d546001600160a01b03163314610c6c57335b604051633004315f60e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b6040516370a0823160e01b815230600482015283906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd9919061495d565b6009549091506001600160a01b0390811690861603610d59576000610cfc612a7b565b9050610d088482614945565b821015610d575760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74207769746864726177206c6f636b656420746f6b656e730000006044820152606401610c63565b505b80831115610da95760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152606401610c63565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590526000919084169063a9059cbb906044016020604051808303816000875af1158015610dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e209190614976565b905080610e40576040516312171d8360e31b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03167f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e562086604051610e8591815260200190565b60405180910390a3505050505050565b60006001600160e01b031982166380ac58cd60e01b1480610ec657506001600160e01b03198216635b5e139f60e01b145b80610ee157506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060078054610ef690614993565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2290614993565b8015610f6f5780601f10610f4457610100808354040283529160200191610f6f565b820191906000526020600020905b815481529060010190602001808311610f5257829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610ff25760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610c63565b506000908152600460205260409020546001600160a01b031690565b600061101982612892565b9050806001600160a01b0316836001600160a01b0316036110865760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c63565b336001600160a01b03821614806110a257506110a28133610ab3565b6111145760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610c63565b61111e83836133cc565b505050565b600d546000906001600160a01b0316331461113e5733610c42565b6000611148612afa565b90508060116000600f54600161115e9190614945565b8152602001908152602001600020819055506000611184600d546001600160a01b031690565b600954604051632cd23c3f60e21b81526001600160a01b03918216600482015291169063b348f0fc90602401602060405180830381865afa1580156111cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f1919061495d565b90506000606461120183856148fc565b61120b9190614931565b905060006112198285614945565b6009549091506001600160a01b03166112645760405162461bcd60e51b815260206004820152600d60248201526c27379020a4a6a2902837bbb2b960991b6044820152606401610c63565b6009546040516370a0823160e01b81526001600160a01b038d81166004830152839216906370a0823190602401602060405180830381865afa1580156112ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d2919061495d565b10156113155760405162461bcd60e51b81526020600482015260126024820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b6044820152606401610c63565b600954604051636eb1769f60e11b81526001600160a01b038d811660048301523060248301528392169063dd62ed3e90604401602060405180830381865afa158015611365573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611389919061495d565b10156113ce5760405162461bcd60e51b81526020600482015260146024820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b6044820152606401610c63565b6009546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90611402908e90309089906004016149cd565b6020604051808303816000875af1158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190614976565b50600061145a600d546001600160a01b031690565b6001600160a01b0316638ec218bb6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bd91906149f1565b6009546040516323b872dd60e01b81529192506001600160a01b0316906323b872dd906114f2908f90859088906004016149cd565b6020604051808303816000875af1158015611511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115359190614976565b506115448c8c8c8c8c8c61343a565b9c9b505050505050505050505050565b600d546001600160a01b0316331461156c5733610c42565b600083116115bc5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610c63565b600082116116185760405162461bcd60e51b815260206004820152602360248201527f4461696c7920726577617264206d75737420626520677265617465722074686160448201526206e20360ec1b6064820152608401610c63565b600081116116685760405162461bcd60e51b815260206004820152601f60248201527f4475726174696f6e206d7573742062652067726561746572207468616e2030006044820152606401610c63565b826201518061167783856148fc565b6116819190614931565b11156116cf5760405162461bcd60e51b815260206004820152601c60248201527f496e76616c69642072657761726420636f6e66696775726174696f6e000000006044820152606401610c63565b6009546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90611703903390309088906004016149cd565b6020604051808303816000875af1158015611722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117469190614976565b61178a5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610c63565b601a5460ff166117c85742601b819055601c55601a805460ff1916600117905560178390556018839055601982905560168190556000601d5561183f565b6117d2600061362a565b6000601654601b546117e49190614945565b4210156117f057506018545b60006117fc8583614945565b905060008361180e83620151806148fc565b6118189190614931565b9050856017546118289190614945565b60175560189190915560195550601681905542601b555b7fe9fc7653e2e93ba796203b69cc8d5bd867e16e389dea5a1805a95116fec9d79883601754601954601654601654601b5461187a9190614945565b604080519586526020860194909452928401919091526060830152608082015260a00160405180910390a1505050565b630a85bd0160e11b5b949350505050565b602281815481106118cb57600080fd5b600091825260209091200154905081565b6118e633826136ea565b6119025760405162461bcd60e51b8152600401610c6390614a0e565b61111e8383836137e0565b3361191782612892565b6001600160a01b03161461195d5760405162461bcd60e51b815260206004820152600d60248201526c2737ba103a34329037bbb732b960991b6044820152606401610c63565b6119663361362a565b600f54600090815260116020526040812054600d549091906001600160a01b0316600954604051632cd23c3f60e21b81526001600160a01b03918216600482015291169063b348f0fc90602401602060405180830381865afa1580156119d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f4919061495d565b905060006064611a0483856148fc565b611a0e9190614931565b905060005b602254811015611ac9578460228281548110611a3157611a31614a5f565b906000526020600020015403611ab75760228054611a51906001906148e5565b81548110611a6157611a61614a5f565b906000526020600020015460228281548110611a7f57611a7f614a5f565b6000918252602090912001556022805480611a9c57611a9c614a75565b60019003818190600052602060002001600090559055611ac9565b80611ac181614a8b565b915050611a13565b50600084815260216020908152604080832080546023805484518087019190915280850183905284518082038601815260609091018552805190860120905588855290849055601090925282209091611b2282826141fe565b611b306001830160006141fe565b611b3e6002830160006141fe565b611b4c6003830160006141fe565b611b5a6004830160006141fe565b60058201600090555050611b6d85613987565b600f8054906000611b7d83614aa4565b90915550506009546001600160a01b031663a9059cbb33611b9e85886148e5565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0d9190614976565b506009546001600160a01b031663a9059cbb611c31600d546001600160a01b031690565b6001600160a01b0316638ec218bb6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9491906149f1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af1158015611ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d059190614976565b5060408051338152602081018790529081018590527f465f5f938b9f9e33504cb7b75ff22682e12fb7c6957a6cac07387b4b514503279060600160405180910390a15050505050565b30611d588161362a565b6001600160a01b0381166000908152601f60205260409020548015611ec5576001600160a01b038083166000908152601f60205260408120556009541663a9059cbb611dac600d546001600160a01b031690565b6001600160a01b0316638ec218bb6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0f91906149f1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015611e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e809190614976565b50816001600160a01b03167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051611ebc91815260200190565b60405180910390a25b5050565b61111e83838360405180602001604052806000815250612df5565b33611eee82612892565b6001600160a01b031614158015611f16575030611f0a82612892565b6001600160a01b031614155b611f585760405162461bcd60e51b815260206004820152601360248201527210d85b9b9bdd08189d5e481d1a1a5cc8139195606a1b6044820152606401610c63565b601554600082815260106020526040902060050154611f779190614945565b4211611fbc5760405162461bcd60e51b8152602060048201526014602482015273139195081b9bdd08199bdc881cd85b19481e595d60621b6044820152606401610c63565b6000611fc6610b83565b6009546040516370a0823160e01b815233600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612013573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612037919061495d565b101561207a5760405162461bcd60e51b81526020600482015260126024820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b6044820152606401610c63565b600954604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa1580156120c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ec919061495d565b10156121315760405162461bcd60e51b81526020600482015260146024820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b6044820152606401610c63565b600061213c83612892565b6009546040516323b872dd60e01b81529192506000916001600160a01b03909116906323b872dd90612176903390869088906004016149cd565b6020604051808303816000875af1158015612195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b99190614976565b9050806122085760405162461bcd60e51b815260206004820152601a60248201527f41494d4520506f776572205472616e73666572206661696c65640000000000006044820152606401610c63565b61222382338660405180602001604052806000815250613a2e565b6000848152601060209081526040918290204260059091015581513381526001600160a01b03851691810191909152908101859052606081018490527f9a36af0c7e02e2a22fe75681d86f60c5f29b91ef6315acc939031784affc206b9060800160405180910390a150505050565b600d546001600160a01b031633146122aa5733610c42565b478111156122f15760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610c63565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461233e576040519150601f19603f3d011682016040523d82523d6000602084013e612343565b606091505b5050905080612365576040516312171d8360e31b815260040160405180910390fd5b826001600160a01b03167fcb34bab4d8a21ce2df6988d496d854246c2a96147dac484b1e1a30be9213befd836040516123a091815260200190565b60405180910390a2505050565b60065460ff16156123f65760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610c63565b600c6124028a82614b09565b50600761240f8982614b09565b50600861241c8982614b09565b50610e106013819055601555600d80546001600160a01b038084166001600160a01b031992831617909255600a805492851692909116919091179055600b6124648882614b09565b50600980546001600160a01b0319166001600160a01b038516179055600160005260116020527f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b5528490556124b9600285614931565b60128190555061250f306040518060400160405280600c81526020016b18985cda58d7dc1c9bdb5c1d60a21b8152506040518060400160405280600681526020016573746174696360d01b81525089898c61343a565b50506006805460ff191660011790555050505050505050565b600b805461253590614993565b80601f016020809104026020016040519081016040528092919081815260200182805461256190614993565b80156125ae5780601f10612583576101008083540402835291602001916125ae565b820191906000526020600020905b81548152906001019060200180831161259157829003601f168201915b505050505081565b6010602052600090815260409020805481906125d190614993565b80601f01602080910402602001604051908101604052809291908181526020018280546125fd90614993565b801561264a5780601f1061261f5761010080835404028352916020019161264a565b820191906000526020600020905b81548152906001019060200180831161262d57829003601f168201915b50505050509080600101805461265f90614993565b80601f016020809104026020016040519081016040528092919081815260200182805461268b90614993565b80156126d85780601f106126ad576101008083540402835291602001916126d8565b820191906000526020600020905b8154815290600101906020018083116126bb57829003601f168201915b5050505050908060020180546126ed90614993565b80601f016020809104026020016040519081016040528092919081815260200182805461271990614993565b80156127665780601f1061273b57610100808354040283529160200191612766565b820191906000526020600020905b81548152906001019060200180831161274957829003601f168201915b50505050509080600301805461277b90614993565b80601f01602080910402602001604051908101604052809291908181526020018280546127a790614993565b80156127f45780601f106127c9576101008083540402835291602001916127f4565b820191906000526020600020905b8154815290600101906020018083116127d757829003601f168201915b50505050509080600401805461280990614993565b80601f016020809104026020016040519081016040528092919081815260200182805461283590614993565b80156128825780601f1061285757610100808354040283529160200191612882565b820191906000526020600020905b81548152906001019060200180831161286557829003601f168201915b5050505050908060050154905086565b6000818152600260205260408120546001600160a01b031680610ee15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610c63565b60006001600160a01b0382166129745760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610c63565b506001600160a01b031660009081526003602052604090205490565b60006129ab42601654601b546129a69190614945565b613a61565b905090565b606060088054610ef690614993565b6000806129ca612afa565b905060006129e0600d546001600160a01b031690565b600954604051632cd23c3f60e21b81526001600160a01b03918216600482015291169063b348f0fc90602401602060405180830381865afa158015612a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4d919061495d565b905060006064612a5d83856148fc565b612a679190614931565b9050612a738184614945565b935050505090565b60008060015b600f548111612ab757600081815260116020526040902054612aa39083614945565b915080612aaf81614a8b565b915050612a81565b50601a5460009060ff168015612adb5750601654601b54612ad89190614945565b42105b15612ae557506018545b610c278183614945565b611ec5338383613a77565b6000600f54600103612b365750600160005260116020527f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b5525490565b600060145442612b4691906148e5565b600f5460009081526011602052604090205460135491925090821015612bee57600a5460135460125460405163c7747a0f60e01b81526004810186905260248101859052604481019290925260648201526001600160a01b039091169063c7747a0f906084015b602060405180830381865afa158015612bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c27919061495d565b600a546013546001600160a01b0390911690639616231690612c1090856148e5565b6013546012546040516001600160e01b031960e086901b16815260048101939093526024830186905260448301919091526064820152608401612bad565b600f546000908152601160205260408120546000612c74600d546001600160a01b031690565b600954604051632cd23c3f60e21b81526001600160a01b03918216600482015291169063b348f0fc90602401602060405180830381865afa158015612cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce1919061495d565b905060006064612cf183856148fc565b612cfb9190614931565b9050612a7381846148e5565b600c805461253590614993565b612d1d3361362a565b336000908152601f60205260409020548015612df257336000818152601f602052604080822091909155600954905163a9059cbb60e01b81526004810192909252602482018390526001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015612d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dbb9190614976565b5060405181815233907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419060200160405180910390a25b50565b612dff33836136ea565b612e1b5760405162461bcd60e51b8152600401610c6390614a0e565b612e2784848484613a2e565b50505050565b600d546001600160a01b03163314612e455733610c42565b6000612e5088612892565b9050866001600160a01b0316816001600160a01b0316148015612e7b57506001600160a01b03871615155b8015612e9057506001600160a01b0387163014155b612ed25760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103a37b5b2b71037bbb732b960691b6044820152606401610c63565b6040805160c0810182528781526020808201889052818301879052606082018690526080820185905260008b81526010808352938120600581015460a0850152908c905292905280519091908190612f2a9082614b09565b5060208201516001820190612f3f9082614b09565b5060408201516002820190612f549082614b09565b5060608201516003820190612f699082614b09565b5060808201516004820190612f7e9082614b09565b5060a0919091015160059091015560008881526010602090815260408083209051612fa99201614c46565b60408051808303601f19018152828252805160209182012060008d81526021835283902080549082905560235492850192909252918301829052606083018190529092509060800160408051601f198184030181529082905280516020909101206023557fab09e1f92f38c68e899ee403cc0149bd298ef09b0fd04f237a460246e4136d6b90613040908c908b908b908b90614cdc565b60405180910390a150505050505050505050565b6000818152600260205260409020546060906001600160a01b03166130d35760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610c63565b60006130dd610ee7565b6130e684613b45565b6040516020016130f7929190614d26565b60408051601f19818403018152918152600085815260106020529081206003018054929350909161312790614993565b80601f016020809104026020016040519081016040528092919081815260200182805461315390614993565b80156131a05780601f10613175576101008083540402835291602001916131a0565b820191906000526020600020905b81548152906001019060200180831161318357829003601f168201915b5050505050905060006131bd306001600160a01b03166014613c46565b6131c686613b45565b6040516020016131d7929190614d63565b6040516020818303038152906040529050600061321f846131f6610ee7565b848660405160200161320b9493929190614dc8565b604051602081830303815290604052613de2565b90506000816040516020016132349190614eb5565b60408051601f19818403018152919052979650505050505050565b6000600f54600014806132655750601a5460ff16155b156132715750601d5490565b6000601c5461327e612990565b61328891906148e5565b90506000620151806019548361329e91906148fc565b6132a89190614931565b90506018548111156132b957506018545b600f546132ce82670de0b6b3a76400006148fc565b6132d89190614931565b601d54610c279190614945565b602254600090819067ffffffffffffffff811115613305576133056143b2565b60405190808252806020026020018201604052801561332e578160200160208202803683370190505b50905060005b60225481101561339e57602160006022838154811061335557613355614a5f565b906000526020600020015481526020019081526020016000205482828151811061338157613381614a5f565b60209081029190910101528061339681614a8b565b915050613334565b50806040516020016133b09190614efa565b6040516020818303038152906040528051906020012091505090565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061340182612892565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006134458761362a565b600e80546000918261345683614a8b565b9190505590506134668882613f35565b600f805490600061347683614a8b565b90915550506040805160c081018252888152602080820189905281830188905260608201879052608082018690524260a08301526000848152601090915291909120815181906134c69082614b09565b50602082015160018201906134db9082614b09565b50604082015160028201906134f09082614b09565b50606082015160038201906135059082614b09565b506080820151600482019061351a9082614b09565b5060a0919091015160059091015542601455600081815260106020908152604080832090516135499201614c46565b60408051808303601f1901815282825280516020918201206000868152602183528381208290556022805460018101825591527f61035b26e3e9eee00e0d72fd1ee8ddca6894550dca6916ea2ac6baa90d11e5100186905560235491840191909152908201819052915060600160408051601f198184030181529082905280516020909101206023556009547fe654d5670e359fa5e786e5a1fb7711097de2c849d0a7668e4e3a685411c261c09161361691329130916001600160a01b03169087908e908e908e90614f30565b60405180910390a150979650505050505050565b61363261324f565b601d55600f5415613699576000601c5461364a612990565b61365491906148e5565b90506000620151806019548361366a91906148fc565b6136749190614931565b905060185481111561368557506018545b8060185461369391906148e5565b60185550505b6136a1612990565b601c556001600160a01b03811615612df2576136bc81610b0d565b6001600160a01b0382166000908152601f6020908152604080832093909355601d54601e9091529190205550565b6000818152600260205260408120546001600160a01b03166137635760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610c63565b600061376e83612892565b9050806001600160a01b0316846001600160a01b031614806137b557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806118b35750836001600160a01b03166137ce84610f79565b6001600160a01b031614949350505050565b826001600160a01b03166137f382612892565b6001600160a01b0316146138575760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610c63565b6001600160a01b0382166138b95760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c63565b6138c4838383613f4f565b6138cf6000826133cc565b6001600160a01b03831660009081526003602052604081208054600192906138f89084906148e5565b90915550506001600160a01b0382166000908152600360205260408120805460019290613926908490614945565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600061399282612892565b90506139a081600084613f4f565b6139ab6000836133cc565b6001600160a01b03811660009081526003602052604081208054600192906139d49084906148e5565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b613a398484846137e0565b613a4584848484613f7f565b612e275760405162461bcd60e51b8152600401610c6390614f9f565b6000818310613a705781610b7c565b5090919050565b816001600160a01b0316836001600160a01b031603613ad85760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c63565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606081600003613b6c5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613b965780613b8081614a8b565b9150613b8f9050600a83614931565b9150613b70565b60008167ffffffffffffffff811115613bb157613bb16143b2565b6040519080825280601f01601f191660200182016040528015613bdb576020820181803683370190505b5090505b84156118b357613bf06001836148e5565b9150613bfd600a86614ff1565b613c08906030614945565b60f81b818381518110613c1d57613c1d614a5f565b60200101906001600160f81b031916908160001a905350613c3f600a86614931565b9450613bdf565b60606000613c558360026148fc565b613c60906002614945565b67ffffffffffffffff811115613c7857613c786143b2565b6040519080825280601f01601f191660200182016040528015613ca2576020820181803683370190505b509050600360fc1b81600081518110613cbd57613cbd614a5f565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613cec57613cec614a5f565b60200101906001600160f81b031916908160001a9053506000613d108460026148fc565b613d1b906001614945565b90505b6001811115613d93576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613d4f57613d4f614a5f565b1a60f81b828281518110613d6557613d65614a5f565b60200101906001600160f81b031916908160001a90535060049490941c93613d8c81614aa4565b9050613d1e565b508315610b7c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c63565b60608151600003613e0157505060408051602081019091526000815290565b60006040518060600160405280604081526020016150606040913990506000600384516002613e309190614945565b613e3a9190614931565b613e459060046148fc565b67ffffffffffffffff811115613e5d57613e5d6143b2565b6040519080825280601f01601f191660200182016040528015613e87576020820181803683370190505b509050600182016020820185865187015b80821015613ef3576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845350600183019250613e98565b5050600386510660018114613f0f5760028114613f2257613f2a565b603d6001830353603d6002830353613f2a565b603d60018303535b509195945050505050565b611ec582826040518060200160405280600081525061407d565b6001600160a01b03831615613f6757613f678361362a565b6001600160a01b0382161561111e5761111e8261362a565b60006001600160a01b0384163b1561407557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613fc3903390899088908890600401615005565b6020604051808303816000875af1925050508015613ffe575060408051601f3d908101601f19168201909252613ffb91810190615042565b60015b61405b573d80801561402c576040519150601f19603f3d011682016040523d82523d6000602084013e614031565b606091505b5080516000036140535760405162461bcd60e51b8152600401610c6390614f9f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506118b3565b5060016118b3565b61408783836140b0565b6140946000848484613f7f565b61111e5760405162461bcd60e51b8152600401610c6390614f9f565b6001600160a01b0382166141065760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c63565b6000818152600260205260409020546001600160a01b03161561416b5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c63565b61417760008383613f4f565b6001600160a01b03821660009081526003602052604081208054600192906141a0908490614945565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b50805461420a90614993565b6000825580601f1061421a575050565b601f016020900490600052602060002090810190612df291905b808211156142485760008155600101614234565b5090565b6001600160a01b0381168114612df257600080fd5b803561426c8161424c565b919050565b60006020828403121561428357600080fd5b8135610b7c8161424c565b6000806000606084860312156142a357600080fd5b83356142ae8161424c565b925060208401356142be8161424c565b929592945050506040919091013590565b6001600160e01b031981168114612df257600080fd5b6000602082840312156142f757600080fd5b8135610b7c816142cf565b60005b8381101561431d578181015183820152602001614305565b83811115612e275750506000910152565b60008151808452614346816020860160208601614302565b601f01601f19169290920160200192915050565b602081526000610b7c602083018461432e565b60006020828403121561437f57600080fd5b5035919050565b6000806040838503121561439957600080fd5b82356143a48161424c565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156143e3576143e36143b2565b604051601f8501601f19908116603f0116810190828211818310171561440b5761440b6143b2565b8160405280935085815286868601111561442457600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261444f57600080fd5b610b7c838335602085016143c8565b60008060008060008060c0878903121561447757600080fd5b61448087614261565b9550602087013567ffffffffffffffff8082111561449d57600080fd5b6144a98a838b0161443e565b965060408901359150808211156144bf57600080fd5b6144cb8a838b0161443e565b955060608901359150808211156144e157600080fd5b6144ed8a838b0161443e565b9450608089013591508082111561450357600080fd5b61450f8a838b0161443e565b935060a089013591508082111561452557600080fd5b5061453289828a0161443e565b9150509295509295509295565b60008060006060848603121561455457600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561458157600080fd5b843561458c8161424c565b9350602085013561459c8161424c565b925060408501359150606085013567ffffffffffffffff8111156145bf57600080fd5b8501601f810187136145d057600080fd5b6145df878235602084016143c8565b91505092959194509250565b60008060008060008060008060006101208a8c03121561460a57600080fd5b893567ffffffffffffffff8082111561462257600080fd5b61462e8d838e0161443e565b9a5060208c013591508082111561464457600080fd5b6146508d838e0161443e565b995060408c013591508082111561466657600080fd5b6146728d838e0161443e565b985060608c013591508082111561468857600080fd5b6146948d838e0161443e565b975060808c01359150808211156146aa57600080fd5b506146b78c828d0161443e565b95505060a08a013593506146cd60c08b01614261565b92506146db60e08b01614261565b91506146ea6101008b01614261565b90509295985092959850929598565b60c08152600061470c60c083018961432e565b828103602084015261471e818961432e565b90508281036040840152614732818861432e565b90508281036060840152614746818761432e565b9050828103608084015261475a818661432e565b9150508260a0830152979650505050505050565b8015158114612df257600080fd5b6000806040838503121561478f57600080fd5b823561479a8161424c565b915060208301356147aa8161476e565b809150509250929050565b600080600080600080600060e0888a0312156147d057600080fd5b873596506147e060208901614261565b9550604088013567ffffffffffffffff808211156147fd57600080fd5b6148098b838c0161443e565b965060608a013591508082111561481f57600080fd5b61482b8b838c0161443e565b955060808a013591508082111561484157600080fd5b61484d8b838c0161443e565b945060a08a013591508082111561486357600080fd5b61486f8b838c0161443e565b935060c08a013591508082111561488557600080fd5b506148928a828b0161443e565b91505092959891949750929550565b600080604083850312156148b457600080fd5b82356148bf8161424c565b915060208301356147aa8161424c565b634e487b7160e01b600052601160045260246000fd5b6000828210156148f7576148f76148cf565b500390565b6000816000190483118215151615614916576149166148cf565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826149405761494061491b565b500490565b60008219821115614958576149586148cf565b500190565b60006020828403121561496f57600080fd5b5051919050565b60006020828403121561498857600080fd5b8151610b7c8161476e565b600181811c908216806149a757607f821691505b6020821081036149c757634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215614a0357600080fd5b8151610b7c8161424c565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201614a9d57614a9d6148cf565b5060010190565b600081614ab357614ab36148cf565b506000190190565b601f82111561111e57600081815260208120601f850160051c81016020861015614ae25750805b601f850160051c820191505b81811015614b0157828155600101614aee565b505050505050565b815167ffffffffffffffff811115614b2357614b236143b2565b614b3781614b318454614993565b84614abb565b602080601f831160018114614b6c5760008415614b545750858301515b600019600386901b1c1916600185901b178555614b01565b600085815260208120601f198616915b82811015614b9b57888601518255948401946001909101908401614b7c565b5085821015614bb95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008154614bd681614993565b808552602060018381168015614bf35760018114614c0d57614c3b565b60ff1985168884015283151560051b880183019550614c3b565b866000528260002060005b85811015614c335781548a8201860152908301908401614c18565b890184019650505b505050505092915050565b6020815260c060208201526000614c6060e0830184614bc9565b601f1980848303016040850152614c7a8260018701614bc9565b915080848303016060850152614c938260028701614bc9565b915080848303016080850152614cac8260038701614bc9565b9150808483030160a085015250614cc68160048601614bc9565b9050600584015460c08401528091505092915050565b848152608060208201526000614cf5608083018661432e565b8281036040840152614d07818661432e565b90508281036060840152614d1b818561432e565b979650505050505050565b60008351614d38818460208801614302565b61202360f01b9083019081528351614d57816002840160208801614302565b01600201949350505050565b7f68747470733a2f2f6170702e61696d652e66756e2f6e66742f00000000000000815260008351614d9b816019850160208801614302565b602f60f81b6019918401918201528351614dbc81601a840160208801614302565b01601a01949350505050565b693d913730b6b2911d101160b11b81528451600090614dee81600a850160208a01614302565b7f222c20226465736372697074696f6e223a20224120626c6f636b206f6620636f600a91840191820152680373a32b73a1037b3160bd1b602a8201528551614e3d816033840160208a01614302565b6b017102a3930b2329030ba1d160a51b603392909101918201528451614e6a81603f840160208901614302565b6c1116101134b6b0b3b2911d101160991b603f92909101918201528351614e9881604c840160208801614302565b61227d60f01b604c9290910191820152604e019695505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251614eed81601d850160208701614302565b91909101601d0192915050565b815160009082906020808601845b83811015614f2457815185529382019390820190600101614f08565b50929695505050505050565b6001600160a01b0388811682528781166020830152861660408201526060810185905260e060808201819052600090614f6b9083018661432e565b82810360a0840152614f7d818661432e565b905082810360c0840152614f91818561432e565b9a9950505050505050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826150005761500061491b565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906150389083018461432e565b9695505050505050565b60006020828403121561505457600080fd5b8151610b7c816142cf56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300080f000a