Ribon Protocol Whitepaper

Draft version v.0.1 

Abstract 

Ribon is a decentralized donation platform that allows donors to become promoters and, by doing so, champion the giving culture to encourage others to join them. In that way, it is possible to increase donations to charities, increase the culture of giving in the world and make people happier. The platform is governed in a decentralized way by the community, and this white paper is a reader-friendly description of the Ribon protocol, which is built on Matic/Polygon, a layer 2 in Ethereum.


Introduction 

Helping others makes us happier, and as much as there is current scientific evidence of the effect of an altruistic action on our brain, this has been known for centuries in different cultures. 

We can measure the effects of this happiness from the amount donated annually in the globe. It’s estimated that more than $ 1.8 trillion is allocated to social projects yearly, and +70% of that is donated by individuals. By comparison, that’s three times more than all the money that is spent on offline and online advertising combined in the entire world. 

Even with all this money donated, we know we can’t keep going like this to reach the UN Sustainable Development Goals (SDGs). Humanity needs to allocate much more resources annually in the next 10 years if we want to end poverty in all its forms and everywhere, fight climate change, end hunger, achieve gender and racial equality, ensure quality education for all, and achieve the other ten goals as well. 

Millennials and Generation Z are considered two of the most altruistic generations ever. We have a great opportunity to reverse the current situation of global goals by managing to truly engage charitable donations in young people’s lives. What we have seen are strategies for donations that rely on creating costly fundraising events and campaigns that are not optimized for a young digital audience, and because of that can’t reach their full potential. Ribon has mapped this scenario and over the last 4 years optimized a strategy that resonates with a younger audience. The Ribon protocol doubles down on this strategy to bring scale to the donation ecosystem, offer the correct incentives to each participant and share our optimized donation experience for free. 

Ribon is a decentralized platform that inserts donations into people’s digital routine using a sponsored mechanism that allows anyone to champion the giving culture with simple steps. That way, the platform, being led by the community itself, is able to increase fundraising for social projects, increase the culture of giving in the world and make people happier. 

Everything we do, we do to stimulate the greater good to improve the world. We believe that humanity can end extreme poverty before 2030.


Solution Overview 

Ribon’s decentralized platform allows regular donors to become promoters, thereby increasing their initial donation and encouraging other people to donate as well. It is a unique and innovative framework, created by the Ribon team over the last 4 years and awarded by the Bill & Melinda Gates Foundation and by IDEO as one of the 10 most innovative platforms in the world in the area of everyday giving. 

Through Ribon, promoters are able to increase their donations by 60% on average, connecting with more than 37,000 monthly users. Some of the best nonprofit organizations in the world have already received donations through the platform, such as the World Food Program and big donors have participated as well, such as Impacto (Softbank’s philanthropic arm). 

This whitepaper details the next step in this journey, with the launch of the RibonDApp (Decentralized Application) with explanation of the three main processes in the application and how the community can govern it in this first version: 

1. how we increase the promoter’s donation (Donation Process); 

2. how the distribution of ‘ribons’ by integrations happens (Integration Process). 3. and how the selection of listed charities happens (Charity Curation Process);

Ribon Protocol is built in Matic/Polygon, a layer 2 in Ethereum. That way we can have the mix we want in terms of security, a pungent ecosystem of tools, and transaction fees consistent with the micro donations made on the platform. 


Disclaimers

RibonDApp is open source and can be used in any way. Those who would like to see a world with more love and a greater culture of giving are more than invited to join our community, talk to us and find out how we could do something better together. 

This whitepaper details Ribon Protocol’s processes. Ribon DApp (our current implementation) functions as an integration of Ribon protocol but is not eligible for any of the rewards and incentives listed in this whitepaper. The Ribon protocol and Ribon DApp repositories were created by Ribon Holdings and will progressively be released into community control.


Integration User Perspective (example) 

A customer (integration user) is receiving online assistance on their credit card (integration). The attendant helps the customer with the service and at the end of the assistance gives a “donation voucher” as a reward for the customer. 

By clicking on the voucher link, the customer can make a choice to donate a day of basic health for a person or a literacy day for a child. This donation has already been paid by a promoter. The customer integration user – logs into her email, clicks to donate and, just like that, it was possible to help a person and the donation was registered in her newly created profile (new integration user)

