Warning, /frameworks/syntax-highlighting/autotests/reference/test.sol.ref is written in an unsupported language. File is not indexed.
0001 <Comment>// Solidity Sample File</Comment><br/> 0002 <Comment>// https://solidity.readthedocs.io/en/latest/solidity-by-example.html#voting</Comment><br/> 0003 <Normal Text></Normal Text><br/> 0004 <Keyword>pragma</Keyword><Normal Text> </Normal Text><Built-in>solidity</Built-in><Normal Text> >=0.4.22 <0.7.0;</Normal Text><br/> 0005 <Normal Text></Normal Text><br/> 0006 <Comment>/// </Comment><Custom Tags>@title</Custom Tags><Comment> Voting with delegation.</Comment><br/> 0007 <Control Structures>contract</Control Structures><Normal Text> Ballot </Normal Text><Symbol>{</Symbol><br/> 0008 <Normal Text> </Normal Text><Comment>// This declares a new complex type which will</Comment><br/> 0009 <Normal Text> </Normal Text><Comment>// be used for variables later.</Comment><br/> 0010 <Normal Text> </Normal Text><Comment>// It will represent a single voter.</Comment><br/> 0011 <Normal Text> </Normal Text><Keyword>struct</Keyword><Normal Text> Voter </Normal Text><Symbol>{</Symbol><br/> 0012 <Normal Text> </Normal Text><Data Type>uint</Data Type><Normal Text> weight</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// weight is accumulated by delegation</Comment><br/> 0013 <Normal Text> </Normal Text><Data Type>bool</Data Type><Normal Text> voted</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// if true, that person already voted</Comment><br/> 0014 <Normal Text> </Normal Text><Data Type>address</Data Type><Normal Text> delegate</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// person delegated to</Comment><br/> 0015 <Normal Text> </Normal Text><Data Type>uint</Data Type><Normal Text> vote</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// index of the voted proposal</Comment><br/> 0016 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0017 <Normal Text></Normal Text><br/> 0018 <Normal Text> </Normal Text><Comment>// This is a type for a single proposal.</Comment><br/> 0019 <Normal Text> </Normal Text><Keyword>struct</Keyword><Normal Text> Proposal </Normal Text><Symbol>{</Symbol><br/> 0020 <Normal Text> </Normal Text><Data Type>bytes32</Data Type><Normal Text> name</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// short name (up to 32 bytes)</Comment><br/> 0021 <Normal Text> </Normal Text><Data Type>uint</Data Type><Normal Text> voteCount</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// number of accumulated votes</Comment><br/> 0022 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0023 <Normal Text></Normal Text><br/> 0024 <Normal Text> </Normal Text><Data Type>address</Data Type><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> chairperson</Normal Text><Symbol>;</Symbol><br/> 0025 <Normal Text></Normal Text><br/> 0026 <Normal Text> </Normal Text><Comment>// This declares a state variable that</Comment><br/> 0027 <Normal Text> </Normal Text><Comment>// stores a `Voter` struct for each possible address.</Comment><br/> 0028 <Normal Text> </Normal Text><Data Type>mapping</Data Type><Symbol>(</Symbol><Data Type>address</Data Type><Normal Text> </Normal Text><Symbol>=></Symbol><Normal Text> Voter</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> voters</Normal Text><Symbol>;</Symbol><br/> 0029 <Normal Text></Normal Text><br/> 0030 <Normal Text> </Normal Text><Comment>// A dynamically-sized array of `Proposal` structs.</Comment><br/> 0031 <Normal Text> Proposal</Normal Text><Symbol>[]</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> proposals</Normal Text><Symbol>;</Symbol><br/> 0032 <Normal Text></Normal Text><br/> 0033 <Normal Text> </Normal Text><Comment>/// Create a new ballot to choose one of `proposalNames`.</Comment><br/> 0034 <Normal Text> </Normal Text><Control Structures>constructor</Control Structures><Symbol>(</Symbol><Data Type>bytes32</Data Type><Symbol>[]</Symbol><Normal Text> </Normal Text><Keyword>memory</Keyword><Normal Text> proposalNames</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0035 <Normal Text> chairperson </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>;</Symbol><br/> 0036 <Normal Text> voters</Normal Text><Symbol>[</Symbol><Normal Text>chairperson</Normal Text><Symbol>].</Symbol><Normal Text>weight </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>1</Decimal><Symbol>;</Symbol><br/> 0037 <Normal Text></Normal Text><br/> 0038 <Normal Text> </Normal Text><Comment>// For each of the provided proposal names,</Comment><br/> 0039 <Normal Text> </Normal Text><Comment>// create a new proposal object and add it</Comment><br/> 0040 <Normal Text> </Normal Text><Comment>// to the end of the array.</Comment><br/> 0041 <Normal Text> </Normal Text><Control Structures>for</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> i </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>;</Symbol><Normal Text> i </Normal Text><Symbol><</Symbol><Normal Text> proposalNames</Normal Text><Symbol>.</Symbol><Normal Text>length</Normal Text><Symbol>;</Symbol><Normal Text> i</Normal Text><Built-in>++</Built-in><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0042 <Normal Text> </Normal Text><Comment>// `Proposal({...})` creates a temporary</Comment><br/> 0043 <Normal Text> </Normal Text><Comment>// Proposal object and `proposals.push(...)`</Comment><br/> 0044 <Normal Text> </Normal Text><Comment>// appends it to the end of `proposals`.</Comment><br/> 0045 <Normal Text> proposals</Normal Text><Symbol>.</Symbol><Normal Text>push</Normal Text><Symbol>(</Symbol><Normal Text>Proposal</Normal Text><Symbol>({</Symbol><br/> 0046 <Normal Text> name</Normal Text><Symbol>:</Symbol><Normal Text> proposalNames</Normal Text><Symbol>[</Symbol><Normal Text>i</Normal Text><Symbol>],</Symbol><br/> 0047 <Normal Text> voteCount</Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><br/> 0048 <Normal Text> </Normal Text><Symbol>}));</Symbol><br/> 0049 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0050 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0051 <Normal Text></Normal Text><br/> 0052 <Normal Text> </Normal Text><Comment>// Give `voter` the right to vote on this ballot.</Comment><br/> 0053 <Normal Text> </Normal Text><Comment>// May only be called by `chairperson`.</Comment><br/> 0054 <Normal Text> </Normal Text><Control Structures>function</Control Structures><Normal Text> giveRightToVote</Normal Text><Symbol>(</Symbol><Data Type>address</Data Type><Normal Text> voter</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0055 <Normal Text> </Normal Text><Comment>// If the first argument of `require` evaluates</Comment><br/> 0056 <Normal Text> </Normal Text><Comment>// to `false`, execution terminates and all</Comment><br/> 0057 <Normal Text> </Normal Text><Comment>// changes to the state and to Ether balances</Comment><br/> 0058 <Normal Text> </Normal Text><Comment>// are reverted.</Comment><br/> 0059 <Normal Text> </Normal Text><Comment>// This used to consume all gas in old EVM versions, but</Comment><br/> 0060 <Normal Text> </Normal Text><Comment>// not anymore.</Comment><br/> 0061 <Normal Text> </Normal Text><Comment>// It is often a good idea to use `require` to check if</Comment><br/> 0062 <Normal Text> </Normal Text><Comment>// functions are called correctly.</Comment><br/> 0063 <Normal Text> </Normal Text><Comment>// As a second argument, you can also provide an</Comment><br/> 0064 <Normal Text> </Normal Text><Comment>// explanation about what went wrong.</Comment><br/> 0065 <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><br/> 0066 <Normal Text> </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender </Normal Text><Symbol>==</Symbol><Normal Text> chairperson</Normal Text><Symbol>,</Symbol><br/> 0067 <Normal Text> </Normal Text><String>"Only chairperson can give right to vote."</String><br/> 0068 <Normal Text> </Normal Text><Symbol>);</Symbol><br/> 0069 <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><br/> 0070 <Normal Text> </Normal Text><Symbol>!</Symbol><Normal Text>voters</Normal Text><Symbol>[</Symbol><Normal Text>voter</Normal Text><Symbol>].</Symbol><Normal Text>voted</Normal Text><Symbol>,</Symbol><br/> 0071 <Normal Text> </Normal Text><String>"The voter already voted."</String><br/> 0072 <Normal Text> </Normal Text><Symbol>);</Symbol><br/> 0073 <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>voters</Normal Text><Symbol>[</Symbol><Normal Text>voter</Normal Text><Symbol>].</Symbol><Normal Text>weight </Normal Text><Symbol>==</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>);</Symbol><br/> 0074 <Normal Text> voters</Normal Text><Symbol>[</Symbol><Normal Text>voter</Normal Text><Symbol>].</Symbol><Normal Text>weight </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>1</Decimal><Symbol>;</Symbol><br/> 0075 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0076 <Normal Text></Normal Text><br/> 0077 <Normal Text> </Normal Text><Comment>/// Delegate your vote to the voter `to`.</Comment><br/> 0078 <Normal Text> </Normal Text><Control Structures>function</Control Structures><Normal Text> delegate</Normal Text><Symbol>(</Symbol><Data Type>address</Data Type><Normal Text> to</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0079 <Normal Text> </Normal Text><Comment>// assigns reference</Comment><br/> 0080 <Normal Text> Voter </Normal Text><Keyword>storage</Keyword><Normal Text> sender </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>];</Symbol><br/> 0081 <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(!</Symbol><Normal Text>sender</Normal Text><Symbol>.</Symbol><Normal Text>voted</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"You already voted."</String><Symbol>);</Symbol><br/> 0082 <Normal Text></Normal Text><br/> 0083 <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>to </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Self-delegation is disallowed."</String><Symbol>);</Symbol><br/> 0084 <Normal Text></Normal Text><br/> 0085 <Normal Text> </Normal Text><Comment>// Forward the delegation as long as</Comment><br/> 0086 <Normal Text> </Normal Text><Comment>// `to` also delegated.</Comment><br/> 0087 <Normal Text> </Normal Text><Comment>// In general, such loops are very dangerous,</Comment><br/> 0088 <Normal Text> </Normal Text><Comment>// because if they run too long, they might</Comment><br/> 0089 <Normal Text> </Normal Text><Comment>// need more gas than is available in a block.</Comment><br/> 0090 <Normal Text> </Normal Text><Comment>// In this case, the delegation will not be executed,</Comment><br/> 0091 <Normal Text> </Normal Text><Comment>// but in other situations, such loops might</Comment><br/> 0092 <Normal Text> </Normal Text><Comment>// cause a contract to get "stuck" completely.</Comment><br/> 0093 <Normal Text> </Normal Text><Control Structures>while</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>voters</Normal Text><Symbol>[</Symbol><Normal Text>to</Normal Text><Symbol>].</Symbol><Normal Text>delegate </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Data Type>address</Data Type><Symbol>(</Symbol><Decimal>0</Decimal><Symbol>))</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0094 <Normal Text> to </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Normal Text>to</Normal Text><Symbol>].</Symbol><Normal Text>delegate</Normal Text><Symbol>;</Symbol><br/> 0095 <Normal Text></Normal Text><br/> 0096 <Normal Text> </Normal Text><Comment>// We found a loop in the delegation, not allowed.</Comment><br/> 0097 <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>to </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Found loop in delegation."</String><Symbol>);</Symbol><br/> 0098 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0099 <Normal Text></Normal Text><br/> 0100 <Normal Text> </Normal Text><Comment>// Since `sender` is a reference, this</Comment><br/> 0101 <Normal Text> </Normal Text><Comment>// modifies `voters[msg.sender].voted`</Comment><br/> 0102 <Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>voted </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Keyword>true</Keyword><Symbol>;</Symbol><br/> 0103 <Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>delegate </Normal Text><Symbol>=</Symbol><Normal Text> to</Normal Text><Symbol>;</Symbol><br/> 0104 <Normal Text> Voter </Normal Text><Keyword>storage</Keyword><Normal Text> delegate_ </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Normal Text>to</Normal Text><Symbol>];</Symbol><br/> 0105 <Normal Text> </Normal Text><Control Structures>if</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>delegate_</Normal Text><Symbol>.</Symbol><Normal Text>voted</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0106 <Normal Text> </Normal Text><Comment>// If the delegate already voted,</Comment><br/> 0107 <Normal Text> </Normal Text><Comment>// directly add to the number of votes</Comment><br/> 0108 <Normal Text> proposals</Normal Text><Symbol>[</Symbol><Normal Text>delegate_</Normal Text><Symbol>.</Symbol><Normal Text>vote</Normal Text><Symbol>].</Symbol><Normal Text>voteCount </Normal Text><Symbol>+=</Symbol><Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>weight</Normal Text><Symbol>;</Symbol><br/> 0109 <Normal Text> </Normal Text><Symbol>}</Symbol><Normal Text> </Normal Text><Control Structures>else</Control Structures><Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0110 <Normal Text> </Normal Text><Comment>// If the delegate did not vote yet,</Comment><br/> 0111 <Normal Text> </Normal Text><Comment>// add to her weight.</Comment><br/> 0112 <Normal Text> delegate_</Normal Text><Symbol>.</Symbol><Normal Text>weight </Normal Text><Symbol>+=</Symbol><Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>weight</Normal Text><Symbol>;</Symbol><br/> 0113 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0114 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0115 <Normal Text></Normal Text><br/> 0116 <Normal Text> </Normal Text><Comment>/// Give your vote (including votes delegated to you)</Comment><br/> 0117 <Normal Text> </Normal Text><Comment>/// to proposal `proposals[proposal].name`.</Comment><br/> 0118 <Normal Text> </Normal Text><Control Structures>function</Control Structures><Normal Text> vote</Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> proposal</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0119 <Normal Text> Voter </Normal Text><Keyword>storage</Keyword><Normal Text> sender </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>];</Symbol><br/> 0120 <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>sender</Normal Text><Symbol>.</Symbol><Normal Text>weight </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Has no right to vote"</String><Symbol>);</Symbol><br/> 0121 <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(!</Symbol><Normal Text>sender</Normal Text><Symbol>.</Symbol><Normal Text>voted</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Already voted."</String><Symbol>);</Symbol><br/> 0122 <Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>voted </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Keyword>true</Keyword><Symbol>;</Symbol><br/> 0123 <Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>vote </Normal Text><Symbol>=</Symbol><Normal Text> proposal</Normal Text><Symbol>;</Symbol><br/> 0124 <Normal Text></Normal Text><br/> 0125 <Normal Text> </Normal Text><Comment>// If `proposal` is out of the range of the array,</Comment><br/> 0126 <Normal Text> </Normal Text><Comment>// this will throw automatically and revert all</Comment><br/> 0127 <Normal Text> </Normal Text><Comment>// changes.</Comment><br/> 0128 <Normal Text> proposals</Normal Text><Symbol>[</Symbol><Normal Text>proposal</Normal Text><Symbol>].</Symbol><Normal Text>voteCount </Normal Text><Symbol>+=</Symbol><Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>weight</Normal Text><Symbol>;</Symbol><br/> 0129 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0130 <Normal Text></Normal Text><br/> 0131 <Normal Text> </Normal Text><Comment>/// </Comment><Custom Tags>@dev</Custom Tags><Comment> Computes the winning proposal taking all</Comment><br/> 0132 <Normal Text> </Normal Text><Comment>/// previous votes into account.</Comment><br/> 0133 <Normal Text> </Normal Text><Control Structures>function</Control Structures><Normal Text> winningProposal</Normal Text><Symbol>()</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Keyword>view</Keyword><br/> 0134 <Normal Text> </Normal Text><Keyword>returns</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> winningProposal_</Normal Text><Symbol>)</Symbol><br/> 0135 <Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0136 <Normal Text> </Normal Text><Data Type>uint</Data Type><Normal Text> winningVoteCount </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>;</Symbol><br/> 0137 <Normal Text> </Normal Text><Control Structures>for</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> p </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>;</Symbol><Normal Text> p </Normal Text><Symbol><</Symbol><Normal Text> proposals</Normal Text><Symbol>.</Symbol><Normal Text>length</Normal Text><Symbol>;</Symbol><Normal Text> p</Normal Text><Built-in>++</Built-in><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0138 <Normal Text> </Normal Text><Control Structures>if</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>proposals</Normal Text><Symbol>[</Symbol><Normal Text>p</Normal Text><Symbol>].</Symbol><Normal Text>voteCount </Normal Text><Symbol>></Symbol><Normal Text> winningVoteCount</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0139 <Normal Text> winningVoteCount </Normal Text><Symbol>=</Symbol><Normal Text> proposals</Normal Text><Symbol>[</Symbol><Normal Text>p</Normal Text><Symbol>].</Symbol><Normal Text>voteCount</Normal Text><Symbol>;</Symbol><br/> 0140 <Normal Text> winningProposal_ </Normal Text><Symbol>=</Symbol><Normal Text> p</Normal Text><Symbol>;</Symbol><br/> 0141 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0142 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0143 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0144 <Normal Text></Normal Text><br/> 0145 <Normal Text> </Normal Text><Comment>// Calls winningProposal() function to get the index</Comment><br/> 0146 <Normal Text> </Normal Text><Comment>// of the winner contained in the proposals array and then</Comment><br/> 0147 <Normal Text> </Normal Text><Comment>// returns the name of the winner</Comment><br/> 0148 <Normal Text> </Normal Text><Control Structures>function</Control Structures><Normal Text> winnerName</Normal Text><Symbol>()</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Keyword>view</Keyword><br/> 0149 <Normal Text> </Normal Text><Keyword>returns</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>bytes32</Data Type><Normal Text> winnerName_</Normal Text><Symbol>)</Symbol><br/> 0150 <Normal Text> </Normal Text><Symbol>{</Symbol><br/> 0151 <Normal Text> winnerName_ </Normal Text><Symbol>=</Symbol><Normal Text> proposals</Normal Text><Symbol>[</Symbol><Normal Text>winningProposal</Normal Text><Symbol>()].</Symbol><Normal Text>name</Normal Text><Symbol>;</Symbol><br/> 0152 <Normal Text> </Normal Text><Symbol>}</Symbol><br/> 0153 <Symbol>}</Symbol><br/>