From b60906915c8e5ad60a4814654aa8ea80ea3f0281 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sun, 6 Jun 2021 18:54:28 +0200 Subject: [PATCH 1/5] Governance Reorg into Function Libraries --- .../UI/Function-Libraries/Claims.js | 11 + .../Function-Libraries/DistributionProcess.js | 11 + .../UI/Function-Libraries/Tokens.js | 173 +++++++++++ .../Governance/UI/Function-Libraries/Votes.js | 274 ++++++++++++++++++ .../UI/Function-Libraries/Weights.js | 4 +- .../UI/Spaces/Assets-Space/Assets.js | 2 +- .../UI/Spaces/Features-Space/Features.js | 2 +- .../Governance/UI/Spaces/Pools-Space/Pools.js | 164 +---------- .../UI/Spaces/Positions-Space/Positions.js | 2 +- .../Spaces/User-Profile-Space/UserProfile.js | 261 +---------------- Projects/ProjectsSchema.json | 20 ++ 11 files changed, 496 insertions(+), 428 deletions(-) create mode 100644 Projects/Governance/UI/Function-Libraries/Claims.js create mode 100644 Projects/Governance/UI/Function-Libraries/DistributionProcess.js create mode 100644 Projects/Governance/UI/Function-Libraries/Tokens.js create mode 100644 Projects/Governance/UI/Function-Libraries/Votes.js diff --git a/Projects/Governance/UI/Function-Libraries/Claims.js b/Projects/Governance/UI/Function-Libraries/Claims.js new file mode 100644 index 000000000..cc0935662 --- /dev/null +++ b/Projects/Governance/UI/Function-Libraries/Claims.js @@ -0,0 +1,11 @@ +function newGovernanceFunctionLibraryClaims() { + let thisObject = { + calculate: calculate + } + + return thisObject + + function calculate() { + + } +} \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js new file mode 100644 index 000000000..bcdc86280 --- /dev/null +++ b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js @@ -0,0 +1,11 @@ +function newGovernanceFunctionLibraryDistributionProcess() { + let thisObject = { + calculate: calculate + } + + return thisObject + + function calculate() { + + } +} \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/Tokens.js b/Projects/Governance/UI/Function-Libraries/Tokens.js new file mode 100644 index 000000000..0183c7cba --- /dev/null +++ b/Projects/Governance/UI/Function-Libraries/Tokens.js @@ -0,0 +1,173 @@ +function newGovernanceFunctionLibraryTokens() { + let thisObject = { + calculate: calculate + } + + return thisObject + + function calculate() { + let pools = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Pools') + + /* Weight Calculation Follows */ + for (let i = 0; i < pools.length; i++) { + let poolsNode = pools[i] + UI.projects.governance.functionLibraries.weights.calculate(poolsNode) + } + /* + We will reset all the token flows, and then distribute it. + */ + for (let i = 0; i < pools.length; i++) { + let poolsNode = pools[i] + poolsReset(poolsNode) + } + for (let i = 0; i < pools.length; i++) { + let poolsNode = pools[i] + poolsDistribute(poolsNode) + } + } + + function poolsReset(pools) { + resetTokenFlow(pools) + } + + function poolsDistribute(pools) { + let tokenFlow = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(pools.payload, 'tokens') + distributeTokens(pools, tokenFlow) + } + + function resetTokenFlow(node) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + node.payload.tokenFlow = 0 + /* + If there is a reference parent defined, this means that the token flow is + transfered to it and not distributed among children. + */ + if (node.payload.referenceParent !== undefined) { + resetTokenFlow(node.payload.referenceParent) + return + } + /* + When we reach certain node types, we will halt the distribution, because thse are targets for + token flow. + */ + if ( + node.type === 'Asset' || + node.type === 'Feature' + ) { return } + /* + If there is no reference parent we will redistribute token flow among children. + */ + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } + + if (schemaDocument.childrenNodesProperties !== undefined) { + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + + switch (property.type) { + case 'node': { + if (node.type === 'Pools' && property.name === "votesDistribution") { + let childNode = node[property.name] + resetTokenFlow(childNode) + } + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + resetTokenFlow(childNode) + } + } + break + } + } + } + } + } + + function distributeTokens(node, tokenFlow) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + /* + Let's get the schemaDocument first + */ + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } + /* + At hierarchy heads we will shouw how many tokens are comming in. + */ + if ( + schemaDocument.isHierarchyHead === true + ) { + drawTokenFlow(node, tokenFlow) + } + /* + We will also have tokens at nodes with weight. + */ + if ( + isNaN(node.payload.weight) !== true && + node.payload.weight !== undefined && + node.payload.weight !== 0 + ) { + node.payload.tokenFlow = tokenFlow * node.payload.weight + drawTokenFlow(node, node.payload.tokenFlow, node.payload.weight) + } + /* + If there is a reference parent defined, this means that the token flow is + transfered to it and not distributed among children. + */ + if (node.payload.referenceParent !== undefined) { + distributeTokens(node.payload.referenceParent, node.payload.tokenFlow) + return + } + /* + When we reach certain node types, we will halt the distribution, because these are targets for + token flow. + */ + if ( + node.type === 'Asset' || + node.type === 'Feature' + ) { return } + + if (schemaDocument.childrenNodesProperties !== undefined) { + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + + switch (property.type) { + case 'node': { + if (node.type === 'Pools' && property.name === "votesDistribution") { + let childNode = node[property.name] + distributeTokens(childNode, tokenFlow) + } + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + distributeTokens(childNode, tokenFlow) + } + } + break + } + } + } + } + } + + function drawTokenFlow(node, tokenFlow, weight) { + if (weight !== undefined && weight !== 0) { + tokenFlow = new Intl.NumberFormat().format(tokenFlow) + ' ' + 'SA Tokens' + ' - ' + 'Weight: ' + weight.toFixed(2) + } else { + tokenFlow = new Intl.NumberFormat().format(tokenFlow) + ' ' + 'SA Tokens' + } + + if (node.payload !== undefined) { + node.payload.uiObject.setStatus(tokenFlow) + } + } +} \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/Votes.js b/Projects/Governance/UI/Function-Libraries/Votes.js new file mode 100644 index 000000000..eb09ce06d --- /dev/null +++ b/Projects/Governance/UI/Function-Libraries/Votes.js @@ -0,0 +1,274 @@ +function newGovernanceFunctionLibraryVotes() { + let thisObject = { + calculate: calculate + } + + return thisObject + + function calculate() { + let pools = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Pools') + /* Reset Votes at Pools */ + for (let i = 0; i < pools.length; i++) { + let poolsNode = pools[i] + resetVotes(poolsNode) + } + + let features = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Features') + /* Reset Votes at Features */ + for (let i = 0; i < features.length; i++) { + let feature = features[i] + resetVotes(feature) + } + + let assets = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Assets') + /* Reset Votes at Features */ + for (let i = 0; i < assets.length; i++) { + let asset = assets[i] + resetVotes(asset) + } + + let positions = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Positions') + /* Reset Votes at Features */ + for (let i = 0; i < positions.length; i++) { + let position = positions[i] + resetVotes(position) + } + + let userProfiles = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') + /* + We will first reset all the voting power, and then distribute it. + */ + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + resetVotes(userProfile) + } + for (let i = 0; i < userProfiles.length; i++) { + let userProfile = userProfiles[i] + distributeVotes(userProfile) + } + } + + function resetVotes(userProfile) { + resetVotingPower(userProfile) + } + + function distributeVotes(userProfile) { + let votes = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(userProfile.payload, 'tokens') + distributeVotingPower(userProfile, votes) + } + + function resetVotingPower(node) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + node.payload.votes = 0 + /* + If there is a reference parent defined, this means that the voting power is + transfered to it and not distributed among children. + */ + if (node.payload.referenceParent !== undefined) { + resetVotingPower(node.payload.referenceParent) + return + } + /* + When we reach certain node types, we will halt the distribution, because thse are targets for + voting power. + */ + if ( + node.type === 'Position' || + node.type === 'Asset' || + node.type === 'Feature' + ) { return } + /* + If there is no reference parent we will redistribute voting power among children. + */ + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } + + if (schemaDocument.childrenNodesProperties !== undefined) { + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + + if (node.type === 'User Profile' && property.name !== "votesDistribution") { continue } + + switch (property.type) { + case 'node': { + if (node.type === 'User Profile' && property.name === "votesDistribution") { + let childNode = node[property.name] + resetVotingPower(childNode) + } + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + resetVotingPower(childNode) + } + } + break + } + } + } + } + } + + function distributeVotingPower(node, votes, switchPercentage) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + node.payload.votes = node.payload.votes + votes + drawVotingPower(node, node.payload.votes, switchPercentage) + /* + When we reach certain node types, we will halt the distribution, because thse are targets for + voting power. + */ + if ( + node.type === 'Position' || + node.type === 'Asset' || + node.type === 'Feature' || + node.type === 'Pool' || + node.type === 'Position Contribution Claim' || + node.type === 'Asset Contribution Claim' || + node.type === 'Feature Contribution Claim' + ) { return } + /* + If there is a reference parent defined, this means that the voting power is + transfered to it and not distributed among children. + */ + if (node.payload.referenceParent !== undefined) { + distributeVotingPower(node.payload.referenceParent, votes) + return + } + /* + If there is no reference parent we will redistribute voting power among children. + */ + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } + + if (schemaDocument.childrenNodesProperties !== undefined) { + /* + Before distributing the voting power, we will calculate how the power + is going to be switched between all nodes. The first pass is about + scanning all sibling nodes to see which ones have a percentage defined + at their config, and check that all percentages don't add more than 100. + */ + let totalPercentage = 0 + let totalNodesWithoutPercentage = 0 + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + + if (node.type === 'User Profile' && property.name !== "votesDistribution") { continue } + + switch (property.type) { + case 'node': { + if (node.type === 'User Profile' && property.name === "votesDistribution") { + let childNode = node[property.name] + let percentage = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(childNode.payload, 'percentage') + if (percentage !== undefined && isNaN(percentage) !== true) { + totalPercentage = totalPercentage + percentage + } else { + totalNodesWithoutPercentage++ + } + } + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + let percentage = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(childNode.payload, 'percentage') + if (percentage !== undefined && isNaN(percentage) !== true) { + totalPercentage = totalPercentage + percentage + } else { + totalNodesWithoutPercentage++ + } + } + } + break + } + } + } + if (totalPercentage > 100) { + node.payload.uiObject.setErrorMessage('Voting Power Switching Error. Total Percentage of children nodes is grater that 100.') + return + } + let defaultPercentage = 0 + if (totalNodesWithoutPercentage > 0) { + defaultPercentage = (100 - totalPercentage) / totalNodesWithoutPercentage + } + /* + Here we do the actual distribution. + */ + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + + if (node.type === 'User Profile' && property.name !== "votesDistribution") { continue } + + switch (property.type) { + case 'node': { + if (node.type === 'User Profile' && property.name === "votesDistribution") { + let childNode = node[property.name] + let percentage = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(childNode.payload, 'percentage') + if (percentage === undefined || isNaN(percentage) === true) { + percentage = defaultPercentage + } + distributeVotingPower(childNode, votes * percentage / 100, percentage) + } + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + let percentage = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(childNode.payload, 'percentage') + if (percentage === undefined || isNaN(percentage) === true) { + percentage = defaultPercentage + } + distributeVotingPower(childNode, votes * percentage / 100, percentage) + } + } + break + } + } + } + } + } + + function drawVotingPower(node, votes, percentage) { + votes = new Intl.NumberFormat().format(votes) + ' ' + 'Votes' + if (node.payload !== undefined) { + if (node.type === 'User Profile') { + return + } + if ( + node.type === 'Position' || + node.type === 'Position Class' || + node.type === 'Pool' || + node.type === 'Tokens Switch' || + node.type === 'Asset' || + node.type === 'Asset Class' || + node.type === 'Feature' || + node.type === 'Feature Class' || + node.type === 'Position Contribution Claim' || + node.type === 'Asset Contribution Claim' || + node.type === 'Feature Contribution Claim' + ) { + node.payload.uiObject.valueAngleOffset = 0 + node.payload.uiObject.valueAtAngle = false + } else { + node.payload.uiObject.valueAngleOffset = 180 + node.payload.uiObject.valueAtAngle = true + } + + node.payload.uiObject.setValue(votes) + + if (percentage !== undefined) { + node.payload.uiObject.setPercentage(percentage.toFixed(2)) + } + } + } + +} \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/Weights.js b/Projects/Governance/UI/Function-Libraries/Weights.js index e988f3097..671a334a7 100644 --- a/Projects/Governance/UI/Function-Libraries/Weights.js +++ b/Projects/Governance/UI/Function-Libraries/Weights.js @@ -1,11 +1,11 @@ function newGovernanceFunctionLibraryWeights() { let thisObject = { - calculateWeights: calculateWeights + calculate: calculate } return thisObject - function calculateWeights(node) { + function calculate(node) { let totalVotes = 0 countVotesAndResetWeights(node) applyWeightCalculation(node) diff --git a/Projects/Governance/UI/Spaces/Assets-Space/Assets.js b/Projects/Governance/UI/Spaces/Assets-Space/Assets.js index b299efd07..da7d3fcf0 100644 --- a/Projects/Governance/UI/Spaces/Assets-Space/Assets.js +++ b/Projects/Governance/UI/Spaces/Assets-Space/Assets.js @@ -32,7 +32,7 @@ function newGobernanceAssetsSpace() { /* Weight Calculation Follows */ for (let i = 0; i < assets.length; i++) { let asset = assets[i] - UI.projects.governance.functionLibraries.weights.calculateWeights(asset) + UI.projects.governance.functionLibraries.weights.calculate(asset) } } diff --git a/Projects/Governance/UI/Spaces/Features-Space/Features.js b/Projects/Governance/UI/Spaces/Features-Space/Features.js index 31221b350..b89e531cc 100644 --- a/Projects/Governance/UI/Spaces/Features-Space/Features.js +++ b/Projects/Governance/UI/Spaces/Features-Space/Features.js @@ -32,7 +32,7 @@ function newGovernanceFeaturesSpace() { /* Weight Calculation Follows */ for (let i = 0; i < features.length; i++) { let feature = features[i] - UI.projects.governance.functionLibraries.weights.calculateWeights(feature) + UI.projects.governance.functionLibraries.weights.calculate(feature) } } diff --git a/Projects/Governance/UI/Spaces/Pools-Space/Pools.js b/Projects/Governance/UI/Spaces/Pools-Space/Pools.js index f861a0262..e88b69fe6 100644 --- a/Projects/Governance/UI/Spaces/Pools-Space/Pools.js +++ b/Projects/Governance/UI/Spaces/Pools-Space/Pools.js @@ -37,169 +37,7 @@ function newGovernancePoolsSpace() { function physics() { if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } - let pools = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Pools') - - /* Weight Calculation Follows */ - for (let i = 0; i < pools.length; i++) { - let poolsNode = pools[i] - UI.projects.governance.functionLibraries.weights.calculateWeights(poolsNode) - } - /* - We will reset all the token flows, and then distribute it. - */ - for (let i = 0; i < pools.length; i++) { - let poolsNode = pools[i] - poolsReset(poolsNode) - } - for (let i = 0; i < pools.length; i++) { - let poolsNode = pools[i] - poolsDistribute(poolsNode) - } - } - - function poolsReset(pools) { - resetTokenFlow(pools) - } - - function poolsDistribute(pools) { - let tokenFlow = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(pools.payload, 'tokens') - distributeTokens(pools, tokenFlow) - } - - function resetTokenFlow(node) { - if (node === undefined) { return } - if (node.payload === undefined) { return } - node.payload.tokenFlow = 0 - /* - If there is a reference parent defined, this means that the token flow is - transfered to it and not distributed among children. - */ - if (node.payload.referenceParent !== undefined) { - resetTokenFlow(node.payload.referenceParent) - return - } - /* - When we reach certain node types, we will halt the distribution, because thse are targets for - token flow. - */ - if ( - node.type === 'Asset' || - node.type === 'Feature' - ) { return } - /* - If there is no reference parent we will redistribute token flow among children. - */ - let schemaDocument = getSchemaDocument(node) - if (schemaDocument === undefined) { return } - - if (schemaDocument.childrenNodesProperties !== undefined) { - for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { - let property = schemaDocument.childrenNodesProperties[i] - - switch (property.type) { - case 'node': { - if (node.type === 'Pools' && property.name === "votesDistribution") { - let childNode = node[property.name] - resetTokenFlow(childNode) - } - } - break - case 'array': { - let propertyArray = node[property.name] - if (propertyArray !== undefined) { - for (let m = 0; m < propertyArray.length; m++) { - let childNode = propertyArray[m] - resetTokenFlow(childNode) - } - } - break - } - } - } - } - } - - function distributeTokens(node, tokenFlow) { - if (node === undefined) { return } - if (node.payload === undefined) { return } - /* - Let's get the schemaDocument first - */ - let schemaDocument = getSchemaDocument(node) - if (schemaDocument === undefined) { return } - /* - At hierarchy heads we will shouw how many tokens are comming in. - */ - if ( - schemaDocument.isHierarchyHead === true - ) { - drawTokenFlow(node, tokenFlow) - } - /* - We will also have tokens at nodes with weight. - */ - if ( - isNaN(node.payload.weight ) !== true && - node.payload.weight !== undefined && - node.payload.weight !== 0 - ) { - node.payload.tokenFlow = tokenFlow * node.payload.weight - drawTokenFlow(node, node.payload.tokenFlow, node.payload.weight) - } - /* - If there is a reference parent defined, this means that the token flow is - transfered to it and not distributed among children. - */ - if (node.payload.referenceParent !== undefined) { - distributeTokens(node.payload.referenceParent, node.payload.tokenFlow) - return - } - /* - When we reach certain node types, we will halt the distribution, because these are targets for - token flow. - */ - if ( - node.type === 'Asset' || - node.type === 'Feature' - ) { return } - - if (schemaDocument.childrenNodesProperties !== undefined) { - for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { - let property = schemaDocument.childrenNodesProperties[i] - - switch (property.type) { - case 'node': { - if (node.type === 'Pools' && property.name === "votesDistribution") { - let childNode = node[property.name] - distributeTokens(childNode, tokenFlow) - } - } - break - case 'array': { - let propertyArray = node[property.name] - if (propertyArray !== undefined) { - for (let m = 0; m < propertyArray.length; m++) { - let childNode = propertyArray[m] - distributeTokens(childNode, tokenFlow) - } - } - break - } - } - } - } - } - - function drawTokenFlow(node, tokenFlow, weight) { - if (weight !== undefined && weight !== 0) { - tokenFlow = new Intl.NumberFormat().format(tokenFlow) + ' ' + 'SA Tokens' + ' - ' + 'Weight: ' + weight.toFixed(2) - } else { - tokenFlow = new Intl.NumberFormat().format(tokenFlow) + ' ' + 'SA Tokens' - } - - if (node.payload !== undefined) { - node.payload.uiObject.setStatus(tokenFlow) - } + UI.projects.governance.functionLibraries.tokens.calculate() } function draw() { diff --git a/Projects/Governance/UI/Spaces/Positions-Space/Positions.js b/Projects/Governance/UI/Spaces/Positions-Space/Positions.js index 91a45f5d6..b2c9360b1 100644 --- a/Projects/Governance/UI/Spaces/Positions-Space/Positions.js +++ b/Projects/Governance/UI/Spaces/Positions-Space/Positions.js @@ -34,7 +34,7 @@ function newGovernancePositionsSpace() { /* Weight Calculation Follows */ for (let i = 0; i < positions.length; i++) { let position = positions[i] - UI.projects.governance.functionLibraries.weights.calculateWeights(position) + UI.projects.governance.functionLibraries.weights.calculate(position) } } diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index fb2b13715..0b2367533 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -37,266 +37,7 @@ function newGovernanceUserProfileSpace() { function physics() { if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } - let pools = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Pools') - /* Reset Votes at Pools */ - for (let i = 0; i < pools.length; i++) { - let poolsNode = pools[i] - resetVotes(poolsNode) - } - - let features = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Features') - /* Reset Votes at Features */ - for (let i = 0; i < features.length; i++) { - let feature = features[i] - resetVotes(feature) - } - - let assets = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Assets') - /* Reset Votes at Features */ - for (let i = 0; i < assets.length; i++) { - let asset = assets[i] - resetVotes(asset) - } - - let positions = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Positions') - /* Reset Votes at Features */ - for (let i = 0; i < positions.length; i++) { - let position = positions[i] - resetVotes(position) - } - - let userProfiles = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') - /* - We will first reset all the voting power, and then distribute it. - */ - for (let i = 0; i < userProfiles.length; i++) { - let userProfile = userProfiles[i] - resetVotes(userProfile) - } - for (let i = 0; i < userProfiles.length; i++) { - let userProfile = userProfiles[i] - distributeVotes(userProfile) - } - } - - function resetVotes(userProfile) { - resetVotingPower(userProfile) - } - - function distributeVotes(userProfile) { - let votes = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(userProfile.payload, 'tokens') - distributeVotingPower(userProfile, votes) - } - - function resetVotingPower(node) { - if (node === undefined) { return } - if (node.payload === undefined) { return } - node.payload.votes = 0 - /* - If there is a reference parent defined, this means that the voting power is - transfered to it and not distributed among children. - */ - if (node.payload.referenceParent !== undefined) { - resetVotingPower(node.payload.referenceParent) - return - } - /* - When we reach certain node types, we will halt the distribution, because thse are targets for - voting power. - */ - if ( - node.type === 'Position' || - node.type === 'Asset' || - node.type === 'Feature' - ) { return } - /* - If there is no reference parent we will redistribute voting power among children. - */ - let schemaDocument = getSchemaDocument(node) - if (schemaDocument === undefined) { return } - - if (schemaDocument.childrenNodesProperties !== undefined) { - for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { - let property = schemaDocument.childrenNodesProperties[i] - - if (node.type === 'User Profile' && property.name !== "votesDistribution") { continue } - - switch (property.type) { - case 'node': { - if (node.type === 'User Profile' && property.name === "votesDistribution") { - let childNode = node[property.name] - resetVotingPower(childNode) - } - } - break - case 'array': { - let propertyArray = node[property.name] - if (propertyArray !== undefined) { - for (let m = 0; m < propertyArray.length; m++) { - let childNode = propertyArray[m] - resetVotingPower(childNode) - } - } - break - } - } - } - } - } - - function distributeVotingPower(node, votes, switchPercentage) { - if (node === undefined) { return } - if (node.payload === undefined) { return } - node.payload.votes = node.payload.votes + votes - drawVotingPower(node, node.payload.votes, switchPercentage) - /* - When we reach certain node types, we will halt the distribution, because thse are targets for - voting power. - */ - if ( - node.type === 'Position' || - node.type === 'Asset' || - node.type === 'Feature' || - node.type === 'Pool' - ) { return } - /* - If there is a reference parent defined, this means that the voting power is - transfered to it and not distributed among children. - */ - if (node.payload.referenceParent !== undefined) { - distributeVotingPower(node.payload.referenceParent, votes) - return - } - /* - If there is no reference parent we will redistribute voting power among children. - */ - let schemaDocument = getSchemaDocument(node) - if (schemaDocument === undefined) { return } - - if (schemaDocument.childrenNodesProperties !== undefined) { - /* - Before distributing the voting power, we will calculate how the power - is going to be switched between all nodes. The first pass is about - scanning all sibling nodes to see which ones have a percentage defined - at their config, and check that all percentages don't add more than 100. - */ - let totalPercentage = 0 - let totalNodesWithoutPercentage = 0 - for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { - let property = schemaDocument.childrenNodesProperties[i] - - if (node.type === 'User Profile' && property.name !== "votesDistribution") { continue } - - switch (property.type) { - case 'node': { - if (node.type === 'User Profile' && property.name === "votesDistribution") { - let childNode = node[property.name] - let percentage = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(childNode.payload, 'percentage') - if (percentage !== undefined && isNaN(percentage) !== true) { - totalPercentage = totalPercentage + percentage - } else { - totalNodesWithoutPercentage++ - } - } - } - break - case 'array': { - let propertyArray = node[property.name] - if (propertyArray !== undefined) { - - for (let m = 0; m < propertyArray.length; m++) { - let childNode = propertyArray[m] - let percentage = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(childNode.payload, 'percentage') - if (percentage !== undefined && isNaN(percentage) !== true) { - totalPercentage = totalPercentage + percentage - } else { - totalNodesWithoutPercentage++ - } - } - } - break - } - } - } - if (totalPercentage > 100) { - node.payload.uiObject.setErrorMessage('Voting Power Switching Error. Total Percentage of children nodes is grater that 100.') - return - } - let defaultPercentage = 0 - if (totalNodesWithoutPercentage > 0) { - defaultPercentage = (100 - totalPercentage) / totalNodesWithoutPercentage - } - /* - Here we do the actual distribution. - */ - for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { - let property = schemaDocument.childrenNodesProperties[i] - - if (node.type === 'User Profile' && property.name !== "votesDistribution") { continue } - - switch (property.type) { - case 'node': { - if (node.type === 'User Profile' && property.name === "votesDistribution") { - let childNode = node[property.name] - let percentage = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(childNode.payload, 'percentage') - if (percentage === undefined || isNaN(percentage) === true) { - percentage = defaultPercentage - } - distributeVotingPower(childNode, votes * percentage / 100, percentage) - } - } - break - case 'array': { - let propertyArray = node[property.name] - if (propertyArray !== undefined) { - for (let m = 0; m < propertyArray.length; m++) { - let childNode = propertyArray[m] - let percentage = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(childNode.payload, 'percentage') - if (percentage === undefined || isNaN(percentage) === true) { - percentage = defaultPercentage - } - distributeVotingPower(childNode, votes * percentage / 100, percentage) - } - } - break - } - } - } - } - } - - function drawVotingPower(node, votes, percentage) { - votes = new Intl.NumberFormat().format(votes) + ' ' + 'Votes' - if (node.payload !== undefined) { - if (node.type === 'User Profile') { - return - } - if ( - node.type === 'Position' || - node.type === 'Position Class' || - node.type === 'Pool' || - node.type === 'Tokens Switch' || - node.type === 'Asset' || - node.type === 'Asset Class' || - node.type === 'Feature' || - node.type === 'Feature Class' || - node.type === 'Position Contribution Claim' || - node.type === 'Asset Contribution Claim' || - node.type === 'Feature Contribution Claim' - ) { - node.payload.uiObject.valueAngleOffset = 0 - node.payload.uiObject.valueAtAngle = false - } else { - node.payload.uiObject.valueAngleOffset = 180 - node.payload.uiObject.valueAtAngle = true - } - - node.payload.uiObject.setValue(votes) - - if (percentage !== undefined) { - node.payload.uiObject.setPercentage(percentage.toFixed(2)) - } - } + UI.projects.governance.functionLibraries.votes.calculate() } function draw() { diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 8e2eb41dc..35c56119d 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -995,10 +995,30 @@ } ], "functionLibraries": [ + { + "name": "Votes", + "propertyName": "votes", + "functionName": "newGovernanceFunctionLibraryVotes" + }, + { + "name": "Tokens", + "propertyName": "tokens", + "functionName": "newGovernanceFunctionLibraryTokens" + }, { "name": "Weights", "propertyName": "weights", "functionName": "newGovernanceFunctionLibraryWeights" + }, + { + "name": "Claims", + "propertyName": "claims", + "functionName": "newGovernanceFunctionLibraryClaims" + }, + { + "name": "Distribution Process", + "propertyName": "distributionProcess", + "functionName": "newGovernanceFunctionLibraryDistributionProcess" } ], "utilities": [ From 0514361d300da63eae02e923a14eb156597d3dee Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sun, 6 Jun 2021 19:13:52 +0200 Subject: [PATCH 2/5] Reorganization into function libraries complete --- .../Function-Libraries/DistributionProcess.js | 24 +++++++++++++ .../UI/Function-Libraries/Tokens.js | 11 ++---- .../Governance/UI/Function-Libraries/Votes.js | 16 ++++----- .../UI/Function-Libraries/Weights.js | 34 ++++++++++++++++++- .../UI/Spaces/Assets-Space/Assets.js | 8 ----- .../UI/Spaces/Features-Space/Features.js | 8 ----- .../Governance/UI/Spaces/Pools-Space/Pools.js | 2 +- .../UI/Spaces/Positions-Space/Positions.js | 8 ----- .../Spaces/User-Profile-Space/UserProfile.js | 2 +- 9 files changed, 70 insertions(+), 43 deletions(-) diff --git a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js index bcdc86280..884ed48b7 100644 --- a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js +++ b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js @@ -7,5 +7,29 @@ function newGovernanceFunctionLibraryDistributionProcess() { function calculate() { + let pools = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Pools') + let features = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Features') + let assets = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Assets') + let positions = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Positions') + let userProfiles = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') + + UI.projects.governance.functionLibraries.votes.calculate( + pools, + features, + assets, + positions, + userProfiles + ) + + UI.projects.governance.functionLibraries.weights.calculate( + pools, + features, + assets, + positions + ) + + UI.projects.governance.functionLibraries.tokens.calculate( + pools + ) } } \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/Tokens.js b/Projects/Governance/UI/Function-Libraries/Tokens.js index 0183c7cba..da49c1307 100644 --- a/Projects/Governance/UI/Function-Libraries/Tokens.js +++ b/Projects/Governance/UI/Function-Libraries/Tokens.js @@ -5,14 +5,9 @@ function newGovernanceFunctionLibraryTokens() { return thisObject - function calculate() { - let pools = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Pools') - - /* Weight Calculation Follows */ - for (let i = 0; i < pools.length; i++) { - let poolsNode = pools[i] - UI.projects.governance.functionLibraries.weights.calculate(poolsNode) - } + function calculate( + pools + ) { /* We will reset all the token flows, and then distribute it. */ diff --git a/Projects/Governance/UI/Function-Libraries/Votes.js b/Projects/Governance/UI/Function-Libraries/Votes.js index eb09ce06d..0a3c21cb0 100644 --- a/Projects/Governance/UI/Function-Libraries/Votes.js +++ b/Projects/Governance/UI/Function-Libraries/Votes.js @@ -5,36 +5,36 @@ function newGovernanceFunctionLibraryVotes() { return thisObject - function calculate() { - let pools = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Pools') + function calculate( + pools, + features, + assets, + positions, + userProfiles + ) { /* Reset Votes at Pools */ for (let i = 0; i < pools.length; i++) { let poolsNode = pools[i] resetVotes(poolsNode) } - let features = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Features') /* Reset Votes at Features */ for (let i = 0; i < features.length; i++) { let feature = features[i] resetVotes(feature) } - let assets = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Assets') /* Reset Votes at Features */ for (let i = 0; i < assets.length; i++) { let asset = assets[i] resetVotes(asset) } - let positions = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Positions') /* Reset Votes at Features */ for (let i = 0; i < positions.length; i++) { let position = positions[i] resetVotes(position) } - - let userProfiles = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') /* We will first reset all the voting power, and then distribute it. */ @@ -129,7 +129,7 @@ function newGovernanceFunctionLibraryVotes() { node.type === 'Pool' || node.type === 'Position Contribution Claim' || node.type === 'Asset Contribution Claim' || - node.type === 'Feature Contribution Claim' + node.type === 'Feature Contribution Claim' ) { return } /* If there is a reference parent defined, this means that the voting power is diff --git a/Projects/Governance/UI/Function-Libraries/Weights.js b/Projects/Governance/UI/Function-Libraries/Weights.js index 671a334a7..c86cb5de2 100644 --- a/Projects/Governance/UI/Function-Libraries/Weights.js +++ b/Projects/Governance/UI/Function-Libraries/Weights.js @@ -5,7 +5,39 @@ function newGovernanceFunctionLibraryWeights() { return thisObject - function calculate(node) { + function calculate( + pools, + features, + assets, + positions + ) { + /* Weight Calculation Follows */ + for (let i = 0; i < assets.length; i++) { + let asset = assets[i] + calculateForNode(asset) + } + + /* Weight Calculation Follows */ + for (let i = 0; i < features.length; i++) { + let feature = features[i] + calculateForNode(feature) + } + + /* Weight Calculation Follows */ + for (let i = 0; i < positions.length; i++) { + let position = positions[i] + calculateForNode(position) + } + + /* Weight Calculation Follows */ + for (let i = 0; i < pools.length; i++) { + let poolsNode = pools[i] + calculateForNode(poolsNode) + } + } + + function calculateForNode(node) { + let totalVotes = 0 countVotesAndResetWeights(node) applyWeightCalculation(node) diff --git a/Projects/Governance/UI/Spaces/Assets-Space/Assets.js b/Projects/Governance/UI/Spaces/Assets-Space/Assets.js index da7d3fcf0..0c89e6858 100644 --- a/Projects/Governance/UI/Spaces/Assets-Space/Assets.js +++ b/Projects/Governance/UI/Spaces/Assets-Space/Assets.js @@ -26,14 +26,6 @@ function newGobernanceAssetsSpace() { function physics() { if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } - - let assets = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Assets') - - /* Weight Calculation Follows */ - for (let i = 0; i < assets.length; i++) { - let asset = assets[i] - UI.projects.governance.functionLibraries.weights.calculate(asset) - } } function getContainer(point) { diff --git a/Projects/Governance/UI/Spaces/Features-Space/Features.js b/Projects/Governance/UI/Spaces/Features-Space/Features.js index b89e531cc..7cc992169 100644 --- a/Projects/Governance/UI/Spaces/Features-Space/Features.js +++ b/Projects/Governance/UI/Spaces/Features-Space/Features.js @@ -26,14 +26,6 @@ function newGovernanceFeaturesSpace() { function physics() { if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } - - let features = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Features') - - /* Weight Calculation Follows */ - for (let i = 0; i < features.length; i++) { - let feature = features[i] - UI.projects.governance.functionLibraries.weights.calculate(feature) - } } function getContainer(point) { diff --git a/Projects/Governance/UI/Spaces/Pools-Space/Pools.js b/Projects/Governance/UI/Spaces/Pools-Space/Pools.js index e88b69fe6..7163bc864 100644 --- a/Projects/Governance/UI/Spaces/Pools-Space/Pools.js +++ b/Projects/Governance/UI/Spaces/Pools-Space/Pools.js @@ -37,7 +37,7 @@ function newGovernancePoolsSpace() { function physics() { if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } - UI.projects.governance.functionLibraries.tokens.calculate() + UI.projects.governance.functionLibraries.distributionProcess.calculate() } function draw() { diff --git a/Projects/Governance/UI/Spaces/Positions-Space/Positions.js b/Projects/Governance/UI/Spaces/Positions-Space/Positions.js index b2c9360b1..2147cc234 100644 --- a/Projects/Governance/UI/Spaces/Positions-Space/Positions.js +++ b/Projects/Governance/UI/Spaces/Positions-Space/Positions.js @@ -28,14 +28,6 @@ function newGovernancePositionsSpace() { function physics() { if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } - - let positions = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Positions') - - /* Weight Calculation Follows */ - for (let i = 0; i < positions.length; i++) { - let position = positions[i] - UI.projects.governance.functionLibraries.weights.calculate(position) - } } function getContainer(point) { diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index 0b2367533..f9a617027 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -37,7 +37,7 @@ function newGovernanceUserProfileSpace() { function physics() { if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } - UI.projects.governance.functionLibraries.votes.calculate() + } function draw() { From f712e1ee70470ae47c7d98da7b561be1a3def8ac Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sun, 6 Jun 2021 19:38:40 +0200 Subject: [PATCH 3/5] Ready to implement Claims --- .../UI/Function-Libraries/Claims.js | 122 +++++++++++++++++- .../Function-Libraries/DistributionProcess.js | 8 +- .../Governance/UI/Function-Libraries/Votes.js | 48 ++++--- .../UI/Function-Libraries/Weights.js | 12 +- .../Spaces/User-Profile-Space/UserProfile.js | 2 - 5 files changed, 156 insertions(+), 36 deletions(-) diff --git a/Projects/Governance/UI/Function-Libraries/Claims.js b/Projects/Governance/UI/Function-Libraries/Claims.js index cc0935662..75f3a232f 100644 --- a/Projects/Governance/UI/Function-Libraries/Claims.js +++ b/Projects/Governance/UI/Function-Libraries/Claims.js @@ -5,7 +5,127 @@ function newGovernanceFunctionLibraryClaims() { return thisObject - function calculate() { + function calculate( + pools, + features, + assets, + positions + ) { + /* Claim Calculation Follows */ + for (let i = 0; i < assets.length; i++) { + let assetsNode = assets[i] + calculateForNode(assetsNode) + } + /* Claim Calculation Follows */ + for (let i = 0; i < features.length; i++) { + let featuresNode = features[i] + calculateForNode(featuresNode) + } + + /* Claim Calculation Follows */ + for (let i = 0; i < positions.length; i++) { + let positionsNode = positions[i] + calculateForNode(positionsNode) + } + } + + function calculateForNode(node) { + + let totalVotes = 0 + countVotesAndResetClaims(node) + applyClaimCalculation(node) + + function countVotesAndResetClaims(node) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + + if ( + node.type !== 'Asset Class' && + node.type !== 'Feature Class' && + node.type !== 'Position Class' + ) { + if (node.payload.votes !== undefined) { + totalVotes = totalVotes + node.payload.votes + } + } + + node.payload.weight = 0 + /* + Now we will count the voting power of this node's children. + */ + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } + + if (schemaDocument.childrenNodesProperties !== undefined) { + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + switch (property.type) { + case 'node': { + let childNode = node[property.name] + countVotesAndResetClaims(childNode) + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + countVotesAndResetClaims(childNode) + } + } + break + } + } + } + } + } + + function applyClaimCalculation(node) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + + if ( + node.type !== 'Pool Class' && + node.type !== 'Asset Class' && + node.type !== 'Feature Class' && + node.type !== 'Position Class' + ) { + if (node.payload.votes !== undefined) { + if (node.payload.votes !== undefined) { + node.payload.weight = node.payload.votes / totalVotes + } + } + } + + /* + Now we will count the voting power of this node's children. + */ + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } + + if (schemaDocument.childrenNodesProperties !== undefined) { + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + switch (property.type) { + case 'node': { + let childNode = node[property.name] + applyClaimCalculation(childNode) + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + applyClaimCalculation(childNode) + } + } + break + } + } + } + } + } } } \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js index 884ed48b7..0d311bd31 100644 --- a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js +++ b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js @@ -27,7 +27,13 @@ function newGovernanceFunctionLibraryDistributionProcess() { assets, positions ) - +/* + UI.projects.governance.functionLibraries.claims.calculate( + features, + assets, + positions + ) +*/ UI.projects.governance.functionLibraries.tokens.calculate( pools ) diff --git a/Projects/Governance/UI/Function-Libraries/Votes.js b/Projects/Governance/UI/Function-Libraries/Votes.js index 0a3c21cb0..724b3300b 100644 --- a/Projects/Governance/UI/Function-Libraries/Votes.js +++ b/Projects/Governance/UI/Function-Libraries/Votes.js @@ -20,20 +20,20 @@ function newGovernanceFunctionLibraryVotes() { /* Reset Votes at Features */ for (let i = 0; i < features.length; i++) { - let feature = features[i] - resetVotes(feature) + let featuresNode = features[i] + resetVotes(featuresNode) } /* Reset Votes at Features */ for (let i = 0; i < assets.length; i++) { - let asset = assets[i] - resetVotes(asset) + let assetsNode = assets[i] + resetVotes(assetsNode) } /* Reset Votes at Features */ for (let i = 0; i < positions.length; i++) { - let position = positions[i] - resetVotes(position) + let positionsNode = positions[i] + resetVotes(positionsNode) } /* We will first reset all the voting power, and then distribute it. @@ -44,20 +44,11 @@ function newGovernanceFunctionLibraryVotes() { } for (let i = 0; i < userProfiles.length; i++) { let userProfile = userProfiles[i] - distributeVotes(userProfile) + distributeForProfile(userProfile) } } - function resetVotes(userProfile) { - resetVotingPower(userProfile) - } - - function distributeVotes(userProfile) { - let votes = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(userProfile.payload, 'tokens') - distributeVotingPower(userProfile, votes) - } - - function resetVotingPower(node) { + function resetVotes(node) { if (node === undefined) { return } if (node.payload === undefined) { return } node.payload.votes = 0 @@ -66,7 +57,7 @@ function newGovernanceFunctionLibraryVotes() { transfered to it and not distributed among children. */ if (node.payload.referenceParent !== undefined) { - resetVotingPower(node.payload.referenceParent) + resetVotes(node.payload.referenceParent) return } /* @@ -94,7 +85,7 @@ function newGovernanceFunctionLibraryVotes() { case 'node': { if (node.type === 'User Profile' && property.name === "votesDistribution") { let childNode = node[property.name] - resetVotingPower(childNode) + resetVotes(childNode) } } break @@ -103,7 +94,7 @@ function newGovernanceFunctionLibraryVotes() { if (propertyArray !== undefined) { for (let m = 0; m < propertyArray.length; m++) { let childNode = propertyArray[m] - resetVotingPower(childNode) + resetVotes(childNode) } } break @@ -113,11 +104,16 @@ function newGovernanceFunctionLibraryVotes() { } } - function distributeVotingPower(node, votes, switchPercentage) { + function distributeForProfile(userProfile) { + let votes = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(userProfile.payload, 'tokens') + distributeVotes(userProfile, votes) + } + + function distributeVotes(node, votes, switchPercentage) { if (node === undefined) { return } if (node.payload === undefined) { return } node.payload.votes = node.payload.votes + votes - drawVotingPower(node, node.payload.votes, switchPercentage) + drawVotes(node, node.payload.votes, switchPercentage) /* When we reach certain node types, we will halt the distribution, because thse are targets for voting power. @@ -136,7 +132,7 @@ function newGovernanceFunctionLibraryVotes() { transfered to it and not distributed among children. */ if (node.payload.referenceParent !== undefined) { - distributeVotingPower(node.payload.referenceParent, votes) + distributeVotes(node.payload.referenceParent, votes) return } /* @@ -214,7 +210,7 @@ function newGovernanceFunctionLibraryVotes() { if (percentage === undefined || isNaN(percentage) === true) { percentage = defaultPercentage } - distributeVotingPower(childNode, votes * percentage / 100, percentage) + distributeVotes(childNode, votes * percentage / 100, percentage) } } break @@ -227,7 +223,7 @@ function newGovernanceFunctionLibraryVotes() { if (percentage === undefined || isNaN(percentage) === true) { percentage = defaultPercentage } - distributeVotingPower(childNode, votes * percentage / 100, percentage) + distributeVotes(childNode, votes * percentage / 100, percentage) } } break @@ -237,7 +233,7 @@ function newGovernanceFunctionLibraryVotes() { } } - function drawVotingPower(node, votes, percentage) { + function drawVotes(node, votes, percentage) { votes = new Intl.NumberFormat().format(votes) + ' ' + 'Votes' if (node.payload !== undefined) { if (node.type === 'User Profile') { diff --git a/Projects/Governance/UI/Function-Libraries/Weights.js b/Projects/Governance/UI/Function-Libraries/Weights.js index c86cb5de2..bbdfdc92f 100644 --- a/Projects/Governance/UI/Function-Libraries/Weights.js +++ b/Projects/Governance/UI/Function-Libraries/Weights.js @@ -13,20 +13,20 @@ function newGovernanceFunctionLibraryWeights() { ) { /* Weight Calculation Follows */ for (let i = 0; i < assets.length; i++) { - let asset = assets[i] - calculateForNode(asset) + let assetsNode = assets[i] + calculateForNode(assetsNode) } /* Weight Calculation Follows */ for (let i = 0; i < features.length; i++) { - let feature = features[i] - calculateForNode(feature) + let featuresNode = features[i] + calculateForNode(featuresNode) } /* Weight Calculation Follows */ for (let i = 0; i < positions.length; i++) { - let position = positions[i] - calculateForNode(position) + let positionsNode = positions[i] + calculateForNode(positionsNode) } /* Weight Calculation Follows */ diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index f9a617027..2984cef22 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -36,8 +36,6 @@ function newGovernanceUserProfileSpace() { function physics() { if (UI.projects.superalgos.spaces.designSpace.workspace === undefined) { return } - - } function draw() { From 79020fea6574684005fa5b5358d752c1730c7604 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sun, 6 Jun 2021 21:11:31 +0200 Subject: [PATCH 4/5] Claim Calculation Implemented --- .../UI/Function-Libraries/Claims.js | 267 ++++++++++++------ .../Function-Libraries/DistributionProcess.js | 15 +- .../UI/Function-Libraries/Tokens.js | 29 +- .../UI/Spaces/Floating-Space/UiObject.js | 2 +- 4 files changed, 201 insertions(+), 112 deletions(-) diff --git a/Projects/Governance/UI/Function-Libraries/Claims.js b/Projects/Governance/UI/Function-Libraries/Claims.js index 75f3a232f..099b79c57 100644 --- a/Projects/Governance/UI/Function-Libraries/Claims.js +++ b/Projects/Governance/UI/Function-Libraries/Claims.js @@ -6,126 +6,213 @@ function newGovernanceFunctionLibraryClaims() { return thisObject function calculate( - pools, features, assets, - positions + positions, + userProfiles ) { - /* Claim Calculation Follows */ + + /* Claim Reset Follows */ for (let i = 0; i < assets.length; i++) { let assetsNode = assets[i] - calculateForNode(assetsNode) + resetClaims(assetsNode) } - /* Claim Calculation Follows */ + /* Claim Reset Follows */ for (let i = 0; i < features.length; i++) { let featuresNode = features[i] - calculateForNode(featuresNode) + resetClaims(featuresNode) + } + + /* Claim Reset Follows */ + for (let i = 0; i < positions.length; i++) { + let positionsNode = positions[i] + resetClaims(positionsNode) + } + + /* Claim Count Follows */ + for (let i = 0; i < userProfiles.length; i++) { + let userProfilesNode = userProfiles[i] + countForNode(userProfilesNode.contributionClaims) } /* Claim Calculation Follows */ - for (let i = 0; i < positions.length; i++) { - let positionsNode = positions[i] - calculateForNode(positionsNode) + for (let i = 0; i < userProfiles.length; i++) { + let userProfilesNode = userProfiles[i] + calculateForNode(userProfilesNode.contributionClaims) + } + } + + function resetClaims(node) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + + if ( + node.type !== 'Asset Class' && + node.type !== 'Feature Class' && + node.type !== 'Position Class' + ) { + if (node.payload.votes !== undefined) { + node.payload.claimsCount = 0 + node.payload.claimsVotes = 0 + } + } + + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } + + if (schemaDocument.childrenNodesProperties !== undefined) { + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + switch (property.type) { + case 'node': { + let childNode = node[property.name] + resetClaims(childNode) + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + resetClaims(childNode) + } + } + break + } + } + } + } + } + + function countForNode(node) { + if (node === undefined) { return } + if (node.payload === undefined) { return } + + if ( + node.type !== 'Asset Contributions Folder' && + node.type !== 'Feature Contributions Folder' && + node.type !== 'Position Contributions Folder' && + node.type !== 'Contribution Claims' + ) { + if ( + node.payload.votes !== undefined && + node.payload.votes > 0 && + node.payload.referenceParent !== undefined && + node.payload.referenceParent.payload.votes !== undefined && + node.payload.referenceParent.payload.votes > 0 && + node.payload.referenceParent.payload.weight !== undefined && + node.payload.referenceParent.payload.weight > 0 && + node.payload.referenceParent.payload.claimsCount !== undefined && + node.payload.referenceParent.payload.claimsVotes !== undefined + ) { + node.payload.referenceParent.payload.claimsCount++ + node.payload.referenceParent.payload.claimsVotes = node.payload.referenceParent.payload.claimsVotes + node.payload.votes + } + } + + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } + + if (schemaDocument.childrenNodesProperties !== undefined) { + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + switch (property.type) { + case 'node': { + let childNode = node[property.name] + countForNode(childNode) + } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + countForNode(childNode) + } + } + break + } + } + } } } function calculateForNode(node) { + if (node === undefined) { return } + if (node.payload === undefined) { return } - let totalVotes = 0 - countVotesAndResetClaims(node) - applyClaimCalculation(node) - - function countVotesAndResetClaims(node) { - if (node === undefined) { return } - if (node.payload === undefined) { return } - + if ( + node.type !== 'Asset Contributions Folder' && + node.type !== 'Feature Contributions Folder' && + node.type !== 'Position Contributions Folder' && + node.type !== 'Contribution Claims' + ) { if ( - node.type !== 'Asset Class' && - node.type !== 'Feature Class' && - node.type !== 'Position Class' + node.payload.votes !== undefined && + node.payload.votes > 0 && + node.payload.referenceParent !== undefined && + node.payload.referenceParent.payload.votes !== undefined && + node.payload.referenceParent.payload.votes > 0 && + node.payload.referenceParent.payload.weight !== undefined && + node.payload.referenceParent.payload.weight > 0 && + node.payload.referenceParent.payload.claimsCount !== undefined && + node.payload.referenceParent.payload.claimsVotes !== undefined ) { - if (node.payload.votes !== undefined) { - totalVotes = totalVotes + node.payload.votes - } - } + /* + We will use the concept of Vote Ratio for the situation in which the total votes in claims exeeds the + amount of votes for wigthing. When this happen the Votes Ratio will be used to redude the amount of + tokens awarded proportionally to how much was exeeded. + */ + let votesRatio = node.payload.referenceParent.payload.votes / node.payload.referenceParent.payload.claimsVotes + if (votesRatio > 1) { votesRatio = 1 } + /* + Share Count means the amount to claims pointing to the same potential tokens reward. + */ + let shareCount = node.payload.referenceParent.payload.claimsCount + let sharePercentage = node.payload.votes * 100 / node.payload.referenceParent.payload.claimsVotes + let awarded = node.payload.votes / node.payload.referenceParent.payload.votes * node.payload.referenceParent.payload.tokens * votesRatio + let awardedPercentage = node.payload.votes / node.payload.referenceParent.payload.votes * 100 * votesRatio - node.payload.weight = 0 - /* - Now we will count the voting power of this node's children. - */ - let schemaDocument = getSchemaDocument(node) - if (schemaDocument === undefined) { return } - - if (schemaDocument.childrenNodesProperties !== undefined) { - for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { - let property = schemaDocument.childrenNodesProperties[i] - switch (property.type) { - case 'node': { - let childNode = node[property.name] - countVotesAndResetClaims(childNode) - } - break - case 'array': { - let propertyArray = node[property.name] - if (propertyArray !== undefined) { - for (let m = 0; m < propertyArray.length; m++) { - let childNode = propertyArray[m] - countVotesAndResetClaims(childNode) - } - } - break - } - } - } + drawClaims(node, shareCount, sharePercentage, awarded, awardedPercentage) } } - function applyClaimCalculation(node) { - if (node === undefined) { return } - if (node.payload === undefined) { return } + let schemaDocument = getSchemaDocument(node) + if (schemaDocument === undefined) { return } - if ( - node.type !== 'Pool Class' && - node.type !== 'Asset Class' && - node.type !== 'Feature Class' && - node.type !== 'Position Class' - ) { - if (node.payload.votes !== undefined) { - if (node.payload.votes !== undefined) { - node.payload.weight = node.payload.votes / totalVotes + if (schemaDocument.childrenNodesProperties !== undefined) { + for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { + let property = schemaDocument.childrenNodesProperties[i] + switch (property.type) { + case 'node': { + let childNode = node[property.name] + calculateForNode(childNode) } - } - } - - /* - Now we will count the voting power of this node's children. - */ - let schemaDocument = getSchemaDocument(node) - if (schemaDocument === undefined) { return } - - if (schemaDocument.childrenNodesProperties !== undefined) { - for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) { - let property = schemaDocument.childrenNodesProperties[i] - switch (property.type) { - case 'node': { - let childNode = node[property.name] - applyClaimCalculation(childNode) - } - break - case 'array': { - let propertyArray = node[property.name] - if (propertyArray !== undefined) { - for (let m = 0; m < propertyArray.length; m++) { - let childNode = propertyArray[m] - applyClaimCalculation(childNode) - } + break + case 'array': { + let propertyArray = node[property.name] + if (propertyArray !== undefined) { + for (let m = 0; m < propertyArray.length; m++) { + let childNode = propertyArray[m] + calculateForNode(childNode) } - break } + break } } } } } + + function drawClaims(node, shareCount, sharePercentage, awarded, awardedPercentage) { + let satatus = + 'Awarded: ' + + new Intl.NumberFormat().format(awarded) + + ' ' + 'SA Tokens' + ' - ' + + 'From Reward: ' + awardedPercentage.toFixed(2) + '%' + ' - ' + + 'Shared Between: ' + shareCount + ' claims' + ' - ' + + 'Share of Claims: ' + sharePercentage.toFixed(2) + '%' + node.payload.uiObject.setStatus(satatus) + } } \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js index 0d311bd31..5dc6308a8 100644 --- a/Projects/Governance/UI/Function-Libraries/DistributionProcess.js +++ b/Projects/Governance/UI/Function-Libraries/DistributionProcess.js @@ -27,15 +27,16 @@ function newGovernanceFunctionLibraryDistributionProcess() { assets, positions ) -/* - UI.projects.governance.functionLibraries.claims.calculate( - features, - assets, - positions - ) -*/ + UI.projects.governance.functionLibraries.tokens.calculate( pools ) + + UI.projects.governance.functionLibraries.claims.calculate( + features, + assets, + positions, + userProfiles + ) } } \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/Tokens.js b/Projects/Governance/UI/Function-Libraries/Tokens.js index da49c1307..d2be53607 100644 --- a/Projects/Governance/UI/Function-Libraries/Tokens.js +++ b/Projects/Governance/UI/Function-Libraries/Tokens.js @@ -26,14 +26,14 @@ function newGovernanceFunctionLibraryTokens() { } function poolsDistribute(pools) { - let tokenFlow = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(pools.payload, 'tokens') - distributeTokens(pools, tokenFlow) + let tokens = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(pools.payload, 'tokens') + distributeTokens(pools, tokens) } function resetTokenFlow(node) { if (node === undefined) { return } if (node.payload === undefined) { return } - node.payload.tokenFlow = 0 + node.payload.tokens = 0 /* If there is a reference parent defined, this means that the token flow is transfered to it and not distributed among children. @@ -83,7 +83,7 @@ function newGovernanceFunctionLibraryTokens() { } } - function distributeTokens(node, tokenFlow) { + function distributeTokens(node, tokens) { if (node === undefined) { return } if (node.payload === undefined) { return } /* @@ -97,7 +97,7 @@ function newGovernanceFunctionLibraryTokens() { if ( schemaDocument.isHierarchyHead === true ) { - drawTokenFlow(node, tokenFlow) + drawTokenFlow(node, tokens) } /* We will also have tokens at nodes with weight. @@ -107,15 +107,15 @@ function newGovernanceFunctionLibraryTokens() { node.payload.weight !== undefined && node.payload.weight !== 0 ) { - node.payload.tokenFlow = tokenFlow * node.payload.weight - drawTokenFlow(node, node.payload.tokenFlow, node.payload.weight) + node.payload.tokens = tokens * node.payload.weight + drawTokenFlow(node, node.payload.tokens, node.payload.weight) } /* If there is a reference parent defined, this means that the token flow is transfered to it and not distributed among children. */ if (node.payload.referenceParent !== undefined) { - distributeTokens(node.payload.referenceParent, node.payload.tokenFlow) + distributeTokens(node.payload.referenceParent, node.payload.tokens) return } /* @@ -135,7 +135,7 @@ function newGovernanceFunctionLibraryTokens() { case 'node': { if (node.type === 'Pools' && property.name === "votesDistribution") { let childNode = node[property.name] - distributeTokens(childNode, tokenFlow) + distributeTokens(childNode, tokens) } } break @@ -144,7 +144,7 @@ function newGovernanceFunctionLibraryTokens() { if (propertyArray !== undefined) { for (let m = 0; m < propertyArray.length; m++) { let childNode = propertyArray[m] - distributeTokens(childNode, tokenFlow) + distributeTokens(childNode, tokens) } } break @@ -154,15 +154,16 @@ function newGovernanceFunctionLibraryTokens() { } } - function drawTokenFlow(node, tokenFlow, weight) { + function drawTokenFlow(node, tokens, weight) { + let status if (weight !== undefined && weight !== 0) { - tokenFlow = new Intl.NumberFormat().format(tokenFlow) + ' ' + 'SA Tokens' + ' - ' + 'Weight: ' + weight.toFixed(2) + status = new Intl.NumberFormat().format(tokens) + ' ' + 'SA Tokens Reward' + ' - ' + 'Weight: ' + weight.toFixed(2) } else { - tokenFlow = new Intl.NumberFormat().format(tokenFlow) + ' ' + 'SA Tokens' + status = new Intl.NumberFormat().format(tokens) + ' ' + 'SA Tokens Reward' } if (node.payload !== undefined) { - node.payload.uiObject.setStatus(tokenFlow) + node.payload.uiObject.setStatus(status) } } } \ No newline at end of file diff --git a/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js b/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js index 9319f70b8..3b500eec7 100644 --- a/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js +++ b/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js @@ -1937,7 +1937,7 @@ function newUiObject() { browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY if (radius > 6) { - const MAX_LABEL_LENGTH = 100 + const MAX_LABEL_LENGTH = 120 label = currentStatus From c7ddbaa0d1c605444a6b59141a111e219f57203e Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sun, 6 Jun 2021 21:38:32 +0200 Subject: [PATCH 5/5] Governance Demo Worksapce Plugin --- .../Plugins/Workspaces/Governance Demo.json | 1 + .../Schemas/Docs-Concepts/claim.json | 65 +++++++++++++++++++ .../Docs-Nodes/asset-contribution-claim.json | 5 +- .../feature-contribution-claim.json | 5 +- .../position-contribution-claim.json | 5 +- .../UI/Function-Libraries/Claims.js | 3 +- 6 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 Projects/Governance/Plugins/Workspaces/Governance Demo.json create mode 100644 Projects/Governance/Schemas/Docs-Concepts/claim.json diff --git a/Projects/Governance/Plugins/Workspaces/Governance Demo.json b/Projects/Governance/Plugins/Workspaces/Governance Demo.json new file mode 100644 index 000000000..df2a1bcde --- /dev/null +++ b/Projects/Governance/Plugins/Workspaces/Governance Demo.json @@ -0,0 +1 @@ +{"type":"Workspace","name":"Governance Demo","rootNodes":[{"type":"Plugins","name":"New Plugins","project":"Superalgos","pluginProjects":[{"type":"Plugin Project","name":"Superalgos","config":"{ \n \"codeName\": \"Superalgos\"\n}","project":"Superalgos","id":"c4e402d7-5228-408c-9d67-379d6ef40bae","savedPayload":{"position":{"x":30629.37828125503,"y":24980.552375894946},"targetPosition":{"x":30329.37828125503,"y":24980.552375894946},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"bfb0b514-3b9f-4e9a-85ca-d0ca714b09f6","savedPayload":{"position":{"x":36101.378281255034,"y":10710.552375894946},"targetPosition":{"x":36101.378281255034,"y":10710.552375894946},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Design Space","name":"My Design Space","project":"Superalgos","spaceStyle":{"type":"Space Style","name":"My Space Style","config":"{\n \"backgroundColor\": \"UI_COLOR.BLACK\",\n \"node\": {\n \"fontSize\": 16,\n \"imageSize\": 60,\n \"type\": {\n \"fontColor\": \"UI_COLOR.WHITE\"\n },\n \"name\": {\n \"fontColor\": \"UI_COLOR.WHITE\"\n },\n \"menuItem\": {\n \"backgroundColor\": \"UI_COLOR.BLACK\",\n \"fontColor\": \"UI_COLOR.WHITE\",\n \"fontSize\": 14,\n \"imageSize\": 14\n }\n }\n}","project":"Superalgos","id":"fad0e429-f7a7-4b62-a2a5-2ead29b8f695","savedPayload":{"position":{"x":25240.875,"y":10717.347826086958},"targetPosition":{"x":24940.875,"y":10717.347826086958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"spaceSettings":{"type":"Space Settings","name":"New Space Settings","config":"{\n \"node\": {\n \"distancePercentage\": 60,\n \"radiusPercentage\": 85,\n \"massPercentage\": 100,\n \"animationSteps\": 2,\n \"menuItem\": {\n \"widthPercentage\": 100,\n \"heightPercentage\": 60,\n \"radiusPercentage\": 90\n }\n },\n \"physics\": false\n}","project":"Superalgos","id":"05c9d6d5-24c4-4eec-9aca-9668d6486fdd","savedPayload":{"position":{"x":24640.875,"y":10717.347826086958},"targetPosition":{"x":24940.875,"y":10717.347826086958},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"f8485ce5-67f3-4476-b9e2-80994e49c318","savedPayload":{"position":{"x":24940.875,"y":10717.347826086958},"targetPosition":{"x":24940.875,"y":10717.347826086958},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"frame":{"position":{"x":255,"y":588.3125}}}},{"type":"APIs","name":"New APIs","project":"Superalgos","githubAPI":{"type":"Github API","name":"New Github API","config":"{\n \"username\": \"\",\n \"token\": \"\"\n}","project":"Superalgos","id":"90d121ab-9f19-4437-a051-1222287085fc","savedPayload":{"position":{"x":30630.458333333332,"y":10730.006707946337},"targetPosition":{"x":30330.458333333332,"y":10730.006707946337},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"23021bb7-9997-4fe6-8199-71ebf70aef76","savedPayload":{"position":{"x":30330.458333333332,"y":10730.006707946337},"targetPosition":{"x":30330.458333333332,"y":10730.006707946337},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Governance Project","name":"New Governance Project","project":"Governance","projectDefinition":{"type":"Project Definition","name":"Governance","config":"{ \n \"codeName\": \"Governance\"\n}","project":"Superalgos","id":"ba1aa656-d184-493a-b332-e4db109065f0","savedPayload":{"position":{"x":25322,"y":25220.75},"targetPosition":{"x":25022,"y":25220.75},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"db380c52-cf90-475b-87df-c005dd51cdf6","savedPayload":{"position":{"x":13532,"y":10738.5},"targetPosition":{"x":13532,"y":10738.5},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"User Profile","name":"Luis Fernando Molina","config":"{\n \"codeName\": \"Jun 2021\",\n \"tokens\": 1000000\n}","project":"Governance","contributionClaims":{"type":"Contribution Claims","name":"New Contribution Claims","config":"{\n\"codeName\": \"\"\n}","project":"Governance","assetContributionsFolder":[{"type":"Asset Contributions Folder","name":"Software","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[{"type":"Asset Contributions Folder","name":"Plugins","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[{"type":"Asset Contributions Folder","name":"Data-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[],"assetContributionClaims":[{"type":"Asset Contribution Claim","name":"Candles Data-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"f44b3d0f-cb22-4f0f-a550-ce53224db391","savedPayload":{"position":{"x":29746.912956127882,"y":22479.311870400597},"targetPosition":{"x":30184.228161873478,"y":22373.220349421354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Candles","id":"0787b89c-2962-48ed-9e73-85858610ba31"}}},{"type":"Asset Contribution Claim","name":"Bollinger Data-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"a1d0f2fb-4466-4263-862c-fbfa86e3a5d2","savedPayload":{"position":{"x":29734.35560426157,"y":22362.511385525606},"targetPosition":{"x":30184.228161873478,"y":22373.220349421354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Bollinger","id":"6ead356c-31a9-4e31-a1b2-da82c5151d21"}}},{"type":"Asset Contribution Claim","name":"Masters Data-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"93a7db1d-3321-402c-837f-37c057dc2c99","savedPayload":{"position":{"x":29752.456323746956,"y":22246.44069884271},"targetPosition":{"x":30184.228161873478,"y":22373.220349421354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Masters","id":"589869da-7be7-422e-855c-b407be2399d6"}}},{"type":"Asset Contribution Claim","name":"Samurai Data-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"4973a029-9b39-447e-904d-65e08240f3f8","savedPayload":{"position":{"x":29799.981580463962,"y":22139.009835833473},"targetPosition":{"x":30184.228161873478,"y":22373.220349421354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Samurai","id":"d6316f57-0098-4dd0-a55f-bc8dc7fa5608"}}},{"type":"Asset Contribution Claim","name":"Messari Data-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"2794d152-8a0b-4c41-8c0f-62731f8ab425","savedPayload":{"position":{"x":29873.69260670653,"y":22047.54003227407},"targetPosition":{"x":30184.228161873478,"y":22373.220349421354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Messari","id":"c95c6c99-b57d-4b2c-9672-d08eff2206a9"}}}],"id":"46870e1d-a79d-4e4f-a996-438d5b1f46b2","savedPayload":{"position":{"x":30184.228161873478,"y":22373.220349421354},"targetPosition":{"x":30616,"y":22499.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Contributions Folder","name":"Trading-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[],"assetContributionClaims":[{"type":"Asset Contribution Claim","name":"Masters Trading-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"ef626143-6921-4936-af19-449dc7e346bc","savedPayload":{"position":{"x":30111.247880301293,"y":22175.61550952664},"targetPosition":{"x":30363.623940150646,"y":22337.80775476332},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Masters","id":"76a9d109-7811-4972-83b8-bb2fab614c7d"}}}],"id":"79c8615c-09b9-4732-b459-a65814777918","savedPayload":{"position":{"x":30363.623940150646,"y":22337.80775476332},"targetPosition":{"x":30616,"y":22499.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Contributions Folder","name":"Workspaces","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[],"assetContributionClaims":[{"type":"Asset Contribution Claim","name":"API-Data-Fetcher-Bot-Demo Workspaces","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"0289586d-ab17-4cbc-8915-c1f6f0c4f4ab","savedPayload":{"position":{"x":30223.083559632832,"y":22046.550255387443},"targetPosition":{"x":30419.541779816416,"y":22273.27512769372},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"API-Data-Fetcher-Bot-Demo","id":"9648867f-f3fd-4924-9812-71cab5733edb"}}}],"id":"22a46810-6aa8-4732-894e-5757aff04583","savedPayload":{"position":{"x":30419.541779816416,"y":22273.27512769372},"targetPosition":{"x":30616,"y":22499.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Contributions Folder","name":"API-Maps","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[],"assetContributionClaims":[{"type":"Asset Contribution Claim","name":"Messari API-Maps","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"b1dfc14a-48c8-4821-b347-559c85b42728","savedPayload":{"position":{"x":30366.750992198868,"y":21954.220802787288},"targetPosition":{"x":30491.375496099434,"y":22227.110401393642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Messari","id":"2dc7c1ab-7213-40c5-b5b7-668642ff4074"}}}],"id":"129933eb-855a-43d3-83fe-1cdf01bfc4b3","savedPayload":{"position":{"x":30491.375496099434,"y":22227.110401393642},"targetPosition":{"x":30616,"y":22499.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Contributions Folder","name":"Learning-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[],"assetContributionClaims":[{"type":"Asset Contribution Claim","name":"Masters Learning-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"4d7bc5d1-3ef7-48b2-8f32-528f13092b97","savedPayload":{"position":{"x":30530.61109703603,"y":21906.107134871436},"targetPosition":{"x":30573.305548518016,"y":22203.053567435716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Masters","id":"e3b45ec2-02f9-41d6-aae6-9bba5ee4baa7"}}}],"id":"1fd24841-5a75-45f3-b45d-7008b822b062","savedPayload":{"position":{"x":30573.305548518016,"y":22203.053567435716},"targetPosition":{"x":30616,"y":22499.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Contributions Folder","name":"Trading-Engines","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[],"assetContributionClaims":[{"type":"Asset Contribution Claim","name":"Low-Frequency Trading-Engines","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"15b2a80e-109d-4813-92e0-facc2b97970e","savedPayload":{"position":{"x":30701.38890296397,"y":21906.107134871436},"targetPosition":{"x":30658.694451481984,"y":22203.053567435716},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Low-Frequency","id":"9249f44a-fd86-4961-8051-6092b48f6087"}}}],"id":"12d128cd-f849-4418-8ff3-ffeb771404a7","savedPayload":{"position":{"x":30658.694451481984,"y":22203.053567435716},"targetPosition":{"x":30616,"y":22499.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Contributions Folder","name":"Learning-Engines","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[],"assetContributionClaims":[{"type":"Asset Contribution Claim","name":"Low-Frequency Trading-Engines","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"b1c3a921-6bcb-4a97-b829-426863cbd0ec","savedPayload":{"position":{"x":30865.249007801132,"y":21954.220802787288},"targetPosition":{"x":30740.624503900566,"y":22227.110401393642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Low-Frequency","id":"9249f44a-fd86-4961-8051-6092b48f6087"}}}],"id":"f7d3bb6f-e61b-41a8-8d27-280e7649b1e6","savedPayload":{"position":{"x":30740.624503900566,"y":22227.110401393642},"targetPosition":{"x":30616,"y":22499.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Contributions Folder","name":"Trading-Systems","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[],"assetContributionClaims":[{"type":"Asset Contribution Claim","name":"Masters-Lightning-Strike Trading-Systems","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"809fb8e9-c75e-4590-b413-11b869d4370b","savedPayload":{"position":{"x":31008.916440367168,"y":22046.550255387443},"targetPosition":{"x":30812.458220183584,"y":22273.27512769372},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Masters-Lightning-Strike","id":"fbff446b-49b9-4a78-8e4d-2cd841f1ef94"}}}],"id":"bdd7eecd-f0f5-4d90-80a5-18fb3491e161","savedPayload":{"position":{"x":30812.458220183584,"y":22273.27512769372},"targetPosition":{"x":30616,"y":22499.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Contributions Folder","name":"Learning-Systems","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[],"assetContributionClaims":[{"type":"Asset Contribution Claim","name":"Sandbox Learning-Systems","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"850b4073-b297-4851-9cd7-498fe3a9a17c","savedPayload":{"position":{"x":31120.752119698707,"y":22175.61550952664},"targetPosition":{"x":30868.376059849354,"y":22337.80775476332},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Sandbox","id":"a7bf6a56-8da9-4efb-b1c6-21114d6a5d0d"}}}],"id":"6ab8bfe5-3d45-4e89-8338-fe6dd1415fe6","savedPayload":{"position":{"x":30868.376059849354,"y":22337.80775476332},"targetPosition":{"x":30616,"y":22499.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Contributions Folder","name":"New Asset Contributions Folder","config":"{\n \"description\": \"\"\n}","project":"Governance","assetContributionsFolder":[],"assetContributionClaims":[{"type":"Asset Contribution Claim","name":"Masters-Lightning-Strike Trading-Systems","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"32efefb0-92eb-43c1-9dcf-1f26b1bad920","savedPayload":{"position":{"x":31191.695784168696,"y":22330.96046589514},"targetPosition":{"x":30903.847892084348,"y":22415.480232947568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset","name":"Masters-Lightning-Strike","id":"fbff446b-49b9-4a78-8e4d-2cd841f1ef94"}}}],"id":"69afb0ba-5d80-4e7d-afff-b71e188df87d","savedPayload":{"position":{"x":30903.847892084348,"y":22415.480232947568},"targetPosition":{"x":30616,"y":22499.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assetContributionClaims":[],"id":"1fdac20e-5b28-4044-aed4-761c3b0bbc77","savedPayload":{"position":{"x":30616,"y":22499.999999999996},"targetPosition":{"x":30616,"y":22799.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assetContributionClaims":[],"id":"6bc4e587-086d-486a-8a5b-0721450fa2c2","savedPayload":{"position":{"x":30616,"y":22799.999999999996},"targetPosition":{"x":30616,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"featureContributionsFolder":[{"type":"Feature Contributions Folder","name":"New Feature Contributions Folder","config":"{\n \"description\": \"\"\n}","project":"Governance","featureContributionsFolder":[],"featureContributionClaims":[{"type":"Feature Contribution Claim","name":"Highlights Visual Debugger","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"b7cdddaf-923f-44ce-9574-270efefc9331","savedPayload":{"position":{"x":31216,"y":23099.999999999996},"targetPosition":{"x":30916,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Feature","name":"Highlights","id":"3997cd4b-15be-4c81-b8d9-23bee80dde32"}}}],"id":"51e4f552-a957-41b6-acae-ff5f1eebc520","savedPayload":{"position":{"x":30916,"y":23099.999999999996},"targetPosition":{"x":30616,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionContributionsFolder":[{"type":"Position Contributions Folder","name":"New Position Contributions Folder","config":"{\n \"description\": \"\"\n}","project":"Governance","positionContributionsFolder":[],"positionContributionClaims":[{"type":"Position Contribution Claim","name":"Lead Developer Development","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"be2aedec-06fd-41fa-8599-08105931f75f","savedPayload":{"position":{"x":30875.807621135333,"y":23549.999999999996},"targetPosition":{"x":30616,"y":23399.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Position","name":"Lead Developer","id":"5f694173-4568-46b2-a52c-4244320919f7"}}},{"type":"Position Contribution Claim","name":"Lead Developer Development","config":"{}","project":"Governance","id":"a2bb4366-f480-4685-80b0-e40af9cddd8c","savedPayload":{"position":{"x":30356.192378864667,"y":23549.999999999996},"targetPosition":{"x":30616,"y":23399.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Position","name":"Lead Developer","id":"5f694173-4568-46b2-a52c-4244320919f7"}}}],"id":"4278170e-f140-4cb9-95e1-3fd252afcf42","savedPayload":{"position":{"x":30616,"y":23399.999999999996},"targetPosition":{"x":30616,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b3c56464-063e-403a-a1ed-3231a2d1f5cd","savedPayload":{"position":{"x":30616,"y":23099.999999999996},"targetPosition":{"x":30316,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"votesDistribution":{"type":"Votes Distribution","name":"New Votes Distribution","config":"{\n\"codeName\": \"\"\n}","project":"Governance","votesSwitch":[{"type":"Votes Switch","name":"New Votes Switch","config":"{\n \"description\": \"\"\n}","project":"Governance","votesSwitch":[{"type":"Votes Switch","name":"Position Weight Votes","config":"{\n \"percentage\": 10\n}","project":"Governance","votesSwitch":[],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[{"type":"Position Weight Vote","name":"Development Lead Developer","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"5fbfc54a-f483-4ea4-aec5-e7c440c430d2","savedPayload":{"position":{"x":29548.46207282087,"y":23674.79658837175},"targetPosition":{"x":29613.3939570023,"y":23381.90778623577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Position","name":"Lead Developer","id":"5f694173-4568-46b2-a52c-4244320919f7"}}},{"type":"Position Weight Vote","name":"Lead Plugins Developer Plugins Developers","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"54921610-13fd-4d83-ba62-78cd9739243b","savedPayload":{"position":{"x":29474.86937303179,"y":23648.011036189237},"targetPosition":{"x":29613.3939570023,"y":23381.90778623577},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Position Class","name":"Plugins Developers","id":"7e53bbc8-8f89-4d15-a3e3-38563f50cdaa"}}}],"userVoteTransfers":[],"id":"aaa0557e-1205-4d5d-915a-f2ec09a1f13f","savedPayload":{"position":{"x":29613.3939570023,"y":23381.90778623577},"targetPosition":{"x":29716,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Votes Switch","name":"Asset Weight Votes","config":"{\n \"description\": \"\"\n}","project":"Governance","votesSwitch":[{"type":"Votes Switch","name":"Plugins","config":"{\n \"description\": \"\"\n}","project":"Governance","votesSwitch":[],"poolWeightVotes":[],"assetWeightVotes":[{"type":"Asset Weight Vote","name":" All Software Plugins","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"14aee1f7-e539-41ad-907e-d1b3fab9bd36","savedPayload":{"position":{"x":29271.762094738708,"y":23868.945851904024},"targetPosition":{"x":29361.97383458999,"y":23582.830766679555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset Class","name":"Plugins","id":"6074f5b8-eaff-4d96-ab3f-e2aba927a80f"}}},{"type":"Asset Weight Vote","name":"All Software Plugins Data-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"97a04f62-0a45-4969-9787-211d0eae108a","savedPayload":{"position":{"x":29140.790633546952,"y":23785.507828964255},"targetPosition":{"x":29361.97383458999,"y":23582.830766679555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset Class","name":"Data-Mines","id":"b0a19faa-4831-400f-b2b7-d915c14839b3"}}}],"featureWeightVotes":[],"positionClaimVotes":[],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[],"userVoteTransfers":[],"id":"14c1023a-bf96-45d4-a709-d46019ce3ca3","savedPayload":{"position":{"x":29361.97383458999,"y":23582.830766679555},"targetPosition":{"x":29523.163717094038,"y":23329.81333293569},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Votes Switch","name":"Data Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","votesSwitch":[],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[],"userVoteTransfers":[],"id":"22981934-9822-46c0-8782-2db6af08092f","savedPayload":{"position":{"x":29301.980516051,"y":23532.49039522039},"targetPosition":{"x":29523.163717094038,"y":23329.81333293569},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[],"userVoteTransfers":[],"id":"0e398142-d23d-4a4a-934c-4c2914dcd4a6","savedPayload":{"position":{"x":29523.163717094038,"y":23329.81333293569},"targetPosition":{"x":29716,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Votes Switch","name":"Feature Weight Votes","config":"{\n \"description\": \"\"\n}","project":"Governance","votesSwitch":[],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[{"type":"Feature Weight Vote","name":"Software Superalgos Project Visual Debugger","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"0d0ffded-4d9a-48e6-b61d-260f1f661358","savedPayload":{"position":{"x":29196.384757729335,"y":23399.999999999996},"targetPosition":{"x":29456.192378864667,"y":23249.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Feature Class","name":"Visual Debugger","id":"0e329071-a542-405f-ae8c-2933098759c1"}}}],"positionClaimVotes":[],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[],"userVoteTransfers":[],"id":"49c0ee60-a66f-4229-a626-5a99496799af","savedPayload":{"position":{"x":29456.192378864667,"y":23249.999999999996},"targetPosition":{"x":29716,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Votes Switch","name":"Position Claim Votes","config":"{\n \"percentage\": 40\n}","project":"Governance","votesSwitch":[{"type":"Votes Switch","name":"New Votes Switch","config":"{}","project":"Governance","votesSwitch":[],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[{"type":"Position Claim Vote","name":"Luis Fernando Molina Lead Developer Development","config":"{}","project":"Governance","id":"2baa7ff5-2e8a-4ea4-91da-e75092285498","savedPayload":{"position":{"x":28918.852005049648,"y":23471.71621472825},"targetPosition":{"x":29148.66533798534,"y":23278.87993182229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Position Contribution Claim","name":"Lead Developer Development","id":"a2bb4366-f480-4685-80b0-e40af9cddd8c"}}},{"type":"Position Claim Vote","name":"","config":"{}","project":"Governance","id":"c871e70c-a155-4be9-8207-6cebc46d0486","savedPayload":{"position":{"x":28853.22301208168,"y":23330.97438512237},"targetPosition":{"x":29148.66533798534,"y":23278.87993182229},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[],"userVoteTransfers":[],"id":"1444a2cd-5013-4511-97ac-64fa03382c33","savedPayload":{"position":{"x":29148.66533798534,"y":23278.87993182229},"targetPosition":{"x":29420.557674096337,"y":23152.094453300077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[{"type":"Position Claim Vote","name":"Luis Fernando Molina Lead Developer Development","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"c0e08151-3c59-4613-9457-1537a8dba909","savedPayload":{"position":{"x":29121.699264668812,"y":23125.94773047578},"targetPosition":{"x":29420.557674096337,"y":23152.094453300077},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Position Contribution Claim","name":"Lead Developer Development","id":"be2aedec-06fd-41fa-8599-08105931f75f"}}}],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[],"userVoteTransfers":[],"id":"4de19e06-500a-4e7c-ab3c-37154a5b4aaa","savedPayload":{"position":{"x":29420.557674096337,"y":23152.094453300077},"targetPosition":{"x":29716,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Votes Switch","name":"Asset Claims Votes","config":"{\n \"description\": \"\"\n}","project":"Governance","votesSwitch":[],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[],"assetClaimVotes":[{"type":"Asset Claim Vote","name":"Luis Fernando Molina Messari Data-Mines","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"3e2efce6-6bc8-45ac-8f22-e4deb890fd38","savedPayload":{"position":{"x":29125.115348192674,"y":22995.811093399836},"targetPosition":{"x":29420.557674096337,"y":23047.905546699916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Asset Contribution Claim","name":"Messari Data-Mines","id":"2794d152-8a0b-4c41-8c0f-62731f8ab425"}}}],"featureClaimVotes":[],"positionWeightVotes":[],"userVoteTransfers":[],"id":"156393b5-8fe6-4bc6-acbe-55b487d8a055","savedPayload":{"position":{"x":29420.557674096337,"y":23047.905546699916},"targetPosition":{"x":29716,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Votes Switch","name":"Features Claims Votes","config":"{\n \"description\": \"\"\n}","project":"Governance","votesSwitch":[],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[],"assetClaimVotes":[],"featureClaimVotes":[{"type":"Feature Claim Vote","name":"Luis Fernando Molina Highlights Visual Debugger","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"c200d9b1-b9a2-4a24-9c21-c251dabf12af","savedPayload":{"position":{"x":29196.384757729335,"y":22799.999999999996},"targetPosition":{"x":29456.192378864667,"y":22949.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Feature Contribution Claim","name":"Highlights Visual Debugger","id":"b7cdddaf-923f-44ce-9574-270efefc9331"}}}],"positionWeightVotes":[],"userVoteTransfers":[],"id":"a12ff5cf-8ec7-4b2d-922c-42442ec8dc8f","savedPayload":{"position":{"x":29456.192378864667,"y":22949.999999999996},"targetPosition":{"x":29716,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Votes Switch","name":"User Vote Transfers","config":"{\n \"percentage\": 10\n}","project":"Governance","votesSwitch":[],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[],"userVoteTransfers":[{"type":"User Vote Transfer","name":"","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"9c59e044-28c8-427d-aa84-ece346acf13c","savedPayload":{"position":{"x":29301.980516051,"y":22667.509604779603},"targetPosition":{"x":29523.163717094038,"y":22870.186667064303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},{"type":"User Vote Transfer","name":"Julian Molina","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"e82c752b-6775-4abe-bba3-334ee93e4903","savedPayload":{"position":{"x":29361.97383458999,"y":22617.169233320437},"targetPosition":{"x":29523.163717094038,"y":22870.186667064303},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"User Profile","name":"Julian Molina","id":"1fd95e41-4b22-48d5-be3a-904c37afcb11"}}}],"id":"8cd55d2a-d005-416d-af92-c1630f94de83","savedPayload":{"position":{"x":29523.163717094038,"y":22870.186667064303},"targetPosition":{"x":29716,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Votes Switch","name":"Pool Weight Votes","config":"{\n \"description\": \"\"\n}","project":"Governance","votesSwitch":[],"poolWeightVotes":[{"type":"Pool Weight Vote","name":"Features Pool","config":"{\n \"percentage\": 50\n}","project":"Governance","id":"77c185a3-d24f-45e2-b554-46051fb4a661","savedPayload":{"position":{"x":29313.719292113023,"y":22301.88970071611},"targetPosition":{"x":29562.09093550345,"y":22677.138320646336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Pool","name":"Features","id":"7a256c07-dfb5-4f89-8cf7-424f9ce257e5"}}},{"type":"Pool Weight Vote","name":"Assets Pool","config":"{}","project":"Governance","id":"52936146-1b6d-4f96-ad32-eb68c25fe2f3","savedPayload":{"position":{"x":29375.478976308143,"y":22267.65574875189},"targetPosition":{"x":29562.09093550345,"y":22677.138320646336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Pool","name":"Assets","id":"05da7d34-dbc4-486c-8054-891747d17572"}}},{"type":"Pool Weight Vote","name":"Positions Pool","config":"{}","project":"Governance","id":"92d482df-b394-448a-bedc-295b94bc9fab","savedPayload":{"position":{"x":29441.833666268234,"y":22243.504616702456},"targetPosition":{"x":29562.09093550345,"y":22677.138320646336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Pool","name":"Positions","id":"f54a5953-de81-4c7b-af6a-f41bce854590"}}},{"type":"Pool Weight Vote","name":"","config":"{}","project":"Governance","id":"2c97688b-6e6a-4d7c-a1a2-68ad8879fd79","savedPayload":{"position":{"x":29511.149489307893,"y":22230.03098559187},"targetPosition":{"x":29562.09093550345,"y":22677.138320646336},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}}],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[],"userVoteTransfers":[],"id":"c901d059-d396-4d17-9c66-14b5f5f4918f","savedPayload":{"position":{"x":29562.09093550345,"y":22677.138320646336},"targetPosition":{"x":29716,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[],"userVoteTransfers":[],"id":"b62f6477-25de-480c-9256-f1529ba8e652","savedPayload":{"position":{"x":29716,"y":23099.999999999996},"targetPosition":{"x":30016,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"390279e1-91ae-46d7-b955-c5060c4a52df","savedPayload":{"position":{"x":30016,"y":23099.999999999996},"targetPosition":{"x":30316,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"148911b3-b2f3-44fb-8cb4-017991789132","savedPayload":{"position":{"x":30316,"y":23099.999999999996},"targetPosition":{"x":30316,"y":23099.999999999996},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"User Profile","name":"Julian Molina","config":"{\n \"codeName\": \"\",\n \"tokens\": 500000\n}","project":"Governance","votesDistribution":{"type":"Votes Distribution","name":"New Votes Distribution","config":"{\n\"codeName\": \"\"\n}","project":"Governance","votesSwitch":[{"type":"Votes Switch","name":"Test","config":"{\n \"description\": \"\"\n}","project":"Governance","votesSwitch":[],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[{"type":"Position Weight Vote","name":"","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"c8024351-e1ad-47d8-a013-ad7aaf8e76cf","savedPayload":{"position":{"x":25863.166666666664,"y":23058.100619195047},"targetPosition":{"x":25563.166666666664,"y":23058.100619195047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Position Contribution Claim","name":"Project Leader","id":"2d9a7b96-8702-47b5-8649-5057a1ac43e8"}}}],"userVoteTransfers":[],"id":"f4127f8b-eb94-4e5e-aea9-71ea43ba5b5b","savedPayload":{"position":{"x":25563.166666666664,"y":23058.100619195047},"targetPosition":{"x":25263.166666666664,"y":23058.100619195047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"84b2e7e0-577a-4edc-98fd-003905decb99","savedPayload":{"position":{"x":25263.166666666664,"y":23058.100619195047},"targetPosition":{"x":24963.166666666664,"y":23058.100619195047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"referrer":{"type":"Referrer","name":"Luis Fernando Molina","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"e7e9707e-09de-4215-ace9-c094c0b9aae2","savedPayload":{"position":{"x":24663.166666666664,"y":23058.100619195047},"targetPosition":{"x":24963.166666666664,"y":23058.100619195047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"User Profile","name":"Luis Fernando Molina","id":"148911b3-b2f3-44fb-8cb4-017991789132"}}},"id":"1fd95e41-4b22-48d5-be3a-904c37afcb11","savedPayload":{"position":{"x":24963.166666666664,"y":23058.100619195047},"targetPosition":{"x":24963.166666666664,"y":23058.100619195047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Assets","name":"All","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Software","config":"{\n \"description\": \"\",\n \"relativeWeight\": 0\n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Codebase","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"Client","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"61c9d283-f75c-4398-a4d1-b0193a94a8f4","savedPayload":{"position":{"x":26759.01891744719,"y":24830.765282465505},"targetPosition":{"x":27048.79666533391,"y":24753.119568934748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Position Class","name":"Client Developers","id":"a41b287d-82be-4f9f-bac5-f3cd4f645c34"}}},{"type":"Asset","name":"User Interface","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"82748289-550c-4d36-8bb4-fdbe7bf45e07","savedPayload":{"position":{"x":26788.989044198577,"y":24603.119568934748},"targetPosition":{"x":27048.79666533391,"y":24753.119568934748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Task Server","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"4795abf1-518b-4318-afc6-0300589129bc","savedPayload":{"position":{"x":26971.150951803153,"y":24463.341821048027},"targetPosition":{"x":27048.79666533391,"y":24753.119568934748},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9c3d04af-b401-4c21-8e67-1a48bea5a16c","savedPayload":{"position":{"x":19419.382034355964,"y":37557.51528246551},"targetPosition":{"x":19207.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Plugins","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Data-Mines","config":"{\n \"percentage\": 10,\n \"relativeWeight\": 0\n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"Candles","config":"{\n \"relativeWeight\": 0\n}","project":"Governance","assetClasses":[],"assets":[],"id":"0787b89c-2962-48ed-9e73-85858610ba31","savedPayload":{"position":{"x":19370.129042034197,"y":36358.7910231969},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Bollinger","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"6ead356c-31a9-4e31-a1b2-da82c5151d21","savedPayload":{"position":{"x":19459.7230560327,"y":36329.68016338422},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Masters","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"589869da-7be7-422e-855c-b407be2399d6","savedPayload":{"position":{"x":19551.86917808876,"y":36310.09390050876},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Samurai","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"d6316f57-0098-4dd0-a55f-bc8dc7fa5608","savedPayload":{"position":{"x":19645.55783600632,"y":36300.246825765265},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Alpha","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"32c724fd-ed34-4d5e-a3a0-a4eee3a5da5d","savedPayload":{"position":{"x":19739.76255724362,"y":36300.246825765265},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Buddha","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"d8695d82-7656-4a7f-bccd-066825c6fe69","savedPayload":{"position":{"x":19833.451215161178,"y":36310.09390050876},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Delta","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"e01e095d-c741-485e-b97d-eb97195a6239","savedPayload":{"position":{"x":19925.597337217238,"y":36329.68016338422},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Messari","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"c95c6c99-b57d-4b2c-9672-d08eff2206a9","savedPayload":{"position":{"x":20015.19135121574,"y":36358.7910231969},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Omega-One","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"28b3370d-2734-451c-b4f1-9e3b12f1d058","savedPayload":{"position":{"x":20101.25164639056,"y":36397.10753527485},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Pluvtech","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"744ce01d-e9d0-4ca6-a32c-28753ee7f44d","savedPayload":{"position":{"x":20182.83532813849,"y":36444.2098958935},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Sparta","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"97a2de07-453b-4bfe-97f1-4de9717a1c35","savedPayload":{"position":{"x":20259.048548569823,"y":36499.582041733105},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Turtles","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"c5b22457-8215-4ae6-8fac-6c01356135e0","savedPayload":{"position":{"x":20329.05629969286,"y":36562.61730397649},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Webhooks","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"f52c71fd-73b7-4b28-9a87-43b918090c6f","savedPayload":{"position":{"x":20392.091561936242,"y":36632.625055099525},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Zeus","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"97c699ea-c0f3-4864-ae61-0291ffa51872","savedPayload":{"position":{"x":20447.463707775853,"y":36708.838275530856},"targetPosition":{"x":19692.66019662497,"y":37199.01340704438},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b0a19faa-4831-400f-b2b7-d915c14839b3","savedPayload":{"position":{"x":19692.66019662497,"y":37199.01340704438},"targetPosition":{"x":19507.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":5,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Learning-Engines","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"Low-Frequency","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"9ce14228-19fe-45cf-8a56-25b54c8d50ef","savedPayload":{"position":{"x":19859.921151375485,"y":37284.2371201965},"targetPosition":{"x":19683.585575687743,"y":37526.942218508986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a24d19b5-bf59-498c-9677-78601f8c50ce","savedPayload":{"position":{"x":19683.585575687743,"y":37526.942218508986},"targetPosition":{"x":19507.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Learning-Mines","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"Masters","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"e3b45ec2-02f9-41d6-aae6-9bba5ee4baa7","savedPayload":{"position":{"x":19992.660196624965,"y":37416.97616544599},"targetPosition":{"x":19749.955098312483,"y":37593.31174113373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"f4ab65d0-3a03-443b-a0c5-1796cef273ea","savedPayload":{"position":{"x":19749.955098312483,"y":37593.31174113373},"targetPosition":{"x":19507.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Learning-Systems","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"Sandbox","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"a7bf6a56-8da9-4efb-b1c6-21114d6a5d0d","savedPayload":{"position":{"x":20077.88390977709,"y":37584.2371201965},"targetPosition":{"x":19792.566954888545,"y":37676.942218508986},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8f5aa1a0-2eb5-41bf-ac91-ad1da81a4a78","savedPayload":{"position":{"x":19792.566954888545,"y":37676.942218508986},"targetPosition":{"x":19507.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Trading-Engines","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"Low-Frequency","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"9249f44a-fd86-4961-8051-6092b48f6087","savedPayload":{"position":{"x":20107.25,"y":37769.64731682147},"targetPosition":{"x":19807.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5b907c32-ed39-4250-ae67-dae9b6f1d730","savedPayload":{"position":{"x":19807.25,"y":37769.64731682147},"targetPosition":{"x":19507.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Trading-Mines","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"Masters","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"76a9d109-7811-4972-83b8-bb2fab614c7d","savedPayload":{"position":{"x":20077.88390977709,"y":37955.057513446445},"targetPosition":{"x":19792.566954888545,"y":37862.35241513396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"b4b25744-76d7-4149-8083-162efefc899c","savedPayload":{"position":{"x":19792.566954888545,"y":37862.35241513396},"targetPosition":{"x":19507.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Trading-Systems","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"BB-Top-Bounce-BTC-USDT","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"9cf4c333-a2d2-4042-87da-6ff17673b71f","savedPayload":{"position":{"x":20484.304289800657,"y":38316.74600319085},"targetPosition":{"x":19871.307647468726,"y":38034.15068035309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Masters-Lightning-Strike","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"fbff446b-49b9-4a78-8e4d-2cd841f1ef94","savedPayload":{"position":{"x":20417.394118671815,"y":38430.905725650504},"targetPosition":{"x":19871.307647468726,"y":38034.15068035309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Sparta-WHB-BTC-USDT","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"2c516506-ac04-419d-9278-2fa0676f3b3e","savedPayload":{"position":{"x":20329.49815070346,"y":38529.81837422217},"targetPosition":{"x":19871.307647468726,"y":38034.15068035309},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"48ebd0ed-301f-4d22-9528-fc37745338d1","savedPayload":{"position":{"x":19871.307647468726,"y":38034.15068035309},"targetPosition":{"x":19507.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Workspaces","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"API-Data-Fetcher-Bot-Demo","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"9648867f-f3fd-4924-9812-71cab5733edb","savedPayload":{"position":{"x":19916.729364124833,"y":38201.14853244891},"targetPosition":{"x":19683.585575687743,"y":38012.35241513396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Getting-Started-Tutorials","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"71b417fc-bc20-4dba-8707-c809da8bf97a","savedPayload":{"position":{"x":19791.095960551334,"y":38292.42654308312},"targetPosition":{"x":19683.585575687743,"y":38012.35241513396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"e590e67d-5307-4fce-a8ae-c98b5ff53e91","savedPayload":{"position":{"x":19683.585575687743,"y":38012.35241513396},"targetPosition":{"x":19507.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"API-Maps","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"Messari","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"2dc7c1ab-7213-40c5-b5b7-668642ff4074","savedPayload":{"position":{"x":19692.660196624965,"y":38340.28122659857},"targetPosition":{"x":19599.955098312483,"y":38054.96427171002},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"8b9b1640-e861-4b88-95c5-7ba13d999f88","savedPayload":{"position":{"x":19599.955098312483,"y":38054.96427171002},"targetPosition":{"x":19507.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"6074f5b8-eaff-4d96-ab3f-e2aba927a80f","savedPayload":{"position":{"x":19507.25,"y":37769.64731682147},"targetPosition":{"x":19207.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Configs","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"12568f4e-9472-41fa-aeba-a7b5404e1adc","savedPayload":{"position":{"x":19419.382034355964,"y":37981.779351177436},"targetPosition":{"x":19207.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"a62a33cd-15f4-4671-a3fa-a2225c3f9ecf","savedPayload":{"position":{"x":19207.25,"y":37769.64731682147},"targetPosition":{"x":18907.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Marketing","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Website","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Website Section","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Web Page","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"1612863a-0dfd-4771-a428-bfb23f454492","savedPayload":{"position":{"x":19456.835369022054,"y":38361.61684556138},"targetPosition":{"x":19167.057621135333,"y":38439.26255909214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Web Page","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"8e8544e0-c3c7-4468-b17c-cddda9ed0be3","savedPayload":{"position":{"x":19426.865242270665,"y":38589.26255909214},"targetPosition":{"x":19167.057621135333,"y":38439.26255909214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Web Page","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"7eea2000-adeb-4582-a3be-350aca52ec85","savedPayload":{"position":{"x":19244.70333466609,"y":38729.04030697886},"targetPosition":{"x":19167.057621135333,"y":38439.26255909214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"5b352fde-218a-43b1-987e-df43aba8d9ed","savedPayload":{"position":{"x":19167.057621135333,"y":38439.26255909214},"targetPosition":{"x":18907.25,"y":38289.26255909214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Website Section","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Web Page","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"16466802-c5fe-4217-8a9d-eb149f7abb8f","savedPayload":{"position":{"x":19119.382034355964,"y":38801.3945934481},"targetPosition":{"x":18907.25,"y":38589.26255909214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Web Page","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"37c7c874-60f9-4a0b-a3af-090b114a39d6","savedPayload":{"position":{"x":18907.25,"y":38889.26255909214},"targetPosition":{"x":18907.25,"y":38589.26255909214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Web Page","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"17d4e7d6-d71e-499a-8fb2-12cc456cc30a","savedPayload":{"position":{"x":18695.117965644036,"y":38801.3945934481},"targetPosition":{"x":18907.25,"y":38589.26255909214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"d3908724-eb07-4e19-a7bd-1cfb660dfaee","savedPayload":{"position":{"x":18907.25,"y":38589.26255909214},"targetPosition":{"x":18907.25,"y":38289.26255909214},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"5d13e350-4267-4d2f-a3fa-a1fabd5df10d","savedPayload":{"position":{"x":18907.25,"y":38289.26255909214},"targetPosition":{"x":18757.25,"y":38029.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Blog","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"Blog Post","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"119c90e5-ad13-4927-958d-466af5625cce","savedPayload":{"position":{"x":18969.382034355964,"y":38541.58697231277},"targetPosition":{"x":18757.25,"y":38329.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Blog Post","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"67ec3f6a-94ac-4864-b9f5-6db781fcdc95","savedPayload":{"position":{"x":18757.25,"y":38629.454937956805},"targetPosition":{"x":18757.25,"y":38329.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Blog Post","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"464c7cf3-4914-4b8a-97dd-0d870af1f6e5","savedPayload":{"position":{"x":18545.117965644036,"y":38541.58697231277},"targetPosition":{"x":18757.25,"y":38329.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"43d8d45d-71ea-4155-8cb7-e0125efb12d5","savedPayload":{"position":{"x":18757.25,"y":38329.454937956805},"targetPosition":{"x":18757.25,"y":38029.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Youtube Channel","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"Youtube Video","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"4cd7e133-2763-4108-b6fb-c96d6aea718f","savedPayload":{"position":{"x":18681.895713530757,"y":31939.290306978855},"targetPosition":{"x":18604.25,"y":31649.512559092134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Youtube Video","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"9a8d3673-3085-4cc7-8487-28d5af438f13","savedPayload":{"position":{"x":18454.25,"y":31909.320180227467},"targetPosition":{"x":18604.25,"y":31649.512559092134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Youtube Video","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"a0e3e42c-61a8-4b11-a745-9f5f732895d9","savedPayload":{"position":{"x":18314.47225211328,"y":31727.15827262289},"targetPosition":{"x":18604.25,"y":31649.512559092134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"c621a524-ca7f-43f7-a449-df053ae5f817","savedPayload":{"position":{"x":18607.25,"y":38289.26255909214},"targetPosition":{"x":18757.25,"y":38029.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Articles","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Personal Blog Post","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"43de1a71-ed2a-4e39-9c81-e68de5c7dcf1","savedPayload":{"position":{"x":18419.79666533391,"y":38469.232685843526},"targetPosition":{"x":18497.442378864667,"y":38179.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Crypto Media Article","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Coindesk Article","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"7f6a0951-d01f-44d5-be6c-d66e9deea609","savedPayload":{"position":{"x":18087.634757729335,"y":38589.26255909214},"targetPosition":{"x":18237.634757729335,"y":38329.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Coin Telegraph Article","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"4c957c39-5bce-484a-844d-3e0f6d2e79b4","savedPayload":{"position":{"x":17937.634757729335,"y":38329.454937956805},"targetPosition":{"x":18237.634757729335,"y":38329.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"fa25480e-f8b5-4686-9e22-850a68bfb76b","savedPayload":{"position":{"x":18237.634757729335,"y":38329.454937956805},"targetPosition":{"x":18497.442378864667,"y":38179.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Mainstream Media Article","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Forbes Article","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"984b7746-9c92-45da-98fe-95ae51103568","savedPayload":{"position":{"x":17917.886883091225,"y":38024.16351089529},"targetPosition":{"x":18207.664630977946,"y":38101.80922442605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"90bf3d8e-5fd4-4726-9dca-17f5a014f38c","savedPayload":{"position":{"x":18207.664630977946,"y":38101.80922442605},"targetPosition":{"x":18497.442378864667,"y":38179.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"d21a28b9-46aa-42ff-87b1-2bd61a83d550","savedPayload":{"position":{"x":18497.442378864667,"y":38179.454937956805},"targetPosition":{"x":18757.25,"y":38029.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Referrers","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Referrer to Website","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"65124b42-5039-46d1-96a2-20005056950f","savedPayload":{"position":{"x":18242.117965644036,"y":31601.836972312765},"targetPosition":{"x":18454.25,"y":31389.7049379568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Referrer to Github","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"532260c8-ae9d-4f3a-94a2-fd736a556c63","savedPayload":{"position":{"x":18154.25,"y":31389.7049379568},"targetPosition":{"x":18454.25,"y":31389.7049379568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Referrer to Youtube","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"a66e89c5-6e9b-4f79-8fbb-42ed70b51e09","savedPayload":{"position":{"x":18242.117965644036,"y":31177.572903600838},"targetPosition":{"x":18454.25,"y":31389.7049379568},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"8c924af1-c6c6-45b5-871b-ee015f22bc89","savedPayload":{"position":{"x":18457.25,"y":38029.454937956805},"targetPosition":{"x":18757.25,"y":38029.454937956805},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"7b8d5ee4-a7e7-4c04-b6bc-c24de70f4c0f","savedPayload":{"position":{"x":18757.25,"y":38029.454937956805},"targetPosition":{"x":18907.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Community","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Telegram Community","config":"{\n \"description\": \"\",\n \"relativeWeight\": 0\n}","project":"Governance","assetClasses":[{"type":"Asset Class","name":"Language Specific Chat Groups","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[{"type":"Asset","name":"Superalgos in Spanish","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"e5fb1361-3b60-48cd-8498-a5fa6e820f63","savedPayload":{"position":{"x":18141.63134706777,"y":31179.88198414214},"targetPosition":{"x":18256.436376777296,"y":30902.718124388753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Superalgos in Russian","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"e0691288-daf4-4118-8195-7638ffef9fe7","savedPayload":{"position":{"x":17959.002918365153,"y":30941.875982054768},"targetPosition":{"x":18256.436376777296,"y":30902.718124388753},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"618176ec-5cf2-459d-8a35-816c64173984","savedPayload":{"position":{"x":18256.436376777296,"y":30902.718124388753},"targetPosition":{"x":18494.442378864667,"y":30720.089695686136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[{"type":"Asset","name":"Community Chat Group","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"5cd0b63b-a04b-4338-9501-9b1776587777","savedPayload":{"position":{"x":18204.664630977946,"y":30797.735409216893},"targetPosition":{"x":18494.442378864667,"y":30720.089695686136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Support Chat Group","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"a6d80bd0-de18-40ef-8dd4-43e17d16df9d","savedPayload":{"position":{"x":18197.008920452525,"y":30680.931838020122},"targetPosition":{"x":18494.442378864667,"y":30720.089695686136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Develop Chat Group","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"1be3d53a-df7e-4acb-b4cd-06a5177e0e45","savedPayload":{"position":{"x":18234.634757729335,"y":30570.089695686136},"targetPosition":{"x":18494.442378864667,"y":30720.089695686136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Token Chat Group","config":"{\n \"description\": \"\",\n \"relativeWeight\": 0\n}","project":"Governance","assetClasses":[],"assets":[],"id":"f3481964-e09b-426f-96a7-b5890a3b2d03","savedPayload":{"position":{"x":18311.81395016205,"y":30482.083693598765},"targetPosition":{"x":18494.442378864667,"y":30720.089695686136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Collaborations Chat Group","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"7ba72709-a91d-42da-8c5c-80a4dc0f7f18","savedPayload":{"position":{"x":18416.79666533391,"y":30430.311947799415},"targetPosition":{"x":18494.442378864667,"y":30720.089695686136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset","name":"Machine Learning Chat Group","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"cb114e83-a32d-4e06-a628-af8a9c963cea","savedPayload":{"position":{"x":18533.60023653068,"y":30422.656237273994},"targetPosition":{"x":18494.442378864667,"y":30720.089695686136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0c22447d-62f7-44bd-94d3-4066ef2abaf4","savedPayload":{"position":{"x":18494.442378864667,"y":30720.089695686136},"targetPosition":{"x":18754.25,"y":30870.089695686136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Asset Class","name":"Discord Community","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","assetClasses":[],"assets":[],"id":"897c151a-49ff-4f7c-904f-f00974ad8324","savedPayload":{"position":{"x":18754.25,"y":30570.089695686136},"targetPosition":{"x":18754.25,"y":30870.089695686136},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"3a5f65fb-a3ff-4142-9e34-a57c0a9c6937","savedPayload":{"position":{"x":18757.25,"y":37509.83969568614},"targetPosition":{"x":18907.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"assets":[],"id":"3361629f-04c3-4da8-87a2-3a9de9896eb0","savedPayload":{"position":{"x":18907.25,"y":37769.64731682147},"targetPosition":{"x":18907.25,"y":37769.64731682147},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Positions","name":"Organization Chart","project":"Governance","positionClasss":[],"positions":[{"type":"Position","name":"Project Leader","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[{"type":"Position Class","name":"Business","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Bussiness Development Head","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Exchange Relationships Head","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"37ea6972-fd46-4c1b-b0ce-78e3e7520692","savedPayload":{"position":{"x":19659.713137220962,"y":19191.774699095928},"targetPosition":{"x":19361.35656861048,"y":19160.41616011563},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"559b88a6-951a-4e88-8676-50ecb64c73cf","savedPayload":{"position":{"x":19361.35656861048,"y":19160.41616011563},"targetPosition":{"x":19063,"y":19129.057621135333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"Marketing Head","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Communications Head","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"d1290942-b052-4b58-baf6-a044a5ad2100","savedPayload":{"position":{"x":19579.38772786336,"y":19392.17031028832},"targetPosition":{"x":19285.943447643218,"y":19329.79680304299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"Web Master","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Web Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"40a6542c-685b-4303-a90f-1f65e83f5761","savedPayload":{"position":{"x":19645.95050321221,"y":19751.3109078534},"targetPosition":{"x":19378.6485459557,"y":19615.113757931536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"Web Designer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"b692aa81-6d93-4575-bdb2-d3b4bc5341ea","savedPayload":{"position":{"x":19471.353644268183,"y":19900.43071282008},"targetPosition":{"x":19378.6485459557,"y":19615.113757931536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"SEO Specialist","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"bde4d11d-b4a4-4f4e-9c91-7d448b708ffb","savedPayload":{"position":{"x":19242.451396033837,"y":19882.415715188046},"targetPosition":{"x":19378.6485459557,"y":19615.113757931536},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"8eb1823a-c0d5-45b2-86ab-242dd5cada63","savedPayload":{"position":{"x":19378.6485459557,"y":19615.113757931536},"targetPosition":{"x":19285.943447643218,"y":19329.79680304299},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"9d1851dc-e7ce-48e8-ab28-0c20f48c737e","savedPayload":{"position":{"x":19285.943447643218,"y":19329.79680304299},"targetPosition":{"x":19063,"y":19129.057621135333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"Management Head","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"70281ced-c556-43d5-a2de-a0923fb236fe","savedPayload":{"position":{"x":19125.373507245327,"y":19422.501901355474},"targetPosition":{"x":19063,"y":19129.057621135333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"Community Head","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"fc049096-2a4a-4b49-9dcc-89aa6a78beb7","savedPayload":{"position":{"x":18940.97900707726,"y":19403.121258428113},"targetPosition":{"x":19063,"y":19129.057621135333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"63f1068e-5121-43eb-959a-92bada224c20","savedPayload":{"position":{"x":25101,"y":38335.80762113533},"targetPosition":{"x":24951,"y":38076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position Class","name":"Development","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Lead Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[{"type":"Position Class","name":"Superalgos Project","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Lead Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Lead Plugins Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[{"type":"Position Class","name":"Plugins Developers","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Plugin Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"a43c714b-5ae1-461a-a0df-eb351a278226","savedPayload":{"position":{"x":25729.253879036576,"y":39236.742293660674},"targetPosition":{"x":25455.190241743796,"y":39358.76328658342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"Plugin Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"a2bd1fda-9714-43ea-b1ef-b5ccd9abc4ca","savedPayload":{"position":{"x":25735.264369692955,"y":39466.27367144701},"targetPosition":{"x":25455.190241743796,"y":39358.76328658342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"Plugin Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"0c8da152-c653-40ed-aa02-9aff455cca51","savedPayload":{"position":{"x":25577.211234666534,"y":39632.8269238762},"targetPosition":{"x":25455.190241743796,"y":39358.76328658342},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"7e53bbc8-8f89-4d15-a3e3-38563f50cdaa","savedPayload":{"position":{"x":25455.190241743796,"y":39358.76328658342},"targetPosition":{"x":25175.116113794636,"y":39251.252901719825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a918368c-d7b1-4ffb-a009-bc2a7f39b564","savedPayload":{"position":{"x":25175.116113794636,"y":39251.252901719825},"targetPosition":{"x":24895.041985845477,"y":39143.74251685623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"Lead Codebase Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[{"type":"Position Class","name":"Codebase Developers","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Client Lead Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[{"type":"Position Class","name":"Client Developers","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Client Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"9aa67181-c014-4814-94c9-59a5b254615c","savedPayload":{"position":{"x":25979.306355538432,"y":40014.400946032576},"targetPosition":{"x":25699.232227589273,"y":39906.890561168984},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"a41b287d-82be-4f9f-bac5-f3cd4f645c34","savedPayload":{"position":{"x":25699.232227589273,"y":39906.890561168984},"targetPosition":{"x":25419.158099640114,"y":39799.38017630539},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"079724b2-4721-455a-aeca-a7155daa6d38","savedPayload":{"position":{"x":25419.158099640114,"y":39799.38017630539},"targetPosition":{"x":25139.083971690954,"y":39691.8697914418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"User Interface Lead Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[{"type":"Position Class","name":"User Interfase","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"User Interface Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"826579f6-dcdf-4e71-822f-3e12fdbd7d59","savedPayload":{"position":{"x":25505.14695045917,"y":40514.06070332015},"targetPosition":{"x":25383.12595753643,"y":40239.99706602737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"1fe0c07f-f3a9-49fa-b874-d179c3131237","savedPayload":{"position":{"x":25383.12595753643,"y":40239.99706602737},"targetPosition":{"x":25261.104964613693,"y":39965.933428734585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"638f3b7f-635c-4a27-a66f-e0268787f426","savedPayload":{"position":{"x":25261.104964613693,"y":39965.933428734585},"targetPosition":{"x":25139.083971690954,"y":39691.8697914418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"Task Server Lead Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[{"type":"Position Class","name":"Task Server","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Task Server Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"4ace4f3e-f3dd-4312-8513-2dc100f89bd5","savedPayload":{"position":{"x":24816.55281710018,"y":40532.09217528929},"targetPosition":{"x":24924.06320196377,"y":40252.01804734013},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"f1fe9e17-3f84-4a32-be85-f6d048b4a284","savedPayload":{"position":{"x":24924.06320196377,"y":40252.01804734013},"targetPosition":{"x":25031.573586827362,"y":39971.943919390964},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fa06a6c9-0512-47d8-a493-b0f1ea6c0c07","savedPayload":{"position":{"x":25031.573586827362,"y":39971.943919390964},"targetPosition":{"x":25139.083971690954,"y":39691.8697914418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"d31a9035-584e-4a4c-af5f-be65ba465222","savedPayload":{"position":{"x":25139.083971690954,"y":39691.8697914418},"targetPosition":{"x":25017.062978768216,"y":39417.80615414902},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d05d6e56-1f72-4554-bc16-b4a80c439bc1","savedPayload":{"position":{"x":25017.062978768216,"y":39417.80615414902},"targetPosition":{"x":24895.041985845477,"y":39143.74251685623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position","name":"Lead Sys Admin","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[{"type":"Position Class","name":"Sys Admins","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Sys Admin","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"19e773b6-527e-481e-970e-b6ca82c6a76d","savedPayload":{"position":{"x":24572.5108312547,"y":39983.96490070372},"targetPosition":{"x":24680.021216118294,"y":39703.89077275456},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"74ac7790-9ee8-4b1e-b4b7-f2bc6d489648","savedPayload":{"position":{"x":24680.021216118294,"y":39703.89077275456},"targetPosition":{"x":24787.531600981885,"y":39423.816644805396},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4199db55-37cb-4641-a568-f0d74b4fea0f","savedPayload":{"position":{"x":24787.531600981885,"y":39423.816644805396},"targetPosition":{"x":24895.041985845477,"y":39143.74251685623},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"3a18a2b4-7bc1-4efe-96d0-942cf9683489","savedPayload":{"position":{"x":24895.041985845477,"y":39143.74251685623},"targetPosition":{"x":24773.02099292274,"y":38869.67887956345},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"92386ddc-7355-43a6-8beb-98a5337b82aa","savedPayload":{"position":{"x":24773.02099292274,"y":38869.67887956345},"targetPosition":{"x":24651,"y":38595.615242270665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position Class","name":"Governance Project","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Lead Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"c4e7a40e-f087-4256-a09f-3023949a255b","savedPayload":{"position":{"x":24526.252985509345,"y":39182.503802710955},"targetPosition":{"x":24588.626492754673,"y":38889.05952249081},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"61eff8f2-114d-429b-80c3-de44ac6f38a7","savedPayload":{"position":{"x":24588.626492754673,"y":38889.05952249081},"targetPosition":{"x":24651,"y":38595.615242270665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position Class","name":"Tensor Flow Project","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Lead Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"016db905-4ec7-49e6-9238-72868bf51062","savedPayload":{"position":{"x":24205.113104713564,"y":38997.09360608598},"targetPosition":{"x":24428.056552356782,"y":38796.354424178324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"9b7318c9-88b1-4f18-a100-7ed032a9029d","savedPayload":{"position":{"x":24428.056552356782,"y":38796.354424178324},"targetPosition":{"x":24651,"y":38595.615242270665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Position Class","name":"Ethereum Project","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[{"type":"Position","name":"Lead Developer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","positions":[],"positionClasss":[],"id":"67daec05-3f0f-4f2f-a094-bf4cb8afc596","savedPayload":{"position":{"x":24054.286862779038,"y":38658.33232023126},"targetPosition":{"x":24352.64343138952,"y":38626.97378125096},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"e837e9e0-2cb4-464a-aadb-1662b534a0a5","savedPayload":{"position":{"x":24352.64343138952,"y":38626.97378125096},"targetPosition":{"x":24651,"y":38595.615242270665},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"5f694173-4568-46b2-a52c-4244320919f7","savedPayload":{"position":{"x":24651,"y":38595.615242270665},"targetPosition":{"x":24801,"y":38335.80762113533},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"positionClasss":[],"id":"9d8f6ee1-877e-453d-adaf-514b25e704ec","savedPayload":{"position":{"x":24801,"y":38335.80762113533},"targetPosition":{"x":24951,"y":38076},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d814fb98-5e51-438e-a394-d6954bb1b2e8","savedPayload":{"position":{"x":24951,"y":38076},"targetPosition":{"x":24951,"y":37776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"50c68665-5da2-48a8-b229-7a1563ae82d2","savedPayload":{"position":{"x":24951,"y":37776},"targetPosition":{"x":24951,"y":37776},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Features","name":"Software","project":"Governance","featureClasses":[{"type":"Feature Class","name":"Superalgos Project","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","featureClasses":[{"type":"Feature Class","name":"Visual Designer","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","featureClasses":[],"features":[],"id":"18584f3f-6e48-4a68-89f1-0268185156e9","savedPayload":{"position":{"x":31773.335575687743,"y":37571.79490168751},"targetPosition":{"x":31597,"y":37814.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Feature Class","name":"Visual Debugger","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","featureClasses":[],"features":[{"type":"Feature","name":"Highlights","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","featureClasses":[],"features":[],"id":"3997cd4b-15be-4c81-b8d9-23bee80dde32","savedPayload":{"position":{"x":32167.63390977709,"y":37629.08980337503},"targetPosition":{"x":31882.316954888545,"y":37721.79490168751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0e329071-a542-405f-ae8c-2933098759c1","savedPayload":{"position":{"x":31882.316954888545,"y":37721.79490168751},"targetPosition":{"x":31597,"y":37814.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Feature Class","name":"Charting System","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","featureClasses":[],"features":[{"type":"Feature","name":"Rate Scale","config":"{\n \"description\": \"\" \n}","project":"Governance","featureClasses":[],"features":[],"id":"ebd8abdc-710e-4184-976d-44000eb57658","savedPayload":{"position":{"x":32167.63390977709,"y":37999.91019662497},"targetPosition":{"x":31882.316954888545,"y":37907.20509831249},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"7edc83c0-74fc-4427-816d-4db5d840577f","savedPayload":{"position":{"x":31882.316954888545,"y":37907.20509831249},"targetPosition":{"x":31597,"y":37814.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Feature Class","name":"Data Mining","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","featureClasses":[],"features":[],"id":"025c0e15-ad8d-49ae-b501-577bb82c207d","savedPayload":{"position":{"x":31773.335575687743,"y":38057.20509831249},"targetPosition":{"x":31597,"y":37814.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"features":[],"id":"136b6e7a-f042-441b-84be-395b56b65b70","savedPayload":{"position":{"x":31597,"y":37814.5},"targetPosition":{"x":31297,"y":37814.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Feature Class","name":"Governance Project","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","featureClasses":[],"features":[],"id":"020d4ac3-4a60-4947-ad94-34826cc58e6f","savedPayload":{"position":{"x":31297,"y":38114.5},"targetPosition":{"x":31297,"y":37814.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Feature Class","name":"TensorFlow Project","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","featureClasses":[],"features":[],"id":"0f8c89c1-f71b-4735-88a7-9e112f23f9b4","savedPayload":{"position":{"x":30997,"y":37814.5},"targetPosition":{"x":31297,"y":37814.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Feature Class","name":"Ethereum Project","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","featureClasses":[],"features":[],"id":"7eafacbb-5c44-4748-96b2-7d77d078e529","savedPayload":{"position":{"x":31297,"y":37514.5},"targetPosition":{"x":31297,"y":37814.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"features":[],"id":"1d2c1985-c762-4ece-b350-15bd893bd1f4","savedPayload":{"position":{"x":31297,"y":37814.5},"targetPosition":{"x":31297,"y":37814.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Docs Space","name":"New Docs Space","project":"Superalgos","spaceStyle":{"type":"Space Style","name":"New Space Style","config":"{\n}","project":"Superalgos","id":"847b45a4-c724-41d1-a8a4-7d878de0250b","savedPayload":{"position":{"x":19190,"y":10762.557621135333},"targetPosition":{"x":18890,"y":10762.557621135333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"spaceSettings":{"type":"Space Settings","name":"New Space Settings","config":"{\n \"indexContent\": true\n}","project":"Superalgos","id":"4124c674-c5fe-41d9-94b9-d669753188b7","savedPayload":{"position":{"x":18590,"y":10762.557621135333},"targetPosition":{"x":18890,"y":10762.557621135333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"016e464a-2b86-4c73-b79b-35c95751c339","savedPayload":{"position":{"x":18890,"y":10762.557621135333},"targetPosition":{"x":18890,"y":10762.557621135333},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"User Profile","name":"Jeremy","config":"{\n \"tokens\": \"1000\"\n}","project":"Governance","votesDistribution":{"type":"Votes Distribution","name":"New Votes Distribution","config":"{\n\"codeName\": \"\"\n}","project":"Governance","votesSwitch":[{"type":"Votes Switch","name":"New Votes Switch","config":"{\n \"description\": \"\"\n}","project":"Governance","votesSwitch":[],"poolWeightVotes":[],"assetWeightVotes":[],"featureWeightVotes":[],"positionClaimVotes":[],"assetClaimVotes":[],"featureClaimVotes":[],"positionWeightVotes":[],"userVoteTransfers":[{"type":"User Vote Transfer","name":"Julian Molina","config":"{\n \"description\": \"\"\n}","project":"Governance","id":"b4997b4c-4164-4a7d-aa8a-a7f4458b4f17","savedPayload":{"position":{"x":19800,"y":23122.75},"targetPosition":{"x":19500,"y":23122.75},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"User Profile","name":"Julian Molina","id":"1fd95e41-4b22-48d5-be3a-904c37afcb11"}}}],"id":"c0f5058a-0148-4679-8e1e-656d807d25c3","savedPayload":{"position":{"x":19500,"y":23122.75},"targetPosition":{"x":19200,"y":23122.75},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"4d96314d-fa62-40da-9bb8-20703e6f3d31","savedPayload":{"position":{"x":19200,"y":23122.75},"targetPosition":{"x":18900,"y":23122.75},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"34e1d183-1efa-40ad-b388-a1234a040d98","savedPayload":{"position":{"x":18900,"y":23122.75},"targetPosition":{"x":18900,"y":23122.75},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Pools","name":"Token Distribution Starts Here","config":"{\n \"tokens\": \"1000\"\n}","project":"Governance","poolClasses":[{"type":"Pool Class","name":"New Pool Class","config":"{\n \"description\": \"\"\n}","project":"Governance","poolClasses":[],"pools":[{"type":"Pool","name":"Features","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","poolClasses":[],"pools":[],"id":"7a256c07-dfb5-4f89-8cf7-424f9ce257e5","savedPayload":{"position":{"x":25035.867965644036,"y":29660.367965644036},"targetPosition":{"x":25248,"y":29872.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Features","name":"Software","id":"1d2c1985-c762-4ece-b350-15bd893bd1f4"}}},{"type":"Pool","name":"Assets","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","poolClasses":[],"pools":[],"id":"05da7d34-dbc4-486c-8054-891747d17572","savedPayload":{"position":{"x":25248,"y":29572.5},"targetPosition":{"x":25248,"y":29872.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Assets","name":"All","id":"3361629f-04c3-4da8-87a2-3a9de9896eb0"}}},{"type":"Pool","name":"Positions","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","poolClasses":[],"pools":[],"id":"f54a5953-de81-4c7b-af6a-f41bce854590","savedPayload":{"position":{"x":25460.132034355964,"y":29660.367965644036},"targetPosition":{"x":25248,"y":29872.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Positions","name":"Organization Chart","id":"50c68665-5da2-48a8-b229-7a1563ae82d2"}}},{"type":"Pool","name":"User Referrals","config":"{\n \"description\": \"\"\n}","project":"Governance","poolClasses":[{"type":"Pool Class","name":"Increases when referrer uses the system","config":"{\n \"description\": \"\", \"relativeWeight\": 0 \n}","project":"Governance","poolClasses":[],"pools":[],"id":"f06bba01-2b98-4fd3-949a-7038b7f6e96a","savedPayload":{"position":{"x":25848,"y":29872.5},"targetPosition":{"x":25548,"y":29872.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"pools":[],"id":"639a6504-a0d0-4d7e-ad99-80ba5115ac72","savedPayload":{"position":{"x":25548,"y":29872.5},"targetPosition":{"x":25248,"y":29872.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Pool","name":"Stacking","config":"{\n \"description\": \"\"\n}","project":"Governance","poolClasses":[],"pools":[],"id":"ea79efd3-c3d9-4c80-a1d0-1cab106e0242","savedPayload":{"position":{"x":25460.132034355964,"y":30084.632034355964},"targetPosition":{"x":25248,"y":29872.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Pool","name":"Education","config":"{\n \"description\": \"\"\n}","project":"Governance","poolClasses":[],"pools":[],"id":"d7ce7c92-83e1-47db-a8cc-aff77254b867","savedPayload":{"position":{"x":25248,"y":30172.5},"targetPosition":{"x":25248,"y":29872.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Pool","name":"Collective Reward","config":"{\n \"description\": \"\"\n}","project":"Governance","poolClasses":[],"pools":[],"id":"89f34416-d223-4ae2-bb1e-9523c92a445e","savedPayload":{"position":{"x":25035.867965644036,"y":30084.632034355964},"targetPosition":{"x":25248,"y":29872.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"a987f1d3-fc8d-4b7c-99dd-77f15a32f37d","savedPayload":{"position":{"x":25248,"y":29872.5},"targetPosition":{"x":24948,"y":29872.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"pools":[],"id":"6f0aed87-db13-4818-bfe6-68abc463ebec","savedPayload":{"position":{"x":24948,"y":29872.5},"targetPosition":{"x":24948,"y":29872.5},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}]} \ No newline at end of file diff --git a/Projects/Governance/Schemas/Docs-Concepts/claim.json b/Projects/Governance/Schemas/Docs-Concepts/claim.json new file mode 100644 index 000000000..4ee202eac --- /dev/null +++ b/Projects/Governance/Schemas/Docs-Concepts/claim.json @@ -0,0 +1,65 @@ +{ + "type": "Claim", + "definition": { + "text": "The token distribution is based on claims made by contributors that they have done something for the project. Anyone can make a claim, but without votes from the community, that claim will not be rewareded with tokens. ", + "updated": 1623007004449 + }, + "paragraphs": [ + { + "style": "Block", + "text": "Claim Explained", + "updated": 1623007932348 + }, + { + "style": "Text", + "text": "Assets, Features, Positions, etc. defines rewards offered to contributors by the community. Contributors later needs to make claims to get those rewards, and it is the same community the one who desides which claims to support with their votes." + }, + { + "style": "Title", + "text": "How does this work?" + }, + { + "style": "List", + "text": "1. Weight Votes: The community uses Weight Votes to define what is more important. " + }, + { + "style": "List", + "text": "2. Weights: These Weight Votes: end up generating a weight for each relevant node." + }, + { + "style": "List", + "text": "3. Token Rewards: Based on Weights, Token Rewards are calculated. ", + "updated": 1623007443739 + }, + { + "style": "List", + "text": "4. Claims: Contributos post claims towards Token Rewards." + }, + { + "style": "List", + "text": "5. Claims Votes: The community vote on claims that believe are true." + }, + { + "style": "List", + "text": "6. Token Awarded: Based on all claims towards each Token Rewards, Token Awarded is calculated for each Claim.", + "updated": 1623007602133 + }, + { + "style": "List", + "text": "7. Token Distribution: The distribution is made to users based on the Tokens Awarded to each of their claims." + }, + { + "style": "Title", + "text": "Calculation Code" + }, + { + "style": "Javascript", + "text": "/*\nWe will use the concept of Vote Ratio for the situation in which the total votes in claims exeeds the\namount of votes for wigthing. When this happen the Votes Ratio will be used to redude the amount of \ntokens awarded proportionally to how much was exeeded.\n*/\nlet votesRatio = node.payload.referenceParent.payload.votes / node.payload.referenceParent.payload.claimsVotes\nif (votesRatio > 1) { votesRatio = 1 }\n/*\n Share Count means the amount to claims pointing to the same potential tokens reward.\n*/\nlet shareCount = node.payload.referenceParent.payload.claimsCount\nlet sharePercentage = node.payload.votes * 100 / node.payload.referenceParent.payload.claimsVotes\nlet awarded = node.payload.votes / node.payload.referenceParent.payload.votes * node.payload.referenceParent.payload.tokens * votesRatio\nlet awardedPercentage = node.payload.votes / node.payload.referenceParent.payload.votes * 100 * votesRatio", + "updated": 1623007674072 + }, + { + "style": "Text", + "text": "" + } + ] +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/Docs-Nodes/asset-contribution-claim.json b/Projects/Governance/Schemas/Docs-Nodes/asset-contribution-claim.json index 5384c0619..09303f61c 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/asset-contribution-claim.json +++ b/Projects/Governance/Schemas/Docs-Nodes/asset-contribution-claim.json @@ -6,8 +6,9 @@ }, "paragraphs": [ { - "style": "Text", - "text": "Right click and select the pencil button to enter edit mode." + "style": "Include", + "text": "Governance->Concept->Claim->Claim Explained", + "updated": 1623007980090 } ] } \ No newline at end of file diff --git a/Projects/Governance/Schemas/Docs-Nodes/feature-contribution-claim.json b/Projects/Governance/Schemas/Docs-Nodes/feature-contribution-claim.json index 8c0b831ac..cb89c1a4e 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/feature-contribution-claim.json +++ b/Projects/Governance/Schemas/Docs-Nodes/feature-contribution-claim.json @@ -6,8 +6,9 @@ }, "paragraphs": [ { - "style": "Text", - "text": "Right click and select the pencil button to enter edit mode." + "style": "Include", + "text": "Governance->Concept->Claim->Claim Explained", + "updated": 1623007999063 } ] } \ No newline at end of file diff --git a/Projects/Governance/Schemas/Docs-Nodes/position-contribution-claim.json b/Projects/Governance/Schemas/Docs-Nodes/position-contribution-claim.json index d5fcef84c..ff46433fc 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/position-contribution-claim.json +++ b/Projects/Governance/Schemas/Docs-Nodes/position-contribution-claim.json @@ -6,8 +6,9 @@ }, "paragraphs": [ { - "style": "Text", - "text": "Right click and select the pencil button to enter edit mode." + "style": "Include", + "text": "Governance->Concept->Claim->Claim Explained", + "updated": 1623007917321 } ] } \ No newline at end of file diff --git a/Projects/Governance/UI/Function-Libraries/Claims.js b/Projects/Governance/UI/Function-Libraries/Claims.js index 099b79c57..934b231eb 100644 --- a/Projects/Governance/UI/Function-Libraries/Claims.js +++ b/Projects/Governance/UI/Function-Libraries/Claims.js @@ -207,9 +207,8 @@ function newGovernanceFunctionLibraryClaims() { function drawClaims(node, shareCount, sharePercentage, awarded, awardedPercentage) { let satatus = - 'Awarded: ' + new Intl.NumberFormat().format(awarded) + - ' ' + 'SA Tokens' + ' - ' + + ' ' + 'SA Tokens Awarded' + ' - ' + 'From Reward: ' + awardedPercentage.toFixed(2) + '%' + ' - ' + 'Shared Between: ' + shareCount + ' claims' + ' - ' + 'Share of Claims: ' + sharePercentage.toFixed(2) + '%'