As a user, she can make other donations for free by regularly logging into the Ribon App, performing routine activities at other integrations (such as playing her favorite game or answering questions from the HR department at her job), and interacting with other donors in groups. 

She understands that the donation was funded by other people (promoters) and decides to proceed to the next step: become a promoter herself. From this point on, she commits to donate $20 monthly, encouraging others to feel the same way, and watch her initial donation grow. 

In the first week after her subscription, she watched as 100 other users decided which charities her $20 should be transferred to. Since a portion of those users became promoters as well or made direct donations to the charities, her initial donation was increased to $23 (calculation explained in “Donation Process”, section 9). 

Ribon is the only place where a promoter can increase its initial donations without inviting other donors personally. Ribon is about giving others an opportunity to feel good by making donations, so that some might join to donate even more. 


Glossary of Terms 

Promoters: donors that want to be part of a greater good and champion the culture of giving. By incentivizing other people to donate, they watch their initial donation grow and impact more people in need. Promoters can be compared to paying users. 

Integrations: any platform that uses ribons (our tokens) as rewards for tasks that their users (‘integration users’) complete. It can be games that reward users for each level up, research companies rewards for completing a form on the web, e-commerces that rewards for writing a review for a product and many other applications. That way, integrations can improve their brand awareness, increase user experience, reduce user churn and consequently increase revenue. 

Integration Users: they collect and donate ribons to Charities through integrations. Sometimes we call them ‘free users’, as their donations are sponsored by promoters. Users can always make direct donations from their own pocket to any charity on the platform without paying any fees. Some of them become promoters as well. 

Charities: non-profit organizations that operate independently of any government, whose purpose is to address a social or environmental issue. They receive donations via Ribon protocol.

Charity curator board: responsible for analysing new charities and managing the Curated Charity List. It is composed of members elected by the RibonDAO (Distributed Autonomous Organization) community. Their number, term period, rewards and other governance details are decided by the RibonGov community. 

Integration board: responsible for analysing new integrations and managing the distribution of ribons for all integrations. It is composed of members elected by the RibonDAO community, using RibonGov to vote. Their number, term period, rewards and other governance details are decided by the RibonGov community. 

Ribons: stable coin pegged to the USDC donated by promoters and used by users to donate to selected charities. Only selected charities can redeem USDC from the donation pool by using ribons. Ribons are always locked into our smart contracts, so there’s no way users or integrators use or sell them in the open market or at any other protocol. 

Ribon Governance Token (RGT or RibonGov): It represents our path to decentralize our governance to our community. RibonGov holders can propose and vote on the next changes in Ribon protocol and by doing so build together a better future with more culture of giving. The amount of RibonGov that will be minted, distributed and how the governance process will run, will be announced when we mint the first RibonGov. 

USDC: is a digital stable coin that is pegged to the United States dollar and runs on the Ethereum, Stellar, Algorand, and Solana blockchains. USD Coin is managed by a consortium called Centre. 


Donation Process 

This process shows how a promoter can incentivize other people to donate without the need to invite them personally, make a campaign or create a fundraiser. The Ribon protocol allows a promoter to increase his donation amount and spread the giving culture in the world – the most innovative aspect of Ribon. 


Donation Overview 

Promoters submit one-time or recurring donations to the Donation Pool. Donations can be done using any token. When a donation happens, the following steps are triggered: 

1) Donations (minus fees) are swapped to USDC and sent to the Donation Pool; 

2) A fee is charged, swapped into RibonGov and sent to Community Treasure;

3) The ribon tokens are issued proportionally to the donation; 

4) Promoter receives a portion of these ribons to be donated; 

5) Remaining ribons are distributed for integrations (see details in ‘Integration Process’section); 6) Promoter receives RibonGov, from Community Treasure, to participate in future platform decisions; 

7) Integrations allow integration users to donate ribons to selected charities; 

8) Selected charities exchange ribons received from integration users for USDC and can withdraw money from their wallets; 

9) Some integration users become promoters and make new donations. Ribon protocol calculates for each promoter, how much his donation has increased based on other donors’ contributions. 


Donation Details 

