| <!doctype html> |
| <html> |
| <head> |
| <title>Apache CloudStack: Open Source Cloud Computing</title> |
| |
| <meta name="description" content="CloudStack is open source cloud computing software for creating, managing, and deploying infrastructure cloud services"> |
| |
| <meta itemprop="name" content="Apache Cloudstack"> |
| <meta itemprop="description" content="CloudStack is open source cloud computing software for creating, managing, and deploying infrastructure cloud services"> |
| <meta itemprop="image" content="https://cloudstack.apache.org/images/monkey-144.png"> |
| |
| <meta property="og:title" content="Apache Cloudstack"> |
| <meta property="og:description" content="CloudStack is open source cloud computing software for creating, managing, and deploying infrastructure cloud services"> |
| <meta property="og:site_name" content="Apache Cloudstack"/> |
| <meta property="og:image" content="https://cloudstack.apache.org/images/monkey-144.png"> |
| |
| <meta name="twitter:card" content="summary"> |
| <meta name="twitter:title" content="Apache Cloudstack"> |
| <meta name="twitter:description" content="CloudStack is open source cloud computing software for creating, managing, and deploying infrastructure cloud services"> |
| <meta name="twitter:image:src" content="https://cloudstack.apache.org/images/monkey-144.png"> |
| |
| <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=1"> |
| |
| <link href="stylesheets/bootstrap.css" rel="stylesheet" media="screen"> |
| <link href="stylesheets/font-awesome.css" rel="stylesheet"> |
| <link href="stylesheets/bootswatch.min.css" rel="stylesheet"> |
| <link href="stylesheets/custom.css" rel="stylesheet"> |
| |
| <link rel="shortcut icon" href="images/favicon.ico"> |
| <link rel="icon" href="images/favicon.ico"> |
| |
| <!-- Commenting out this template stuff until we figure out how to make it work with middleman |
| {% if headers.atom %} |
| <link rel="alternate" href="{{ headers.atom.url }}" |
| type="application/atom+xml" title="{{ headers.atom.title }}" /> |
| {% endif %} |
| |
| {% if headers.base %}<base href="{{ headers.base }}" />{% endif %} |
| --> |
| <!-- {% if headers.notice %}{{ headers.notice }}{% endif %} --> |
| <!-- Twitter Bootstrap and jQuery after this line. --> |
| <script src="https://code.jquery.com/jquery-latest.js"></script> |
| <script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> |
| <script> |
| $('.dropdown-toggle').dropdown(); |
| $('.nav-collapse').collapse(); |
| </script> |
| </head> |
| <body> |
| <div class="navbar navbar-default navbar-fixed-top"> |
| <div class="container"> |
| <div class="navbar-header"> |
| <a href="index.html" class="navbar-brand"><img class="" src="images/new-logo-sm.png" style="width: 200px" alt="Apache Cloudstack"></a> |
| <button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target="#navbar-main"> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| </div> |
| <div class="navbar-collapse collapse" id="navbar-main"> |
| <ul class="nav navbar-nav"> |
| <li class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#" id="about">About <span class="caret"></span></a> |
| <ul class="dropdown-menu" aria-labelledby="about"> |
| <li><a tabindex="-1" href="about.html">About</a></li> |
| <li class="divider"></li> |
| <li><a tabindex="-1" href="https://blogs.apache.org/cloudstack/" target="_blank">Blog<span class="glyphicon glyphicon-share-alt pull-right"></span></a></li> |
| <li><a tabindex="-1" href="history.html">History</a></li> |
| <li><a tabindex="-1" href="features.html">Features</a></li> |
| <li><a tabindex="-1" href="cloudstack-faq.html">FAQ</a></li> |
| <li><a tabindex="-1" href="who.html">Who We Are</a></li> |
| <li><a tabindex="-1" href="security.html">Security</a></li> |
| </ul> |
| </li> |
| <li class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#" id="community">Community <span class="caret"></span></a> |
| <ul class="dropdown-menu" aria-labelledby="community"> |
| <li><a tabindex="-1" href="contribute.html">Get Involved</a></li> |
| <li><a tabindex="-1" href="developers.html">Developers</a></li> |
| <li><a tabindex="-1" href="mailing-lists.html">Mailing Lists</a></li> |
| <li><a tabindex="-1" href="http://cloudstackcollab.org/" target="_blank">Events & Meetups <span class="glyphicon glyphicon-share-alt pull-right"></span></a></li> |
| </ul> |
| </li> |
| <li class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#" id="users">Users <span class="caret"></span></a> |
| <ul class="dropdown-menu" aria-labelledby="users"> |
| <li><a tabindex="-1" href="users.html">Known Users</a></li> |
| <li><a tabindex="-1" href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/Case+Studies" target="_blank">Case Studies <span class="glyphicon glyphicon-share-alt pull-right"></span></a></li> |
| <li><a tabindex="-1" href="survey.html">Take Survey</a></li> |
| </ul> |
| </li> |
| <li class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#" id="docs">Documentation <span class="caret"></span></a> |
| <ul class="dropdown-menu" aria-labelledby="docs"> |
| <li><a tabindex="-1" href="http://docs.cloudstack.apache.org" target="_blank">Getting Started Docs</span></a></li> |
| <li><a tabindex="-1" href="http://docs.cloudstack.apache.org/projects/cloudstack-installation" target="_blank">Installation Docs</a></li> |
| <li><a tabindex="-1" href="http://docs.cloudstack.apache.org/projects/cloudstack-administration" target="_blank">Administration Docs</a></li> |
| <li><a tabindex="-1" href="http://docs.cloudstack.apache.org/projects/cloudstack-release-notes" target="_blank">Release Notes</a></li> |
| <li><a tabindex="-1" href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/Home" target="_blank">Wiki</a></li> |
| <li><a tabindex="-1" href="https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+Books" target="_blank">Books</a></li> |
| <li><a tabindex="-1" href="api.html">API Documentation</a></li> |
| </ul> |
| </li> |
| <li class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#" id="download">Download <span class="caret"></span></a> |
| <ul class="dropdown-menu" aria-labelledby="download"> |
| <li><a tabindex="-1" href="downloads.html">CloudStack Releases</a></li> |
| <li><a tabindex="-1" href="downloads.html#cloudmonkey">CloudMonkey</a></li> |
| <li><a tabindex="-1" href="archives.html">Release Archive</a></li> |
| </ul> |
| </li> |
| <li class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#" id="apache">Apache <span class="caret"></span></a> |
| <ul class="dropdown-menu" aria-labelledby="apache"> |
| <li><a tabindex="-1" href="http://apache.org">Apache Software Foundation</a></li> |
| <li><a tabindex="-1" href="http://www.apache.org/licenses/">License</a></li> |
| <li><a tabindex="-1" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> |
| <li><a tabindex="-1" href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <div class="container"> |
| <div class="bs-docs-section"> |
| <div class="row"> |
| |
| <div class="col-lg-12"> |
| |
| <div class="page-header"> |
| |
| <h1 id="indicators">Apache CloudStack: Project Bylaws</h1> |
| |
| </div> |
| |
| </div> |
| |
| </div> |
| |
| <h1 id="introduction">1. Introduction</h1> |
| |
| <p>1.1. This document defines the bylaws under which the Apache CloudStack project |
| operates. It defines the roles and responsibilities of the project, who may |
| vote, how voting works, how conflicts are resolved and specifies the rules for |
| specific project actions.</p> |
| |
| <p>1.2. CloudStack is a project of the Apache Software Foundation. The foundation |
| holds the trademark on the name "CloudStack" and copyright on Apache code |
| including the code in the CloudStack codebase. The foundation FAQ explains the |
| operation and background of the foundation.</p> |
| |
| <p>1.3. CloudStack operates under a set of principles known collectively as the |
| "Apache Way". Those principles are: Transparency, consensus, non-affiliation, |
| respect for fellow developers, and meritocracy, in no specific order.</p> |
| |
| <h1 id="roles-and-responsibilities">2. Roles and Responsibilities</h1> |
| |
| <p>Apache projects define a set of roles with associated rights and |
| responsibilities. These roles govern what tasks an individual may perform |
| within the project. The roles are defined in the following sections:</p> |
| |
| <p>2.1. Users</p> |
| |
| <p>The most important participants in the project are people who use our software. |
| Users can contribute to the Apache projects by providing feedback to developers |
| in the form of bug reports and feature suggestions. As well, users can |
| participate in the Apache community by helping other users on mailing lists and |
| user support forums. Users who participate in the project through any mechanism |
| are considered to be Contributors.</p> |
| |
| <p>2.2. Contributors</p> |
| |
| <p>Contributors are all of the volunteers who are contributing time, code, |
| documentation, or resources to the CloudStack Project. Contributions are not |
| just code, but can be any combination of documentation, testing, user support, |
| code, code reviews, bug reporting, community organizing, project marketing, or |
| numerous other activities that help promote and improve the Apache CloudStack |
| project and community.</p> |
| |
| <p>A Contributor that makes sustained, welcome contributions to the project may be |
| invited to become a Committer by the PMC. The invitation will be at the |
| discretion of a supporting PMC member.</p> |
| |
| <p>2.3. Committers</p> |
| |
| <p>The project's Committers are responsible for the project's technical |
| management. Committers have access to all project source control repositories. |
| Committers may cast binding votes on any technical discussion regarding the |
| project (or any sub-project).</p> |
| |
| <p>2.3.1. Committer access is by invitation only and must be approved by a lazy |
| consensus of the active PMC members.</p> |
| |
| <p>2.3.2. All Apache Committers are required to have a signed Individual |
| Contributor License Agreement (ICLA) on file with the Apache Software |
| Foundation. There is a Committer FAQ which provides more details on the |
| requirements for Committers at Apache.</p> |
| |
| <p>2.3.3. A Committer who makes a sustained contribution to the project may be |
| invited by the PMC to become a member of the PMC, after approval of the PMC.</p> |
| |
| <p>2.4. Project Management Committee</p> |
| |
| <p>The Project Management Committee (PMC) for Apache CloudStack is responsible to |
| the board and the ASF for the management and oversight of the Apache CloudStack |
| codebase.</p> |
| |
| <p>2.4.1. The responsibilities of the PMC include:</p> |
| |
| <p>2.4.1.1. Fostering, supporting and growing the project's community.</p> |
| |
| <p>2.4.1.2. Deciding what is distributed as products of the Apache CloudStack |
| project. In particular all releases must be approved by the PMC.</p> |
| |
| <p>2.4.1.3. Maintaining the project's shared resources, including the codebase |
| repository, mailing lists, websites.</p> |
| |
| <p>2.4.1.4. Speaking on behalf of the project.</p> |
| |
| <p>2.4.1.5. Resolving license disputes regarding products of the project.</p> |
| |
| <p>2.4.1.6. Nominating new PMC members and committers.</p> |
| |
| <p>2.4.1.7. Maintaining these bylaws and other guidelines of the project.</p> |
| |
| <p>2.4.1.8. Managing and protecting the project's trademarks and brand.</p> |
| |
| <p>2.4.2. Membership of the PMC is by invitation only and must be approved by a |
| lazy consensus of active PMC members.</p> |
| |
| <p>2.4.3. A PMC member is considered "emeritus" by their own declaration. An |
| emeritus member may request reinstatement to the PMC. Such reinstatement is |
| subject to lazy consensus of the active PMC members.</p> |
| |
| <p>2.4.4. "Active PMC members" are all non-emeritus PMC members.</p> |
| |
| <p>2.4.4. The chair of the PMC is appointed by the ASF board. The chair is an |
| office holder of the Apache Software Foundation (Vice President, Apache |
| CloudStack) and has primary responsibility to the board for the management of |
| the projects within the scope of the CloudStack PMC. The chair reports to the |
| board quarterly on developments within the CloudStack project. The chair must |
| be an active PMC member.</p> |
| |
| <p>2.4.5. If the current chair of the PMC resigns, or the term of the current |
| chair expires, the PMC will attempt to reach consensus on a new chair through |
| discussion, confirming that consensus via a vote to recommend a new chair using |
| a lazy 2/3 majority voting method. In the case that consensus is not achieved, |
| the PMC will vote for a chair using Single Transferable Vote (STV) voting. Due |
| to the fact that the discussions are about specific individuals, this vote |
| would be held on the cloudstack-private mailing list. The decision must be |
| ratified by the Apache board.</p> |
| |
| <p>2.4.6. The role of PMC chair will have a one year term. The intention of this |
| term is to allow for a rotation of the role amongst the PMC members. This |
| intention does not prohibit the PMC from selecting the same chair to serve |
| consecutive terms.</p> |
| |
| <h1 id="decision-making">3. Decision Making</h1> |
| |
| <p>This section defines how voting is performed, the types of approvals, and which |
| types of decision require which type of approval.</p> |
| |
| <p>3.1. Voting</p> |
| |
| <p>3.1.1. Decisions regarding the project are made by votes on the primary project |
| development mailing list (dev@cloudstack.apache.org). Where necessary, PMC |
| voting may take place on the private CloudStack PMC mailing list. Votes are |
| clearly indicated by subject line starting with [VOTE]. Votes may contain |
| multiple items for approval and these should be clearly separated. Voting is |
| carried out by replying to the vote mail.</p> |
| |
| <p>3.1.2. Voting may take four flavors:</p> |
| |
| <p>3.1.2.1. +1 "Yes," "Agree," or "the action should be performed." In general, |
| this vote also indicates a willingness on the behalf of the voter in "making it |
| happen"</p> |
| |
| <p>3.1.2.2. +0 This vote indicates a willingness for the action under |
| consideration to go ahead. The voter, however will not be able to help.</p> |
| |
| <p>3.1.2.3. -0 This vote indicates that the voter does not, in general, agree |
| with the proposed action but is not concerned enough to prevent the action |
| going ahead.</p> |
| |
| <p>3.1.2.4. -1 This is a negative vote. On issues where consensus is required, |
| this vote counts as a veto if binding. All vetoes must contain an explanation |
| of why the veto is appropriate. Vetoes with no explanation are void. It may |
| also be appropriate for a -1 vote to include an alternative course of action.</p> |
| |
| <p>3.1.3. All participants in the CloudStack project are encouraged to show their |
| agreement with or against a particular action by voting. For technical |
| decisions, only the votes of active committers are binding. Non-binding votes |
| are still useful for those with binding votes to understand the perception of |
| an action in the wider CloudStack community. For PMC decisions, only the votes |
| of PMC members are binding.</p> |
| |
| <p>3.1.4. Voting can also be applied to changes made to the CloudStack codebase. |
| These typically take the form of a veto (-1) in reply to the commit message |
| sent when the commit is made.</p> |
| |
| <p>3.1.5. Non-binding -1 votes are not considered to be vetos for any decision.</p> |
| |
| <p>3.2. Approvals</p> |
| |
| <p>There are three types of approvals that can be sought. Section 3.4 describes |
| actions and types of approvals needed for each action.</p> |
| |
| <p>3.2.1. Lazy Consensus - Lazy consensus requires 3 binding +1 votes and no |
| binding -1 votes.</p> |
| |
| <p>3.2.2. Lazy Majority - A lazy majority vote requires 3 binding +1 votes and |
| more binding +1 votes than binding -1 votes.</p> |
| |
| <p>3.2.3. Lazy 2/3 Majority - Lazy 2/3 majority votes requires at least 3 binding |
| votes and twice as many binding +1 votes as binding -1 votes.</p> |
| |
| <p>3.3. Vetoes</p> |
| |
| <p>3.3.1. Vetoes are only possible in a lazy consensus vote.</p> |
| |
| <p>3.3.2. A valid, binding veto cannot be overruled. If a veto is cast, it must be |
| accompanied by a valid reason explaining the reasons for the veto. The validity |
| of a veto, if challenged, can be confirmed by anyone who has a binding vote. |
| This does not necessarily signify agreement with the veto - merely that the |
| veto is valid.</p> |
| |
| <p>3.3.3. If you disagree with a valid veto, you must lobby the person casting the |
| veto to withdraw their veto. If a veto is not withdrawn, any action that has |
| been vetoed must be reversed in a timely manner.</p> |
| |
| <p>3.4. Actions</p> |
| |
| <p>This section describes the various actions which are undertaken within the |
| project, the roles that have the right to start a vote on the action, the |
| corresponding approval required for that action and those who have binding |
| votes over the action.</p> |
| |
| <p>3.4.1. Technical Decisions</p> |
| |
| <p>A technical decision is any decision that involves changes to the source code |
| that we distribute in our official releases.</p> |
| |
| <p>Technical decisions should normally be made by the entire community using |
| discussion-lead consensus gathering, and not through formal voting.</p> |
| |
| <p>Technical decisions must be made on the project development mailing list.</p> |
| |
| <p>During the consensus gathering process, technical decisions may be vetoed by |
| any Committer with a valid reason.</p> |
| |
| <p>If a formal vote is started for a technical decision, the vote will be held as |
| a lazy consensus of active committers.</p> |
| |
| <p>Any user, contributor, committer, or PMC member can initiate a technical |
| decision making process.</p> |
| |
| <p>3.4.2. Non-Technical Decisions</p> |
| |
| <p>A non-technical decisions is any decision that does not involve changes to the |
| source code that we distribute in our official releases (excluding questions of |
| trademark usage).</p> |
| |
| <p>Non-technical decisions should normally be made by the entire community using |
| discussion-lead consensus-building, and not through formal voting.</p> |
| |
| <p>Non-technical decisions can be made on whichever project mailing list is most |
| appropriate.</p> |
| |
| <p>Non-technical decisions cannot be vetoed, but if there is strong opposition |
| a formal vote can be used to resolve the dispute.</p> |
| |
| <p>If a formal vote is started for a non-technical decision, the vote will be held |
| as a lazy 2/3 majority of active committers.</p> |
| |
| <p>Any user, contributor, committer, or PMC member can initiate a non-technical |
| decision making process.</p> |
| |
| <p>3.4.3. Release Plan</p> |
| |
| <p>Defines the timetable and work items for a release. The plan also nominates a |
| Release Manager.</p> |
| |
| <p>A lazy majority of active committers is required for approval.</p> |
| |
| <p>Any active committer or PMC member may call a vote. The vote must occur on the |
| project development mailing list.</p> |
| |
| <p>3.4.4. Product Release</p> |
| |
| <p>When a release of one of the project's products is ready, a vote is required to |
| accept the release as an official release of the project.</p> |
| |
| <p>Lazy Majority of active PMC members is required for approval.</p> |
| |
| <p>Any active committer or PMC member may call a vote. The vote must occur on the |
| project development mailing list.</p> |
| |
| <p>3.4.5. Adoption of New Codebase</p> |
| |
| <p>When the codebase for an existing, released product is to be replaced with an |
| alternative codebase. If such a vote fails to gain approval, the existing code |
| base will continue.</p> |
| |
| <p>This also covers the creation of new sub-projects within the project.</p> |
| |
| <p>Lazy 2/3 majority of active PMC members.</p> |
| |
| <p>Any active committer or PMC member may call a vote. The vote must occur on the |
| project development mailing list.</p> |
| |
| <p>3.4.6. New Committer</p> |
| |
| <p>When a new committer is proposed for the project.</p> |
| |
| <p>Lazy consensus of active PMC members.</p> |
| |
| <p>Any active PMC member may call a vote. The vote must occur on the PMC private |
| mailing list.</p> |
| |
| <p>3.4.7. New PMC Member</p> |
| |
| <p>When a committer is proposed for the PMC.</p> |
| |
| <p>Lazy consensus of active PMC members.</p> |
| |
| <p>Any active PMC member may call a vote. The vote must occur on the PMC private |
| mailing list.</p> |
| |
| <p>3.4.8. Committer Removal</p> |
| |
| <p>When removal of commit privileges is sought. Note: Such actions will also be |
| referred to the ASF board by the PMC chair</p> |
| |
| <p>Lazy 2/3 majority of active PMC members (excluding the committer in question if |
| a member of the PMC).</p> |
| |
| <p>Any active PMC member may call a vote. The vote must occur on the PMC private |
| mailing list.</p> |
| |
| <p>3.4.9. PMC Member Removal</p> |
| |
| <p>When removal of a PMC member is sought. Note: Such actions will also be |
| referred to the ASF board by the PMC chair.</p> |
| |
| <p>Lazy 2/3 majority of active PMC members (excluding the member in question)</p> |
| |
| <p>Any active PMC member may call a vote. The vote must occur on the PMC private |
| mailing list.</p> |
| |
| <p>3.4.10. Modifying Bylaws</p> |
| |
| <p>Modifying this document.</p> |
| |
| <p>Lazy majority of active PMC members</p> |
| |
| <p>Any active committer or PMC member may call a vote. The vote must occur on the |
| project development mailing list.</p> |
| |
| <p>3.4.11. Trademark Usage Approvals</p> |
| |
| <p>Our project maintains a formal Trademark Usage Guidelines document, which |
| serves as a additive reference to the Apache Software Foundation's trademark |
| policies. The Apache CloudStack PMC has had approval authority delegated to it |
| for requests from third parties to use our trademarks. It is the PMC's |
| responsibility to provide these approvals, and to ensure that any requests |
| are in compliance with both the project and the foundation's trademark |
| usage policies.</p> |
| |
| <p>The CloudStack Trademark Guidelines specify how a requestor is expected to |
| request permission for usage of the trademarks.</p> |
| |
| <p>The process of approval will typically be as follows:</p> |
| |
| <ul> |
| <li>A request is made that includes the required information for the PMC to make |
| a decision.</li> |
| <li>A PMC member reviews the request and provides an initial acknowledgement |
| response to the requester.</li> |
| <li>If no PMC member raises a concern after 72 hours, the requester can assume |
| approval.</li> |
| </ul> |
| |
| <p>In situations where a concern is raised, the PMC member is expected inform the |
| requster that there is some discussion that needs to be had prior to approval |
| from the PMC. This notice serves to end the assumed approval after 72 hours.</p> |
| |
| <p>After raising a concern, the PMC member in question is required to forward the |
| concern to private@cloudstack.apache.org, explaining the issue that they have |
| with the request. The use of private@cloudstack.apache.org for discussing the |
| request is to allow the PMC to deliberate without confusing the requester, and |
| to ensure that a formal approval or denial is clear at the end of the |
| discusion.</p> |
| |
| <p>The PMC will then attempt to achieve consensus on how the request for approval |
| will be answered. The requester may be asked for more information to help the |
| PMC make a decision, may be asked to make a change to the proposal in order to |
| gain approval, or may have their request be denied.</p> |
| |
| <p>If consensus is not achieved within the PMC by discussion, then a formal VOTE |
| can be called as a Lazy 2/3 majority of voting PMC members.</p> |
| |
| <p>Votes related to trademark usage approvals may be performed on the |
| private@cloudstack.apache.org mailing list.</p> |
| |
| <p>3.5. Voting Timeframes</p> |
| |
| <p>Formal votes are open for a period of at least 72 hours to allow all active |
| voters time to consider the vote.</p> |
| |
| |
| <footer> |
| <p>Copyright © 2017 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br/> |
| "Apache", "CloudStack", "Apache CloudStack", the Apache CloudStack logo, the Apache CloudStack Cloud Monkey logo and the Apache feather logos are registered trademarks or trademarks of The Apache Software Foundation.</p> |
| <p><a href="/trademark-guidelines.html">Apache CloudStack Trademark Usage</a> - <a href="/bylaws.html">Apache CloudStack Community ByLaws</a></p> |
| </footer> |
| |
| </div> |
| </div> |
| </div> |
| </body> |
| </html> |