aiia-vault-sdk 1.1.26 → 1.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
|
|
1
|
-
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SeedRoundFundraiserSDK=void 0;const e=require("ethers"),n=t(require("./abis/SeedRoundFundraiser.json")),o=t(require("./contracts.json")),r=require("./utils"),i=t(require("./whitelist-tokens.json"));exports.SeedRoundFundraiserSDK=class{constructor(t,i){this.name="SeedRoundFundraiser",this.isBootstrapped=!1,this.PRICE_PRECISION=1e18,this.whitelistedTokensArray=[],this.projectToken="",this.projectTokenDecimals=0,this.formatEventArgs=t=>{const{eventName:e,args:n}=t;switch(e){case"TokenWhitelisted":return{...t,args:{...n,token:n.token.toLowerCase(),price:Number(n.price)/this.PRICE_PRECISION}};case"TokenPriceUpdated":return{...t,args:{...n,token:n.token.toLowerCase(),oldPrice:Number(n.oldPrice)/this.PRICE_PRECISION,newPrice:Number(n.newPrice)/this.PRICE_PRECISION}};case"TokenRemovedFromWhitelist":return{...t,args:{...n,token:n.token.toLowerCase()}};case"RoundCreated":case"RoundUpdated":return{...t,args:{...n,roundId:Number(n.roundId),startTime:Number(n.startTime),endTime:Number(n.endTime),targetFund:Number(n.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(n.totalAllocation),maxFundPerAccount:Number(n.maxFundPerAccount)/this.PRICE_PRECISION}};case"RoundEnded":return{...t,args:{...n,roundId:Number(n.roundId),raisedFunds:Number(n.raisedFunds)/this.PRICE_PRECISION,participants:Number(n.participants)}};case"Contribution":return{...t,args:{...n,roundId:Number(n.roundId),contributor:n.contributor.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount),fundAmount:Number(n.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(n.tokenAllocation)}};case"TokensClaimed":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),amount:Number(n.amount)}};case"ProjectTokenUpdated":return{...t,args:{...n,oldToken:n.oldToken.toLowerCase(),newToken:n.newToken.toLowerCase()}};case"ClaimingEnabledUpdated":case"RefundEnabledUpdated":return{...t,args:{...n,roundId:Number(n.roundId),enabled:n.enabled}};case"Refunded":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount)}};default:return t}};const a=Array.isArray(t)?t:[t];this.providers=a.map((t=>new e.ethers.JsonRpcProvider(t)));const s=(0,r.getRandomProvider)(this.providers);this.contractAddress=(0,r.resolveContractAddress)(a[0],this.name,o.default,i),this.contract=new e.ethers.Contract(this.contractAddress,n.default.abi,s),this.networkName=(0,r.getNetworkFromRpc)(a[0]),this.importWhitelistedTokens()}importWhitelistedTokens(){try{i.default[this.networkName]?(this.whitelistedTokensArray=i.default[this.networkName].map((t=>({name:t.name,address:t.address.toLowerCase(),decimals:t.decimals,symbol:t.symbol,icon:t.icon}))),console.log(`Imported ${this.whitelistedTokensArray.length} whitelisted tokens for ${this.networkName} network`)):console.log(`No whitelisted tokens found for ${this.networkName} network`)}catch(t){console.error("Error importing whitelisted tokens:",t)}}async getWhitelistedTokenInfo(t,e,n,o,r){const i=t.toLowerCase();if(!this.whitelistedTokensArray.some((t=>t.address===i)))return null;const a=await this.getWhitelistedToken(i);if(!a.isWhitelisted)return null;let s=0,d=0n;return r&&r.roundId>=0&&(d=r.maxFundPerAccountRaw*BigInt(this.PRICE_PRECISION)/a.priceRaw,s=r.maxFundPerAccount/a.price),{address:i,isWhitelisted:a.isWhitelisted,price:a.price,symbol:e,maxContribution:s,maxContributionRaw:d,decimals:n,icon:o}}async getAllWhitelistedTokensInfo(){const t=await this.getLatestRoundId();let e;if(t>=0){const n=await this.getRound(t);n.exists&&!n.ended&&(e={roundId:t,maxFundPerAccount:n.maxFundPerAccount,maxFundPerAccountRaw:n.maxFundPerAccountRaw})}const n=this.whitelistedTokensArray.map((t=>this.getWhitelistedTokenInfo(t.address,t.symbol,t.decimals,t.icon,e)));return(await Promise.all(n)).filter((t=>null!==t))}getRandomProvider(){return(0,r.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,n.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,r.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,n)=>t[n])),0===this.providers.length)throw new Error("No active RPC providers available");this.projectToken=await this.getProjectToken(),this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()),this.isBootstrapped=!0}async signAndSendTransaction(t,e,n={}){return(0,r.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),n,this.contract)}async buildAddWhitelistedTokenTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.addWhitelistedToken.populateTransaction(t,n)}async buildUpdateTokenPriceTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.updateTokenPrice.populateTransaction(t,n)}async buildRemoveWhitelistedTokenTx(t){return await this.contract.removeWhitelistedToken.populateTransaction(t)}async buildCreateRoundTx(t,e,n,o,i){const a=BigInt(Math.floor(n*this.PRICE_PRECISION)),s=BigInt(Math.floor(i*this.PRICE_PRECISION)),d=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),c=BigInt(Math.floor(o*Math.pow(10,d)));return await this.contract.createRound.populateTransaction(t,e,a,c,s)}async buildUpdateRoundTx(t,e,n,o,i,a){const s=BigInt(Math.floor(o*this.PRICE_PRECISION)),d=BigInt(Math.floor(a*this.PRICE_PRECISION)),c=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),u=BigInt(Math.floor(i*Math.pow(10,c)));return await this.contract.updateRound.populateTransaction(t,e,n,s,u,d)}async buildEndRoundTx(t){return await this.contract.endRound.populateTransaction(t)}async buildSetClaimingEnabledTx(t,e){return await this.contract.setClaimingEnabled.populateTransaction(t,e)}async buildSetRefundEnabledTx(t,e){return await this.contract.setRefundEnabled.populateTransaction(t,e)}async buildContributeTx(t,n,o){let i=18;n!==e.ethers.ZeroAddress&&(i=await(0,r.getTokenDecimals)(n,this.getRandomProvider()));const a=e.ethers.parseUnits(o.toString(),i),s=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:a);return n===e.ethers.ZeroAddress&&(s.value=a),s}async buildContributeTxRaw(t,n,o){const r=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:o);return n===e.ethers.ZeroAddress&&(r.value=o),r}async buildWithdrawFundsTx(t,e){const n=await(0,r.getTokenDecimals)(t,this.getRandomProvider()),o=BigInt(Math.floor(e*Math.pow(10,n)));return await this.contract.withdrawFunds.populateTransaction(t,o)}async buildClaimTokensByRoundIdTx(t){return await this.contract.claimTokensByRoundId.populateTransaction(t)}async getWhitelistedToken(t){const e=await this.contract.whitelistedTokens(t);return{isWhitelisted:e.isWhitelisted,price:Number(e.price)/this.PRICE_PRECISION,priceRaw:e.price}}async getRound(t){const e=await this.contract.rounds(t);return this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider())),{startTime:Number(e.startTime),endTime:Number(e.endTime),targetFund:Number(e.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(e.totalAllocation)/10**this.projectTokenDecimals,maxFundPerAccount:Number(e.maxFundPerAccount)/this.PRICE_PRECISION,maxFundPerAccountRaw:e.maxFundPerAccount,exists:e.exists,ended:e.ended,claimingEnabled:e.claimingEnabled,refundEnabled:e.refundEnabled}}async getUserContribution(t,n){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const o=await this.contract.userContributions(t,n);let i=18;return o.contributedToken!==e.ethers.ZeroAddress&&"0x0000000000000000000000000000000000000000"!==o.contributedToken&&(i=await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider())),{fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation)/10**this.projectTokenDecimals,claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/10**i,contributedAmountRaw:o.contributedAmount}}async getRoundRaisedFunds(t){const e=await this.contract.roundRaisedFunds(t);return Number(e)/this.PRICE_PRECISION}async getRoundParticipants(t){const e=await this.contract.roundParticipants(t);return Number(e)}async getUserParticipatedRound(t){const e=await this.contract.userParticipatedRound(t);return Number(e)}async getProjectToken(){return await this.contract.projectToken()}async getTotalRounds(){const t=await this.contract.totalRounds();return Number(t)}async getTotalRaisedFunds(){const t=await this.contract.totalRaisedFunds();return Number(t)/this.PRICE_PRECISION}async isRoundActive(t){return await this.contract.isRoundActive(t)}async getLatestRoundId(){const t=await this.getTotalRounds();return 0===t?-1:t-1}async getRoundInfo(t){const e=await this.getTotalRounds();if(t<0||t>=e)throw new Error(`Invalid round ID: ${t}`);return{roundId:t,config:await this.getRound(t),raisedFunds:await this.getRoundRaisedFunds(t),participants:await this.getRoundParticipants(t),isActive:await this.isRoundActive(t)}}async getUserTotalContribution(t){const e=await this.contract.getUserTotalContribution(t);return{totalFundAmount:Number(e.totalFundAmount)/this.PRICE_PRECISION,totalTokenAllocation:Number(e.totalTokenAllocation)}}async getTransactionStatus(t,e=10){return await(0,r.getTransactionStatus)(this.getRandomProvider(),t,e)}getContractAddress(){return this.contractAddress}async getAllEvents(t,e,n){return await this.bootstrap(),(0,r.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,n)}async streamEvents(t,e,n,o=1e3,i=5e3,a){return await this.bootstrap(),(0,r.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,a),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:n,fromBlock:t,batchSize:o,sleepTime:i})}async getUserRoundContribution(t,n){const[o,i]=await Promise.all([this.contract.getUserRoundContribution(t,n),this.contract.rounds(t)]),a=o.contributedToken!==e.ethers.ZeroAddress?await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider()):18,s={fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation),claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/a,contributedAmountRaw:o.contributedAmount},d=Math.floor(Date.now()/1e3),c=i.exists&&!i.ended&&d>=Number(i.startTime)&&d<=Number(i.endTime),u={contribution:s,roundInfo:{exists:i.exists,isActive:c,claimingEnabled:i.claimingEnabled,refundEnabled:i.refundEnabled}};if(s.fundAmount>0){const t=s.contributedToken;let n="ETH",o=18;return t!==e.ethers.ZeroAddress&&([n,o]=await Promise.all([(0,r.getTokenSymbol)(t,this.getRandomProvider()),(0,r.getTokenDecimals)(t,this.getRandomProvider())])),{...u,tokenInfo:{symbol:n,decimals:o}}}return u}async buildTransferProjectTokenToContract(t){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const n=new e.ethers.Interface(["function transfer(address to, uint256 amount) returns (bool)"]),o=e.ethers.parseUnits(t.toString(),this.projectTokenDecimals);return{to:this.projectToken,data:n.encodeFunctionData("transfer",[this.contractAddress,o])}}async hasAdminRole(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.hasRole(e,t)}async buildGrantAdminRoleTx(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async getAdminRoleHash(){return await this.contract.DEFAULT_ADMIN_ROLE()}};
|
1
|
+
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SeedRoundFundraiserSDK=void 0;const e=require("ethers"),n=t(require("./abis/SeedRoundFundraiser.json")),o=t(require("./contracts.json")),r=require("./utils"),i=t(require("./whitelist-tokens.json"));exports.SeedRoundFundraiserSDK=class{constructor(t,i){this.name="SeedRoundFundraiser",this.isBootstrapped=!1,this.PRICE_PRECISION=1e18,this.whitelistedTokensArray=[],this.projectToken="",this.projectTokenDecimals=0,this.formatEventArgs=t=>{const{eventName:e,args:n}=t;switch(e){case"TokenWhitelisted":return{...t,args:{...n,token:n.token.toLowerCase(),price:Number(n.price)/this.PRICE_PRECISION}};case"TokenPriceUpdated":return{...t,args:{...n,token:n.token.toLowerCase(),oldPrice:Number(n.oldPrice)/this.PRICE_PRECISION,newPrice:Number(n.newPrice)/this.PRICE_PRECISION}};case"TokenRemovedFromWhitelist":return{...t,args:{...n,token:n.token.toLowerCase()}};case"RoundCreated":case"RoundUpdated":return{...t,args:{...n,roundId:Number(n.roundId),startTime:Number(n.startTime),endTime:Number(n.endTime),targetFund:Number(n.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(n.totalAllocation),maxFundPerAccount:Number(n.maxFundPerAccount)/this.PRICE_PRECISION}};case"RoundEnded":return{...t,args:{...n,roundId:Number(n.roundId),raisedFunds:Number(n.raisedFunds)/this.PRICE_PRECISION,participants:Number(n.participants)}};case"Contribution":const e=this.whitelistedTokensArray.find((t=>t.address===n.token)),o=e?.decimals||18;return{...t,args:{...n,roundId:Number(n.roundId),contributor:n.contributor.toLowerCase(),token:n.token.toLowerCase(),symbol:e?.symbol||"ETH",amount:Number(n.amount)/10**o,fundAmount:Number(n.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(n.tokenAllocation)/1e18}};case"TokensClaimed":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),amount:Number(n.amount)}};case"ProjectTokenUpdated":return{...t,args:{...n,oldToken:n.oldToken.toLowerCase(),newToken:n.newToken.toLowerCase()}};case"ClaimingEnabledUpdated":case"RefundEnabledUpdated":return{...t,args:{...n,roundId:Number(n.roundId),enabled:n.enabled}};case"Refunded":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount)}};default:return t}};const a=Array.isArray(t)?t:[t];this.providers=a.map((t=>new e.ethers.JsonRpcProvider(t)));const s=(0,r.getRandomProvider)(this.providers);this.contractAddress=(0,r.resolveContractAddress)(a[0],this.name,o.default,i),this.contract=new e.ethers.Contract(this.contractAddress,n.default.abi,s),this.networkName=(0,r.getNetworkFromRpc)(a[0]),this.importWhitelistedTokens()}importWhitelistedTokens(){try{i.default[this.networkName]?(this.whitelistedTokensArray=i.default[this.networkName].map((t=>({name:t.name,address:t.address.toLowerCase(),decimals:t.decimals,symbol:t.symbol,icon:t.icon}))),console.log(`Imported ${this.whitelistedTokensArray.length} whitelisted tokens for ${this.networkName} network`)):console.log(`No whitelisted tokens found for ${this.networkName} network`)}catch(t){console.error("Error importing whitelisted tokens:",t)}}async getWhitelistedTokenInfo(t,e,n,o,r){const i=t.toLowerCase();if(!this.whitelistedTokensArray.some((t=>t.address===i)))return null;const a=await this.getWhitelistedToken(i);if(!a.isWhitelisted)return null;let s=0,d=0n;return r&&r.roundId>=0&&(d=r.maxFundPerAccountRaw*BigInt(10**n)/a.priceRaw,s=r.maxFundPerAccount/a.price),{address:i,isWhitelisted:a.isWhitelisted,price:a.price,symbol:e,maxContribution:s,maxContributionRaw:d,decimals:n,icon:o}}async getAllWhitelistedTokensInfo(){const t=await this.getLatestRoundId();let e;if(t>=0){const n=await this.getRound(t);n.exists&&!n.ended&&(e={roundId:t,maxFundPerAccount:n.maxFundPerAccount,maxFundPerAccountRaw:n.maxFundPerAccountRaw})}const n=this.whitelistedTokensArray.map((t=>this.getWhitelistedTokenInfo(t.address,t.symbol,t.decimals,t.icon,e)));return(await Promise.all(n)).filter((t=>null!==t))}getRandomProvider(){return(0,r.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,n.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,r.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,n)=>t[n])),0===this.providers.length)throw new Error("No active RPC providers available");this.projectToken=await this.getProjectToken(),this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()),this.isBootstrapped=!0}async signAndSendTransaction(t,e,n={}){return(0,r.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),n,this.contract)}async buildAddWhitelistedTokenTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.addWhitelistedToken.populateTransaction(t,n)}async buildUpdateTokenPriceTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.updateTokenPrice.populateTransaction(t,n)}async buildRemoveWhitelistedTokenTx(t){return await this.contract.removeWhitelistedToken.populateTransaction(t)}async buildCreateRoundTx(t,e,n,o,i){const a=BigInt(Math.floor(n*this.PRICE_PRECISION)),s=BigInt(Math.floor(i*this.PRICE_PRECISION)),d=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),c=BigInt(Math.floor(o*Math.pow(10,d)));return await this.contract.createRound.populateTransaction(t,e,a,c,s)}async buildUpdateRoundTx(t,e,n,o,i,a){const s=BigInt(Math.floor(o*this.PRICE_PRECISION)),d=BigInt(Math.floor(a*this.PRICE_PRECISION)),c=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),u=BigInt(Math.floor(i*Math.pow(10,c)));return await this.contract.updateRound.populateTransaction(t,e,n,s,u,d)}async buildEndRoundTx(t){return await this.contract.endRound.populateTransaction(t)}async buildSetClaimingEnabledTx(t,e){return await this.contract.setClaimingEnabled.populateTransaction(t,e)}async buildSetRefundEnabledTx(t,e){return await this.contract.setRefundEnabled.populateTransaction(t,e)}async buildContributeTx(t,n,o){let i=18;n!==e.ethers.ZeroAddress&&(i=await(0,r.getTokenDecimals)(n,this.getRandomProvider()));const a=e.ethers.parseUnits(o.toString(),i),s=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:a);return n===e.ethers.ZeroAddress&&(s.value=a),s}async buildContributeTxRaw(t,n,o){const r=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:o);return n===e.ethers.ZeroAddress&&(r.value=o),r}async buildWithdrawFundsTx(t,e){const n=await(0,r.getTokenDecimals)(t,this.getRandomProvider()),o=BigInt(Math.floor(e*Math.pow(10,n)));return await this.contract.withdrawFunds.populateTransaction(t,o)}async buildClaimTokensByRoundIdTx(t){return await this.contract.claimTokensByRoundId.populateTransaction(t)}async getWhitelistedToken(t){const e=await this.contract.whitelistedTokens(t);return{isWhitelisted:e.isWhitelisted,price:Number(e.price)/this.PRICE_PRECISION,priceRaw:e.price}}async getRound(t){const e=await this.contract.rounds(t);return this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider())),{startTime:Number(e.startTime),endTime:Number(e.endTime),targetFund:Number(e.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(e.totalAllocation)/10**this.projectTokenDecimals,maxFundPerAccount:Number(e.maxFundPerAccount)/this.PRICE_PRECISION,maxFundPerAccountRaw:e.maxFundPerAccount,exists:e.exists,ended:e.ended,claimingEnabled:e.claimingEnabled,refundEnabled:e.refundEnabled}}async getUserContribution(t,n){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const o=await this.contract.userContributions(t,n);let i=18;return o.contributedToken!==e.ethers.ZeroAddress&&"0x0000000000000000000000000000000000000000"!==o.contributedToken&&(i=await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider())),{fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation)/10**this.projectTokenDecimals,claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/10**i,contributedAmountRaw:o.contributedAmount}}async getRoundRaisedFunds(t){const e=await this.contract.roundRaisedFunds(t);return Number(e)/this.PRICE_PRECISION}async getRoundParticipants(t){const e=await this.contract.roundParticipants(t);return Number(e)}async getUserParticipatedRound(t){const e=await this.contract.userParticipatedRound(t);return Number(e)}async getProjectToken(){return await this.contract.projectToken()}async getTotalRounds(){const t=await this.contract.totalRounds();return Number(t)}async getTotalRaisedFunds(){const t=await this.contract.totalRaisedFunds();return Number(t)/this.PRICE_PRECISION}async isRoundActive(t){return await this.contract.isRoundActive(t)}async getLatestRoundId(){const t=await this.getTotalRounds();return 0===t?-1:t-1}async getRoundInfo(t){const e=await this.getTotalRounds();if(t<0||t>=e)throw new Error(`Invalid round ID: ${t}`);return{roundId:t,config:await this.getRound(t),raisedFunds:await this.getRoundRaisedFunds(t),participants:await this.getRoundParticipants(t),isActive:await this.isRoundActive(t)}}async getUserTotalContribution(t){const e=await this.contract.getUserTotalContribution(t);return{totalFundAmount:Number(e.totalFundAmount)/this.PRICE_PRECISION,totalTokenAllocation:Number(e.totalTokenAllocation)}}async getTransactionStatus(t,e=10){return await(0,r.getTransactionStatus)(this.getRandomProvider(),t,e)}getContractAddress(){return this.contractAddress}async getAllEvents(t,e,n){return await this.bootstrap(),(0,r.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,n)}async streamEvents(t,e,n,o=1e3,i=5e3,a){return await this.bootstrap(),(0,r.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,a),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:n,fromBlock:t,batchSize:o,sleepTime:i})}async getUserRoundContribution(t,n){const[o,i]=await Promise.all([this.contract.getUserRoundContribution(t,n),this.contract.rounds(t)]),a=o.contributedToken!==e.ethers.ZeroAddress?await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider()):18,s={fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation),claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/a,contributedAmountRaw:o.contributedAmount},d=Math.floor(Date.now()/1e3),c=i.exists&&!i.ended&&d>=Number(i.startTime)&&d<=Number(i.endTime),u={contribution:s,roundInfo:{exists:i.exists,isActive:c,claimingEnabled:i.claimingEnabled,refundEnabled:i.refundEnabled}};if(s.fundAmount>0){const t=s.contributedToken;let n="ETH",o=18;return t!==e.ethers.ZeroAddress&&([n,o]=await Promise.all([(0,r.getTokenSymbol)(t,this.getRandomProvider()),(0,r.getTokenDecimals)(t,this.getRandomProvider())])),{...u,tokenInfo:{symbol:n,decimals:o}}}return u}async buildTransferProjectTokenToContract(t){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const n=new e.ethers.Interface(["function transfer(address to, uint256 amount) returns (bool)"]),o=e.ethers.parseUnits(t.toString(),this.projectTokenDecimals);return{to:this.projectToken,data:n.encodeFunctionData("transfer",[this.contractAddress,o])}}async hasAdminRole(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.hasRole(e,t)}async buildGrantAdminRoleTx(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async getAdminRoleHash(){return await this.contract.DEFAULT_ADMIN_ROLE()}};
|
@@ -119,6 +119,11 @@
|
|
119
119
|
"name": "InvalidTokenAddress",
|
120
120
|
"type": "error"
|
121
121
|
},
|
122
|
+
{
|
123
|
+
"inputs": [],
|
124
|
+
"name": "InvalidTokenDecimals",
|
125
|
+
"type": "error"
|
126
|
+
},
|
122
127
|
{
|
123
128
|
"inputs": [],
|
124
129
|
"name": "InvalidTokenPrice",
|
@@ -621,6 +626,12 @@
|
|
621
626
|
"internalType": "uint256",
|
622
627
|
"name": "price",
|
623
628
|
"type": "uint256"
|
629
|
+
},
|
630
|
+
{
|
631
|
+
"indexed": false,
|
632
|
+
"internalType": "uint8",
|
633
|
+
"name": "decimals",
|
634
|
+
"type": "uint8"
|
624
635
|
}
|
625
636
|
],
|
626
637
|
"name": "TokenWhitelisted",
|
@@ -1018,6 +1029,11 @@
|
|
1018
1029
|
"internalType": "address",
|
1019
1030
|
"name": "_projectToken",
|
1020
1031
|
"type": "address"
|
1032
|
+
},
|
1033
|
+
{
|
1034
|
+
"internalType": "address",
|
1035
|
+
"name": "_owner",
|
1036
|
+
"type": "address"
|
1021
1037
|
}
|
1022
1038
|
],
|
1023
1039
|
"name": "initialize",
|
@@ -1514,6 +1530,11 @@
|
|
1514
1530
|
"internalType": "uint256",
|
1515
1531
|
"name": "price",
|
1516
1532
|
"type": "uint256"
|
1533
|
+
},
|
1534
|
+
{
|
1535
|
+
"internalType": "uint8",
|
1536
|
+
"name": "decimals",
|
1537
|
+
"type": "uint8"
|
1517
1538
|
}
|
1518
1539
|
],
|
1519
1540
|
"stateMutability": "view",
|
@@ -1542,8 +1563,8 @@
|
|
1542
1563
|
"type": "receive"
|
1543
1564
|
}
|
1544
1565
|
],
|
1545
|
-
"bytecode": "0x6080806040523460d2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161250990816100d88239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880604d565b63f92ee8a960e01b60005260046000fd5b600080fdfe6080806040526004361015610011575b005b60003560e01c90816301ffc9a714611ce5575080631c88705d14611c67578063248a9ca314611c4957806327ac0c5814611c2057806328f3e6581461035e5780632f2ff15d14611bef57806336568abe14611ba957806342683c6714611b8b5780634b60ce7714611b625780635a1e6ca114611aa65780635af6df4c146118cc5780636fed6940146118a0578063715018a6146118365780637ad226dc146115c15780637cf30c601461153e5780638952ac1e1461112e5780638a56829914610e5f5780638c65c81f1461108f5780638d52e5551461100b5780638da5cb5b14610fd557806391d1485414610f7b57806395082d2514610f5857806397ac4a2514610f305780639bb92c4e14610ea85780639da64ac214610e7d578063a09686c414610e5f578063a217fddf14610caa578063a6be83dd14610cc6578063a734f06e14610caa578063c107532914610b12578063c213df7814610ae9578063c4428a8914610861578063c4d66de8146106c9578063d4bcdfa1146105e3578063d4ee651b1461052c578063d547741f146104f6578063d871b0e314610471578063daf9c21014610429578063eb4c9e9b146103ef578063ed54890d1461035e578063efe9c9e2146102d9578063f0a3a97c1461029e578063f0e1bb3e14610272578063f2fde38b146102495763f5b541a61461020957005b346102445760003660031901126102445760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b600080fd5b346102445760203660031901126102445761000f610265611d38565b61026d6123ef565b611f21565b346102445760203660031901126102445760043560005260036020526020604060002054604051908152f35b346102445760003660031901126102445760206040517f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d078152f35b34610244576020366003190112610244576102f2611d38565b6102fa611f97565b6001600160a01b0316801561034d57600680546001600160a01b0319811683179091556001600160a01b03167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa9600080a3005b630f58058360e11b60005260046000fd5b34610244576040366003190112610244576040610379611d4e565b6004356000908152600260208181528483206001600160a01b0394851684528152939091208054600182015492820154600390920154604080519283529582019390935260ff808316151595820195909552600882901c9094161515606085015260101c909116608083015260a082015260c090f35b34610244576020366003190112610244576001600160a01b03610410611d38565b1660005260056020526020604060002054604051908152f35b34610244576020366003190112610244576001600160a01b0361044a611d38565b166000526000602052604080600020600160ff825416910154825191151582526020820152f35b346102445760203660031901126102445761048a611d38565b600754600091829182916001600160a01b03165b8185106104b5576040848482519182526020820152f35b90916104ec600191866000526002602052826104e36040806000206000908882526020522097885490611e3a565b96015490611e3a565b940193919061049e565b346102445760403660031901126102445761000f600435610515611d4e565b9061052761052282611d83565b61205c565b61234f565b3461024457604036600319011261024457610545611d38565b60243590610551611f97565b60018060a01b03169081600052600060205260ff60406000205416156105d25780156105c157600082815260208181526040918290206001018054908490558251908152908101929092527f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c191a2005b637841c2c960e11b60005260046000fd5b6307c241ad60e51b60005260046000fd5b34610244576040366003190112610244576105fc611d38565b60243590610608611f97565b6001600160a01b0316908115801590816106c1575b5061034d5780156105c15760405190604082019082821067ffffffffffffffff8311176106ab577fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a892602092604052600181526001838201838152866000526000855261069e604060002093511515849060ff801983541691151516179055565b51910155604051908152a2005b634e487b7160e01b600052604160045260246000fd5b90508361061d565b34610244576020366003190112610244576106e2611d38565b6000805160206124b4833981519152549060ff8260401c16159167ffffffffffffffff811680159081610859575b600114908161084f575b159081610846575b506108355767ffffffffffffffff1981166001176000805160206124b48339815191525582610808575b50610755612425565b61075d612425565b61076633611f21565b61076e612425565b6001600160a01b0316801561034d576bffffffffffffffffffffffff60a01b600654161760065561079e3361221e565b506107a8336120a6565b506107af57005b68ff0000000000000000196000805160206124b483398151915254166000805160206124b4833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001176000805160206124b4833981519152558261074c565b63f92ee8a960e01b60005260046000fd5b90501584610722565b303b15915061071a565b849150610710565b346102445760203660031901126102445760043580600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460081c161580610abd575b610aac5780600052600160205260ff60056040600020015460101c1615610a9b5760008181526002602090815260408083203384529091529020805490919015610a8a576002820180549260ff8416610a795760ff8460081c16610a6857600101546006546040516370a0823160e01b815230600482015291949190602090829060249082906001600160a01b03165afa908115610a1957600091610a36575b508411610a255760ff1916600117905560065460405163a9059cbb60e01b8152336004820152602481018490529060209082906001600160a01b0316816000816044810103925af1908115610a19576000916109ea575b50156109d9576040519182527f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c60203393a3005b6312171d8360e31b60005260046000fd5b610a0c915060203d602011610a12575b610a048183611da4565b810190611de2565b836109a5565b503d6109fa565b6040513d6000823e3d90fd5b631e9acf1760e31b60005260046000fd5b90506020813d602011610a60575b81610a5160209383611da4565b8101031261024457518561094e565b3d9150610a44565b63542f378d60e11b60005260046000fd5b630c8d9eab60e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b6371642c7760e11b60005260046000fd5b633df07da560e01b60005260046000fd5b508060005260016020526001604060002001544211156108ae565b63266f368560e01b60005260046000fd5b346102445760203660031901126102445761000f610b05611d38565b610b0d612009565b612162565b3461024457604036600319011261024457610b2b611d38565b3360009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb76020526040902054602435919060ff1615610c71578115610a8a576001600160a01b031680610bad5750478111610a2557600080808093335af1610b94611dfa565b5015610b9c57005b630db2c7f160e31b60005260046000fd5b6040516370a0823160e01b8152306004820152602081602481855afa908115610a1957600091610c3f575b508211610a255760405163a9059cbb60e01b81523360048201526024810192909252602090829060449082906000905af1908115610a1957600091610c20575b50156109d957005b610c39915060203d602011610a1257610a048183611da4565b81610c18565b90506020813d602011610c69575b81610c5a60209383611da4565b81010312610244575183610bd8565b3d9150610c4d565b63e2517d3f60e01b600052336004527f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0760245260446000fd5b3461024457600036600319011261024457602060405160008152f35b346102445760c03660031901126102445760043560843560443560243560643560a435610cf1611f97565b85600052600160205260ff6005604060002001541615610ad85785600052600160205260ff60056040600020015460081c16610e4e57856000526001602052604060002054421015610e3d57428310610e2c5782841115610e1b578115610e0a578415610df95780158015610df0575b610ddf5760008681526001602081815260409283902086815591820187905560028201859055600382018890556004909101839055815194855284019490945292820152606081019290925260808201527fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b9159596908060a081015b0390a2005b6390e3cae960e01b60005260046000fd5b50818111610d61565b6305d7ba1960e11b60005260046000fd5b63e2494de760e01b60005260046000fd5b6338af65f760e01b60005260046000fd5b632ca4094f60e21b60005260046000fd5b634eb5402b60e01b60005260046000fd5b6307af775360e11b60005260046000fd5b34610244576000366003190112610244576020600754604051908152f35b34610244576020366003190112610244576020610ea0610e9b611d38565b611ef4565b604051908152f35b3461024457610eb636611d64565b610ebe611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805462ff0000191683151560101b62ff0000161790557f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a0915b6040519015158152a2005b34610244576020366003190112610244576020610f4e600435611e5a565b6040519015158152f35b34610244576000366003190112610244576020604051670de0b6b3a76400008152f35b3461024457604036600319011261024457610f94611d4e565b60043560005260008051602061249483398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461024457600036600319011261024457600080516020612474833981519152546040516001600160a01b039091168152602090f35b346102445761101936611d64565b611021611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805464ff000000001916831515831b64ff00000000161790557f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c91610f25565b34610244576020366003190112610244576004356000526001602052610140604060002060ff815491600181015490600281015460038201549060056004840154930154936040519687526020870152604086015260608501526080840152818116151560a0840152818160081c16151560c0840152818160101c16151560e0840152818160181c16151561010084015260201c161515610120820152f35b606036600319011261024457600435611145611d4e565b6044359161115281611e5a565b15610aac5760018060a01b0382169283600052600060205260ff60406000205416156105d257831590811561153257503415610a8a5734925b336000526005602052604060002054801515908161151d575b506114f0575b846000526000602052670de0b6b3a76400006111ce60016040600020015486611e47565b049083600052600260205260408060002060009060018060a01b033316825260205220926111fd838554611e3a565b856000526001602052600460406000200154106114df5784600052600360205261122c83604060002054611e3a565b856000526001602052600260406000200154106114ce571561145f575b83600052600160205261126460036040600020015483611e47565b8460005260016020526002604060002001549081156114495704928054156000146114165784600052600460205260406000206112a18154611dc6565b90556001850191828611611400576001923360005260056020526040600020556002820190815490620100008560b01b039060101b1690620100008560b01b0319161790558560038201555b6112f8838254611e3a565b815501611306838254611e3a565b90558260005260036020526040600020611321828254611e3a565b905561132f81600854611e3a565b6008558260005260036020526040600020548360005260016020526002604060002001541115611392575b604051938452602084015260408301527fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d260603393a4005b826000526001602052600560406000200161010061ff0019825416179055826000526003602052827fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a261135a565b634e487b7160e01b600052601160045260246000fd5b600281015490915060101c6001600160a01b031686036105d25780600360019201611442878254611e3a565b90556112ed565b634e487b7160e01b600052601260045260246000fd5b6040516323b872dd60e01b81523360048201523060248201526044810186905260208160648160008b5af1908115610a19576000916114af575b50611249576312171d8360e31b60005260046000fd5b6114c8915060203d602011610a1257610a048183611da4565b87611499565b63397bb34360e01b60005260046000fd5b631cd861cd60e01b60005260046000fd5b82600052600160205260ff60056040600020015460201c166111aa5763413d435b60e11b60005260046000fd5b600185019150818511611400571415866111a4565b8015610a8a579261118b565b346102445761154c36611d64565b611554611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805463ff000000191683151560181b63ff000000161790557f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e91191610f25565b34610244576040366003190112610244576004356115dd611d4e565b906115e6611f97565b6001600160a01b0382169081156118255780600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460181c161561181457806000526002602052604080600020600090848252602052208054938415610a8a57600282019081549560ff8716610a795760ff8760081c16610a68576003840154601088901c6001600160a01b031697909488159283156117a257478711610a255786956101006116c7945b61ff0019161790558760005260036020526116bc6040600020918254611dd5565b905554600854611dd5565b6008551561171457600080809381935af16116e0611dfa565b5015610b9c5760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a3915b604051908152a4005b60405163a9059cbb60e01b81526001600160a01b0391909116600482015260248101919091526020816044816000895af1908115610a1957600091611783575b50156109d95760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a39161170b565b61179c915060203d602011610a1257610a048183611da4565b85611754565b6040516370a0823160e01b81523060048201526020816024818e5afa908115610a19576000916117e2575b508711610a255786956101006116c79461169b565b90506020813d60201161180c575b816117fd60209383611da4565b8101031261024457518b6117cd565b3d91506117f0565b63089c998760e01b60005260046000fd5b630702b3d960e41b60005260046000fd5b346102445760003660031901126102445761184f6123ef565b60008051602061247483398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102445760203660031901126102445760043560005260046020526020604060002054604051908152f35b346102445760a0366003190112610244576084356044356024356004356064356118f4611f97565b428210610e2c5781831115610e1b578315610e0a578015610df95784158015611a9d575b610ddf57600754946040519161014083019583871067ffffffffffffffff8811176106ab57611a64610dda947f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada4133986040528681526001611a478b611a2c602085018c815260408601888152611a04600560608901988c8a528d6080820190815260a082019a8a8c5260c08301956000875260e08401976000895261010085019a60008c5261012086019d8e5260005260016020526040600020945185555160018501555160028401555160038301555160048201550197511515889060ff801983541691151516179055565b518654915162ffff001990921690151560081b61ff00161790151560101b62ff000016178555565b51835463ff000000191690151560181b63ff00000016178355565b51815464ff00000000191690151560201b64ff0000000016179055565b611a6f600754611dc6565b600755604051958695869192608093969594919660a084019784526020840152604083015260608201520152565b50838511611918565b3461024457602036600319011261024457600435611ac2611f97565b80600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460081c16610e4e57806000526001602052600560406000200161010061ff00198254161790558060005260036020527fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a2005b34610244576000366003190112610244576006546040516001600160a01b039091168152602090f35b34610244576000366003190112610244576020600854604051908152f35b3461024457604036600319011261024457611bc2611d4e565b336001600160a01b03821603611bde5761000f9060043561234f565b63334bd91960e11b60005260046000fd5b346102445760403660031901126102445761000f600435611c0e611d4e565b90611c1b61052282611d83565b6122b8565b346102445760203660031901126102445761000f611c3c611d38565b611c44612009565b6120a6565b34610244576020366003190112610244576020610ea0600435611d83565b3461024457602036600319011261024457611c80611d38565b611c88611f97565b6001600160a01b031660008181526020819052604090205460ff16156105d257806000526000602052604060002060ff1981541690557fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d917600080a2005b34610244576020366003190112610244576004359063ffffffff60e01b821680920361024457602091637965db0b60e01b8114908115611d27575b5015158152f35b6301ffc9a760e01b14905083611d20565b600435906001600160a01b038216820361024457565b602435906001600160a01b038216820361024457565b6040906003190112610244576004359060243580151581036102445790565b60005260008051602061249483398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff8211176106ab57604052565b60001981146114005760010190565b9190820391821161140057565b90816020910312610244575180151581036102445790565b3d15611e35573d9067ffffffffffffffff82116106ab5760405191611e29601f8201601f191660200184611da4565b82523d6000602084013e565b606090565b9190820180921161140057565b8181029291811591840414171561140057565b80600052600160205260ff6005604060002001541615611eee5780600052600160205260ff60056040600020015460081c16611eee578060005260016020526040600020544210611eee578060005260016020526001604060002001544211611eee578060005260036020526040600020549060005260016020526002604060002001541115611ee957600190565b600090565b50600090565b6001600160a01b03166000908152600560205260409020548015611eee5760001981019081116114005790565b6001600160a01b03168015611f815760008051602061247483398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615611fd057565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff161561204257565b63e2517d3f60e01b60005233600452600060245260446000fd5b60008181526000805160206124948339815191526020908152604080832033845290915290205460ff161561208e5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16611eee576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206124548339815191529080a4600190565b6001600160a01b03811660009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb7602052604090205460ff16611eee576001600160a01b031660008181527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb760205260408120805460ff191660011790553391907f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07906000805160206124548339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16611eee576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206124548339815191528180a4600190565b6000818152600080516020612494833981519152602090815260408083206001600160a01b038616845290915290205460ff16612348576000818152600080516020612494833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206124548339815191529080a4600190565b5050600090565b6000818152600080516020612494833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612348576000818152600080516020612494833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b600080516020612474833981519152546001600160a01b0316330361241057565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206124b48339815191525460401c161561244257565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212208ca5cb10f57094e2c9800545dd8ef8062a5acffd4f43c90527c1ec5e052d71f864736f6c634300081c0033",
|
1546
|
-
"deployedBytecode": "0x6080806040526004361015610011575b005b60003560e01c90816301ffc9a714611ce5575080631c88705d14611c67578063248a9ca314611c4957806327ac0c5814611c2057806328f3e6581461035e5780632f2ff15d14611bef57806336568abe14611ba957806342683c6714611b8b5780634b60ce7714611b625780635a1e6ca114611aa65780635af6df4c146118cc5780636fed6940146118a0578063715018a6146118365780637ad226dc146115c15780637cf30c601461153e5780638952ac1e1461112e5780638a56829914610e5f5780638c65c81f1461108f5780638d52e5551461100b5780638da5cb5b14610fd557806391d1485414610f7b57806395082d2514610f5857806397ac4a2514610f305780639bb92c4e14610ea85780639da64ac214610e7d578063a09686c414610e5f578063a217fddf14610caa578063a6be83dd14610cc6578063a734f06e14610caa578063c107532914610b12578063c213df7814610ae9578063c4428a8914610861578063c4d66de8146106c9578063d4bcdfa1146105e3578063d4ee651b1461052c578063d547741f146104f6578063d871b0e314610471578063daf9c21014610429578063eb4c9e9b146103ef578063ed54890d1461035e578063efe9c9e2146102d9578063f0a3a97c1461029e578063f0e1bb3e14610272578063f2fde38b146102495763f5b541a61461020957005b346102445760003660031901126102445760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b600080fd5b346102445760203660031901126102445761000f610265611d38565b61026d6123ef565b611f21565b346102445760203660031901126102445760043560005260036020526020604060002054604051908152f35b346102445760003660031901126102445760206040517f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d078152f35b34610244576020366003190112610244576102f2611d38565b6102fa611f97565b6001600160a01b0316801561034d57600680546001600160a01b0319811683179091556001600160a01b03167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa9600080a3005b630f58058360e11b60005260046000fd5b34610244576040366003190112610244576040610379611d4e565b6004356000908152600260208181528483206001600160a01b0394851684528152939091208054600182015492820154600390920154604080519283529582019390935260ff808316151595820195909552600882901c9094161515606085015260101c909116608083015260a082015260c090f35b34610244576020366003190112610244576001600160a01b03610410611d38565b1660005260056020526020604060002054604051908152f35b34610244576020366003190112610244576001600160a01b0361044a611d38565b166000526000602052604080600020600160ff825416910154825191151582526020820152f35b346102445760203660031901126102445761048a611d38565b600754600091829182916001600160a01b03165b8185106104b5576040848482519182526020820152f35b90916104ec600191866000526002602052826104e36040806000206000908882526020522097885490611e3a565b96015490611e3a565b940193919061049e565b346102445760403660031901126102445761000f600435610515611d4e565b9061052761052282611d83565b61205c565b61234f565b3461024457604036600319011261024457610545611d38565b60243590610551611f97565b60018060a01b03169081600052600060205260ff60406000205416156105d25780156105c157600082815260208181526040918290206001018054908490558251908152908101929092527f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c191a2005b637841c2c960e11b60005260046000fd5b6307c241ad60e51b60005260046000fd5b34610244576040366003190112610244576105fc611d38565b60243590610608611f97565b6001600160a01b0316908115801590816106c1575b5061034d5780156105c15760405190604082019082821067ffffffffffffffff8311176106ab577fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a892602092604052600181526001838201838152866000526000855261069e604060002093511515849060ff801983541691151516179055565b51910155604051908152a2005b634e487b7160e01b600052604160045260246000fd5b90508361061d565b34610244576020366003190112610244576106e2611d38565b6000805160206124b4833981519152549060ff8260401c16159167ffffffffffffffff811680159081610859575b600114908161084f575b159081610846575b506108355767ffffffffffffffff1981166001176000805160206124b48339815191525582610808575b50610755612425565b61075d612425565b61076633611f21565b61076e612425565b6001600160a01b0316801561034d576bffffffffffffffffffffffff60a01b600654161760065561079e3361221e565b506107a8336120a6565b506107af57005b68ff0000000000000000196000805160206124b483398151915254166000805160206124b4833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001176000805160206124b4833981519152558261074c565b63f92ee8a960e01b60005260046000fd5b90501584610722565b303b15915061071a565b849150610710565b346102445760203660031901126102445760043580600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460081c161580610abd575b610aac5780600052600160205260ff60056040600020015460101c1615610a9b5760008181526002602090815260408083203384529091529020805490919015610a8a576002820180549260ff8416610a795760ff8460081c16610a6857600101546006546040516370a0823160e01b815230600482015291949190602090829060249082906001600160a01b03165afa908115610a1957600091610a36575b508411610a255760ff1916600117905560065460405163a9059cbb60e01b8152336004820152602481018490529060209082906001600160a01b0316816000816044810103925af1908115610a19576000916109ea575b50156109d9576040519182527f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c60203393a3005b6312171d8360e31b60005260046000fd5b610a0c915060203d602011610a12575b610a048183611da4565b810190611de2565b836109a5565b503d6109fa565b6040513d6000823e3d90fd5b631e9acf1760e31b60005260046000fd5b90506020813d602011610a60575b81610a5160209383611da4565b8101031261024457518561094e565b3d9150610a44565b63542f378d60e11b60005260046000fd5b630c8d9eab60e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b6371642c7760e11b60005260046000fd5b633df07da560e01b60005260046000fd5b508060005260016020526001604060002001544211156108ae565b63266f368560e01b60005260046000fd5b346102445760203660031901126102445761000f610b05611d38565b610b0d612009565b612162565b3461024457604036600319011261024457610b2b611d38565b3360009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb76020526040902054602435919060ff1615610c71578115610a8a576001600160a01b031680610bad5750478111610a2557600080808093335af1610b94611dfa565b5015610b9c57005b630db2c7f160e31b60005260046000fd5b6040516370a0823160e01b8152306004820152602081602481855afa908115610a1957600091610c3f575b508211610a255760405163a9059cbb60e01b81523360048201526024810192909252602090829060449082906000905af1908115610a1957600091610c20575b50156109d957005b610c39915060203d602011610a1257610a048183611da4565b81610c18565b90506020813d602011610c69575b81610c5a60209383611da4565b81010312610244575183610bd8565b3d9150610c4d565b63e2517d3f60e01b600052336004527f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0760245260446000fd5b3461024457600036600319011261024457602060405160008152f35b346102445760c03660031901126102445760043560843560443560243560643560a435610cf1611f97565b85600052600160205260ff6005604060002001541615610ad85785600052600160205260ff60056040600020015460081c16610e4e57856000526001602052604060002054421015610e3d57428310610e2c5782841115610e1b578115610e0a578415610df95780158015610df0575b610ddf5760008681526001602081815260409283902086815591820187905560028201859055600382018890556004909101839055815194855284019490945292820152606081019290925260808201527fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b9159596908060a081015b0390a2005b6390e3cae960e01b60005260046000fd5b50818111610d61565b6305d7ba1960e11b60005260046000fd5b63e2494de760e01b60005260046000fd5b6338af65f760e01b60005260046000fd5b632ca4094f60e21b60005260046000fd5b634eb5402b60e01b60005260046000fd5b6307af775360e11b60005260046000fd5b34610244576000366003190112610244576020600754604051908152f35b34610244576020366003190112610244576020610ea0610e9b611d38565b611ef4565b604051908152f35b3461024457610eb636611d64565b610ebe611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805462ff0000191683151560101b62ff0000161790557f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a0915b6040519015158152a2005b34610244576020366003190112610244576020610f4e600435611e5a565b6040519015158152f35b34610244576000366003190112610244576020604051670de0b6b3a76400008152f35b3461024457604036600319011261024457610f94611d4e565b60043560005260008051602061249483398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461024457600036600319011261024457600080516020612474833981519152546040516001600160a01b039091168152602090f35b346102445761101936611d64565b611021611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805464ff000000001916831515831b64ff00000000161790557f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c91610f25565b34610244576020366003190112610244576004356000526001602052610140604060002060ff815491600181015490600281015460038201549060056004840154930154936040519687526020870152604086015260608501526080840152818116151560a0840152818160081c16151560c0840152818160101c16151560e0840152818160181c16151561010084015260201c161515610120820152f35b606036600319011261024457600435611145611d4e565b6044359161115281611e5a565b15610aac5760018060a01b0382169283600052600060205260ff60406000205416156105d257831590811561153257503415610a8a5734925b336000526005602052604060002054801515908161151d575b506114f0575b846000526000602052670de0b6b3a76400006111ce60016040600020015486611e47565b049083600052600260205260408060002060009060018060a01b033316825260205220926111fd838554611e3a565b856000526001602052600460406000200154106114df5784600052600360205261122c83604060002054611e3a565b856000526001602052600260406000200154106114ce571561145f575b83600052600160205261126460036040600020015483611e47565b8460005260016020526002604060002001549081156114495704928054156000146114165784600052600460205260406000206112a18154611dc6565b90556001850191828611611400576001923360005260056020526040600020556002820190815490620100008560b01b039060101b1690620100008560b01b0319161790558560038201555b6112f8838254611e3a565b815501611306838254611e3a565b90558260005260036020526040600020611321828254611e3a565b905561132f81600854611e3a565b6008558260005260036020526040600020548360005260016020526002604060002001541115611392575b604051938452602084015260408301527fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d260603393a4005b826000526001602052600560406000200161010061ff0019825416179055826000526003602052827fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a261135a565b634e487b7160e01b600052601160045260246000fd5b600281015490915060101c6001600160a01b031686036105d25780600360019201611442878254611e3a565b90556112ed565b634e487b7160e01b600052601260045260246000fd5b6040516323b872dd60e01b81523360048201523060248201526044810186905260208160648160008b5af1908115610a19576000916114af575b50611249576312171d8360e31b60005260046000fd5b6114c8915060203d602011610a1257610a048183611da4565b87611499565b63397bb34360e01b60005260046000fd5b631cd861cd60e01b60005260046000fd5b82600052600160205260ff60056040600020015460201c166111aa5763413d435b60e11b60005260046000fd5b600185019150818511611400571415866111a4565b8015610a8a579261118b565b346102445761154c36611d64565b611554611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805463ff000000191683151560181b63ff000000161790557f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e91191610f25565b34610244576040366003190112610244576004356115dd611d4e565b906115e6611f97565b6001600160a01b0382169081156118255780600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460181c161561181457806000526002602052604080600020600090848252602052208054938415610a8a57600282019081549560ff8716610a795760ff8760081c16610a68576003840154601088901c6001600160a01b031697909488159283156117a257478711610a255786956101006116c7945b61ff0019161790558760005260036020526116bc6040600020918254611dd5565b905554600854611dd5565b6008551561171457600080809381935af16116e0611dfa565b5015610b9c5760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a3915b604051908152a4005b60405163a9059cbb60e01b81526001600160a01b0391909116600482015260248101919091526020816044816000895af1908115610a1957600091611783575b50156109d95760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a39161170b565b61179c915060203d602011610a1257610a048183611da4565b85611754565b6040516370a0823160e01b81523060048201526020816024818e5afa908115610a19576000916117e2575b508711610a255786956101006116c79461169b565b90506020813d60201161180c575b816117fd60209383611da4565b8101031261024457518b6117cd565b3d91506117f0565b63089c998760e01b60005260046000fd5b630702b3d960e41b60005260046000fd5b346102445760003660031901126102445761184f6123ef565b60008051602061247483398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102445760203660031901126102445760043560005260046020526020604060002054604051908152f35b346102445760a0366003190112610244576084356044356024356004356064356118f4611f97565b428210610e2c5781831115610e1b578315610e0a578015610df95784158015611a9d575b610ddf57600754946040519161014083019583871067ffffffffffffffff8811176106ab57611a64610dda947f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada4133986040528681526001611a478b611a2c602085018c815260408601888152611a04600560608901988c8a528d6080820190815260a082019a8a8c5260c08301956000875260e08401976000895261010085019a60008c5261012086019d8e5260005260016020526040600020945185555160018501555160028401555160038301555160048201550197511515889060ff801983541691151516179055565b518654915162ffff001990921690151560081b61ff00161790151560101b62ff000016178555565b51835463ff000000191690151560181b63ff00000016178355565b51815464ff00000000191690151560201b64ff0000000016179055565b611a6f600754611dc6565b600755604051958695869192608093969594919660a084019784526020840152604083015260608201520152565b50838511611918565b3461024457602036600319011261024457600435611ac2611f97565b80600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460081c16610e4e57806000526001602052600560406000200161010061ff00198254161790558060005260036020527fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a2005b34610244576000366003190112610244576006546040516001600160a01b039091168152602090f35b34610244576000366003190112610244576020600854604051908152f35b3461024457604036600319011261024457611bc2611d4e565b336001600160a01b03821603611bde5761000f9060043561234f565b63334bd91960e11b60005260046000fd5b346102445760403660031901126102445761000f600435611c0e611d4e565b90611c1b61052282611d83565b6122b8565b346102445760203660031901126102445761000f611c3c611d38565b611c44612009565b6120a6565b34610244576020366003190112610244576020610ea0600435611d83565b3461024457602036600319011261024457611c80611d38565b611c88611f97565b6001600160a01b031660008181526020819052604090205460ff16156105d257806000526000602052604060002060ff1981541690557fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d917600080a2005b34610244576020366003190112610244576004359063ffffffff60e01b821680920361024457602091637965db0b60e01b8114908115611d27575b5015158152f35b6301ffc9a760e01b14905083611d20565b600435906001600160a01b038216820361024457565b602435906001600160a01b038216820361024457565b6040906003190112610244576004359060243580151581036102445790565b60005260008051602061249483398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff8211176106ab57604052565b60001981146114005760010190565b9190820391821161140057565b90816020910312610244575180151581036102445790565b3d15611e35573d9067ffffffffffffffff82116106ab5760405191611e29601f8201601f191660200184611da4565b82523d6000602084013e565b606090565b9190820180921161140057565b8181029291811591840414171561140057565b80600052600160205260ff6005604060002001541615611eee5780600052600160205260ff60056040600020015460081c16611eee578060005260016020526040600020544210611eee578060005260016020526001604060002001544211611eee578060005260036020526040600020549060005260016020526002604060002001541115611ee957600190565b600090565b50600090565b6001600160a01b03166000908152600560205260409020548015611eee5760001981019081116114005790565b6001600160a01b03168015611f815760008051602061247483398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615611fd057565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff161561204257565b63e2517d3f60e01b60005233600452600060245260446000fd5b60008181526000805160206124948339815191526020908152604080832033845290915290205460ff161561208e5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16611eee576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206124548339815191529080a4600190565b6001600160a01b03811660009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb7602052604090205460ff16611eee576001600160a01b031660008181527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb760205260408120805460ff191660011790553391907f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07906000805160206124548339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16611eee576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206124548339815191528180a4600190565b6000818152600080516020612494833981519152602090815260408083206001600160a01b038616845290915290205460ff16612348576000818152600080516020612494833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206124548339815191529080a4600190565b5050600090565b6000818152600080516020612494833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612348576000818152600080516020612494833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b600080516020612474833981519152546001600160a01b0316330361241057565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206124b48339815191525460401c161561244257565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212208ca5cb10f57094e2c9800545dd8ef8062a5acffd4f43c90527c1ec5e052d71f864736f6c634300081c0033",
|
1566
|
+
"bytecode": "0x6080806040523460d2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161266790816100d88239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880604d565b63f92ee8a960e01b60005260046000fd5b600080fdfe6080806040526004361015610011575b005b60003560e01c90816301ffc9a714611e07575080631c88705d14611d89578063248a9ca314611d6b57806327ac0c5814611d4257806328f3e6581461035e5780632f2ff15d14611d1157806336568abe14611ccb57806342683c6714611cad578063485cc95514611ae45780634b60ce7714611abb5780635a1e6ca1146119ff5780635af6df4c1461180f5780636fed6940146117e3578063715018a6146117795780637ad226dc146115045780637cf30c60146114815780638952ac1e1461106f5780638a56829914610da05780638c65c81f14610fd05780638d52e55514610f4c5780638da5cb5b14610f1657806391d1485414610ebc57806395082d2514610e9957806397ac4a2514610e715780639bb92c4e14610de95780639da64ac214610dbe578063a09686c414610da0578063a217fddf14610beb578063a6be83dd14610c07578063a734f06e14610beb578063c107532914610a53578063c213df7814610a2a578063c4428a89146107a2578063d4bcdfa11461065a578063d4ee651b1461053d578063d547741f14610507578063d871b0e314610482578063daf9c21014610429578063eb4c9e9b146103ef578063ed54890d1461035e578063efe9c9e2146102d9578063f0a3a97c1461029e578063f0e1bb3e14610272578063f2fde38b146102495763f5b541a61461020957005b346102445760003660031901126102445760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b600080fd5b346102445760203660031901126102445761000f610265611e5a565b61026d61254d565b61207f565b346102445760203660031901126102445760043560005260036020526020604060002054604051908152f35b346102445760003660031901126102445760206040517f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d078152f35b34610244576020366003190112610244576102f2611e5a565b6102fa6120f5565b6001600160a01b0316801561034d57600680546001600160a01b0319811683179091556001600160a01b03167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa9600080a3005b630f58058360e11b60005260046000fd5b34610244576040366003190112610244576040610379611e70565b6004356000908152600260208181528483206001600160a01b0394851684528152939091208054600182015492820154600390920154604080519283529582019390935260ff808316151595820195909552600882901c9094161515606085015260101c909116608083015260a082015260c090f35b34610244576020366003190112610244576001600160a01b03610410611e5a565b1660005260056020526020604060002054604051908152f35b34610244576020366003190112610244576001600160a01b0361044a611e5a565b1660005260006020526060604060002060ff8154169060ff600260018301549201541690604051921515835260208301526040820152f35b346102445760203660031901126102445761049b611e5a565b600754600091829182916001600160a01b03165b8185106104c6576040848482519182526020820152f35b90916104fd600191866000526002602052826104f46040806000206000908882526020522097885490611f78565b96015490611f78565b94019391906104af565b346102445760403660031901126102445761000f600435610526611e70565b9061053861053382611ea5565b6121ba565b6124ad565b3461024457604036600319011261024457610556611e5a565b602435906105626120f5565b60018060a01b03169081600052600060205260ff60406000205416156106495780156106385760407f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c19183600052600060205260018260002001549084600052600060205260ff60028460002001541660ff600285516105e181611ec6565b60018152602081018581528782019485528960005260006020526106188860002092511515839060ff801983541691151516179055565b5160018201550191511660ff1982541617905582519182526020820152a2005b637841c2c960e11b60005260046000fd5b6307c241ad60e51b60005260046000fd5b3461024457604036600319011261024457610673611e5a565b6024359061067f6120f5565b6001600160a01b031690811580159081908161079a575b5061034d5781156106385760129061071a575b7fb391b0fba043520405b3e9dfee0bee5bc211206bd95b3edb130c3c6d970494b2916040918251906106da82611ec6565b6001825260ff60026020840193858552828782019416948585528960005260006020526106188860002092511515839060ff801983541691151516179055565b5060405163313ce56760e01b8152602081600481865afa8091600091610757575b50906107525763686d360760e01b60005260046000fd5b6106a9565b6020813d602011610792575b8161077060209383611ee2565b8101031261078e57519060ff8216820361078b57508461073b565b80fd5b5080fd5b3d9150610763565b905084610696565b346102445760203660031901126102445760043580600052600160205260ff6005604060002001541615610a195780600052600160205260ff60056040600020015460081c1615806109fe575b6109ed5780600052600160205260ff60056040600020015460101c16156109dc57600081815260026020908152604080832033845290915290208054909190156109cb576002820180549260ff84166109ba5760ff8460081c166109a957600101546006546040516370a0823160e01b815230600482015291949190602090829060249082906001600160a01b03165afa90811561095a57600091610977575b5084116109665760ff1916600117905560065460405163a9059cbb60e01b8152336004820152602481018490529060209082906001600160a01b0316816000816044810103925af190811561095a5760009161092b575b501561091a576040519182527f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c60203393a3005b6312171d8360e31b60005260046000fd5b61094d915060203d602011610953575b6109458183611ee2565b810190611f20565b836108e6565b503d61093b565b6040513d6000823e3d90fd5b631e9acf1760e31b60005260046000fd5b90506020813d6020116109a1575b8161099260209383611ee2565b8101031261024457518561088f565b3d9150610985565b63542f378d60e11b60005260046000fd5b630c8d9eab60e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b6371642c7760e11b60005260046000fd5b633df07da560e01b60005260046000fd5b508060005260016020526001604060002001544211156107ef565b63266f368560e01b60005260046000fd5b346102445760203660031901126102445761000f610a46611e5a565b610a4e612167565b61235a565b3461024457604036600319011261024457610a6c611e5a565b3360009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb76020526040902054602435919060ff1615610bb25781156109cb576001600160a01b031680610aee575047811161096657600080808093335af1610ad5611f38565b5015610add57005b630db2c7f160e31b60005260046000fd5b6040516370a0823160e01b8152306004820152602081602481855afa90811561095a57600091610b80575b5082116109665760405163a9059cbb60e01b81523360048201526024810192909252602090829060449082906000905af190811561095a57600091610b61575b501561091a57005b610b7a915060203d602011610953576109458183611ee2565b81610b59565b90506020813d602011610baa575b81610b9b60209383611ee2565b81010312610244575183610b19565b3d9150610b8e565b63e2517d3f60e01b600052336004527f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0760245260446000fd5b3461024457600036600319011261024457602060405160008152f35b346102445760c03660031901126102445760043560843560443560243560643560a435610c326120f5565b85600052600160205260ff6005604060002001541615610a195785600052600160205260ff60056040600020015460081c16610d8f57856000526001602052604060002054421015610d7e57428310610d6d5782841115610d5c578115610d4b578415610d3a5780158015610d31575b610d205760008681526001602081815260409283902086815591820187905560028201859055600382018890556004909101839055815194855284019490945292820152606081019290925260808201527fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b9159596908060a081015b0390a2005b6390e3cae960e01b60005260046000fd5b50818111610ca2565b6305d7ba1960e11b60005260046000fd5b63e2494de760e01b60005260046000fd5b6338af65f760e01b60005260046000fd5b632ca4094f60e21b60005260046000fd5b634eb5402b60e01b60005260046000fd5b6307af775360e11b60005260046000fd5b34610244576000366003190112610244576020600754604051908152f35b34610244576020366003190112610244576020610de1610ddc611e5a565b612052565b604051908152f35b3461024457610df736611e86565b610dff6120f5565b81600052600160205260ff6005604060002001541615610a19576000828152600160209081526040909120600501805462ff0000191683151560101b62ff0000161790557f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a0915b6040519015158152a2005b34610244576020366003190112610244576020610e8f600435611fb8565b6040519015158152f35b34610244576000366003190112610244576020604051670de0b6b3a76400008152f35b3461024457604036600319011261024457610ed5611e70565b6004356000526000805160206125f283398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b34610244576000366003190112610244576000805160206125d2833981519152546040516001600160a01b039091168152602090f35b3461024457610f5a36611e86565b610f626120f5565b81600052600160205260ff6005604060002001541615610a19576000828152600160209081526040909120600501805464ff000000001916831515831b64ff00000000161790557f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c91610e66565b34610244576020366003190112610244576004356000526001602052610140604060002060ff815491600181015490600281015460038201549060056004840154930154936040519687526020870152604086015260608501526080840152818116151560a0840152818160081c16151560c0840152818160101c16151560e0840152818160181c16151561010084015260201c161515610120820152f35b606036600319011261024457600435611086611e70565b6044359161109381611fb8565b156109ed5760018060a01b0382169283600052600060205260ff6040600020541615610649578315908115611475575034156109cb5734925b3360005260056020526040600020548015159081611460575b50611433575b6000858152602081905260409020600181015460029091015460ff16906111129086611f85565b604d82116113595761112791600a0a90611f98565b9083600052600260205260408060002060009060018060a01b03331682526020522092611155838554611f78565b856000526001602052600460406000200154106114225784600052600360205261118483604060002054611f78565b8560005260016020526002604060002001541061141157156113a2575b8360005260016020526111d76111bf60036040600020015484611f85565b85600052600160205260026040600020015490611f98565b9280541560001461136f5784600052600460205260406000206111fa8154611f04565b90556001850191828611611359576001923360005260056020526040600020556002820190815490620100008560b01b039060101b1690620100008560b01b0319161790558560038201555b611251838254611f78565b81550161125f838254611f78565b9055826000526003602052604060002061127a828254611f78565b905561128881600854611f78565b60085582600052600360205260406000205483600052600160205260026040600020015411156112eb575b604051938452602084015260408301527fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d260603393a4005b826000526001602052600560406000200161010061ff0019825416179055826000526003602052827fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a26112b3565b634e487b7160e01b600052601160045260246000fd5b600281015490915060101c6001600160a01b03168603610649578060036001920161139b878254611f78565b9055611246565b6040516323b872dd60e01b81523360048201523060248201526044810186905260208160648160008b5af190811561095a576000916113f2575b506111a1576312171d8360e31b60005260046000fd5b61140b915060203d602011610953576109458183611ee2565b876113dc565b63397bb34360e01b60005260046000fd5b631cd861cd60e01b60005260046000fd5b82600052600160205260ff60056040600020015460201c166110eb5763413d435b60e11b60005260046000fd5b600185019150818511611359571415866110e5565b80156109cb57926110cc565b346102445761148f36611e86565b6114976120f5565b81600052600160205260ff6005604060002001541615610a19576000828152600160209081526040909120600501805463ff000000191683151560181b63ff000000161790557f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e91191610e66565b3461024457604036600319011261024457600435611520611e70565b906115296120f5565b6001600160a01b0382169081156117685780600052600160205260ff6005604060002001541615610a195780600052600160205260ff60056040600020015460181c1615611757578060005260026020526040806000206000908482526020522080549384156109cb57600282019081549560ff87166109ba5760ff8760081c166109a9576003840154601088901c6001600160a01b031697909488159283156116e55747871161096657869561010061160a945b61ff0019161790558760005260036020526115ff6040600020918254611f13565b905554600854611f13565b6008551561165757600080809381935af1611623611f38565b5015610add5760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a3915b604051908152a4005b60405163a9059cbb60e01b81526001600160a01b0391909116600482015260248101919091526020816044816000895af190811561095a576000916116c6575b501561091a5760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a39161164e565b6116df915060203d602011610953576109458183611ee2565b85611697565b6040516370a0823160e01b81523060048201526020816024818e5afa90811561095a57600091611725575b50871161096657869561010061160a946115de565b90506020813d60201161174f575b8161174060209383611ee2565b8101031261024457518b611710565b3d9150611733565b63089c998760e01b60005260046000fd5b630702b3d960e41b60005260046000fd5b346102445760003660031901126102445761179261254d565b6000805160206125d283398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102445760203660031901126102445760043560005260046020526020604060002054604051908152f35b346102445760a0366003190112610244576084356044356024356004356064356118376120f5565b428210610d6d5781831115610d5c578315610d4b578015610d3a57841580156119f6575b610d2057600754946040519161014083019583871067ffffffffffffffff8811176119e0576119a7610d1b947f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada413398604052868152600161198a8b61196f602085018c815260408601888152611947600560608901988c8a528d6080820190815260a082019a8a8c5260c08301956000875260e08401976000895261010085019a60008c5261012086019d8e5260005260016020526040600020945185555160018501555160028401555160038301555160048201550197511515889060ff801983541691151516179055565b518654915162ffff001990921690151560081b61ff00161790151560101b62ff000016178555565b51835463ff000000191690151560181b63ff00000016178355565b51815464ff00000000191690151560201b64ff0000000016179055565b6119b2600754611f04565b600755604051958695869192608093969594919660a084019784526020840152604083015260608201520152565b634e487b7160e01b600052604160045260246000fd5b5083851161185b565b3461024457602036600319011261024457600435611a1b6120f5565b80600052600160205260ff6005604060002001541615610a195780600052600160205260ff60056040600020015460081c16610d8f57806000526001602052600560406000200161010061ff00198254161790558060005260036020527fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a2005b34610244576000366003190112610244576006546040516001600160a01b039091168152602090f35b3461024457604036600319011261024457611afd611e5a565b611b05611e70565b90600080516020612612833981519152549160ff8360401c16159267ffffffffffffffff811680159081611ca5575b6001149081611c9b575b159081611c92575b50611c815767ffffffffffffffff1981166001176000805160206126128339815191525583611c54575b506001600160a01b03811691821561176857611b8a612583565b611b92612583565b611b9b8261207f565b611ba3612583565b6001600160a01b031690811561034d57611bde916bffffffffffffffffffffffff60a01b6006541617600655611bd8816122c0565b50612204565b503303611c45575b611bec57005b68ff0000000000000000196000805160206126128339815191525416600080516020612612833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b611c4e33612204565b50611be6565b68ffffffffffffffffff191668010000000000000001176000805160206126128339815191525583611b70565b63f92ee8a960e01b60005260046000fd5b90501585611b46565b303b159150611b3e565b859150611b34565b34610244576000366003190112610244576020600854604051908152f35b3461024457604036600319011261024457611ce4611e70565b336001600160a01b03821603611d005761000f906004356124ad565b63334bd91960e11b60005260046000fd5b346102445760403660031901126102445761000f600435611d30611e70565b90611d3d61053382611ea5565b612416565b346102445760203660031901126102445761000f611d5e611e5a565b611d66612167565b612204565b34610244576020366003190112610244576020610de1600435611ea5565b3461024457602036600319011261024457611da2611e5a565b611daa6120f5565b6001600160a01b031660008181526020819052604090205460ff161561064957806000526000602052604060002060ff1981541690557fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d917600080a2005b34610244576020366003190112610244576004359063ffffffff60e01b821680920361024457602091637965db0b60e01b8114908115611e49575b5015158152f35b6301ffc9a760e01b14905083611e42565b600435906001600160a01b038216820361024457565b602435906001600160a01b038216820361024457565b6040906003190112610244576004359060243580151581036102445790565b6000526000805160206125f283398151915260205260016040600020015490565b6060810190811067ffffffffffffffff8211176119e057604052565b90601f8019910116810190811067ffffffffffffffff8211176119e057604052565b60001981146113595760010190565b9190820391821161135957565b90816020910312610244575180151581036102445790565b3d15611f73573d9067ffffffffffffffff82116119e05760405191611f67601f8201601f191660200184611ee2565b82523d6000602084013e565b606090565b9190820180921161135957565b8181029291811591840414171561135957565b8115611fa2570490565b634e487b7160e01b600052601260045260246000fd5b80600052600160205260ff600560406000200154161561204c5780600052600160205260ff60056040600020015460081c1661204c57806000526001602052604060002054421061204c57806000526001602052600160406000200154421161204c57806000526003602052604060002054906000526001602052600260406000200154111561204757600190565b600090565b50600090565b6001600160a01b0316600090815260056020526040902054801561204c5760001981019081116113595790565b6001600160a01b031680156120df576000805160206125d283398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff161561212e57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16156121a057565b63e2517d3f60e01b60005233600452600060245260446000fd5b60008181526000805160206125f28339815191526020908152604080832033845290915290205460ff16156121ec5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1661204c576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206125b28339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1661204c576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206125b28339815191528180a4600190565b6001600160a01b03811660009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb7602052604090205460ff1661204c576001600160a01b031660008181527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb760205260408120805460ff191660011790553391907f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07906000805160206125b28339815191529080a4600190565b60008181526000805160206125f2833981519152602090815260408083206001600160a01b038616845290915290205460ff166124a65760008181526000805160206125f2833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206125b28339815191529080a4600190565b5050600090565b60008181526000805160206125f2833981519152602090815260408083206001600160a01b038616845290915290205460ff16156124a65760008181526000805160206125f2833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b6000805160206125d2833981519152546001600160a01b0316330361256e57565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206126128339815191525460401c16156125a057565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212205fdab1fb3796ba1a36f2658cc45ce0e36b5f6b0dbff8ab890192b2b83c67e55d64736f6c634300081c0033",
|
1567
|
+
"deployedBytecode": "0x6080806040526004361015610011575b005b60003560e01c90816301ffc9a714611e07575080631c88705d14611d89578063248a9ca314611d6b57806327ac0c5814611d4257806328f3e6581461035e5780632f2ff15d14611d1157806336568abe14611ccb57806342683c6714611cad578063485cc95514611ae45780634b60ce7714611abb5780635a1e6ca1146119ff5780635af6df4c1461180f5780636fed6940146117e3578063715018a6146117795780637ad226dc146115045780637cf30c60146114815780638952ac1e1461106f5780638a56829914610da05780638c65c81f14610fd05780638d52e55514610f4c5780638da5cb5b14610f1657806391d1485414610ebc57806395082d2514610e9957806397ac4a2514610e715780639bb92c4e14610de95780639da64ac214610dbe578063a09686c414610da0578063a217fddf14610beb578063a6be83dd14610c07578063a734f06e14610beb578063c107532914610a53578063c213df7814610a2a578063c4428a89146107a2578063d4bcdfa11461065a578063d4ee651b1461053d578063d547741f14610507578063d871b0e314610482578063daf9c21014610429578063eb4c9e9b146103ef578063ed54890d1461035e578063efe9c9e2146102d9578063f0a3a97c1461029e578063f0e1bb3e14610272578063f2fde38b146102495763f5b541a61461020957005b346102445760003660031901126102445760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b600080fd5b346102445760203660031901126102445761000f610265611e5a565b61026d61254d565b61207f565b346102445760203660031901126102445760043560005260036020526020604060002054604051908152f35b346102445760003660031901126102445760206040517f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d078152f35b34610244576020366003190112610244576102f2611e5a565b6102fa6120f5565b6001600160a01b0316801561034d57600680546001600160a01b0319811683179091556001600160a01b03167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa9600080a3005b630f58058360e11b60005260046000fd5b34610244576040366003190112610244576040610379611e70565b6004356000908152600260208181528483206001600160a01b0394851684528152939091208054600182015492820154600390920154604080519283529582019390935260ff808316151595820195909552600882901c9094161515606085015260101c909116608083015260a082015260c090f35b34610244576020366003190112610244576001600160a01b03610410611e5a565b1660005260056020526020604060002054604051908152f35b34610244576020366003190112610244576001600160a01b0361044a611e5a565b1660005260006020526060604060002060ff8154169060ff600260018301549201541690604051921515835260208301526040820152f35b346102445760203660031901126102445761049b611e5a565b600754600091829182916001600160a01b03165b8185106104c6576040848482519182526020820152f35b90916104fd600191866000526002602052826104f46040806000206000908882526020522097885490611f78565b96015490611f78565b94019391906104af565b346102445760403660031901126102445761000f600435610526611e70565b9061053861053382611ea5565b6121ba565b6124ad565b3461024457604036600319011261024457610556611e5a565b602435906105626120f5565b60018060a01b03169081600052600060205260ff60406000205416156106495780156106385760407f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c19183600052600060205260018260002001549084600052600060205260ff60028460002001541660ff600285516105e181611ec6565b60018152602081018581528782019485528960005260006020526106188860002092511515839060ff801983541691151516179055565b5160018201550191511660ff1982541617905582519182526020820152a2005b637841c2c960e11b60005260046000fd5b6307c241ad60e51b60005260046000fd5b3461024457604036600319011261024457610673611e5a565b6024359061067f6120f5565b6001600160a01b031690811580159081908161079a575b5061034d5781156106385760129061071a575b7fb391b0fba043520405b3e9dfee0bee5bc211206bd95b3edb130c3c6d970494b2916040918251906106da82611ec6565b6001825260ff60026020840193858552828782019416948585528960005260006020526106188860002092511515839060ff801983541691151516179055565b5060405163313ce56760e01b8152602081600481865afa8091600091610757575b50906107525763686d360760e01b60005260046000fd5b6106a9565b6020813d602011610792575b8161077060209383611ee2565b8101031261078e57519060ff8216820361078b57508461073b565b80fd5b5080fd5b3d9150610763565b905084610696565b346102445760203660031901126102445760043580600052600160205260ff6005604060002001541615610a195780600052600160205260ff60056040600020015460081c1615806109fe575b6109ed5780600052600160205260ff60056040600020015460101c16156109dc57600081815260026020908152604080832033845290915290208054909190156109cb576002820180549260ff84166109ba5760ff8460081c166109a957600101546006546040516370a0823160e01b815230600482015291949190602090829060249082906001600160a01b03165afa90811561095a57600091610977575b5084116109665760ff1916600117905560065460405163a9059cbb60e01b8152336004820152602481018490529060209082906001600160a01b0316816000816044810103925af190811561095a5760009161092b575b501561091a576040519182527f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c60203393a3005b6312171d8360e31b60005260046000fd5b61094d915060203d602011610953575b6109458183611ee2565b810190611f20565b836108e6565b503d61093b565b6040513d6000823e3d90fd5b631e9acf1760e31b60005260046000fd5b90506020813d6020116109a1575b8161099260209383611ee2565b8101031261024457518561088f565b3d9150610985565b63542f378d60e11b60005260046000fd5b630c8d9eab60e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b6371642c7760e11b60005260046000fd5b633df07da560e01b60005260046000fd5b508060005260016020526001604060002001544211156107ef565b63266f368560e01b60005260046000fd5b346102445760203660031901126102445761000f610a46611e5a565b610a4e612167565b61235a565b3461024457604036600319011261024457610a6c611e5a565b3360009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb76020526040902054602435919060ff1615610bb25781156109cb576001600160a01b031680610aee575047811161096657600080808093335af1610ad5611f38565b5015610add57005b630db2c7f160e31b60005260046000fd5b6040516370a0823160e01b8152306004820152602081602481855afa90811561095a57600091610b80575b5082116109665760405163a9059cbb60e01b81523360048201526024810192909252602090829060449082906000905af190811561095a57600091610b61575b501561091a57005b610b7a915060203d602011610953576109458183611ee2565b81610b59565b90506020813d602011610baa575b81610b9b60209383611ee2565b81010312610244575183610b19565b3d9150610b8e565b63e2517d3f60e01b600052336004527f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0760245260446000fd5b3461024457600036600319011261024457602060405160008152f35b346102445760c03660031901126102445760043560843560443560243560643560a435610c326120f5565b85600052600160205260ff6005604060002001541615610a195785600052600160205260ff60056040600020015460081c16610d8f57856000526001602052604060002054421015610d7e57428310610d6d5782841115610d5c578115610d4b578415610d3a5780158015610d31575b610d205760008681526001602081815260409283902086815591820187905560028201859055600382018890556004909101839055815194855284019490945292820152606081019290925260808201527fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b9159596908060a081015b0390a2005b6390e3cae960e01b60005260046000fd5b50818111610ca2565b6305d7ba1960e11b60005260046000fd5b63e2494de760e01b60005260046000fd5b6338af65f760e01b60005260046000fd5b632ca4094f60e21b60005260046000fd5b634eb5402b60e01b60005260046000fd5b6307af775360e11b60005260046000fd5b34610244576000366003190112610244576020600754604051908152f35b34610244576020366003190112610244576020610de1610ddc611e5a565b612052565b604051908152f35b3461024457610df736611e86565b610dff6120f5565b81600052600160205260ff6005604060002001541615610a19576000828152600160209081526040909120600501805462ff0000191683151560101b62ff0000161790557f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a0915b6040519015158152a2005b34610244576020366003190112610244576020610e8f600435611fb8565b6040519015158152f35b34610244576000366003190112610244576020604051670de0b6b3a76400008152f35b3461024457604036600319011261024457610ed5611e70565b6004356000526000805160206125f283398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b34610244576000366003190112610244576000805160206125d2833981519152546040516001600160a01b039091168152602090f35b3461024457610f5a36611e86565b610f626120f5565b81600052600160205260ff6005604060002001541615610a19576000828152600160209081526040909120600501805464ff000000001916831515831b64ff00000000161790557f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c91610e66565b34610244576020366003190112610244576004356000526001602052610140604060002060ff815491600181015490600281015460038201549060056004840154930154936040519687526020870152604086015260608501526080840152818116151560a0840152818160081c16151560c0840152818160101c16151560e0840152818160181c16151561010084015260201c161515610120820152f35b606036600319011261024457600435611086611e70565b6044359161109381611fb8565b156109ed5760018060a01b0382169283600052600060205260ff6040600020541615610649578315908115611475575034156109cb5734925b3360005260056020526040600020548015159081611460575b50611433575b6000858152602081905260409020600181015460029091015460ff16906111129086611f85565b604d82116113595761112791600a0a90611f98565b9083600052600260205260408060002060009060018060a01b03331682526020522092611155838554611f78565b856000526001602052600460406000200154106114225784600052600360205261118483604060002054611f78565b8560005260016020526002604060002001541061141157156113a2575b8360005260016020526111d76111bf60036040600020015484611f85565b85600052600160205260026040600020015490611f98565b9280541560001461136f5784600052600460205260406000206111fa8154611f04565b90556001850191828611611359576001923360005260056020526040600020556002820190815490620100008560b01b039060101b1690620100008560b01b0319161790558560038201555b611251838254611f78565b81550161125f838254611f78565b9055826000526003602052604060002061127a828254611f78565b905561128881600854611f78565b60085582600052600360205260406000205483600052600160205260026040600020015411156112eb575b604051938452602084015260408301527fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d260603393a4005b826000526001602052600560406000200161010061ff0019825416179055826000526003602052827fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a26112b3565b634e487b7160e01b600052601160045260246000fd5b600281015490915060101c6001600160a01b03168603610649578060036001920161139b878254611f78565b9055611246565b6040516323b872dd60e01b81523360048201523060248201526044810186905260208160648160008b5af190811561095a576000916113f2575b506111a1576312171d8360e31b60005260046000fd5b61140b915060203d602011610953576109458183611ee2565b876113dc565b63397bb34360e01b60005260046000fd5b631cd861cd60e01b60005260046000fd5b82600052600160205260ff60056040600020015460201c166110eb5763413d435b60e11b60005260046000fd5b600185019150818511611359571415866110e5565b80156109cb57926110cc565b346102445761148f36611e86565b6114976120f5565b81600052600160205260ff6005604060002001541615610a19576000828152600160209081526040909120600501805463ff000000191683151560181b63ff000000161790557f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e91191610e66565b3461024457604036600319011261024457600435611520611e70565b906115296120f5565b6001600160a01b0382169081156117685780600052600160205260ff6005604060002001541615610a195780600052600160205260ff60056040600020015460181c1615611757578060005260026020526040806000206000908482526020522080549384156109cb57600282019081549560ff87166109ba5760ff8760081c166109a9576003840154601088901c6001600160a01b031697909488159283156116e55747871161096657869561010061160a945b61ff0019161790558760005260036020526115ff6040600020918254611f13565b905554600854611f13565b6008551561165757600080809381935af1611623611f38565b5015610add5760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a3915b604051908152a4005b60405163a9059cbb60e01b81526001600160a01b0391909116600482015260248101919091526020816044816000895af190811561095a576000916116c6575b501561091a5760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a39161164e565b6116df915060203d602011610953576109458183611ee2565b85611697565b6040516370a0823160e01b81523060048201526020816024818e5afa90811561095a57600091611725575b50871161096657869561010061160a946115de565b90506020813d60201161174f575b8161174060209383611ee2565b8101031261024457518b611710565b3d9150611733565b63089c998760e01b60005260046000fd5b630702b3d960e41b60005260046000fd5b346102445760003660031901126102445761179261254d565b6000805160206125d283398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102445760203660031901126102445760043560005260046020526020604060002054604051908152f35b346102445760a0366003190112610244576084356044356024356004356064356118376120f5565b428210610d6d5781831115610d5c578315610d4b578015610d3a57841580156119f6575b610d2057600754946040519161014083019583871067ffffffffffffffff8811176119e0576119a7610d1b947f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada413398604052868152600161198a8b61196f602085018c815260408601888152611947600560608901988c8a528d6080820190815260a082019a8a8c5260c08301956000875260e08401976000895261010085019a60008c5261012086019d8e5260005260016020526040600020945185555160018501555160028401555160038301555160048201550197511515889060ff801983541691151516179055565b518654915162ffff001990921690151560081b61ff00161790151560101b62ff000016178555565b51835463ff000000191690151560181b63ff00000016178355565b51815464ff00000000191690151560201b64ff0000000016179055565b6119b2600754611f04565b600755604051958695869192608093969594919660a084019784526020840152604083015260608201520152565b634e487b7160e01b600052604160045260246000fd5b5083851161185b565b3461024457602036600319011261024457600435611a1b6120f5565b80600052600160205260ff6005604060002001541615610a195780600052600160205260ff60056040600020015460081c16610d8f57806000526001602052600560406000200161010061ff00198254161790558060005260036020527fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a2005b34610244576000366003190112610244576006546040516001600160a01b039091168152602090f35b3461024457604036600319011261024457611afd611e5a565b611b05611e70565b90600080516020612612833981519152549160ff8360401c16159267ffffffffffffffff811680159081611ca5575b6001149081611c9b575b159081611c92575b50611c815767ffffffffffffffff1981166001176000805160206126128339815191525583611c54575b506001600160a01b03811691821561176857611b8a612583565b611b92612583565b611b9b8261207f565b611ba3612583565b6001600160a01b031690811561034d57611bde916bffffffffffffffffffffffff60a01b6006541617600655611bd8816122c0565b50612204565b503303611c45575b611bec57005b68ff0000000000000000196000805160206126128339815191525416600080516020612612833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b611c4e33612204565b50611be6565b68ffffffffffffffffff191668010000000000000001176000805160206126128339815191525583611b70565b63f92ee8a960e01b60005260046000fd5b90501585611b46565b303b159150611b3e565b859150611b34565b34610244576000366003190112610244576020600854604051908152f35b3461024457604036600319011261024457611ce4611e70565b336001600160a01b03821603611d005761000f906004356124ad565b63334bd91960e11b60005260046000fd5b346102445760403660031901126102445761000f600435611d30611e70565b90611d3d61053382611ea5565b612416565b346102445760203660031901126102445761000f611d5e611e5a565b611d66612167565b612204565b34610244576020366003190112610244576020610de1600435611ea5565b3461024457602036600319011261024457611da2611e5a565b611daa6120f5565b6001600160a01b031660008181526020819052604090205460ff161561064957806000526000602052604060002060ff1981541690557fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d917600080a2005b34610244576020366003190112610244576004359063ffffffff60e01b821680920361024457602091637965db0b60e01b8114908115611e49575b5015158152f35b6301ffc9a760e01b14905083611e42565b600435906001600160a01b038216820361024457565b602435906001600160a01b038216820361024457565b6040906003190112610244576004359060243580151581036102445790565b6000526000805160206125f283398151915260205260016040600020015490565b6060810190811067ffffffffffffffff8211176119e057604052565b90601f8019910116810190811067ffffffffffffffff8211176119e057604052565b60001981146113595760010190565b9190820391821161135957565b90816020910312610244575180151581036102445790565b3d15611f73573d9067ffffffffffffffff82116119e05760405191611f67601f8201601f191660200184611ee2565b82523d6000602084013e565b606090565b9190820180921161135957565b8181029291811591840414171561135957565b8115611fa2570490565b634e487b7160e01b600052601260045260246000fd5b80600052600160205260ff600560406000200154161561204c5780600052600160205260ff60056040600020015460081c1661204c57806000526001602052604060002054421061204c57806000526001602052600160406000200154421161204c57806000526003602052604060002054906000526001602052600260406000200154111561204757600190565b600090565b50600090565b6001600160a01b0316600090815260056020526040902054801561204c5760001981019081116113595790565b6001600160a01b031680156120df576000805160206125d283398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff161561212e57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16156121a057565b63e2517d3f60e01b60005233600452600060245260446000fd5b60008181526000805160206125f28339815191526020908152604080832033845290915290205460ff16156121ec5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1661204c576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206125b28339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1661204c576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206125b28339815191528180a4600190565b6001600160a01b03811660009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb7602052604090205460ff1661204c576001600160a01b031660008181527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb760205260408120805460ff191660011790553391907f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07906000805160206125b28339815191529080a4600190565b60008181526000805160206125f2833981519152602090815260408083206001600160a01b038616845290915290205460ff166124a65760008181526000805160206125f2833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206125b28339815191529080a4600190565b5050600090565b60008181526000805160206125f2833981519152602090815260408083206001600160a01b038616845290915290205460ff16156124a65760008181526000805160206125f2833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b6000805160206125d2833981519152546001600160a01b0316330361256e57565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206126128339815191525460401c16156125a057565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212205fdab1fb3796ba1a36f2658cc45ce0e36b5f6b0dbff8ab890192b2b83c67e55d64736f6c634300081c0033",
|
1547
1568
|
"linkReferences": {},
|
1548
1569
|
"deployedLinkReferences": {}
|
1549
1570
|
}
|
@@ -28,7 +28,7 @@ export interface SeedRoundFundraiserInterface extends Interface {
|
|
28
28
|
encodeFunctionData(functionFragment: "grantRole", values: [BytesLike, AddressLike]): string;
|
29
29
|
encodeFunctionData(functionFragment: "grantTreasurerRole", values: [AddressLike]): string;
|
30
30
|
encodeFunctionData(functionFragment: "hasRole", values: [BytesLike, AddressLike]): string;
|
31
|
-
encodeFunctionData(functionFragment: "initialize", values: [AddressLike]): string;
|
31
|
+
encodeFunctionData(functionFragment: "initialize", values: [AddressLike, AddressLike]): string;
|
32
32
|
encodeFunctionData(functionFragment: "isRoundActive", values: [BigNumberish]): string;
|
33
33
|
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
|
34
34
|
encodeFunctionData(functionFragment: "projectToken", values?: undefined): string;
|
@@ -397,11 +397,16 @@ export declare namespace TokenRemovedFromWhitelistEvent {
|
|
397
397
|
type LogDescription = TypedLogDescription<Event>;
|
398
398
|
}
|
399
399
|
export declare namespace TokenWhitelistedEvent {
|
400
|
-
type InputTuple = [
|
401
|
-
|
400
|
+
type InputTuple = [
|
401
|
+
token: AddressLike,
|
402
|
+
price: BigNumberish,
|
403
|
+
decimals: BigNumberish
|
404
|
+
];
|
405
|
+
type OutputTuple = [token: string, price: bigint, decimals: bigint];
|
402
406
|
interface OutputObject {
|
403
407
|
token: string;
|
404
408
|
price: bigint;
|
409
|
+
decimals: bigint;
|
405
410
|
}
|
406
411
|
type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
|
407
412
|
type Filter = TypedDeferredTopicFilter<Event>;
|
@@ -532,7 +537,8 @@ export interface SeedRoundFundraiser extends BaseContract {
|
|
532
537
|
boolean
|
533
538
|
], "view">;
|
534
539
|
initialize: TypedContractMethod<[
|
535
|
-
_projectToken: AddressLike
|
540
|
+
_projectToken: AddressLike,
|
541
|
+
_owner: AddressLike
|
536
542
|
], [
|
537
543
|
void
|
538
544
|
], "nonpayable">;
|
@@ -679,9 +685,14 @@ export interface SeedRoundFundraiser extends BaseContract {
|
|
679
685
|
whitelistedTokens: TypedContractMethod<[
|
680
686
|
arg0: AddressLike
|
681
687
|
], [
|
682
|
-
[
|
688
|
+
[
|
689
|
+
boolean,
|
690
|
+
bigint,
|
691
|
+
bigint
|
692
|
+
] & {
|
683
693
|
isWhitelisted: boolean;
|
684
694
|
price: bigint;
|
695
|
+
decimals: bigint;
|
685
696
|
}
|
686
697
|
], "view">;
|
687
698
|
withdrawFunds: TypedContractMethod<[
|
@@ -768,7 +779,12 @@ export interface SeedRoundFundraiser extends BaseContract {
|
|
768
779
|
], [
|
769
780
|
boolean
|
770
781
|
], "view">;
|
771
|
-
getFunction(nameOrSignature: "initialize"): TypedContractMethod<[
|
782
|
+
getFunction(nameOrSignature: "initialize"): TypedContractMethod<[
|
783
|
+
_projectToken: AddressLike,
|
784
|
+
_owner: AddressLike
|
785
|
+
], [
|
786
|
+
void
|
787
|
+
], "nonpayable">;
|
772
788
|
getFunction(nameOrSignature: "isRoundActive"): TypedContractMethod<[_roundId: BigNumberish], [boolean], "view">;
|
773
789
|
getFunction(nameOrSignature: "owner"): TypedContractMethod<[], [string], "view">;
|
774
790
|
getFunction(nameOrSignature: "projectToken"): TypedContractMethod<[], [string], "view">;
|
@@ -884,9 +900,14 @@ export interface SeedRoundFundraiser extends BaseContract {
|
|
884
900
|
getFunction(nameOrSignature: "whitelistedTokens"): TypedContractMethod<[
|
885
901
|
arg0: AddressLike
|
886
902
|
], [
|
887
|
-
[
|
903
|
+
[
|
904
|
+
boolean,
|
905
|
+
bigint,
|
906
|
+
bigint
|
907
|
+
] & {
|
888
908
|
isWhitelisted: boolean;
|
889
909
|
price: bigint;
|
910
|
+
decimals: bigint;
|
890
911
|
}
|
891
912
|
], "view">;
|
892
913
|
getFunction(nameOrSignature: "withdrawFunds"): TypedContractMethod<[
|
@@ -946,7 +967,7 @@ export interface SeedRoundFundraiser extends BaseContract {
|
|
946
967
|
TokenPriceUpdated: TypedContractEvent<TokenPriceUpdatedEvent.InputTuple, TokenPriceUpdatedEvent.OutputTuple, TokenPriceUpdatedEvent.OutputObject>;
|
947
968
|
"TokenRemovedFromWhitelist(address)": TypedContractEvent<TokenRemovedFromWhitelistEvent.InputTuple, TokenRemovedFromWhitelistEvent.OutputTuple, TokenRemovedFromWhitelistEvent.OutputObject>;
|
948
969
|
TokenRemovedFromWhitelist: TypedContractEvent<TokenRemovedFromWhitelistEvent.InputTuple, TokenRemovedFromWhitelistEvent.OutputTuple, TokenRemovedFromWhitelistEvent.OutputObject>;
|
949
|
-
"TokenWhitelisted(address,uint256)": TypedContractEvent<TokenWhitelistedEvent.InputTuple, TokenWhitelistedEvent.OutputTuple, TokenWhitelistedEvent.OutputObject>;
|
970
|
+
"TokenWhitelisted(address,uint256,uint8)": TypedContractEvent<TokenWhitelistedEvent.InputTuple, TokenWhitelistedEvent.OutputTuple, TokenWhitelistedEvent.OutputObject>;
|
950
971
|
TokenWhitelisted: TypedContractEvent<TokenWhitelistedEvent.InputTuple, TokenWhitelistedEvent.OutputTuple, TokenWhitelistedEvent.OutputObject>;
|
951
972
|
"TokensClaimed(uint256,address,uint256)": TypedContractEvent<TokensClaimedEvent.InputTuple, TokensClaimedEvent.OutputTuple, TokensClaimedEvent.OutputObject>;
|
952
973
|
TokensClaimed: TypedContractEvent<TokensClaimedEvent.InputTuple, TokensClaimedEvent.OutputTuple, TokensClaimedEvent.OutputObject>;
|
package/dist/contracts.json
CHANGED
@@ -21,10 +21,13 @@
|
|
21
21
|
"Currency": "0xDB2e50234a3BE8aA4200C96712F190cf712cd8ec",
|
22
22
|
"Reward": "0xa5Ef2328aa2F6F231D15cdcF48503974D0938eD4",
|
23
23
|
"SeedRoundFundraiser": "0xbd520dbcb8e0b062D10d7879D27C20d214a262F6",
|
24
|
-
"SeedRoundFundraiser-implemented": "
|
24
|
+
"SeedRoundFundraiser-implemented": "0xE8CCAA7A3A183BCF8C6331bf28cd4ffdfA559998",
|
25
25
|
"WETH": "0x08a2d38807B1D345b6c1642f8030a29DC2Cc7223",
|
26
|
-
"SeedRoundFundraiser-implemented-old": "
|
27
|
-
"TradingVault": "0xeCB23467123c1CA6F9D97Ae5B2faCF9eCb1F6464",
|
26
|
+
"SeedRoundFundraiser-implemented-old": "0x74bE79dF1dc15bbd7C4F0e67267E0Da691bF5BDf",
|
27
|
+
"TradingVault-deprecated": "0xeCB23467123c1CA6F9D97Ae5B2faCF9eCb1F6464",
|
28
|
+
"TradingVault-implemented-deprecated": "0xEe8D777729B5D8239FF18E77B04cf47a73FfE516",
|
29
|
+
"USDC": "0xDd33fEeD5D44D9e89b69C8E9397292E0D6554a66",
|
30
|
+
"TradingVault": "0xDAA0505313b7448374DB560c46584b4c85432e4E",
|
28
31
|
"TradingVault-implemented": "0xEe8D777729B5D8239FF18E77B04cf47a73FfE516"
|
29
32
|
},
|
30
33
|
"base": {
|
package/dist/types.d.ts
CHANGED
package/dist/utils.d.ts
CHANGED
@@ -8,6 +8,22 @@ export declare const LOG_PREFIXES: {
|
|
8
8
|
DEBUG: string;
|
9
9
|
};
|
10
10
|
export declare const sleep: (ms: number) => Promise<void>;
|
11
|
+
/**
|
12
|
+
* Splits an array into chunks of the specified size
|
13
|
+
* @param array The array to split into chunks
|
14
|
+
* @param chunkSize The maximum size of each chunk
|
15
|
+
* @returns An array of chunks
|
16
|
+
*/
|
17
|
+
export declare const chunks: <T>(array: T[], chunkSize: number) => T[][];
|
18
|
+
/**
|
19
|
+
* Process items in batches with a delay between batches to avoid rate limiting
|
20
|
+
* @param items Array of items to process
|
21
|
+
* @param processFn Function to process each batch of items
|
22
|
+
* @param batchSize Maximum number of items per batch
|
23
|
+
* @param delayMs Delay in milliseconds between batches
|
24
|
+
* @returns The combined results from all batches
|
25
|
+
*/
|
26
|
+
export declare const processBatches: <T, R>(items: T[], processFn: (batch: T[]) => Promise<R[]>, batchSize?: number, delayMs?: number) => Promise<R[]>;
|
11
27
|
export declare const getRandomProvider: (providers: ethers.Provider[]) => ethers.Provider;
|
12
28
|
export declare const checkRpcHealth: (provider: ethers.Provider, index?: number) => Promise<boolean>;
|
13
29
|
export declare const getTransactionStatus: (provider: ethers.Provider, txHash: string, maxRetries?: number) => Promise<{
|
package/dist/utils.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getNetworkFromRpc=exports.signAndSendTransaction=exports.streamEvents=exports.getAllEvents=exports.resolveContractAddress=exports.getRewardWeight=exports.buildApproveERC20Tx=exports.getTokenAllowance=exports.getTokenSymbol=exports.getTokenDecimals=exports.getTransactionStatus=exports.checkRpcHealth=exports.getRandomProvider=exports.sleep=exports.LOG_PREFIXES=void 0;const e=require("ethers");exports.LOG_PREFIXES={INFO:"[36m[STREAM-INFO][0m",BLOCK:"[33m[STREAM-BLOCK][0m",EVENT:"[32m[STREAM-EVENT][0m",ERROR:"[31m[STREAM-ERROR][0m",SAVE:"[35m[STREAM-SAVE][0m",DEBUG:"[34m[STREAM-DEBUG][0m"};exports.sleep=async e=>new Promise((t=>setTimeout(t,e)));exports.getRandomProvider=e=>e[Math.floor(Math.random()*e.length)];exports.checkRpcHealth=async(e,t=0)=>{try{const t=new Promise(((e,t)=>{setTimeout((()=>t(new Error("RPC request timeout"))),5e3)}));return await Promise.race([e.getBlockNumber(),t]),!0}catch(e){return console.error(`${exports.LOG_PREFIXES.ERROR} RPC health check failed:`,e,t),!1}};exports.getTransactionStatus=async(e,t,o=10)=>{let r=0,s=1e3;for(;r<o;)try{const
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getNetworkFromRpc=exports.signAndSendTransaction=exports.streamEvents=exports.getAllEvents=exports.resolveContractAddress=exports.getRewardWeight=exports.buildApproveERC20Tx=exports.getTokenAllowance=exports.getTokenSymbol=exports.getTokenDecimals=exports.getTransactionStatus=exports.checkRpcHealth=exports.getRandomProvider=exports.processBatches=exports.chunks=exports.sleep=exports.LOG_PREFIXES=void 0;const e=require("ethers");exports.LOG_PREFIXES={INFO:"[36m[STREAM-INFO][0m",BLOCK:"[33m[STREAM-BLOCK][0m",EVENT:"[32m[STREAM-EVENT][0m",ERROR:"[31m[STREAM-ERROR][0m",SAVE:"[35m[STREAM-SAVE][0m",DEBUG:"[34m[STREAM-DEBUG][0m"};exports.sleep=async e=>new Promise((t=>setTimeout(t,e)));exports.chunks=(e,t)=>{const o=[];for(let r=0;r<e.length;r+=t)o.push(e.slice(r,r+t));return o};exports.processBatches=async(e,t,o=3,r=500)=>{let s=[];const n=(0,exports.chunks)(e,o);for(let e=0;e<n.length;e++){const o=await t(n[e]);s=[...s,...o],e<n.length-1&&await(0,exports.sleep)(r)}return s};exports.getRandomProvider=e=>e[Math.floor(Math.random()*e.length)];exports.checkRpcHealth=async(e,t=0)=>{try{const t=new Promise(((e,t)=>{setTimeout((()=>t(new Error("RPC request timeout"))),5e3)}));return await Promise.race([e.getBlockNumber(),t]),!0}catch(e){return console.error(`${exports.LOG_PREFIXES.ERROR} RPC health check failed:`,e,t),!1}};exports.getTransactionStatus=async(e,t,o=10)=>{let r=0,s=1e3;for(;r<o;)try{const n=await e.getTransactionReceipt(t);if(!n){if(r++,r===o)return{hash:t,status:null,confirmations:0,isCompleted:!1,attempts:r};await(0,exports.sleep)(s),s*=2;continue}const a=Number(await n.confirmations()||0);return{hash:n.hash,status:1===n.status,confirmations:a,isCompleted:!0,attempts:r+1}}catch(e){throw new Error(`Failed to get transaction status: ${e.message}`)}throw new Error("Failed to get transaction status after maximum retries")};exports.getTokenDecimals=async(t,o)=>{const r=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],o);return Number(await r.decimals())};exports.getTokenSymbol=async(t,o)=>{const r=new e.ethers.Contract(t,["function symbol() view returns (string)"],o);return await r.symbol()};exports.getTokenAllowance=async(t,o,r,s)=>{if(t===e.ethers.ZeroAddress||t.toLowerCase()===e.ethers.ZeroAddress)return BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");const n=new e.ethers.Contract(t,["function allowance(address owner, address spender) view returns (uint256)"],s);return await n.allowance(o,r)};exports.buildApproveERC20Tx=async(t,o,r,s)=>{const n=new e.ethers.Contract(t,["function approve(address spender, uint256 amount) returns (bool)"],s);return await n.approve.populateTransaction(o,r)};exports.getRewardWeight=(e,t)=>{let o=0;const r=[...t].sort(((e,t)=>e.duration-t.duration));for(const t of r)e>=t.duration&&(o=t.weight);return o};exports.resolveContractAddress=(e,t,o,r)=>{if(r)return r;const s=(0,exports.getNetworkFromRpc)(e);return o?.[s]?.[t]};exports.getAllEvents=async(e,t,o,r,s,n)=>{let a=[];e.interface.forEachEvent((e=>{a.push(e.name)})),n&&n.length>0&&(a=a.filter((e=>n.includes(e))));const i=await(0,exports.processBatches)(a,(async t=>{const n=t.map((async t=>{const n=o(),a=n.filters[t]();return(await n.queryFilter(a,r,s)).map((o=>{const r=e.interface.parseLog({topics:o.topics,data:o.data});return{eventName:t,blockNumber:o.blockNumber,transactionHash:o.transactionHash,args:r?.args.toObject(),timestamp:null}}))}));return(await Promise.all(n)).flat()}));i.sort(((e,t)=>e.blockNumber-t.blockNumber));const c=[...new Set(i.map((e=>e.blockNumber)))],l=new Map;return await(0,exports.processBatches)(c,(async e=>{const o=e.map((e=>t().getBlock(e)));return(await Promise.all(o)).forEach((e=>{e&&l.set(e.number,e.timestamp)})),[]})),i.map((e=>({eventName:e.eventName,blockNumber:e.blockNumber,transactionHash:e.transactionHash,args:Object.fromEntries(Object.entries(e.args||{}).filter((([e])=>isNaN(Number(e))))),timestamp:l.get(e.blockNumber)??null})))};exports.streamEvents=async({getProvider:e,getAllEvents:t,formatEvent:o,onEvent:r,saveLatestBlock:s,fromBlock:n,batchSize:a=1e3,sleepTime:i=5e3,whitelistEvents:c})=>{const l="1"===process.env.DEBUG_STREAM_EVENTS;let p=n,m=0,f=Date.now();const u=()=>{m++;const e=Date.now();e-f>=1e4&&(console.log(`${exports.LOG_PREFIXES.INFO} RPC Requests in last 10s: ${m}`),m=0,f=e)},E=()=>{const t=e();if(!t.__requestTracking){if("send"in t){const e=t.send.bind(t);t.send=async(t,o)=>(u(),e(t,o))}else if("_send"in t){const e=t._send.bind(t);t._send=async(t,o)=>(u(),e(t,o))}else{const e=t.getBlockNumber.bind(t);t.getBlockNumber=async()=>(u(),e());const o=t.getBlock.bind(t);t.getBlock=async e=>(u(),o(e));const r=t.getTransactionReceipt.bind(t);t.getTransactionReceipt=async e=>(u(),r(e))}t.__requestTracking=!0}return t},g=async(e,o,r)=>(u(),await t(e,o,r));for(l&&(console.log(`${exports.LOG_PREFIXES.INFO} StreamEvents Debug Mode Enabled`),console.log(`${exports.LOG_PREFIXES.INFO} Initial fromBlock: ${p}`),console.log(`${exports.LOG_PREFIXES.INFO} Batch size: ${a}`),console.log(`${exports.LOG_PREFIXES.INFO} Sleep time: ${i}ms`),console.log(`${exports.LOG_PREFIXES.INFO} RPC request tracking enabled (10s intervals)`),c&&c.length>0&&console.log(`${exports.LOG_PREFIXES.INFO} Whitelist events: ${c.join(", ")}`));;)try{const e=await E().getBlockNumber();l&&console.log(`${exports.LOG_PREFIXES.BLOCK} Latest block: ${e}`);const t=Math.min(p+a,e);if(l&&console.log(`${exports.LOG_PREFIXES.BLOCK} Processing blocks from ${p} to ${t}`),p>=e){l&&console.log(`${exports.LOG_PREFIXES.DEBUG} Caught up to latest block, waiting ${i}ms...`),await(0,exports.sleep)(i);continue}const n=await g(p,t,c);if(l&&n.length>0){const e=n.reduce(((e,t)=>{const o=t.eventName||"Unknown";return e[o]=(e[o]||0)+1,e}),{});console.log(`${exports.LOG_PREFIXES.EVENT} Found ${n.length} events:`),Object.entries(e).forEach((([e,t])=>{console.log(`${exports.LOG_PREFIXES.EVENT} - ${e}: ${t}`)}))}for(const e of n)l&&console.log(`${exports.LOG_PREFIXES.EVENT} Processing: ${e.eventName||"Event"}`),await r(o(e));await s(t),l&&console.log(`${exports.LOG_PREFIXES.SAVE} Saved latest block: ${t}`),p=t+1}catch(e){l?(console.error(`${exports.LOG_PREFIXES.ERROR} Error in streamEvents:`,e),console.error(`${exports.LOG_PREFIXES.ERROR} Stack trace:`,e instanceof Error?e.stack:"")):console.error(`${exports.LOG_PREFIXES.ERROR} Error in streamEvents:`,e),await(0,exports.sleep)(1e3)}};exports.signAndSendTransaction=async(e,t,o,{onSubmit:r,onFinally:s,onError:n}={},a)=>{try{const n={...e};let a;if("object"==typeof t&&null!==t&&"sendTransaction"in t){const e=t.connect(o());a=(await e.sendTransaction(n)).hash}else a=await t(n);r&&await r(a);const i=await(0,exports.getTransactionStatus)(o(),a);if(null===i.status)throw new Error("Transaction may not be minted on-chain yet or has failed. Please check the blockchain explorer.");if(!1===i.status)throw new Error("Transaction failed. Please check the blockchain explorer for details.");return s&&await s({...i,txHash:a}),{transaction:{hash:a},status:i}}catch(e){if(a&&e)try{if("CALL_EXCEPTION"===e.code&&e.data){const t=e.data;for(const o of Object.values(a.interface.fragments).filter((e=>"error"===e.type)))if("name"in o){const r=a.interface.getError(o.name);if(r&&r.selector){if(r.selector===t){const t=o.name,r=e.errorArgs||[],s=new Error(`Transaction failed with custom error: ${t}(${r.join(", ")})`);throw Object.assign(s,e),n&&await n(s),s}}}console.log(`${exports.LOG_PREFIXES.DEBUG} Unknown custom error with selector: ${t}`)}}catch(e){console.error(`${exports.LOG_PREFIXES.ERROR} Error decoding transaction error:`,e)}throw n&&await n(e instanceof Error?e:new Error(String(e))),e}};exports.getNetworkFromRpc=e=>{const t=e.toLowerCase();let o=t;try{if(t.includes("://")){o=new URL(t).hostname}else t.includes("@")&&(o=t.split("@")[1].split("/")[0])}catch(e){console.warn(`${exports.LOG_PREFIXES.ERROR} Failed to parse RPC URL: ${t}`)}const r=[[/sepolia\.base|base-sepolia/,"base-sepolia"],[/goerli\.base|base-goerli/,"base-goerli"],[/base-mainnet/,"base"],[/polygon-mumbai|mumbai\.polygon/,"polygon-mumbai"],[/polygon-amoy|amoy\.polygon/,"polygon-amoy"],[/polygon-zkevm|zkevm|zkevm[-.]polygon/,"polygon-zkevm"],[/arbitrum.*sepolia|sepolia.*arbitrum/,"arbitrum-sepolia"],[/arbitrum.*goerli|goerli.*arbitrum/,"arbitrum-goerli"],[/arbitrum-nova|nova[-.]arbitrum/,"arbitrum-nova"],[/optimism-sepolia|sepolia[-.]optimism/,"optimism-sepolia"],[/optimism-goerli|goerli[-.]optimism/,"optimism-goerli"],[/avalanche-fuji|fuji[-.]avalanche|avax-test/,"avalanche-fuji"],[/bsc-testnet|testnet[-.]bsc|data-seed-prebsc/,"bsc-testnet"],[/base(?![-.]sepolia|[-.]goerli)/,"base"],[/polygon(?![-.]mumbai|[-.]amoy)/,"polygon"],[/arbitrum(?![-.]nova)/,"arbitrum"],[/optimism(?![-.]sepolia|[-.]goerli)/,"optimism"],[/avalanche|avax(?![-.]test|[-.]fuji)/,"avalanche"],[/bsc|binance(?![-.]testnet)/,"bsc"],[/eth-sepolia|sepolia(?![-.]base|[-.]arbitrum|[-.]optimism)/,"sepolia"],[/eth-goerli|goerli(?![-.]base|[-.]arbitrum|[-.]optimism)/,"goerli"],[/eth-mainnet|ethereum|eth\.rpc/,"ethereum"],[/mainnet/,"ethereum"]];for(const[e,o]of r)if(e.test(t))return o;for(const[e,t]of r)if(e.test(o))return t;throw new Error("Failed to get network from RPC URL")};
|