We have listed the details of each of the steps described in the Donation Overview: 1) As promoter donations can be made using any token, we need to convert the original token to a stable coin (USDC), for that we initially chose the Balancer Protocol, as it is also built in Polygon like Ribon, to make the swaps. Standard Balancer fees apply. If the swap fails, the tokens are returned to the promoter as an uncompleted Balancer transaction. After swapping to USDC, the funds are sent to the Donation Pool in wallet 0x3358axxxxxx*: a) We chose to make the swaps, even though it costs a fee, to filter out tokens with very low liquidity, which would make it hard for the NGOs to withdraw. 

b) Another reason for making the swaps is to shield the NGOs from crypto volatility. That way the NGOs feel they are never losing money, although they may be also forfeiting some gains. That is important to bring to the platform NGOs that are not used to trade crypto currencies, and allow for easier adoption. 

2) Once the donation is in USDC, we make a new swap for the Ribon donation fee (more details in the Fee Structure section), this swap is done using liquidity pools at Balancer to convert the USDC fee into RibonGov Token. The cheapest path to complete the swap is automatically used. RibonGov is sent to the Community Treasure wallet 0x5a4g04xxxxxx*. This RibonGov fee will be distributed according to this rule: 

a) If the promoter donation is not referred by any integration, the Promoter gets 50% of the RibonGov fee and 50% goes to the community treasure; 

b) If the promoter donation is referred by an integration 50% of the RibonGov fee goes to the Promoter and 50% goes to the Referral Integration that originated the donation. 3) For each USDC deposited in the Donation Pool, 1000 ribons are created; 

4) Promoters get back 20% of the ribons generated by their donation: 

a) This is done to incentivize each Promoter to experience a donation using the platform, we aim to engage the Promoter and make him a recurrent donor. 

5) The other 80% of the ribons that are created are distributed to the Integrations. At first this will be done by people elected by the RibonDAO using RibonGov Tokens to vote. Based on our experience some criteria that should be used to determine the amount (or proportion) of ribons that each Integration get should be: 

a) How much the integration is bringing in new donations (direct donations and new promoters); 

b) For new integrations, volume of users is a great indicator. The more users an integration has, the more promoters it can convert and greater is the awareness brought to the platform;

6) As an incentive to participate in the RibonDAO community, promoters and integrations receive RibonGov tokens from Community Treasure proportional to their donation: a) The awarded RibonGov has a 12-month vesting. During this period it may be used for votes and decisions in the platform, but can not be sold. 

7) Integrations build rewards systems and distribute ribons to their users. Through smart contracts, ribons are delegated to Integrations wallets after leaving the genesis wallet. Ribons distribution to integrations is explained in the ‘Integration Process’ section. Integrations work as a growth channel for engaging new integration users, converting some of them to new promoters and retaining active users. The charities receive ribons from the donation of these integration users directly into their wallets: 

a) Since ribons are locked inside our smart contract, ribons can’t be transferred from an integration wallet to any other wallet besides charities’ one. 

8) Only the selected and validated charities wallets are able to redeem USDC from the Donation Pool using the Ribons received. After the withdrawal, the ribons returned by the charity are burned in the Donation Pool: 

a) There is no minimum amount of ribons received by the charity to withdraw USDC.

9) The protocol distributes ribons created by each promoter proportionally to the maximum integrations possible. When a free user makes: (1) a direct donation or (2) becomes a promoter by donating to the donation pool (New user donation), all the promoters that sponsored ribons for this user in the last 30 days are considered influencers on that donation. To measure donation increase for promoters, we use the following formula: 

a) Promoter donation increase = ⅀ (New user donation * Ribons sponsored by the promoter last 30 days / all sponsored ribons donated by user last 30 days) 

i) ⅀ represents the sum of all new user donations influenced by a promoter 

Reminder 

Various parts of the process should be largely decided and optimized by the RibonDAO community, for example: 

Liquidity Pools and DEX’s to be used; 

Fees to be charged; 

USDC / ribon exchange rate; 

Amount of ribons returned to promoter; 

Existence and size of reward in RibonGov for promoters and integrations. 


Focused promoters 

Focused promoter is a type of promoter that wants to increase donations to just one specific charity. This is done by doubling other users’ donations to that charity. They can be foundations, companies, individuals or even charities themselves. This is the process of a focused promoter: 

1) Focused promoter lock funds she wants to donate to a single charity in Ribon protocol smart contract X; 

a) Locked funds are automatically swapped into USDC; 

