You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3111 lines
33 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: GameStateService</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: GameStateService</h1>
<section>
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>GameStateService<span class="signature">()</span><span class="type-signature"></span></h2>
<div class="class-description">Singleton service for managing the state of the game.</div>
</header>
<article>
<div class="container-overview">
<h2>Constructor</h2>
<h4 class="name" id="GameStateService"><span class="type-signature"></span>new GameStateService<span class="signature">()</span><span class="type-signature"></span></h4>
<div class="description">
Construct a new game service. Initialize any internal states.
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line137">line 137</a>
</li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Classes</h3>
<dl>
<dt><a href="GameStateService.html">GameStateService</a></dt>
<dd></dd>
</dl>
<h3 class="subsection-title">Members</h3>
<h4 class="name" id="current_turn_had_missile_attempt"><span class="type-signature"></span>current_turn_had_missile_attempt<span class="type-signature"> :boolean</span></h4>
<div class="description">
True if, during the current turn, the user has tried to fire a missile.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">boolean</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line126">line 126</a>
</li></ul></dd>
</dl>
<h4 class="name" id="game_state_change_listeners"><span class="type-signature"></span>game_state_change_listeners<span class="type-signature"> :Array.&lt;function()></span></h4>
<div class="description">
Array of functions that are called when the game state changes.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">Array.&lt;function()></span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line132">line 132</a>
</li></ul></dd>
</dl>
<h4 class="name" id="post_player_change_state"><span class="type-signature"></span>post_player_change_state<span class="type-signature"> :undefined|string</span></h4>
<div class="description">
If the current state is the PromptPlayerChange, then this is
the state that we should move to next.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">undefined</span>
|
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line120">line 120</a>
</li></ul></dd>
</dl>
<h3 class="subsection-title">Methods</h3>
<h4 class="name" id="advance_game_state"><span class="type-signature"></span>advance_game_state<span class="signature">()</span><span class="type-signature"></span></h4>
<div class="description">
responsible for advancing the game state
will be consisting of
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line279">line 279</a>
</li></ul></dd>
</dl>
<h4 class="name" id="attempt_missile_fire"><span class="type-signature"></span>attempt_missile_fire<span class="signature">(coords)</span><span class="type-signature"> &rarr; {boolean}</span></h4>
<div class="description">
Attempt to fire a missile at the current opponent at the given coordinates.
The coordinates should be an array of [row_index, column_index] where the missile should fire.
Returns true if the missile hit an undamaged cell of a ship.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>coords</code></td>
<td class="type">
<span class="param-type">Array.&lt;number></span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line388">line 388</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">boolean</span>
</dd>
</dl>
<h5>Example</h5>
<pre class="prettyprint"><code>If I want to fire a missile at row 5 column 7, then:
game_service.attempt_missile_fire([5, 7])</code></pre>
<h4 class="name" id="get_covered_cells"><span class="type-signature"></span>get_covered_cells<span class="signature">(coords_one, coords_two)</span><span class="type-signature"> &rarr; {Array.&lt;Array.&lt;number>>}</span></h4>
<div class="description">
Get an array of cell coordinates that are covered by a ship that spans
the given coordinates.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>coords_one</code></td>
<td class="type">
<span class="param-type">Array.&lt;number></span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>coords_two</code></td>
<td class="type">
<span class="param-type">Array.&lt;number></span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line496">line 496</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Array.&lt;Array.&lt;number>></span>
</dd>
</dl>
<h5>Example</h5>
<pre class="prettyprint"><code>If a ship goes from row 1 column 1 to row 4 column 1, then I can get
the coordinates of all cells covered by that ship using:
game_service.get_covered_cells([1,1], [4,1])
Which would return [[1,1], [2,1], [3,1], [4,1]].</code></pre>
<h4 class="name" id="get_current_opponent"><span class="type-signature"></span>get_current_opponent<span class="signature">()</span><span class="type-signature"> &rarr; {string}</span></h4>
<div class="description">
Get the player who is NOT the focus of the current game state.
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line166">line 166</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">string</span>
</dd>
</dl>
<h4 class="name" id="get_current_opponent_state"><span class="type-signature"></span>get_current_opponent_state<span class="signature">()</span><span class="type-signature"> &rarr; {Array.&lt;Array.&lt;object>>}</span></h4>
<div class="description">
Get the state of the current opponent's board, as it should appear to the
current player. Note that the current player cannot see "ship" spaces, only
available, damaged, missed, or sunk.
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line186">line 186</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Array.&lt;Array.&lt;object>></span>
</dd>
</dl>
<h4 class="name" id="get_current_player"><span class="type-signature"></span>get_current_player<span class="signature">()</span><span class="type-signature"> &rarr; {string}</span></h4>
<div class="description">
Get the player who is the focus of the current game state.
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line158">line 158</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">string</span>
</dd>
</dl>
<h4 class="name" id="get_current_player_state"><span class="type-signature"></span>get_current_player_state<span class="signature">()</span><span class="type-signature"> &rarr; {Array.&lt;Array.&lt;object>>}</span></h4>
<div class="description">
Get the state of the current player's board, as it should appear to them.
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line174">line 174</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Array.&lt;Array.&lt;object>></span>
</dd>
</dl>
<h4 class="name" id="get_dimensions"><span class="type-signature"></span>get_dimensions<span class="signature">()</span><span class="type-signature"> &rarr; {Array.&lt;number>}</span></h4>
<div class="description">
Get the dimensions of the board as [rows, cols].
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line150">line 150</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Array.&lt;number></span>
</dd>
</dl>
<h5>Example</h5>
<pre class="prettyprint"><code>const [n_rows, n_cols] = game_service.get_dimensions()</code></pre>
<h4 class="name" id="get_game_state"><span class="type-signature"></span>get_game_state<span class="signature">()</span><span class="type-signature"> &rarr; {string}</span></h4>
<div class="description">
Get the current game state.
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line271">line 271</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">string</span>
</dd>
</dl>
<h4 class="name" id="get_other_player"><span class="type-signature"></span>get_other_player<span class="signature">(player)</span><span class="type-signature"> &rarr; {string}</span></h4>
<div class="description">
Returns the other player.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>player</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line632">line 632</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">string</span>
</dd>
</dl>
<h4 class="name" id="get_player_display"><span class="type-signature"></span>get_player_display<span class="signature">(player)</span><span class="type-signature"> &rarr; {string}</span></h4>
<div class="description">
Given a Player type, return the display value of that player.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>player</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line642">line 642</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">string</span>
</dd>
</dl>
<h4 class="name" id="get_player_victory_state"><span class="type-signature"></span>get_player_victory_state<span class="signature">()</span><span class="type-signature"> &rarr; {Array.&lt;Array.&lt;Array.&lt;object>>>}</span></h4>
<div class="description">
Get the states that should be shown on the victory screen.
First element is the winner's state, second element is the loser's state.
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line211">line 211</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Array.&lt;Array.&lt;Array.&lt;object>>></span>
</dd>
</dl>
<h4 class="name" id="get_possible_boats"><span class="type-signature"></span>get_possible_boats<span class="signature">()</span><span class="type-signature"> &rarr; {Array.&lt;string>}</span></h4>
<div class="description">
Given the number of boats set by the player (n_boats), return an array
of possible ShipTypes.
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line76">line 76</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Array.&lt;string></span>
</dd>
</dl>
<h4 class="name" id="get_ship_cells"><span class="type-signature"></span>get_ship_cells<span class="signature">(player)</span><span class="type-signature"> &rarr; {Array.&lt;number>}</span></h4>
<div class="description">
Get the coordinates of all cells that have ships in them, for the given player.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>player</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line588">line 588</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Array.&lt;number></span>
</dd>
</dl>
<h4 class="name" id="get_ship_entities"><span class="type-signature"></span>get_ship_entities<span class="signature">(player)</span><span class="type-signature"> &rarr; {Array.&lt;object>}</span></h4>
<div class="description">
Get an array of ship entities for the given player.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>player</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line652">line 652</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Array.&lt;object></span>
</dd>
</dl>
<h4 class="name" id="get_ship_length"><span class="type-signature"></span>get_ship_length<span class="signature">(ship_type)</span><span class="type-signature"> &rarr; {number}</span></h4>
<div class="description">
Get the number of cells the given ship type should occupy.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ship_type</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line575">line 575</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
<h4 class="name" id="get_winner"><span class="type-signature"></span>get_winner<span class="signature">()</span><span class="type-signature"> &rarr; {string|undefined}</span></h4>
<div class="description">
If there is a winner, this will return the Player that won.
If no winner has been decided yet, will return undefined.
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line605">line 605</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">string</span>
|
<span class="param-type">undefined</span>
</dd>
</dl>
<h4 class="name" id="on_state_change"><span class="type-signature"></span>on_state_change<span class="signature">(handler)</span><span class="type-signature"></span></h4>
<div class="description">
Register a handler to be called when the game state changes.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>handler</code></td>
<td class="type">
<span class="param-type">function</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line372">line 372</a>
</li></ul></dd>
</dl>
<h4 class="name" id="place_ship"><span class="type-signature"></span>place_ship<span class="signature">(ship_type, coords_one, coords_two)</span><span class="type-signature"></span></h4>
<div class="description">
Attempt to place a ship of the given type at the given coordinates.
Throws an InvalidShipPlacementError if the coordinates are invalid.
Coordinates should be [row_index, column_index] of either end of the ship.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ship_type</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>coords_one</code></td>
<td class="type">
<span class="param-type">Array.&lt;number></span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>coords_two</code></td>
<td class="type">
<span class="param-type">Array.&lt;number></span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line454">line 454</a>
</li></ul></dd>
</dl>
<h5>Example</h5>
<pre class="prettyprint"><code>If I am placing a 1x3 ship and I want it to be in row 3 column 2 horizontal
to row 3 column 4, then I would call:
game_service.place_ship(ShipType.x3, [3,2], [3,4])</code></pre>
<h4 class="name" id="validate_coordinates"><span class="type-signature"></span>validate_coordinates<span class="signature">(ship_type, coords_one, coords_two)</span><span class="type-signature"></span></h4>
<div class="description">
Validate the given coordinates for the given ship type.
Throws an InvalidShipPlacementError if the coordinates are invalid.
Coordinates should be [row_index, column_index] of either end of the ship.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ship_type</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>coords_one</code></td>
<td class="type">
<span class="param-type">Array.&lt;number></span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>coords_two</code></td>
<td class="type">
<span class="param-type">Array.&lt;number></span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="services_GameState.service.js.html">services/GameState.service.js</a>, <a href="services_GameState.service.js.html#line528">line 528</a>
</li></ul></dd>
</dl>
<h5>Example</h5>
<pre class="prettyprint"><code>If I am placing a 1x3 ship and I want it to be in row 3 column 2 horizontal
to row 3 column 4, then I would call:
game_service.validate_coordinates(ShipType.x3, [3,2], [3,4])</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-errors.html">errors</a></li><li><a href="module-lang.html">lang</a></li><li><a href="module-sounds.html">sounds</a></li><li><a href="module-util.html">util</a></li></ul><h3>Classes</h3><ul><li><a href="GameBoardComponent.html">GameBoardComponent</a></li><li><a href="GameStateService.html">GameStateService</a></li><li><a href="GridCellComponent.html">GridCellComponent</a></li><li><a href="module-errors.InvalidAdvanceStateError.html">InvalidAdvanceStateError</a></li><li><a href="module-errors.InvalidMissileFireAttemptError.html">InvalidMissileFireAttemptError</a></li><li><a href="module-errors.InvalidShipPlacementError.html">InvalidShipPlacementError</a></li><li><a href="module-sounds-Sound.html">Sound</a></li><li><a href="ScoreBoardComponent.html">ScoreBoardComponent</a></li><li><a href="TopLevelComponent.html">TopLevelComponent</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.5</a> on Sat Sep 12 2020 16:40:09 GMT-0500 (Central Daylight Time)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>