2) In the donation process he chooses a charity, that must be currently available on the NGO curated list; 

3) He receives a “promoter token” that represents the amount locked in the smart contract, so he can use it later to redeem all non used locked funds;

4) When an integration lists the available charities for donations, Promoted Charities are identified / signaled to free users; 

a) This is done to let free users know that their contributions to those charities will be leveraged by a Promoter, and result in a maximized impact for the NGO. 

5) When an integration user send ribons to the chosen charity, the equivalent amount of USDC is sent from the focused promoter locked fund to the donation pool, an equivalent amount of Ribon is minted and sent automatically to the charity wallet. This is how every donation to that chosen charity is matched (doubled) by the focused promoter; 

6) When a focused donation happens, a fee is charged from the Promoter locked fund. This fee is converted into RibonGov and goes to the Community Treasure (detailed on ‘Fee Structure’ section); 

7) The focused promoter can stop his campaign anytime he wants by sending his “promoter token” back and redeeming all the unused funds; 


Integration Process 

Integrations are Ribon’s main growth channel and also an excellent user retention tool. It’s what brings the possibility of donating into people’s routine by distributing ribons funded by Promoters. It is also where we convert new Promoters and increase the amount that the platform donates. 

Integrations distribute ribons for every action performed within their platform. They are varied, diverse and each integration can customize the experience to suit its specific needs, both in increasing some business metric but also as a reward to loyal customers or tasks that are important at the Integration platform. 

Integrations benefit from engaging with a charity cause, specifically if it is one in tune with the company strategy. 


Integrations examples

● A survey company may distribute ribons to respondents to its surveys. By notifying that there will be a “free donation voucher” for respondents at the beginning of the survey, it can increase the completion rate – In a Success case at Ribon a company managed to reduce the cost of surveys by 30% (Case 121 Labs) with such a strategy; 

● An ecommerce company can distribute ribons at the end of each purchase and also in the delivery process at each notice by email or message, as a way to increase satisfaction with the purchase and delivery process; 

● A mobile game can distribute ribons at the end of each level-up to increase user retention. Integrators spend nothing on the Ribon Platform, there is no cost to either launch or maintain an integration running. On the contrary, several Integrations users / customers can become Promoters and, when that happens, integrations receive rewards in RibonGov so they can actively participate in decisions on Ribon protocol evolution. 

Of course there is an implementation effort to use the platform, but we try to minimize this by providing the Ribon DApp source code. Ribon DApp source code is our best awarded white label implementation of the donation platform, where an Integration can get up and running very rapidly. An Integration is free, and indeed encouraged, to customize the Ribon DApp experience to its needs and share that with the Ribon community.

For a platform to launch an Integration using the Ribon protocol, these steps take place: 1) Integrator implements Integration using Ribon DApp open source code; 

2) Integrator receives Integration Board (approval process) permission to start ribon distribution / use; 

3) The ribons are delegated to the integration wallet; 

4) Integration Free Users can now allocate ribons to listed charities; 

5) Integration Board periodically validates integration activity; 

6) Integration Board approves RibonGov token reward distribution in proportion to each integration user base engagement and new Promoters generation. 

Following are the details of each of the steps: 

1) The new Integration may have been initiated by an integrator’s willingness after knowing Ribon alone, or through commercial or marketing processes. Because Ribon DApp is open source, it is possible to adapt it in the most creative ways to suit the integrator needs. Integrations can use code from RibonDApp to streamline the implementation of the integration, which brings, for example, the front-end of a fluid donation process (the most advanced the community has to offer). 

a) Invitations to new Integrations and Rewards to incentivize new Integrations, both aiming for expansion of the platform, is a decision of RibonDAO (community). 2) In order to avoid fraud or misuse in the ribons that are distributed to Integrations, an Integration Board of 5 members will be elected, who decide the amount or proportion of ribons to be sent to each Integration. 

a) The members of this board are elected by the RibonDAO community and can be exchanged by the same community at any time. 

b) The Board decides on the release of ribons for a new Integration, and maintains the distribution of ribons for the existing Integrations based on their performance. c) It is mandatory that the rules, data and codes used to decide this distribution be shared with the community, as well as any decisions made by the Board.

d) The creation of the board is considered the first step towards decentralization (currently this is done by the team at Ribon), and will evolve in the future by decisions of the RibonDAO community. 

3) The ribons issued by Promoters’ donations are delegated to Integration’s wallets. a) Ribons are delegated whenever the Donation Pool reaches a predetermined amount of USDC $1,000, an amount that can be adjusted by RibonDAO community as the platform grows. 

b) Ribons are delegated to the Integration wallet rather than sent to avoid trading on ribons, which would cause price volatility and affect Promoter donation amount. c) The Board can change ribon proportion distribution based on each Integration ability to consume their ribon allotted quota. 

d) After 90 days ribons that are delegated to an Integration but where not used are moved back into the donation pool. This is done to avoid hoarding and make sure that donated money reaches the charities. 

4) The ribons are made available to users to be distributed to selected charities. Two main options are possible: 

a) Ribon collection for later donation, a 2 step process to the donation. Where Free Users may collect ribons in various contact points and later choose how much to donate for each Charity. At which point ribons are moved to the Charity wallet. 

b) A donation to a Charity, a single step donation where a fixed amount of ribons is moved to the Charity wallet. 

5) In Ribon’s 4 year experience running a donation platform some of the important aspects that should be considered to evaluate an integration are: 

a) Quality of integration implementation, both technical and communication with the integration user base; 

b) Volume of integration users that were engaged with donations, benefits both integration itself and the donation platform; 

c) Volume of new promoters brought in by the integration. That is what makes the donation platform value growth over time; 

6) Integrations receive 2 types of rewards: 

a) Their allotment (proportion from the Donation Pool) of ribons increase with the amount of Free Users that are engaged. 

b) They receive RibonGov tokens each time they bring in a new donation from a Promoter to the donation platform. This RibonGov fee is collected at the time of the donation creation and is distributed according to this rule: 

i) If the promoter donation is not referred by any integration, the Promoter gets 50% of the RibonGov fee and 50% goes to the community treasure; 

ii) If the promoter donation is referred by an integration 50% of the RibonGov fee goes to the Promoter and 50% goes to the Referral Integration that originated the donation. 


Charity Curation Process 

The process of registering a social project and participating in the Ribon protocol goes through the following steps:

1) Any project can complete the registration form to apply to participate in the Ribon platform. To enter information a Charity can use the RibonDApp interface and follow the registration steps. 

a) The Ribon DApp will always make that form available free of charge; 

b) Some integrations may implement that part of the interface, but that is not required to be an integration. 

2) A board of elected representatives from the RibonDAO community validates the Charity registration and allows its entry into the platform, and from that moment, the nonprofit organization belongs to the Charity Curated List. 

a) The Board authenticates the charity contact and financial information (wallet) and confirms the veracity and availability of other information such as budget and social impact reports; 

b) It’s important to say that the curators will not do social impact analysis of the projects, which is a huge workload in itself. Usually it requires a local presence where the charity operates and there are hundreds of hyper-qualified organizations around the world for this role; 

c) Who and how many board members there will be, the amount of rewards in RibonGov they will receive and how long they term is, all of that governance is decided by the RibonDAO community; 

d) In addition, board members have an obligation to consistently post reports to the community, explaining the basis for their decisions. 

3) When an NGO joins the Curated List, its social project gets a public profile on the Ribon platform. Ribons can only be donated to social projects listed on the NGO Curated List. a) Integrations are free to choose which charities from the NGO Curated List they will use in their implementation; 

b) Each NGO can monitor their current balance and ask for withdrawal using Ribon DApp. 

c) Direct donations can only happen to NGOs on the curated list. 

d) Focused promoters must choose a charity from the curated list. 


Fee Structure 

Direct donation: no fee

If a user wants to donate to a specific charity he/she is free to do so, without any charge from Ribon protocol. Some fees from crypto tokens settlement and withdrawal may apply. 

Promoters donations: 7% fee 

Promoter donation is charged a fee to: 

1) Fund improvements in the Ribon protocol; 

2) Fund improvements in the Ribon DApp experience; 

3) Give incentives to protocol participants. 

Focused promoters: 25% of extra funds raised. 

Focused promoter donation is charged a fee based only on the extra funds raised for the chosen charity. The fee is charged to give incentives to protocol participants, who play the role of fundraisers and campaigns for the focused promoters. 

The fees are converted into RibonGov Token using the cheapest swap cost within all the liquidity pools that RibonGov is listed. The RibonGov Token is then transferred to the Community Fund to be redistributed to main actors following active rules. 

All the fees are controlled by the community via votes on RibonDAO. These values are initial suggestions based on our experience and market knowledge. 


Conclusion

We believe that the donation platform of the future is decentralized and we want to be that platform. 

Ribon started as a centralized company to reach product market fit and generate great network effects, and now it’s in the path of progressive decentralization by building a decentralized platform where all participants can benefit from doing their part. Over time our main objective is to have the community take over the governance of the platform and set the incentives and rewards that they think is right. 

Instead of inviting friends personally or making a fundraising campaign, a person that wants to increase donations to charity can simply be a promoter in Ribon. We bring smart contracts and integrations to do that work. They use the power of the good feeling and reciprocity around making a donation sponsored by another donor to spread good deeds in peoples routine, and we believe that could be a game changer in the philanthropic ecosystem. 

Ribon could be one of the key actors that will help end extreme poverty in the world before 2030, bring crypto to the masses, and bring a lot of happiness to humanity in the process. 


References 

‘Does Giving Make You Happier? Or Do Happier People Give?’ by Utah State University (College of Science): 
https://www.usu.edu/science/discovery/fall-2017-stories/does-giving-make-you-happy#:~:text=A%20 2010%20study%20found%20%E2%80%9Cpeople,we%20freely%20choose%20to%20give.

‘The warm glow of kindness is real, even when there’s nothing in it for you’ by ScienceDaily:
https://www.sciencedaily.com/releases/2018/09/180927105720.htm

‘Measuring the World’s Most Generous Countries’ by U.S News: 
https://www.usnews.com/news/best-countries/articles/2019-12-20/the-worlds-most-generous-countrie s 

Estimate based on the size of the American donation market and world and American 2018 GDP. According to Giving USA 2019, Americans gave $427.71 billion to charities in 2018:
https://data.worldbank.org/indicator/NY.GDP.MKTP.CD 

‘The Ultimate List Of Charitable Giving Statistics For 2018’ by NP Source:
https://www.google.com/url?q=https://nonprofitssource.com/online-giving-statistics/&sa=D&source= editors&ust=1623341446622000&usg=AOvVaw1ltm6DbPP5PC84w4mq1acc 

‘Advertising media owners revenue worldwide from 2012 to 2024 (in billion U.S. dollars)’ by Statista: 
https://www.statista.com/statistics/236943/global-advertising-spending/

‘New Report Estimates SDG Financing Needs for 59 of the World’s Lowest-Income Countries’ by Sustainable Development Solutions Network: 
https://www.unsdsn.org/new-report-estimates-sdg-financing-needs-for-59-of-the-worlds-lowest-incom e-countries#:~:text=Achieving%20the%20SDGs%20in%20low,billion%20per%20year%20through% 202030. 

‘Brazilian socialtech Ribon is recognized among the most innovative in the world by the Bill and Melinda Gates Foundation’ by LABS: 
https://labsnews.com/en/articles/technology/brazilian-socialtech-ribon-is-recognized-by-gates-foundat ion/ 

‘Engaging the Next Generation of Philanthropists’ by CCS Fundraising:
https://ccsfundraising.com/engaging-the-next-generation-of-philanthropists/

Ribon’s Official Website: 
https://ribon.io/en/

Ribon App: 
https://app.ribon.io/

‘The Maker Protocol: MakerDAO’s Multi-Collateral Dai (MCD) System’ by MakerDAO:
https://makerdao.com/pt-BR/whitepaper/#introduction 

‘Uniswap v2 Core’ by UniSAWP: 
https://uniswap.org/whitepaper-v3.pdf

‘Balancer: Automated portfolio manager and trading platform’ by Balancer:
https://balancer.fi/ 

‘USDC: the world’s leading digital dollar stablecoin’ by Circle:
https://www.circle.com/en/usdc

‘Costs of Fundraising Cost’ by Affinity Resources: 
https://www.affinityresources.com/pgs/articles/fundraising_costs.html

‘Yes, Responsible Companies Perform Better’ by Shel Horowitz: 
https://inbusinessphx.com/in-business/yes-responsible-companies-perform-better#.YMem0flKiUk

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

Leave a Reply