From 8c38a5529dbb9b7af0c08db959e4677685657a12 Mon Sep 17 00:00:00 2001
From: Dario Rekowski on RockPI
Date: Thu, 12 Sep 2019 11:15:47 +0000
Subject: [PATCH] adding db sql files and compiled code for tables
---
.gitmodules | 3 +
README.md | 51 +
bin/cake | 75 +
bin/cake.bat | 27 +
bin/cake.php | 12 +
composer.json | 53 +
composer.lock | 4332 +++++++++++++++++
db/address_types.sql | 6 +
db/operators.sql | 7 +
db/state_balances.sql | 7 +
db/state_created.sql | 10 +
db/state_group_addresses.sql | 7 +
db/state_group_relationships.sql | 7 +
db/state_groups.sql | 8 +
db/state_relationship_types.sql | 6 +
db/state_users.sql | 7 +
db/transaction_creations.sql | 10 +
db/transaction_group_addAddress.sql | 8 +
db/transaction_group_allowtrades.sql | 8 +
db/transaction_group_creates.sql | 9 +
db/transaction_send_coins.sql | 11 +
db/transaction_signatures.sql | 7 +
db/transaction_types.sql | 6 +
db/transactions.sql | 9 +
index.php | 16 +
mithril_client | 1 +
phpunit.xml.dist | 41 +
plugins/empty | 0
src/Application.php | 99 +
src/Console/Installer.php | 246 +
src/Controller/AddressTypesController.php | 106 +
src/Controller/AppController.php | 55 +
src/Controller/Component/empty | 0
src/Controller/ErrorController.php | 70 +
src/Controller/OperatorsController.php | 106 +
src/Controller/PagesController.php | 69 +
src/Controller/StateBalancesController.php | 111 +
src/Controller/StateCreatedController.php | 113 +
.../StateGroupAddressesController.php | 113 +
.../StateGroupRelationshipsController.php | 115 +
src/Controller/StateGroupsController.php | 111 +
.../StateRelationshipTypesController.php | 106 +
src/Controller/StateUsersController.php | 113 +
.../TransactionCreationsController.php | 113 +
.../TransactionGroupAddaddressController.php | 113 +
.../TransactionGroupAllowtradesController.php | 113 +
.../TransactionGroupCreatesController.php | 113 +
.../TransactionSendCoinsController.php | 115 +
.../TransactionSignaturesController.php | 111 +
src/Controller/TransactionTypesController.php | 106 +
src/Controller/TransactionsController.php | 113 +
src/Model/Behavior/empty | 0
src/Model/Entity/AddressType.php | 33 +
src/Model/Entity/Operator.php | 28 +
src/Model/Entity/StateBalance.php | 33 +
src/Model/Entity/StateCreated.php | 41 +
src/Model/Entity/StateGroup.php | 43 +
src/Model/Entity/StateGroupAddress.php | 35 +
src/Model/Entity/StateGroupRelationship.php | 37 +
src/Model/Entity/StateRelationshipType.php | 28 +
src/Model/Entity/StateUser.php | 43 +
src/Model/Entity/Transaction.php | 51 +
src/Model/Entity/TransactionCreation.php | 37 +
.../Entity/TransactionGroupAddaddres.php | 35 +
.../Entity/TransactionGroupAllowtrade.php | 35 +
src/Model/Entity/TransactionGroupCreate.php | 37 +
src/Model/Entity/TransactionSendCoin.php | 43 +
src/Model/Entity/TransactionSignature.php | 33 +
src/Model/Entity/TransactionType.php | 31 +
src/Model/Table/AddressTypesTable.php | 73 +
src/Model/Table/OperatorsTable.php | 79 +
src/Model/Table/StateBalancesTable.php | 81 +
src/Model/Table/StateCreatedTable.php | 96 +
src/Model/Table/StateGroupAddressesTable.php | 83 +
.../Table/StateGroupRelationshipsTable.php | 85 +
src/Model/Table/StateGroupsTable.php | 102 +
.../Table/StateRelationshipTypesTable.php | 63 +
src/Model/Table/StateUsersTable.php | 99 +
src/Model/Table/TransactionCreationsTable.php | 87 +
.../Table/TransactionGroupAddaddressTable.php | 83 +
.../TransactionGroupAllowtradesTable.php | 83 +
.../Table/TransactionGroupCreatesTable.php | 89 +
src/Model/Table/TransactionSendCoinsTable.php | 97 +
.../Table/TransactionSignaturesTable.php | 81 +
src/Model/Table/TransactionTypesTable.php | 69 +
src/Model/Table/TransactionsTable.php | 114 +
src/Shell/ConsoleShell.php | 81 +
src/Template/AddressTypes/add.ctp | 28 +
src/Template/AddressTypes/edit.ctp | 34 +
src/Template/AddressTypes/index.ctp | 53 +
src/Template/AddressTypes/view.ctp | 90 +
src/Template/Cell/empty | 1 +
src/Template/Element/Flash/default.ctp | 10 +
src/Template/Element/Flash/error.ctp | 6 +
src/Template/Element/Flash/success.ctp | 6 +
src/Template/Email/html/default.ctp | 20 +
src/Template/Email/text/default.ctp | 16 +
src/Template/Error/error400.ctp | 38 +
src/Template/Error/error500.ctp | 43 +
src/Template/Layout/Email/html/default.ctp | 24 +
src/Template/Layout/Email/text/default.ctp | 16 +
src/Template/Layout/ajax.ctp | 16 +
src/Template/Layout/default.ctp | 57 +
src/Template/Layout/error.ctp | 47 +
src/Template/Layout/rss/default.ctp | 11 +
src/Template/Operators/add.ctp | 24 +
src/Template/Operators/edit.ctp | 30 +
src/Template/Operators/index.ctp | 49 +
src/Template/Operators/view.ctp | 32 +
src/Template/Pages/home.ctp | 276 ++
src/Template/StateBalances/add.ctp | 26 +
src/Template/StateBalances/edit.ctp | 32 +
src/Template/StateBalances/index.ctp | 53 +
src/Template/StateBalances/view.ctp | 38 +
src/Template/StateCreated/add.ctp | 31 +
src/Template/StateCreated/edit.ctp | 37 +
src/Template/StateCreated/index.ctp | 61 +
src/Template/StateCreated/view.ctp | 52 +
src/Template/StateGroupAddresses/add.ctp | 28 +
src/Template/StateGroupAddresses/edit.ctp | 34 +
src/Template/StateGroupAddresses/index.ctp | 53 +
src/Template/StateGroupAddresses/view.ctp | 36 +
src/Template/StateGroupRelationships/add.ctp | 25 +
src/Template/StateGroupRelationships/edit.ctp | 31 +
.../StateGroupRelationships/index.ctp | 51 +
src/Template/StateGroupRelationships/view.ctp | 36 +
src/Template/StateGroups/add.ctp | 32 +
src/Template/StateGroups/edit.ctp | 38 +
src/Template/StateGroups/index.ctp | 57 +
src/Template/StateGroups/view.ctp | 152 +
src/Template/StateRelationshipTypes/add.ctp | 24 +
src/Template/StateRelationshipTypes/edit.ctp | 30 +
src/Template/StateRelationshipTypes/index.ctp | 49 +
src/Template/StateRelationshipTypes/view.ctp | 32 +
src/Template/StateUsers/add.ctp | 34 +
src/Template/StateUsers/edit.ctp | 40 +
src/Template/StateUsers/index.ctp | 59 +
src/Template/StateUsers/view.ctp | 164 +
src/Template/TransactionCreations/add.ctp | 29 +
src/Template/TransactionCreations/edit.ctp | 35 +
src/Template/TransactionCreations/index.ctp | 55 +
src/Template/TransactionCreations/view.ctp | 40 +
.../TransactionGroupAddaddress/add.ctp | 28 +
.../TransactionGroupAddaddress/edit.ctp | 34 +
.../TransactionGroupAddaddress/index.ctp | 53 +
.../TransactionGroupAddaddress/view.ctp | 36 +
.../TransactionGroupAllowtrades/add.ctp | 27 +
.../TransactionGroupAllowtrades/edit.ctp | 33 +
.../TransactionGroupAllowtrades/index.ctp | 53 +
.../TransactionGroupAllowtrades/view.ctp | 38 +
src/Template/TransactionGroupCreates/add.ctp | 29 +
src/Template/TransactionGroupCreates/edit.ctp | 35 +
.../TransactionGroupCreates/index.ctp | 55 +
src/Template/TransactionGroupCreates/view.ctp | 40 +
src/Template/TransactionSendCoins/add.ctp | 30 +
src/Template/TransactionSendCoins/edit.ctp | 36 +
src/Template/TransactionSendCoins/index.ctp | 57 +
src/Template/TransactionSendCoins/view.ctp | 44 +
src/Template/TransactionSignatures/add.ctp | 25 +
src/Template/TransactionSignatures/edit.ctp | 31 +
src/Template/TransactionSignatures/index.ctp | 49 +
src/Template/TransactionSignatures/view.ctp | 30 +
src/Template/TransactionTypes/add.ctp | 26 +
src/Template/TransactionTypes/edit.ctp | 32 +
src/Template/TransactionTypes/index.ctp | 51 +
src/Template/TransactionTypes/view.ctp | 63 +
src/Template/Transactions/add.ctp | 43 +
src/Template/Transactions/edit.ctp | 49 +
src/Template/Transactions/index.ctp | 69 +
src/Template/Transactions/view.ctp | 259 +
src/View/AjaxView.php | 49 +
src/View/AppView.php | 40 +
src/View/Cell/empty | 0
src/View/Helper/empty | 0
tests/TestCase/ApplicationTest.php | 84 +
tests/TestCase/Controller/Component/empty | 0
.../Controller/PagesControllerTest.php | 97 +
tests/TestCase/Model/Behavior/empty | 0
tests/TestCase/View/Helper/empty | 0
tests/bootstrap.php | 12 +
webroot/.htaccess | 5 +
webroot/css/base.css | 455 ++
webroot/css/home.css | 240 +
webroot/css/style.css | 524 ++
webroot/favicon.ico | Bin 0 -> 15086 bytes
webroot/font/cakedingbats-webfont.eot | Bin 0 -> 75538 bytes
webroot/font/cakedingbats-webfont.svg | 78 +
webroot/font/cakedingbats-webfont.ttf | Bin 0 -> 75412 bytes
webroot/font/cakedingbats-webfont.woff | Bin 0 -> 43484 bytes
webroot/font/cakedingbats-webfont.woff2 | Bin 0 -> 35456 bytes
webroot/img/cake-logo.png | Bin 0 -> 2683 bytes
webroot/img/cake.icon.png | Bin 0 -> 943 bytes
webroot/img/cake.logo.svg | 41 +
webroot/img/cake.power.gif | Bin 0 -> 201 bytes
webroot/index.php | 40 +
webroot/js/empty | 0
196 files changed, 14783 insertions(+)
create mode 100644 .gitmodules
create mode 100644 README.md
create mode 100755 bin/cake
create mode 100644 bin/cake.bat
create mode 100644 bin/cake.php
create mode 100644 composer.json
create mode 100644 composer.lock
create mode 100644 db/address_types.sql
create mode 100644 db/operators.sql
create mode 100644 db/state_balances.sql
create mode 100644 db/state_created.sql
create mode 100644 db/state_group_addresses.sql
create mode 100644 db/state_group_relationships.sql
create mode 100644 db/state_groups.sql
create mode 100644 db/state_relationship_types.sql
create mode 100644 db/state_users.sql
create mode 100644 db/transaction_creations.sql
create mode 100644 db/transaction_group_addAddress.sql
create mode 100644 db/transaction_group_allowtrades.sql
create mode 100644 db/transaction_group_creates.sql
create mode 100644 db/transaction_send_coins.sql
create mode 100644 db/transaction_signatures.sql
create mode 100644 db/transaction_types.sql
create mode 100644 db/transactions.sql
create mode 100644 index.php
create mode 160000 mithril_client
create mode 100644 phpunit.xml.dist
create mode 100644 plugins/empty
create mode 100644 src/Application.php
create mode 100644 src/Console/Installer.php
create mode 100644 src/Controller/AddressTypesController.php
create mode 100644 src/Controller/AppController.php
create mode 100644 src/Controller/Component/empty
create mode 100644 src/Controller/ErrorController.php
create mode 100644 src/Controller/OperatorsController.php
create mode 100644 src/Controller/PagesController.php
create mode 100644 src/Controller/StateBalancesController.php
create mode 100644 src/Controller/StateCreatedController.php
create mode 100644 src/Controller/StateGroupAddressesController.php
create mode 100644 src/Controller/StateGroupRelationshipsController.php
create mode 100644 src/Controller/StateGroupsController.php
create mode 100644 src/Controller/StateRelationshipTypesController.php
create mode 100644 src/Controller/StateUsersController.php
create mode 100644 src/Controller/TransactionCreationsController.php
create mode 100644 src/Controller/TransactionGroupAddaddressController.php
create mode 100644 src/Controller/TransactionGroupAllowtradesController.php
create mode 100644 src/Controller/TransactionGroupCreatesController.php
create mode 100644 src/Controller/TransactionSendCoinsController.php
create mode 100644 src/Controller/TransactionSignaturesController.php
create mode 100644 src/Controller/TransactionTypesController.php
create mode 100644 src/Controller/TransactionsController.php
create mode 100644 src/Model/Behavior/empty
create mode 100644 src/Model/Entity/AddressType.php
create mode 100644 src/Model/Entity/Operator.php
create mode 100644 src/Model/Entity/StateBalance.php
create mode 100644 src/Model/Entity/StateCreated.php
create mode 100644 src/Model/Entity/StateGroup.php
create mode 100644 src/Model/Entity/StateGroupAddress.php
create mode 100644 src/Model/Entity/StateGroupRelationship.php
create mode 100644 src/Model/Entity/StateRelationshipType.php
create mode 100644 src/Model/Entity/StateUser.php
create mode 100644 src/Model/Entity/Transaction.php
create mode 100644 src/Model/Entity/TransactionCreation.php
create mode 100644 src/Model/Entity/TransactionGroupAddaddres.php
create mode 100644 src/Model/Entity/TransactionGroupAllowtrade.php
create mode 100644 src/Model/Entity/TransactionGroupCreate.php
create mode 100644 src/Model/Entity/TransactionSendCoin.php
create mode 100644 src/Model/Entity/TransactionSignature.php
create mode 100644 src/Model/Entity/TransactionType.php
create mode 100644 src/Model/Table/AddressTypesTable.php
create mode 100644 src/Model/Table/OperatorsTable.php
create mode 100644 src/Model/Table/StateBalancesTable.php
create mode 100644 src/Model/Table/StateCreatedTable.php
create mode 100644 src/Model/Table/StateGroupAddressesTable.php
create mode 100644 src/Model/Table/StateGroupRelationshipsTable.php
create mode 100644 src/Model/Table/StateGroupsTable.php
create mode 100644 src/Model/Table/StateRelationshipTypesTable.php
create mode 100644 src/Model/Table/StateUsersTable.php
create mode 100644 src/Model/Table/TransactionCreationsTable.php
create mode 100644 src/Model/Table/TransactionGroupAddaddressTable.php
create mode 100644 src/Model/Table/TransactionGroupAllowtradesTable.php
create mode 100644 src/Model/Table/TransactionGroupCreatesTable.php
create mode 100644 src/Model/Table/TransactionSendCoinsTable.php
create mode 100644 src/Model/Table/TransactionSignaturesTable.php
create mode 100644 src/Model/Table/TransactionTypesTable.php
create mode 100644 src/Model/Table/TransactionsTable.php
create mode 100644 src/Shell/ConsoleShell.php
create mode 100644 src/Template/AddressTypes/add.ctp
create mode 100644 src/Template/AddressTypes/edit.ctp
create mode 100644 src/Template/AddressTypes/index.ctp
create mode 100644 src/Template/AddressTypes/view.ctp
create mode 100644 src/Template/Cell/empty
create mode 100644 src/Template/Element/Flash/default.ctp
create mode 100644 src/Template/Element/Flash/error.ctp
create mode 100644 src/Template/Element/Flash/success.ctp
create mode 100644 src/Template/Email/html/default.ctp
create mode 100644 src/Template/Email/text/default.ctp
create mode 100644 src/Template/Error/error400.ctp
create mode 100644 src/Template/Error/error500.ctp
create mode 100644 src/Template/Layout/Email/html/default.ctp
create mode 100644 src/Template/Layout/Email/text/default.ctp
create mode 100644 src/Template/Layout/ajax.ctp
create mode 100644 src/Template/Layout/default.ctp
create mode 100644 src/Template/Layout/error.ctp
create mode 100644 src/Template/Layout/rss/default.ctp
create mode 100644 src/Template/Operators/add.ctp
create mode 100644 src/Template/Operators/edit.ctp
create mode 100644 src/Template/Operators/index.ctp
create mode 100644 src/Template/Operators/view.ctp
create mode 100644 src/Template/Pages/home.ctp
create mode 100644 src/Template/StateBalances/add.ctp
create mode 100644 src/Template/StateBalances/edit.ctp
create mode 100644 src/Template/StateBalances/index.ctp
create mode 100644 src/Template/StateBalances/view.ctp
create mode 100644 src/Template/StateCreated/add.ctp
create mode 100644 src/Template/StateCreated/edit.ctp
create mode 100644 src/Template/StateCreated/index.ctp
create mode 100644 src/Template/StateCreated/view.ctp
create mode 100644 src/Template/StateGroupAddresses/add.ctp
create mode 100644 src/Template/StateGroupAddresses/edit.ctp
create mode 100644 src/Template/StateGroupAddresses/index.ctp
create mode 100644 src/Template/StateGroupAddresses/view.ctp
create mode 100644 src/Template/StateGroupRelationships/add.ctp
create mode 100644 src/Template/StateGroupRelationships/edit.ctp
create mode 100644 src/Template/StateGroupRelationships/index.ctp
create mode 100644 src/Template/StateGroupRelationships/view.ctp
create mode 100644 src/Template/StateGroups/add.ctp
create mode 100644 src/Template/StateGroups/edit.ctp
create mode 100644 src/Template/StateGroups/index.ctp
create mode 100644 src/Template/StateGroups/view.ctp
create mode 100644 src/Template/StateRelationshipTypes/add.ctp
create mode 100644 src/Template/StateRelationshipTypes/edit.ctp
create mode 100644 src/Template/StateRelationshipTypes/index.ctp
create mode 100644 src/Template/StateRelationshipTypes/view.ctp
create mode 100644 src/Template/StateUsers/add.ctp
create mode 100644 src/Template/StateUsers/edit.ctp
create mode 100644 src/Template/StateUsers/index.ctp
create mode 100644 src/Template/StateUsers/view.ctp
create mode 100644 src/Template/TransactionCreations/add.ctp
create mode 100644 src/Template/TransactionCreations/edit.ctp
create mode 100644 src/Template/TransactionCreations/index.ctp
create mode 100644 src/Template/TransactionCreations/view.ctp
create mode 100644 src/Template/TransactionGroupAddaddress/add.ctp
create mode 100644 src/Template/TransactionGroupAddaddress/edit.ctp
create mode 100644 src/Template/TransactionGroupAddaddress/index.ctp
create mode 100644 src/Template/TransactionGroupAddaddress/view.ctp
create mode 100644 src/Template/TransactionGroupAllowtrades/add.ctp
create mode 100644 src/Template/TransactionGroupAllowtrades/edit.ctp
create mode 100644 src/Template/TransactionGroupAllowtrades/index.ctp
create mode 100644 src/Template/TransactionGroupAllowtrades/view.ctp
create mode 100644 src/Template/TransactionGroupCreates/add.ctp
create mode 100644 src/Template/TransactionGroupCreates/edit.ctp
create mode 100644 src/Template/TransactionGroupCreates/index.ctp
create mode 100644 src/Template/TransactionGroupCreates/view.ctp
create mode 100644 src/Template/TransactionSendCoins/add.ctp
create mode 100644 src/Template/TransactionSendCoins/edit.ctp
create mode 100644 src/Template/TransactionSendCoins/index.ctp
create mode 100644 src/Template/TransactionSendCoins/view.ctp
create mode 100644 src/Template/TransactionSignatures/add.ctp
create mode 100644 src/Template/TransactionSignatures/edit.ctp
create mode 100644 src/Template/TransactionSignatures/index.ctp
create mode 100644 src/Template/TransactionSignatures/view.ctp
create mode 100644 src/Template/TransactionTypes/add.ctp
create mode 100644 src/Template/TransactionTypes/edit.ctp
create mode 100644 src/Template/TransactionTypes/index.ctp
create mode 100644 src/Template/TransactionTypes/view.ctp
create mode 100644 src/Template/Transactions/add.ctp
create mode 100644 src/Template/Transactions/edit.ctp
create mode 100644 src/Template/Transactions/index.ctp
create mode 100644 src/Template/Transactions/view.ctp
create mode 100644 src/View/AjaxView.php
create mode 100644 src/View/AppView.php
create mode 100644 src/View/Cell/empty
create mode 100644 src/View/Helper/empty
create mode 100644 tests/TestCase/ApplicationTest.php
create mode 100644 tests/TestCase/Controller/Component/empty
create mode 100644 tests/TestCase/Controller/PagesControllerTest.php
create mode 100644 tests/TestCase/Model/Behavior/empty
create mode 100644 tests/TestCase/View/Helper/empty
create mode 100644 tests/bootstrap.php
create mode 100644 webroot/.htaccess
create mode 100644 webroot/css/base.css
create mode 100644 webroot/css/home.css
create mode 100644 webroot/css/style.css
create mode 100644 webroot/favicon.ico
create mode 100644 webroot/font/cakedingbats-webfont.eot
create mode 100644 webroot/font/cakedingbats-webfont.svg
create mode 100644 webroot/font/cakedingbats-webfont.ttf
create mode 100644 webroot/font/cakedingbats-webfont.woff
create mode 100644 webroot/font/cakedingbats-webfont.woff2
create mode 100644 webroot/img/cake-logo.png
create mode 100644 webroot/img/cake.icon.png
create mode 100644 webroot/img/cake.logo.svg
create mode 100644 webroot/img/cake.power.gif
create mode 100644 webroot/index.php
create mode 100644 webroot/js/empty
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 000000000..88a463730
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "mithril_client"]
+ path = mithril_client
+ url = ssh://git@***REMOVED***/~/_mithril/gradido_mithrilJS_client
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..61f89d306
--- /dev/null
+++ b/README.md
@@ -0,0 +1,51 @@
+# CakePHP Application Skeleton
+
+[](https://travis-ci.org/cakephp/app)
+[](https://packagist.org/packages/cakephp/app)
+
+A skeleton for creating applications with [CakePHP](https://cakephp.org) 3.x.
+
+The framework source code can be found here: [cakephp/cakephp](https://github.com/cakephp/cakephp).
+
+## Installation
+
+1. Download [Composer](https://getcomposer.org/doc/00-intro.md) or update `composer self-update`.
+2. Run `php composer.phar create-project --prefer-dist cakephp/app [app_name]`.
+
+If Composer is installed globally, run
+
+```bash
+composer create-project --prefer-dist cakephp/app
+```
+
+In case you want to use a custom app dir name (e.g. `/myapp/`):
+
+```bash
+composer create-project --prefer-dist cakephp/app myapp
+```
+
+You can now either use your machine's webserver to view the default home page, or start
+up the built-in webserver with:
+
+```bash
+bin/cake server -p 8765
+```
+
+Then visit `http://localhost:8765` to see the welcome page.
+
+## Update
+
+Since this skeleton is a starting point for your application and various files
+would have been modified as per your needs, there isn't a way to provide
+automated upgrades, so you have to do any updates manually.
+
+## Configuration
+
+Read and edit `config/app.php` and setup the `'Datasources'` and any other
+configuration relevant for your application.
+
+## Layout
+
+The app skeleton uses a subset of [Foundation](http://foundation.zurb.com/) (v5) CSS
+framework by default. You can, however, replace it with any other library or
+custom styles.
diff --git a/bin/cake b/bin/cake
new file mode 100755
index 000000000..4b696c883
--- /dev/null
+++ b/bin/cake
@@ -0,0 +1,75 @@
+#!/usr/bin/env sh
+################################################################################
+#
+# Cake is a shell script for invoking CakePHP shell commands
+#
+# CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
+# Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
+#
+# Licensed under The MIT License
+# For full copyright and license information, please see the LICENSE.txt
+# Redistributions of files must retain the above copyright notice.
+#
+# @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
+# @link https://cakephp.org CakePHP(tm) Project
+# @since 1.2.0
+# @license https://opensource.org/licenses/mit-license.php MIT License
+#
+################################################################################
+
+# Canonicalize by following every symlink of the given name recursively
+canonicalize() {
+ NAME="$1"
+ if [ -f "$NAME" ]
+ then
+ DIR=$(dirname -- "$NAME")
+ NAME=$(cd -P "$DIR" > /dev/null && pwd -P)/$(basename -- "$NAME")
+ fi
+ while [ -h "$NAME" ]; do
+ DIR=$(dirname -- "$NAME")
+ SYM=$(readlink "$NAME")
+ NAME=$(cd "$DIR" > /dev/null && cd "$(dirname -- "$SYM")" > /dev/null && pwd)/$(basename -- "$SYM")
+ done
+ echo "$NAME"
+}
+
+# Find a CLI version of PHP
+findCliPhp() {
+ for TESTEXEC in php php-cli /usr/local/bin/php
+ do
+ SAPI=$(echo "= PHP_SAPI ?>" | $TESTEXEC 2>/dev/null)
+ if [ "$SAPI" = "cli" ]
+ then
+ echo $TESTEXEC
+ return
+ fi
+ done
+ echo "Failed to find a CLI version of PHP; falling back to system standard php executable" >&2
+ echo "php";
+}
+
+# If current path is a symlink, resolve to real path
+realname="$0"
+if [ -L "$realname" ]
+then
+ realname=$(readlink -f "$0")
+fi
+
+CONSOLE=$(dirname -- "$(canonicalize "$realname")")
+APP=$(dirname "$CONSOLE")
+
+# If your CLI PHP is somewhere that this doesn't find, you can define a PHP environment
+# variable with the correct path in it.
+if [ -z "$PHP" ]
+then
+ PHP=$(findCliPhp)
+fi
+
+if [ "$(basename "$realname")" != 'cake' ]
+then
+ exec "$PHP" "$CONSOLE"/cake.php "$(basename "$realname")" "$@"
+else
+ exec "$PHP" "$CONSOLE"/cake.php "$@"
+fi
+
+exit
diff --git a/bin/cake.bat b/bin/cake.bat
new file mode 100644
index 000000000..ad1378229
--- /dev/null
+++ b/bin/cake.bat
@@ -0,0 +1,27 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::
+:: Cake is a Windows batch script for invoking CakePHP shell commands
+::
+:: CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
+:: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
+::
+:: Licensed under The MIT License
+:: Redistributions of files must retain the above copyright notice.
+::
+:: @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
+:: @link https://cakephp.org CakePHP(tm) Project
+:: @since 2.0.0
+:: @license https://opensource.org/licenses/mit-license.php MIT License
+::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+
+@echo off
+
+SET app=%0
+SET lib=%~dp0
+
+php "%lib%cake.php" %*
+
+echo.
+
+exit /B %ERRORLEVEL%
diff --git a/bin/cake.php b/bin/cake.php
new file mode 100644
index 000000000..320ee3643
--- /dev/null
+++ b/bin/cake.php
@@ -0,0 +1,12 @@
+#!/usr/bin/php -q
+run($argv));
diff --git a/composer.json b/composer.json
new file mode 100644
index 000000000..ed454e64b
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,53 @@
+{
+ "name": "cakephp/app",
+ "description": "CakePHP skeleton app",
+ "homepage": "https://cakephp.org",
+ "type": "project",
+ "license": "MIT",
+ "require": {
+ "php": ">=5.6",
+ "cakephp/cakephp": "3.8.*",
+ "cakephp/migrations": "^2.0.0",
+ "cakephp/plugin-installer": "^1.0",
+ "mobiledetect/mobiledetectlib": "2.*"
+ },
+ "require-dev": {
+ "cakephp/bake": "^1.9.0",
+ "cakephp/cakephp-codesniffer": "^3.0",
+ "cakephp/debug_kit": "^3.17.0",
+ "josegonzalez/dotenv": "3.*",
+ "phpunit/phpunit": "^5|^6",
+ "psy/psysh": "@stable"
+ },
+ "suggest": {
+ "markstory/asset_compress": "An asset compression plugin which provides file concatenation and a flexible filter system for preprocessing and minification.",
+ "dereuromark/cakephp-ide-helper": "After baking your code, this keeps your annotations in sync with the code evolving from there on for maximum IDE and PHPStan compatibility."
+ },
+ "autoload": {
+ "psr-4": {
+ "App\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "App\\Test\\": "tests/",
+ "Cake\\Test\\": "vendor/cakephp/cakephp/tests/"
+ }
+ },
+ "scripts": {
+ "post-install-cmd": "App\\Console\\Installer::postInstall",
+ "post-create-project-cmd": "App\\Console\\Installer::postInstall",
+ "post-autoload-dump": "Cake\\Composer\\Installer\\PluginInstaller::postAutoloadDump",
+ "check": [
+ "@test",
+ "@cs-check"
+ ],
+ "cs-check": "phpcs --colors -p --standard=vendor/cakephp/cakephp-codesniffer/CakePHP src/ tests/",
+ "cs-fix": "phpcbf --colors --standard=vendor/cakephp/cakephp-codesniffer/CakePHP src/ tests/",
+ "test": "phpunit --colors=always"
+ },
+ "prefer-stable": true,
+ "config": {
+ "sort-packages": true
+ }
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 000000000..22a90f998
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,4332 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "bae3f640a631a993a49129d353eefbf9",
+ "packages": [
+ {
+ "name": "aura/intl",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/auraphp/Aura.Intl.git",
+ "reference": "7fce228980b19bf4dee2d7bbd6202a69b0dde926"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/auraphp/Aura.Intl/zipball/7fce228980b19bf4dee2d7bbd6202a69b0dde926",
+ "reference": "7fce228980b19bf4dee2d7bbd6202a69b0dde926",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Aura\\Intl\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aura.Intl Contributors",
+ "homepage": "https://github.com/auraphp/Aura.Intl/contributors"
+ }
+ ],
+ "description": "The Aura Intl package provides internationalization tools, specifically message translation.",
+ "homepage": "https://github.com/auraphp/Aura.Intl",
+ "keywords": [
+ "g11n",
+ "globalization",
+ "i18n",
+ "internationalization",
+ "intl",
+ "l10n",
+ "localization"
+ ],
+ "time": "2017-01-20T05:00:11+00:00"
+ },
+ {
+ "name": "cakephp/cakephp",
+ "version": "3.8.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cakephp/cakephp.git",
+ "reference": "705b43b70e87ec226a6b37099013de1003a17c17"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cakephp/cakephp/zipball/705b43b70e87ec226a6b37099013de1003a17c17",
+ "reference": "705b43b70e87ec226a6b37099013de1003a17c17",
+ "shasum": ""
+ },
+ "require": {
+ "aura/intl": "^3.0.0",
+ "cakephp/chronos": "^1.0.1",
+ "ext-intl": "*",
+ "ext-mbstring": "*",
+ "php": ">=5.6.0",
+ "psr/log": "^1.0.0",
+ "psr/simple-cache": "^1.0.0",
+ "zendframework/zend-diactoros": "^1.4.0"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<5.7"
+ },
+ "replace": {
+ "cakephp/cache": "self.version",
+ "cakephp/collection": "self.version",
+ "cakephp/core": "self.version",
+ "cakephp/database": "self.version",
+ "cakephp/datasource": "self.version",
+ "cakephp/event": "self.version",
+ "cakephp/filesystem": "self.version",
+ "cakephp/form": "self.version",
+ "cakephp/i18n": "self.version",
+ "cakephp/log": "self.version",
+ "cakephp/orm": "self.version",
+ "cakephp/utility": "self.version",
+ "cakephp/validation": "self.version"
+ },
+ "require-dev": {
+ "cakephp/cakephp-codesniffer": "^3.0",
+ "cakephp/chronos": "^1.2.1",
+ "phpunit/phpunit": "^5.7.14|^6.0"
+ },
+ "suggest": {
+ "ext-curl": "To enable more efficient network calls in Http\\Client.",
+ "ext-openssl": "To use Security::encrypt() or have secure CSRF token generation.",
+ "lib-ICU": "The intl PHP library, to use Text::transliterate() or Text::slug()"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Cake\\": "src/"
+ },
+ "files": [
+ "src/Core/functions.php",
+ "src/Collection/functions.php",
+ "src/I18n/functions.php",
+ "src/Utility/bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "CakePHP Community",
+ "homepage": "https://github.com/cakephp/cakephp/graphs/contributors"
+ }
+ ],
+ "description": "The CakePHP framework",
+ "homepage": "https://cakephp.org",
+ "keywords": [
+ "conventions over configuration",
+ "dry",
+ "form",
+ "framework",
+ "mvc",
+ "orm",
+ "psr-7",
+ "rapid-development",
+ "validation"
+ ],
+ "time": "2019-08-31T02:05:56+00:00"
+ },
+ {
+ "name": "cakephp/chronos",
+ "version": "1.2.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cakephp/chronos.git",
+ "reference": "0292f06e8cc23fc82f0574889da2d8bf27b613c1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cakephp/chronos/zipball/0292f06e8cc23fc82f0574889da2d8bf27b613c1",
+ "reference": "0292f06e8cc23fc82f0574889da2d8bf27b613c1",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|^7"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1",
+ "cakephp/cakephp-codesniffer": "^3.0",
+ "phpbench/phpbench": "@dev",
+ "phpstan/phpstan": "^0.6.4",
+ "phpunit/phpunit": "<6.0 || ^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Cake\\Chronos\\": "src/"
+ },
+ "files": [
+ "src/carbon_compat.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "http://nesbot.com"
+ },
+ {
+ "name": "The CakePHP Team",
+ "homepage": "http://cakephp.org"
+ }
+ ],
+ "description": "A simple API extension for DateTime.",
+ "homepage": "http://cakephp.org",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "time": "2019-06-17T15:19:18+00:00"
+ },
+ {
+ "name": "cakephp/migrations",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cakephp/migrations.git",
+ "reference": "38fbee62e7f387dbe0dc7ef492aa7dddb8e304fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cakephp/migrations/zipball/38fbee62e7f387dbe0dc7ef492aa7dddb8e304fc",
+ "reference": "38fbee62e7f387dbe0dc7ef492aa7dddb8e304fc",
+ "shasum": ""
+ },
+ "require": {
+ "cakephp/cache": "^3.6.0",
+ "cakephp/orm": "^3.6.0",
+ "php": ">=5.6.0",
+ "robmorgan/phinx": "^0.10.3"
+ },
+ "require-dev": {
+ "cakephp/bake": "^1.7.0",
+ "cakephp/cakephp": "^3.6.0",
+ "cakephp/cakephp-codesniffer": "^3.0",
+ "phpunit/phpunit": "^5.7.14|^6.0"
+ },
+ "suggest": {
+ "cakephp/bake": "Required if you want to generate migrations."
+ },
+ "type": "cakephp-plugin",
+ "autoload": {
+ "psr-4": {
+ "Migrations\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "CakePHP Community",
+ "homepage": "https://github.com/cakephp/migrations/graphs/contributors"
+ }
+ ],
+ "description": "Database Migration plugin for CakePHP 3.0 based on Phinx",
+ "homepage": "https://github.com/cakephp/migrations",
+ "keywords": [
+ "cakephp",
+ "migrations"
+ ],
+ "time": "2019-07-22T03:02:47+00:00"
+ },
+ {
+ "name": "cakephp/plugin-installer",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cakephp/plugin-installer.git",
+ "reference": "af9711ee5dfbe62a76e8aa86cb348895fab23b50"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cakephp/plugin-installer/zipball/af9711ee5dfbe62a76e8aa86cb348895fab23b50",
+ "reference": "af9711ee5dfbe62a76e8aa86cb348895fab23b50",
+ "shasum": ""
+ },
+ "require-dev": {
+ "cakephp/cakephp-codesniffer": "dev-master",
+ "composer/composer": "1.0.*@dev",
+ "phpunit/phpunit": "^4.8|^5.7|^6.0"
+ },
+ "type": "composer-installer",
+ "extra": {
+ "class": "Cake\\Composer\\Installer\\PluginInstaller"
+ },
+ "autoload": {
+ "psr-4": {
+ "Cake\\Composer\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "CakePHP Community",
+ "homepage": "http://cakephp.org"
+ }
+ ],
+ "description": "A composer installer for CakePHP 3.0+ plugins.",
+ "time": "2019-07-25T15:43:38+00:00"
+ },
+ {
+ "name": "mobiledetect/mobiledetectlib",
+ "version": "2.8.33",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/serbanghita/Mobile-Detect.git",
+ "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/cd385290f9a0d609d2eddd165a1e44ec1bf12102",
+ "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8.35||~5.7"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "Mobile_Detect.php"
+ ],
+ "psr-0": {
+ "Detection": "namespaced/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Serban Ghita",
+ "role": "Developer",
+ "email": "serbanghita@gmail.com",
+ "homepage": "http://mobiledetect.net"
+ }
+ ],
+ "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
+ "homepage": "https://github.com/serbanghita/Mobile-Detect",
+ "keywords": [
+ "detect mobile devices",
+ "mobile",
+ "mobile detect",
+ "mobile detector",
+ "php mobile detect"
+ ],
+ "time": "2018-09-01T15:05:15+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "time": "2017-02-14T16:28:37+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "time": "2016-08-06T14:39:51+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+ "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2018-11-20T15:27:04+00:00"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "time": "2017-10-23T01:57:42+00:00"
+ },
+ {
+ "name": "robmorgan/phinx",
+ "version": "0.10.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cakephp/phinx.git",
+ "reference": "1960e93169707096fdfde04904a204970077f4be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cakephp/phinx/zipball/1960e93169707096fdfde04904a204970077f4be",
+ "reference": "1960e93169707096fdfde04904a204970077f4be",
+ "shasum": ""
+ },
+ "require": {
+ "cakephp/collection": "^3.6",
+ "cakephp/database": "^3.6",
+ "php": ">=5.6",
+ "symfony/config": "^2.8|^3.0|^4.0",
+ "symfony/console": "^2.8|^3.0|^4.0",
+ "symfony/yaml": "^2.8|^3.0|^4.0"
+ },
+ "require-dev": {
+ "cakephp/cakephp-codesniffer": "^3.0",
+ "phpunit/phpunit": ">=5.7,<7.0",
+ "sebastian/comparator": ">=1.2.3"
+ },
+ "bin": [
+ "bin/phinx"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Phinx\\": "src/Phinx/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Woody Gilk",
+ "email": "woody.gilk@gmail.com",
+ "homepage": "http://shadowhand.me",
+ "role": "Developer"
+ },
+ {
+ "name": "Rob Morgan",
+ "email": "robbym@gmail.com",
+ "homepage": "https://robmorgan.id.au",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Richard Quadling",
+ "email": "rquadling@gmail.com",
+ "role": "Developer"
+ },
+ {
+ "name": "CakePHP Community",
+ "homepage": "https://github.com/cakephp/phinx/graphs/contributors"
+ }
+ ],
+ "description": "Phinx makes it ridiculously easy to manage the database migrations for your PHP app.",
+ "homepage": "https://phinx.org",
+ "keywords": [
+ "database",
+ "database migrations",
+ "db",
+ "migrations",
+ "phinx"
+ ],
+ "time": "2019-07-08T16:59:55+00:00"
+ },
+ {
+ "name": "symfony/config",
+ "version": "v4.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/config.git",
+ "reference": "07d49c0f823e0bc367c6d84e35b61419188a5ece"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/config/zipball/07d49c0f823e0bc367c6d84e35b61419188a5ece",
+ "reference": "07d49c0f823e0bc367c6d84e35b61419188a5ece",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/filesystem": "~3.4|~4.0",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "symfony/finder": "<3.4"
+ },
+ "require-dev": {
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "~3.4|~4.0",
+ "symfony/finder": "~3.4|~4.0",
+ "symfony/messenger": "~4.1",
+ "symfony/yaml": "~3.4|~4.0"
+ },
+ "suggest": {
+ "symfony/yaml": "To use the yaml reference dumper"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Config\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Config Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-08-26T08:26:39+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v4.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "de63799239b3881b8a08f8481b22348f77ed7b36"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/de63799239b3881b8a08f8481b22348f77ed7b36",
+ "reference": "de63799239b3881b8a08f8481b22348f77ed7b36",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.8",
+ "symfony/service-contracts": "^1.1"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4",
+ "symfony/event-dispatcher": "<4.3",
+ "symfony/process": "<3.3"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~3.4|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "^4.3",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/process": "~3.4|~4.0",
+ "symfony/var-dumper": "^4.3"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-08-26T08:26:39+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v4.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/9abbb7ef96a51f4d7e69627bc6f63307994e4263",
+ "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-08-20T14:07:54+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "550ebaac289296ce228a706d0867afc34687e3f4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
+ "reference": "550ebaac289296ce228a706d0867afc34687e3f4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.12-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "time": "2019-08-06T08:03:45+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
+ "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.12-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2019-08-06T08:03:45+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188",
+ "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.12-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2019-08-06T08:03:45+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v1.1.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ea7263d6b6d5f798b56a45a5b8d686725f2719a3",
+ "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "time": "2019-08-20T14:44:19+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v4.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "5a0b7c32dc3ec56fd4abae8a4a71b0cf05013686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/5a0b7c32dc3ec56fd4abae8a4a71b0cf05013686",
+ "reference": "5a0b7c32dc3ec56fd4abae8a4a71b0cf05013686",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "symfony/console": "<3.4"
+ },
+ "require-dev": {
+ "symfony/console": "~3.4|~4.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-08-20T14:27:59+00:00"
+ },
+ {
+ "name": "zendframework/zend-diactoros",
+ "version": "1.8.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/zendframework/zend-diactoros.git",
+ "reference": "a85e67b86e9b8520d07e6415fcbcb8391b44a75b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/a85e67b86e9b8520d07e6415fcbcb8391b44a75b",
+ "reference": "a85e67b86e9b8520d07e6415fcbcb8391b44a75b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0",
+ "psr/http-message": "^1.0"
+ },
+ "provide": {
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "php-http/psr7-integration-tests": "dev-master",
+ "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7",
+ "zendframework/zend-coding-standard": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-release-1.8": "1.8.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions/create_uploaded_file.php",
+ "src/functions/marshal_headers_from_sapi.php",
+ "src/functions/marshal_method_from_sapi.php",
+ "src/functions/marshal_protocol_version_from_sapi.php",
+ "src/functions/marshal_uri_from_sapi.php",
+ "src/functions/normalize_server.php",
+ "src/functions/normalize_uploaded_files.php",
+ "src/functions/parse_cookie_header.php"
+ ],
+ "psr-4": {
+ "Zend\\Diactoros\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "description": "PSR HTTP Message implementations",
+ "homepage": "https://github.com/zendframework/zend-diactoros",
+ "keywords": [
+ "http",
+ "psr",
+ "psr-7"
+ ],
+ "time": "2019-08-06T17:53:53+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "ajgl/breakpoint-twig-extension",
+ "version": "0.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ajgarlag/AjglBreakpointTwigExtension.git",
+ "reference": "13ee39406dc3d959c5704b462a3dbc3cbf088f16"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ajgarlag/AjglBreakpointTwigExtension/zipball/13ee39406dc3d959c5704b462a3dbc3cbf088f16",
+ "reference": "13ee39406dc3d959c5704b462a3dbc3cbf088f16",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6",
+ "twig/twig": "^1.14|^2.0"
+ },
+ "require-dev": {
+ "symfony/framework-bundle": "^2.7|^3.2|^4.1",
+ "symfony/phpunit-bridge": "^3.4|^4.1",
+ "symfony/twig-bundle": "^2.7|^3.2|^4.1"
+ },
+ "suggest": {
+ "ext-xdebug": "The Xdebug extension is required for the breakpoint to work",
+ "symfony/framework-bundle": "The framework bundle to integrate the extension into Symfony",
+ "symfony/twig-bundle": "The twig bundle to integrate the extension into Symfony"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Ajgl\\Twig\\Extension\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Antonio J. GarcÃa Lagar",
+ "email": "aj@garcialagar.es",
+ "homepage": "http://aj.garcialagar.es",
+ "role": "developer"
+ }
+ ],
+ "description": "Twig extension to set breakpoints",
+ "homepage": "https://github.com/ajgarlag/AjglBreakpointTwigExtension",
+ "keywords": [
+ "Xdebug",
+ "breakpoint",
+ "twig"
+ ],
+ "time": "2019-04-10T11:41:26+00:00"
+ },
+ {
+ "name": "aptoma/twig-markdown",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/aptoma/twig-markdown.git",
+ "reference": "64a9c5c7418c08faf91c4410b34bdb65fb25c23d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/aptoma/twig-markdown/zipball/64a9c5c7418c08faf91c4410b34bdb65fb25c23d",
+ "reference": "64a9c5c7418c08faf91c4410b34bdb65fb25c23d",
+ "shasum": ""
+ },
+ "require": {
+ "twig/twig": "~1.12"
+ },
+ "require-dev": {
+ "codeclimate/php-test-reporter": "dev-master",
+ "erusev/parsedown": "^1.6",
+ "knplabs/github-api": "~1.2",
+ "league/commonmark": "~0.5",
+ "michelf/php-markdown": "~1",
+ "phpunit/phpunit": "~4.0",
+ "satooshi/php-coveralls": "~0.6"
+ },
+ "suggest": {
+ "knplabs/github-api": "Needed for using GitHub's Markdown engine provided through their API.",
+ "michelf/php-markdown": "Original Markdown engine with MarkdownExtra."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Aptoma": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Joris Berthelot",
+ "email": "joris@berthelot.tel"
+ },
+ {
+ "name": "Gunnar Lium",
+ "email": "gunnar@aptoma.com"
+ }
+ ],
+ "description": "Twig extension to work with Markdown content",
+ "keywords": [
+ "markdown",
+ "twig"
+ ],
+ "time": "2015-10-23T20:27:08+00:00"
+ },
+ {
+ "name": "asm89/twig-cache-extension",
+ "version": "1.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/asm89/twig-cache-extension.git",
+ "reference": "630ea7abdc3fc62ba6786c02590a1560e449cf55"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/asm89/twig-cache-extension/zipball/630ea7abdc3fc62ba6786c02590a1560e449cf55",
+ "reference": "630ea7abdc3fc62ba6786c02590a1560e449cf55",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2",
+ "twig/twig": "^1.0|^2.0"
+ },
+ "require-dev": {
+ "doctrine/cache": "~1.0"
+ },
+ "suggest": {
+ "psr/cache-implementation": "To make use of PSR-6 cache implementation via PsrCacheAdapter."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Alexander",
+ "email": "iam.asm89@gmail.com"
+ }
+ ],
+ "description": "Cache fragments of templates directly within Twig.",
+ "homepage": "https://github.com/asm89/twig-cache-extension",
+ "keywords": [
+ "cache",
+ "extension",
+ "twig"
+ ],
+ "time": "2017-01-10T22:04:15+00:00"
+ },
+ {
+ "name": "cakephp/bake",
+ "version": "1.11.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cakephp/bake.git",
+ "reference": "8598c3326541a16aa7b003ce322c44a34f90ad85"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cakephp/bake/zipball/8598c3326541a16aa7b003ce322c44a34f90ad85",
+ "reference": "8598c3326541a16aa7b003ce322c44a34f90ad85",
+ "shasum": ""
+ },
+ "require": {
+ "cakephp/cakephp": "^3.8.0",
+ "cakephp/plugin-installer": "^1.0",
+ "php": ">=5.6.0",
+ "wyrihaximus/twig-view": "^4.3.7"
+ },
+ "require-dev": {
+ "cakephp/cakephp-codesniffer": "^3.0",
+ "phpunit/phpunit": "^5.7.14|^6.0"
+ },
+ "type": "cakephp-plugin",
+ "autoload": {
+ "psr-4": {
+ "Bake\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "CakePHP Community",
+ "homepage": "https://github.com/cakephp/bake/graphs/contributors"
+ }
+ ],
+ "description": "Bake plugin for CakePHP 3",
+ "homepage": "https://github.com/cakephp/bake",
+ "keywords": [
+ "bake",
+ "cakephp"
+ ],
+ "time": "2019-07-30T02:08:16+00:00"
+ },
+ {
+ "name": "cakephp/cakephp-codesniffer",
+ "version": "3.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cakephp/cakephp-codesniffer.git",
+ "reference": "45a1dcc2e83598362b8c323df3e67510676457fe"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cakephp/cakephp-codesniffer/zipball/45a1dcc2e83598362b8c323df3e67510676457fe",
+ "reference": "45a1dcc2e83598362b8c323df3e67510676457fe",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6",
+ "squizlabs/php_codesniffer": "^3.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "<6.0"
+ },
+ "type": "phpcodesniffer-standard",
+ "autoload": {
+ "psr-4": {
+ "CakePHP\\": "CakePHP"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "CakePHP Community",
+ "homepage": "https://github.com/cakephp/cakephp-codesniffer/graphs/contributors"
+ }
+ ],
+ "description": "CakePHP CodeSniffer Standards",
+ "homepage": "http://cakephp.org",
+ "keywords": [
+ "codesniffer",
+ "framework"
+ ],
+ "time": "2019-08-30T01:55:00+00:00"
+ },
+ {
+ "name": "cakephp/debug_kit",
+ "version": "3.20.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cakephp/debug_kit.git",
+ "reference": "0ea1b56978e3f9a5c5c3091b4e1732c1446fae7d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cakephp/debug_kit/zipball/0ea1b56978e3f9a5c5c3091b4e1732c1446fae7d",
+ "reference": "0ea1b56978e3f9a5c5c3091b4e1732c1446fae7d",
+ "shasum": ""
+ },
+ "require": {
+ "cakephp/cakephp": "^3.7.0",
+ "cakephp/chronos": "^1.0.0",
+ "cakephp/plugin-installer": "^1.0.0",
+ "composer/composer": "^1.3.0",
+ "jdorn/sql-formatter": "^1.2.0",
+ "php": ">=5.6.0"
+ },
+ "require-dev": {
+ "cakephp/cakephp-codesniffer": "^3.0",
+ "phpunit/phpunit": "^5.7.14|^6.0"
+ },
+ "suggest": {
+ "ext-pdo_sqlite": "DebugKit needs to store panel data in a database. SQLite is simple and easy to use."
+ },
+ "type": "cakephp-plugin",
+ "autoload": {
+ "psr-4": {
+ "DebugKit\\": "src",
+ "DebugKit\\Test\\Fixture\\": "tests\\Fixture"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mark Story",
+ "homepage": "http://mark-story.com",
+ "role": "Author"
+ },
+ {
+ "name": "CakePHP Community",
+ "homepage": "https://github.com/cakephp/debug_kit/graphs/contributors"
+ }
+ ],
+ "description": "CakePHP Debug Kit",
+ "homepage": "https://github.com/cakephp/debug_kit",
+ "keywords": [
+ "cakephp",
+ "debug",
+ "kit"
+ ],
+ "time": "2019-08-27T00:17:02+00:00"
+ },
+ {
+ "name": "composer/ca-bundle",
+ "version": "1.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/ca-bundle.git",
+ "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
+ "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
+ "shasum": ""
+ },
+ "require": {
+ "ext-openssl": "*",
+ "ext-pcre": "*",
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
+ "psr/log": "^1.0",
+ "symfony/process": "^2.5 || ^3.0 || ^4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\CaBundle\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
+ "keywords": [
+ "cabundle",
+ "cacert",
+ "certificate",
+ "ssl",
+ "tls"
+ ],
+ "time": "2019-08-30T08:44:50+00:00"
+ },
+ {
+ "name": "composer/composer",
+ "version": "1.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/composer.git",
+ "reference": "314aa57fdcfc942065996f59fb73a8b3f74f3fa5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/composer/zipball/314aa57fdcfc942065996f59fb73a8b3f74f3fa5",
+ "reference": "314aa57fdcfc942065996f59fb73a8b3f74f3fa5",
+ "shasum": ""
+ },
+ "require": {
+ "composer/ca-bundle": "^1.0",
+ "composer/semver": "^1.0",
+ "composer/spdx-licenses": "^1.2",
+ "composer/xdebug-handler": "^1.1",
+ "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0",
+ "php": "^5.3.2 || ^7.0",
+ "psr/log": "^1.0",
+ "seld/jsonlint": "^1.4",
+ "seld/phar-utils": "^1.0",
+ "symfony/console": "^2.7 || ^3.0 || ^4.0",
+ "symfony/filesystem": "^2.7 || ^3.0 || ^4.0",
+ "symfony/finder": "^2.7 || ^3.0 || ^4.0",
+ "symfony/process": "^2.7 || ^3.0 || ^4.0"
+ },
+ "conflict": {
+ "symfony/console": "2.8.38"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7",
+ "phpunit/phpunit-mock-objects": "^2.3 || ^3.0"
+ },
+ "suggest": {
+ "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
+ "ext-zip": "Enabling the zip extension allows you to unzip archives",
+ "ext-zlib": "Allow gzip compression of HTTP requests"
+ },
+ "bin": [
+ "bin/composer"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\": "src/Composer"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.",
+ "homepage": "https://getcomposer.org/",
+ "keywords": [
+ "autoload",
+ "dependency",
+ "package"
+ ],
+ "time": "2019-08-02T18:55:33+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e",
+ "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5 || ^5.0.5",
+ "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "time": "2019-03-19T17:25:45+00:00"
+ },
+ {
+ "name": "composer/spdx-licenses",
+ "version": "1.5.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/spdx-licenses.git",
+ "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7ac1e6aec371357df067f8a688c3d6974df68fa5",
+ "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Spdx\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "SPDX licenses list and validation library.",
+ "keywords": [
+ "license",
+ "spdx",
+ "validator"
+ ],
+ "time": "2019-07-29T10:31:59+00:00"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "1.3.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f",
+ "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0",
+ "psr/log": "^1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "time": "2019-05-27T17:52:04+00:00"
+ },
+ {
+ "name": "dnoegel/php-xdg-base-dir",
+ "version": "0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
+ "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a",
+ "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "@stable"
+ },
+ "type": "project",
+ "autoload": {
+ "psr-4": {
+ "XdgBaseDir\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "implementation of xdg base directory specification for php",
+ "time": "2014-10-24T07:27:01+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "a2c590166b2133a4633738648b6b064edae0814a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a",
+ "reference": "a2c590166b2133a4633738648b6b064edae0814a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.13",
+ "phpstan/phpstan-phpunit": "^0.11",
+ "phpstan/phpstan-shim": "^0.11",
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2019-03-17T17:37:11+00:00"
+ },
+ {
+ "name": "jakub-onderka/php-console-color",
+ "version": "v0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/JakubOnderka/PHP-Console-Color.git",
+ "reference": "d5deaecff52a0d61ccb613bb3804088da0307191"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191",
+ "reference": "d5deaecff52a0d61ccb613bb3804088da0307191",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "jakub-onderka/php-code-style": "1.0",
+ "jakub-onderka/php-parallel-lint": "1.0",
+ "jakub-onderka/php-var-dump-check": "0.*",
+ "phpunit/phpunit": "~4.3",
+ "squizlabs/php_codesniffer": "1.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "JakubOnderka\\PhpConsoleColor\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jakub Onderka",
+ "email": "jakub.onderka@gmail.com"
+ }
+ ],
+ "time": "2018-09-29T17:23:10+00:00"
+ },
+ {
+ "name": "jakub-onderka/php-console-highlighter",
+ "version": "v0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git",
+ "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547",
+ "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "jakub-onderka/php-console-color": "~0.2",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "jakub-onderka/php-code-style": "~1.0",
+ "jakub-onderka/php-parallel-lint": "~1.0",
+ "jakub-onderka/php-var-dump-check": "~0.1",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~1.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "JakubOnderka\\PhpConsoleHighlighter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jakub Onderka",
+ "email": "acci@acci.cz",
+ "homepage": "http://www.acci.cz/"
+ }
+ ],
+ "description": "Highlight PHP code in terminal",
+ "time": "2018-09-29T18:48:56+00:00"
+ },
+ {
+ "name": "jasny/twig-extensions",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jasny/twig-extensions.git",
+ "reference": "30bdf3a3903c021544f36332c9d5d4d563527da4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jasny/twig-extensions/zipball/30bdf3a3903c021544f36332c9d5d4d563527da4",
+ "reference": "30bdf3a3903c021544f36332c9d5d4d563527da4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0 | >=5.6.0",
+ "twig/twig": "^2.0 | ^1.12"
+ },
+ "require-dev": {
+ "ext-intl": "*",
+ "ext-pcre": "*",
+ "jasny/php-code-quality": "^2.1",
+ "phpunit/phpunit": "^5.0"
+ },
+ "suggest": {
+ "ext-intl": "Required for the use of the LocalDate Twig extension",
+ "ext-pcre": "Required for the use of the PCRE Twig extension"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Jasny\\Twig\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Arnold Daniels",
+ "email": "arnold@jasny.net",
+ "homepage": "http://www.jasny.net"
+ }
+ ],
+ "description": "A set of useful Twig filters",
+ "homepage": "http://github.com/jasny/twig-extensions#README",
+ "keywords": [
+ "PCRE",
+ "array",
+ "date",
+ "datetime",
+ "preg",
+ "regex",
+ "templating",
+ "text",
+ "time"
+ ],
+ "time": "2017-09-13T07:38:01+00:00"
+ },
+ {
+ "name": "jdorn/sql-formatter",
+ "version": "v1.2.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jdorn/sql-formatter.git",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "3.7.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "lib"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeremy Dorn",
+ "email": "jeremy@jeremydorn.com",
+ "homepage": "http://jeremydorn.com/"
+ }
+ ],
+ "description": "a PHP SQL highlighting library",
+ "homepage": "https://github.com/jdorn/sql-formatter/",
+ "keywords": [
+ "highlight",
+ "sql"
+ ],
+ "time": "2014-01-12T16:20:24+00:00"
+ },
+ {
+ "name": "josegonzalez/dotenv",
+ "version": "3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/josegonzalez/php-dotenv.git",
+ "reference": "f19174d9d7213a6c20e8e5e268aa7dd042d821ca"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/josegonzalez/php-dotenv/zipball/f19174d9d7213a6c20e8e5e268aa7dd042d821ca",
+ "reference": "f19174d9d7213a6c20e8e5e268aa7dd042d821ca",
+ "shasum": ""
+ },
+ "require": {
+ "m1/env": "2.*",
+ "php": ">=5.5.0"
+ },
+ "require-dev": {
+ "php-mock/php-mock-phpunit": "^1.1",
+ "satooshi/php-coveralls": "1.*",
+ "squizlabs/php_codesniffer": "2.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "josegonzalez\\Dotenv": [
+ "src",
+ "tests"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jose Diaz-Gonzalez",
+ "email": "dotenv@josegonzalez.com",
+ "homepage": "http://josediazgonzalez.com",
+ "role": "Maintainer"
+ }
+ ],
+ "description": "dotenv file parsing for PHP",
+ "homepage": "https://github.com/josegonzalez/php-dotenv",
+ "keywords": [
+ "configuration",
+ "dotenv",
+ "php"
+ ],
+ "time": "2017-09-19T15:49:58+00:00"
+ },
+ {
+ "name": "justinrainbow/json-schema",
+ "version": "5.2.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/justinrainbow/json-schema.git",
+ "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/dcb6e1006bb5fd1e392b4daa68932880f37550d4",
+ "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "~2.2.20",
+ "json-schema/json-schema-test-suite": "1.2.0",
+ "phpunit/phpunit": "^4.8.35"
+ },
+ "bin": [
+ "bin/validate-json"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "JsonSchema\\": "src/JsonSchema/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bruno Prieto Reis",
+ "email": "bruno.p.reis@gmail.com"
+ },
+ {
+ "name": "Justin Rainbow",
+ "email": "justin.rainbow@gmail.com"
+ },
+ {
+ "name": "Igor Wiedler",
+ "email": "igor@wiedler.ch"
+ },
+ {
+ "name": "Robert Schönthal",
+ "email": "seroscho@googlemail.com"
+ }
+ ],
+ "description": "A library to validate a json schema.",
+ "homepage": "https://github.com/justinrainbow/json-schema",
+ "keywords": [
+ "json",
+ "schema"
+ ],
+ "time": "2019-01-14T23:55:14+00:00"
+ },
+ {
+ "name": "m1/env",
+ "version": "2.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/m1/Env.git",
+ "reference": "294addeedf15e1149eeb96ec829f2029d2017d39"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/m1/Env/zipball/294addeedf15e1149eeb96ec829f2029d2017d39",
+ "reference": "294addeedf15e1149eeb96ec829f2029d2017d39",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*",
+ "scrutinizer/ocular": "~1.1",
+ "squizlabs/php_codesniffer": "^2.3"
+ },
+ "suggest": {
+ "josegonzalez/dotenv": "For loading of .env",
+ "m1/vars": "For loading of configs"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "M1\\Env\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Miles Croxford",
+ "role": "Developer",
+ "email": "hello@milescroxford.com",
+ "homepage": "http://milescroxford.com"
+ }
+ ],
+ "description": "Env is a lightweight library bringing .env file parser compatibility to PHP. In short - it enables you to read .env files with PHP.",
+ "homepage": "https://github.com/m1/Env",
+ "keywords": [
+ ".env",
+ "config",
+ "dotenv",
+ "env",
+ "loader",
+ "m1",
+ "parser",
+ "support"
+ ],
+ "time": "2018-06-19T18:55:08+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.9.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea",
+ "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "replace": {
+ "myclabs/deep-copy": "self.version"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "time": "2019-08-09T12:45:53+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "97e59c7a16464196a8b9c77c47df68e4a39a45c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/97e59c7a16464196a8b9c77c47df68e4a39a45c4",
+ "reference": "97e59c7a16464196a8b9c77c47df68e4a39a45c4",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "time": "2019-09-01T07:51:21+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "phar-io/version": "^1.0.1",
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "time": "2017-03-05T18:14:27+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "time": "2017-03-05T17:38:23+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2017-09-11T18:02:19+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
+ "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0",
+ "phpdocumentor/type-resolver": "^0.4.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "~1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2019-04-30T17:48:53+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "time": "2017-07-14T14:27:02+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "1.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
+ "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+ "sebastian/comparator": "^1.1|^2.0|^3.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^2.5|^3.2",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "time": "2019-06-13T12:50:23+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "5.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
+ "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.0",
+ "phpunit/php-file-iterator": "^1.4.2",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-token-stream": "^2.0.1",
+ "sebastian/code-unit-reverse-lookup": "^1.0.1",
+ "sebastian/environment": "^3.0",
+ "sebastian/version": "^2.0.1",
+ "theseer/tokenizer": "^1.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "suggest": {
+ "ext-xdebug": "^2.5.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2018-04-06T15:36:58+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "1.4.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2017-11-27T13:52:08+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2015-06-21T13:50:34+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "1.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2017-02-26T11:10:40+00:00"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.2.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2017-11-27T05:48:46+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "6.5.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
+ "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "myclabs/deep-copy": "^1.6.1",
+ "phar-io/manifest": "^1.0.1",
+ "phar-io/version": "^1.0",
+ "php": "^7.0",
+ "phpspec/prophecy": "^1.7",
+ "phpunit/php-code-coverage": "^5.3",
+ "phpunit/php-file-iterator": "^1.4.3",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-timer": "^1.0.9",
+ "phpunit/phpunit-mock-objects": "^5.0.9",
+ "sebastian/comparator": "^2.1",
+ "sebastian/diff": "^2.0",
+ "sebastian/environment": "^3.1",
+ "sebastian/exporter": "^3.1",
+ "sebastian/global-state": "^2.0",
+ "sebastian/object-enumerator": "^3.0.3",
+ "sebastian/resource-operations": "^1.0",
+ "sebastian/version": "^2.0.1"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "3.0.2",
+ "phpunit/dbunit": "<3.0"
+ },
+ "require-dev": {
+ "ext-pdo": "*"
+ },
+ "suggest": {
+ "ext-xdebug": "*",
+ "phpunit/php-invoker": "^1.1"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.5.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2019-02-01T05:22:47+00:00"
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "5.0.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
+ "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.5",
+ "php": "^7.0",
+ "phpunit/php-text-template": "^1.2.1",
+ "sebastian/exporter": "^3.1"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<6.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.5.11"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Mock Object library for PHPUnit",
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+ "keywords": [
+ "mock",
+ "xunit"
+ ],
+ "abandoned": true,
+ "time": "2018-08-09T05:50:03+00:00"
+ },
+ {
+ "name": "psy/psysh",
+ "version": "v0.9.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/bobthecow/psysh.git",
+ "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
+ "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
+ "shasum": ""
+ },
+ "require": {
+ "dnoegel/php-xdg-base-dir": "0.1",
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*",
+ "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0",
+ "php": ">=5.4.0",
+ "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0",
+ "symfony/var-dumper": "~2.7|~3.0|~4.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.2",
+ "hoa/console": "~2.15|~3.16",
+ "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0"
+ },
+ "suggest": {
+ "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
+ "ext-pdo-sqlite": "The doc command requires SQLite to work.",
+ "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.",
+ "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.",
+ "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit."
+ },
+ "bin": [
+ "bin/psysh"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-develop": "0.9.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Psy\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Justin Hileman",
+ "email": "justin@justinhileman.info",
+ "homepage": "http://justinhileman.com"
+ }
+ ],
+ "description": "An interactive shell for modern PHP.",
+ "homepage": "http://psysh.org",
+ "keywords": [
+ "REPL",
+ "console",
+ "interactive",
+ "shell"
+ ],
+ "time": "2018-10-13T15:16:03+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "time": "2017-03-04T06:30:41+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "2.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/diff": "^2.0 || ^3.0",
+ "sebastian/exporter": "^3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2018-02-01T13:46:46+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+ "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff"
+ ],
+ "time": "2017-08-03T08:09:46+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2017-07-01T08:51:00+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "06a9a5947f47b3029d76118eb5c22802e5869687"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/06a9a5947f47b3029d76118eb5c22802e5869687",
+ "reference": "06a9a5947f47b3029d76118eb5c22802e5869687",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2019-08-11T12:43:14+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2017-04-27T15:39:26+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/object-reflector": "^1.1.1",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "time": "2017-08-03T12:35:26+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "time": "2017-03-29T09:07:27+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2017-03-03T06:23:57+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "time": "2015-07-28T20:34:47+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2016-10-03T07:35:21+00:00"
+ },
+ {
+ "name": "seld/jsonlint",
+ "version": "1.7.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/jsonlint.git",
+ "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38",
+ "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "bin": [
+ "bin/jsonlint"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Seld\\JsonLint\\": "src/Seld/JsonLint/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "JSON Linter",
+ "keywords": [
+ "json",
+ "linter",
+ "parser",
+ "validator"
+ ],
+ "time": "2018-01-24T12:46:19+00:00"
+ },
+ {
+ "name": "seld/phar-utils",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/phar-utils.git",
+ "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a",
+ "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Seld\\PharUtils\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "PHAR file format utilities, for when PHP phars you up",
+ "keywords": [
+ "phra"
+ ],
+ "time": "2015-10-13T18:44:15+00:00"
+ },
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "3.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+ "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8",
+ "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "bin": [
+ "bin/phpcs",
+ "bin/phpcbf"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Greg Sherwood",
+ "role": "lead"
+ }
+ ],
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "keywords": [
+ "phpcs",
+ "standards"
+ ],
+ "time": "2019-04-10T23:49:02+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v4.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/86c1c929f0a4b24812e1eb109262fc3372c8e9f2",
+ "reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-08-14T12:26:46+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "v1.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "04ce3335667451138df4307d6a9b61565560199e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e",
+ "reference": "04ce3335667451138df4307d6a9b61565560199e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.12-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2019-08-06T08:03:45+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v4.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "e89969c00d762349f078db1128506f7f3dcc0d4a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/e89969c00d762349f078db1128506f7f3dcc0d4a",
+ "reference": "e89969c00d762349f078db1128506f7f3dcc0d4a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-08-26T08:26:39+00:00"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v4.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "641043e0f3e615990a0f29479f9c117e8a6698c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/641043e0f3e615990a0f29479f9c117e8a6698c6",
+ "reference": "641043e0f3e615990a0f29479f9c117e8a6698c6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php72": "~1.5"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
+ "symfony/console": "<3.4"
+ },
+ "require-dev": {
+ "ext-iconv": "*",
+ "symfony/console": "~3.4|~4.0",
+ "symfony/process": "~3.4|~4.0",
+ "twig/twig": "~1.34|~2.4"
+ },
+ "suggest": {
+ "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+ "ext-intl": "To show region name in time zone dump",
+ "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
+ },
+ "bin": [
+ "Resources/bin/var-dump-server"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony mechanism for exploring and dumping PHP variables",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "time": "2019-08-26T08:26:39+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+ "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "role": "Developer",
+ "email": "arne@blankerts.de"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "time": "2019-06-13T22:48:21+00:00"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v1.42.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "201baee843e0ffe8b0b956f336dd42b2a92fae4e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/201baee843e0ffe8b0b956f336dd42b2a92fae4e",
+ "reference": "201baee843e0ffe8b0b956f336dd42b2a92fae4e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "require-dev": {
+ "psr/container": "^1.0",
+ "symfony/debug": "^3.4|^4.2",
+ "symfony/phpunit-bridge": "^4.4@dev|^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.42-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Twig_": "lib/"
+ },
+ "psr-4": {
+ "Twig\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Twig Team",
+ "homepage": "https://twig.symfony.com/contributors",
+ "role": "Contributors"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "https://twig.symfony.com",
+ "keywords": [
+ "templating"
+ ],
+ "time": "2019-08-24T12:51:03+00:00"
+ },
+ {
+ "name": "umpirsky/twig-php-function",
+ "version": "v0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/umpirsky/twig-php-function.git",
+ "reference": "53b4b1eb0c5eacbd7d66c504b7d809c79b4bedbc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/umpirsky/twig-php-function/zipball/53b4b1eb0c5eacbd7d66c504b7d809c79b4bedbc",
+ "reference": "53b4b1eb0c5eacbd7d66c504b7d809c79b4bedbc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "twig/twig": "~1.12"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "~2.0",
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Umpirsky\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Saša Stamenković",
+ "email": "umpirsky@gmail.com"
+ }
+ ],
+ "description": "Call (almost) any PHP function from your Twig templates.",
+ "time": "2016-03-12T16:36:32+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4",
+ "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2019-08-24T08:43:50+00:00"
+ },
+ {
+ "name": "wyrihaximus/twig-view",
+ "version": "4.3.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/WyriHaximus/TwigView.git",
+ "reference": "a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/WyriHaximus/TwigView/zipball/a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45",
+ "reference": "a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45",
+ "shasum": ""
+ },
+ "require": {
+ "ajgl/breakpoint-twig-extension": "^0.3.0",
+ "aptoma/twig-markdown": "^2.0",
+ "asm89/twig-cache-extension": "^1.0",
+ "cakephp/cakephp": "^3.6",
+ "jasny/twig-extensions": "^1.0",
+ "php": "^5.6 || ^7.0",
+ "twig/twig": "^1.27",
+ "umpirsky/twig-php-function": "0.1"
+ },
+ "require-dev": {
+ "cakephp/bake": "^1.5",
+ "cakephp/debug_kit": "^3.0",
+ "phake/phake": "^1.0.4",
+ "phpunit/phpunit": "^5.7.14",
+ "squizlabs/php_codesniffer": "^1.5.6",
+ "wyrihaximus/phpunit-class-reflection-helpers": "dev-master"
+ },
+ "type": "cakephp-plugin",
+ "autoload": {
+ "psr-4": {
+ "WyriHaximus\\TwigView\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "ceesjank@gmail.com",
+ "homepage": "http://wyrihaximus.net/"
+ }
+ ],
+ "description": "Twig powered View for CakePHP3",
+ "keywords": [
+ "cakephp",
+ "cakephp3",
+ "twig",
+ "view"
+ ],
+ "time": "2018-12-17T21:08:25+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": {
+ "psy/psysh": 0
+ },
+ "prefer-stable": true,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=5.6"
+ },
+ "platform-dev": []
+}
diff --git a/db/address_types.sql b/db/address_types.sql
new file mode 100644
index 000000000..27f6bb410
--- /dev/null
+++ b/db/address_types.sql
@@ -0,0 +1,6 @@
+CREATE TABLE `address_types` (
+ `id` INT NOT NULL AUTO_INCREMENT,
+ `name` VARCHAR(25) NOT NULL,
+ `text` VARCHAR(255) NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
\ No newline at end of file
diff --git a/db/operators.sql b/db/operators.sql
new file mode 100644
index 000000000..8ffa9f04f
--- /dev/null
+++ b/db/operators.sql
@@ -0,0 +1,7 @@
+CREATE TABLE `operators` (
+ `id` INT NOT NULL AUTO_INCREMENT ,
+ `username` VARCHAR(128) NOT NULL ,
+ `data_base64` VARCHAR(255) NOT NULL ,
+ PRIMARY KEY (`id`), UNIQUE (`username`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
+
diff --git a/db/state_balances.sql b/db/state_balances.sql
new file mode 100644
index 000000000..0bc263093
--- /dev/null
+++ b/db/state_balances.sql
@@ -0,0 +1,7 @@
+CREATE TABLE `state_balances` (
+ `id` int(11) NOT NULL,
+ `state_user_id` int(11) NOT NULL,
+ `modified` datetime NOT NULL,
+ `amount` bigint(20) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
\ No newline at end of file
diff --git a/db/state_created.sql b/db/state_created.sql
new file mode 100644
index 000000000..a15ccacd3
--- /dev/null
+++ b/db/state_created.sql
@@ -0,0 +1,10 @@
+CREATE TABLE `state_created` (
+ `id` int(11) NOT NULL,
+ `transaction_id` int(11) NOT NULL,
+ `month` tinyint(4) NOT NULL,
+ `year` smallint(6) NOT NULL,
+ `state_user_id` int(11) NOT NULL,
+ `created` datetime NOT NULL,
+ `short_ident_hash` int(11) NOT NULL,
+ PRIMARY KEY (`id`), INDEX(`short_ident_hash`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
diff --git a/db/state_group_addresses.sql b/db/state_group_addresses.sql
new file mode 100644
index 000000000..3e09b8658
--- /dev/null
+++ b/db/state_group_addresses.sql
@@ -0,0 +1,7 @@
+CREATE TABLE `state_group_addresses` (
+ `id` int(11) NOT NULL,
+ `state_group_id` int(11) NOT NULL,
+ `public_key` binary(32) NOT NULL,
+ `address_type_id` int(11) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
diff --git a/db/state_group_relationships.sql b/db/state_group_relationships.sql
new file mode 100644
index 000000000..0d26e91b6
--- /dev/null
+++ b/db/state_group_relationships.sql
@@ -0,0 +1,7 @@
+CREATE TABLE `state_group_relationships` (
+ `id` int(11) NOT NULL,
+ `state_group1_id` int(11) NOT NULL,
+ `state_group2_id` int(11) NOT NULL,
+ `state_relationship_id` int(11) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
diff --git a/db/state_groups.sql b/db/state_groups.sql
new file mode 100644
index 000000000..dc5ca5251
--- /dev/null
+++ b/db/state_groups.sql
@@ -0,0 +1,8 @@
+CREATE TABLE `state_groups` (
+ `id` INT NOT NULL AUTO_INCREMENT,
+ `index_id` VARBINARY(64) NOT NULL,
+ `name` VARCHAR(50) NOT NULL,
+ `root_public_key` BINARY(32) NOT NULL,
+ `user_count` SMALLINT NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
\ No newline at end of file
diff --git a/db/state_relationship_types.sql b/db/state_relationship_types.sql
new file mode 100644
index 000000000..d6e53a966
--- /dev/null
+++ b/db/state_relationship_types.sql
@@ -0,0 +1,6 @@
+CREATE TABLE `state_relationship_types` (
+ `id` int(11) NOT NULL,
+ `name` varchar(25) COLLATE utf8_bin NOT NULL,
+ `text` varchar(255) COLLATE utf8_bin DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
diff --git a/db/state_users.sql b/db/state_users.sql
new file mode 100644
index 000000000..82d61f10e
--- /dev/null
+++ b/db/state_users.sql
@@ -0,0 +1,7 @@
+CREATE TABLE `state_users` (
+ `id` int(11) NOT NULL,
+ `index_id` smallint(6) NOT NULL,
+ `state_group_id` int(11) NOT NULL,
+ `public_key` binary(32) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
diff --git a/db/transaction_creations.sql b/db/transaction_creations.sql
new file mode 100644
index 000000000..343404ddb
--- /dev/null
+++ b/db/transaction_creations.sql
@@ -0,0 +1,10 @@
+
+CREATE TABLE `transaction_creations` (
+ `id` int(11) NOT NULL,
+ `transaction_id` int(11) NOT NULL,
+ `state_user_id` int(11) NOT NULL,
+ `amount` bigint(20) NOT NULL,
+ `ident_hash` binary(32) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
+
diff --git a/db/transaction_group_addAddress.sql b/db/transaction_group_addAddress.sql
new file mode 100644
index 000000000..f7474cc73
--- /dev/null
+++ b/db/transaction_group_addAddress.sql
@@ -0,0 +1,8 @@
+
+CREATE TABLE `transaction_group_addaddress` (
+ `id` int(11) NOT NULL,
+ `transaction_id` int(11) NOT NULL,
+ `address_type_id` int(11) NOT NULL,
+ `public_key` binary(32) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
diff --git a/db/transaction_group_allowtrades.sql b/db/transaction_group_allowtrades.sql
new file mode 100644
index 000000000..2fd94b4d6
--- /dev/null
+++ b/db/transaction_group_allowtrades.sql
@@ -0,0 +1,8 @@
+
+CREATE TABLE `transaction_group_allowtrades` (
+ `id` int(11) NOT NULL,
+ `transaction_id` int(11) NOT NULL,
+ `group_id` int(11) NOT NULL,
+ `allow` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
diff --git a/db/transaction_group_creates.sql b/db/transaction_group_creates.sql
new file mode 100644
index 000000000..0c0d7cc5d
--- /dev/null
+++ b/db/transaction_group_creates.sql
@@ -0,0 +1,9 @@
+
+CREATE TABLE `transaction_group_creates` (
+ `id` int(11) NOT NULL,
+ `transaction_id` int(11) NOT NULL,
+ `group_public_key` binary(32) NOT NULL,
+ `state_group_id` int(11) COLLATE utf8_bin NOT NULL,
+ `name` varchar(64) COLLATE utf8_bin NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
diff --git a/db/transaction_send_coins.sql b/db/transaction_send_coins.sql
new file mode 100644
index 000000000..8113c78e0
--- /dev/null
+++ b/db/transaction_send_coins.sql
@@ -0,0 +1,11 @@
+
+CREATE TABLE `transaction_send_coins` (
+ `id` int(11) NOT NULL,
+ `transaction_id` int(11) NOT NULL,
+ `state_user_id` int(11) NOT NULL,
+ `receiver_public_key` binary(32) NOT NULL,
+ `receiver_user_id` varbinary(64) NOT NULL,
+ `amount` bigint(20) NOT NULL,
+ `sender_final_balance` bigint(20) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
diff --git a/db/transaction_signatures.sql b/db/transaction_signatures.sql
new file mode 100644
index 000000000..9fab87fb2
--- /dev/null
+++ b/db/transaction_signatures.sql
@@ -0,0 +1,7 @@
+CREATE TABLE `transaction_signatures` (
+ `id` int(11) NOT NULL,
+ `transaction_id` int(11) NOT NULL,
+ `signature` binary(64) NOT NULL,
+ `pubkey` binary(32) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
diff --git a/db/transaction_types.sql b/db/transaction_types.sql
new file mode 100644
index 000000000..26bd70c52
--- /dev/null
+++ b/db/transaction_types.sql
@@ -0,0 +1,6 @@
+CREATE TABLE `transaction_types` (
+ `id` INT NOT NULL AUTO_INCREMENT,
+ `name` VARCHAR(24) NOT NULL,
+ `text` VARCHAR(255) NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
\ No newline at end of file
diff --git a/db/transactions.sql b/db/transactions.sql
new file mode 100644
index 000000000..e664b067f
--- /dev/null
+++ b/db/transactions.sql
@@ -0,0 +1,9 @@
+
+CREATE TABLE `transactions` (
+ `id` bigint(20) NOT NULL,
+ `state_group_id` int(11) NOT NULL,
+ `transaction_type_id` int(11) NOT NULL,
+ `tx_hash` binary(32) NOT NULL,
+ `received` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
diff --git a/index.php b/index.php
new file mode 100644
index 000000000..459176916
--- /dev/null
+++ b/index.php
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+ tests/TestCase/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ src/
+ plugins/*/src/
+
+ src/Console/Installer.php
+
+
+
+
diff --git a/plugins/empty b/plugins/empty
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/Application.php b/src/Application.php
new file mode 100644
index 000000000..4d7529e97
--- /dev/null
+++ b/src/Application.php
@@ -0,0 +1,99 @@
+bootstrapCli();
+ }
+
+ /*
+ * Only try to load DebugKit in development mode
+ * Debug Kit should not be installed on a production system
+ */
+ if (Configure::read('debug')) {
+ $this->addPlugin(\DebugKit\Plugin::class);
+ }
+
+ // Load more plugins here
+ }
+
+ /**
+ * Setup the middleware queue your application will use.
+ *
+ * @param \Cake\Http\MiddlewareQueue $middlewareQueue The middleware queue to setup.
+ * @return \Cake\Http\MiddlewareQueue The updated middleware queue.
+ */
+ public function middleware($middlewareQueue)
+ {
+ $middlewareQueue
+ // Catch any exceptions in the lower layers,
+ // and make an error page/response
+ ->add(new ErrorHandlerMiddleware(null, Configure::read('Error')))
+
+ // Handle plugin/theme assets like CakePHP normally does.
+ ->add(new AssetMiddleware([
+ 'cacheTime' => Configure::read('Asset.cacheTime')
+ ]))
+
+ // Add routing middleware.
+ // If you have a large number of routes connected, turning on routes
+ // caching in production could improve performance. For that when
+ // creating the middleware instance specify the cache config name by
+ // using it's second constructor argument:
+ // `new RoutingMiddleware($this, '_cake_routes_')`
+ ->add(new RoutingMiddleware($this));
+
+ return $middlewareQueue;
+ }
+
+ /**
+ * @return void
+ */
+ protected function bootstrapCli()
+ {
+ try {
+ $this->addPlugin('Bake');
+ } catch (MissingPluginException $e) {
+ // Do not halt if the plugin is missing
+ }
+
+ $this->addPlugin('Migrations');
+
+ // Load more plugins here
+ }
+}
diff --git a/src/Console/Installer.php b/src/Console/Installer.php
new file mode 100644
index 000000000..3bcef473b
--- /dev/null
+++ b/src/Console/Installer.php
@@ -0,0 +1,246 @@
+getIO();
+
+ $rootDir = dirname(dirname(__DIR__));
+
+ static::createAppConfig($rootDir, $io);
+ static::createWritableDirectories($rootDir, $io);
+
+ // ask if the permissions should be changed
+ if ($io->isInteractive()) {
+ $validator = function ($arg) {
+ if (in_array($arg, ['Y', 'y', 'N', 'n'])) {
+ return $arg;
+ }
+ throw new Exception('This is not a valid answer. Please choose Y or n.');
+ };
+ $setFolderPermissions = $io->askAndValidate(
+ 'Set Folder Permissions ? (Default to Y) [Y,n ]? ',
+ $validator,
+ 10,
+ 'Y'
+ );
+
+ if (in_array($setFolderPermissions, ['Y', 'y'])) {
+ static::setFolderPermissions($rootDir, $io);
+ }
+ } else {
+ static::setFolderPermissions($rootDir, $io);
+ }
+
+ static::setSecuritySalt($rootDir, $io);
+
+ $class = 'Cake\Codeception\Console\Installer';
+ if (class_exists($class)) {
+ $class::customizeCodeceptionBinary($event);
+ }
+ }
+
+ /**
+ * Create the config/app.php file if it does not exist.
+ *
+ * @param string $dir The application's root directory.
+ * @param \Composer\IO\IOInterface $io IO interface to write to console.
+ * @return void
+ */
+ public static function createAppConfig($dir, $io)
+ {
+ $appConfig = $dir . '/config/app.php';
+ $defaultConfig = $dir . '/config/app.default.php';
+ if (!file_exists($appConfig)) {
+ copy($defaultConfig, $appConfig);
+ $io->write('Created `config/app.php` file');
+ }
+ }
+
+ /**
+ * Create the `logs` and `tmp` directories.
+ *
+ * @param string $dir The application's root directory.
+ * @param \Composer\IO\IOInterface $io IO interface to write to console.
+ * @return void
+ */
+ public static function createWritableDirectories($dir, $io)
+ {
+ foreach (static::WRITABLE_DIRS as $path) {
+ $path = $dir . '/' . $path;
+ if (!file_exists($path)) {
+ mkdir($path);
+ $io->write('Created `' . $path . '` directory');
+ }
+ }
+ }
+
+ /**
+ * Set globally writable permissions on the "tmp" and "logs" directory.
+ *
+ * This is not the most secure default, but it gets people up and running quickly.
+ *
+ * @param string $dir The application's root directory.
+ * @param \Composer\IO\IOInterface $io IO interface to write to console.
+ * @return void
+ */
+ public static function setFolderPermissions($dir, $io)
+ {
+ // Change the permissions on a path and output the results.
+ $changePerms = function ($path) use ($io) {
+ $currentPerms = fileperms($path) & 0777;
+ $worldWritable = $currentPerms | 0007;
+ if ($worldWritable == $currentPerms) {
+ return;
+ }
+
+ $res = chmod($path, $worldWritable);
+ if ($res) {
+ $io->write('Permissions set on ' . $path);
+ } else {
+ $io->write('Failed to set permissions on ' . $path);
+ }
+ };
+
+ $walker = function ($dir) use (&$walker, $changePerms) {
+ $files = array_diff(scandir($dir), ['.', '..']);
+ foreach ($files as $file) {
+ $path = $dir . '/' . $file;
+
+ if (!is_dir($path)) {
+ continue;
+ }
+
+ $changePerms($path);
+ $walker($path);
+ }
+ };
+
+ $walker($dir . '/tmp');
+ $changePerms($dir . '/tmp');
+ $changePerms($dir . '/logs');
+ }
+
+ /**
+ * Set the security.salt value in the application's config file.
+ *
+ * @param string $dir The application's root directory.
+ * @param \Composer\IO\IOInterface $io IO interface to write to console.
+ * @return void
+ */
+ public static function setSecuritySalt($dir, $io)
+ {
+ $newKey = hash('sha256', Security::randomBytes(64));
+ static::setSecuritySaltInFile($dir, $io, $newKey, 'app.php');
+ }
+
+ /**
+ * Set the security.salt value in a given file
+ *
+ * @param string $dir The application's root directory.
+ * @param \Composer\IO\IOInterface $io IO interface to write to console.
+ * @param string $newKey key to set in the file
+ * @param string $file A path to a file relative to the application's root
+ * @return void
+ */
+ public static function setSecuritySaltInFile($dir, $io, $newKey, $file)
+ {
+ $config = $dir . '/config/' . $file;
+ $content = file_get_contents($config);
+
+ $content = str_replace('__SALT__', $newKey, $content, $count);
+
+ if ($count == 0) {
+ $io->write('No Security.salt placeholder to replace.');
+
+ return;
+ }
+
+ $result = file_put_contents($config, $content);
+ if ($result) {
+ $io->write('Updated Security.salt value in config/' . $file);
+
+ return;
+ }
+ $io->write('Unable to update Security.salt value.');
+ }
+
+ /**
+ * Set the APP_NAME value in a given file
+ *
+ * @param string $dir The application's root directory.
+ * @param \Composer\IO\IOInterface $io IO interface to write to console.
+ * @param string $appName app name to set in the file
+ * @param string $file A path to a file relative to the application's root
+ * @return void
+ */
+ public static function setAppNameInFile($dir, $io, $appName, $file)
+ {
+ $config = $dir . '/config/' . $file;
+ $content = file_get_contents($config);
+ $content = str_replace('__APP_NAME__', $appName, $content, $count);
+
+ if ($count == 0) {
+ $io->write('No __APP_NAME__ placeholder to replace.');
+
+ return;
+ }
+
+ $result = file_put_contents($config, $content);
+ if ($result) {
+ $io->write('Updated __APP_NAME__ value in config/' . $file);
+
+ return;
+ }
+ $io->write('Unable to update __APP_NAME__ value.');
+ }
+}
diff --git a/src/Controller/AddressTypesController.php b/src/Controller/AddressTypesController.php
new file mode 100644
index 000000000..92bfad6c8
--- /dev/null
+++ b/src/Controller/AddressTypesController.php
@@ -0,0 +1,106 @@
+paginate($this->AddressTypes);
+
+ $this->set(compact('addressTypes'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id Address Type id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $addressType = $this->AddressTypes->get($id, [
+ 'contain' => ['StateGroupAddresses', 'TransactionGroupAddaddress']
+ ]);
+
+ $this->set('addressType', $addressType);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $addressType = $this->AddressTypes->newEntity();
+ if ($this->request->is('post')) {
+ $addressType = $this->AddressTypes->patchEntity($addressType, $this->request->getData());
+ if ($this->AddressTypes->save($addressType)) {
+ $this->Flash->success(__('The address type has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The address type could not be saved. Please, try again.'));
+ }
+ $this->set(compact('addressType'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id Address Type id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $addressType = $this->AddressTypes->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $addressType = $this->AddressTypes->patchEntity($addressType, $this->request->getData());
+ if ($this->AddressTypes->save($addressType)) {
+ $this->Flash->success(__('The address type has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The address type could not be saved. Please, try again.'));
+ }
+ $this->set(compact('addressType'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id Address Type id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $addressType = $this->AddressTypes->get($id);
+ if ($this->AddressTypes->delete($addressType)) {
+ $this->Flash->success(__('The address type has been deleted.'));
+ } else {
+ $this->Flash->error(__('The address type could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/AppController.php b/src/Controller/AppController.php
new file mode 100644
index 000000000..49fa03fc4
--- /dev/null
+++ b/src/Controller/AppController.php
@@ -0,0 +1,55 @@
+loadComponent('Security');`
+ *
+ * @return void
+ */
+ public function initialize()
+ {
+ parent::initialize();
+
+ $this->loadComponent('RequestHandler', [
+ 'enableBeforeRedirect' => false,
+ ]);
+ $this->loadComponent('Flash');
+
+ /*
+ * Enable the following component for recommended CakePHP security settings.
+ * see https://book.cakephp.org/3.0/en/controllers/components/security.html
+ */
+ //$this->loadComponent('Security');
+ }
+}
diff --git a/src/Controller/Component/empty b/src/Controller/Component/empty
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/Controller/ErrorController.php b/src/Controller/ErrorController.php
new file mode 100644
index 000000000..43bd2fb52
--- /dev/null
+++ b/src/Controller/ErrorController.php
@@ -0,0 +1,70 @@
+loadComponent('RequestHandler', [
+ 'enableBeforeRedirect' => false,
+ ]);
+ }
+
+ /**
+ * beforeFilter callback.
+ *
+ * @param \Cake\Event\Event $event Event.
+ * @return \Cake\Http\Response|null|void
+ */
+ public function beforeFilter(Event $event)
+ {
+ }
+
+ /**
+ * beforeRender callback.
+ *
+ * @param \Cake\Event\Event $event Event.
+ * @return \Cake\Http\Response|null|void
+ */
+ public function beforeRender(Event $event)
+ {
+ parent::beforeRender($event);
+
+ $this->viewBuilder()->setTemplatePath('Error');
+ }
+
+ /**
+ * afterFilter callback.
+ *
+ * @param \Cake\Event\Event $event Event.
+ * @return \Cake\Http\Response|null|void
+ */
+ public function afterFilter(Event $event)
+ {
+ }
+}
diff --git a/src/Controller/OperatorsController.php b/src/Controller/OperatorsController.php
new file mode 100644
index 000000000..8dd0660f2
--- /dev/null
+++ b/src/Controller/OperatorsController.php
@@ -0,0 +1,106 @@
+paginate($this->Operators);
+
+ $this->set(compact('operators'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id Operator id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $operator = $this->Operators->get($id, [
+ 'contain' => []
+ ]);
+
+ $this->set('operator', $operator);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $operator = $this->Operators->newEntity();
+ if ($this->request->is('post')) {
+ $operator = $this->Operators->patchEntity($operator, $this->request->getData());
+ if ($this->Operators->save($operator)) {
+ $this->Flash->success(__('The operator has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The operator could not be saved. Please, try again.'));
+ }
+ $this->set(compact('operator'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id Operator id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $operator = $this->Operators->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $operator = $this->Operators->patchEntity($operator, $this->request->getData());
+ if ($this->Operators->save($operator)) {
+ $this->Flash->success(__('The operator has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The operator could not be saved. Please, try again.'));
+ }
+ $this->set(compact('operator'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id Operator id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $operator = $this->Operators->get($id);
+ if ($this->Operators->delete($operator)) {
+ $this->Flash->success(__('The operator has been deleted.'));
+ } else {
+ $this->Flash->error(__('The operator could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/PagesController.php b/src/Controller/PagesController.php
new file mode 100644
index 000000000..d02366110
--- /dev/null
+++ b/src/Controller/PagesController.php
@@ -0,0 +1,69 @@
+redirect('/');
+ }
+ if (in_array('..', $path, true) || in_array('.', $path, true)) {
+ throw new ForbiddenException();
+ }
+ $page = $subpage = null;
+
+ if (!empty($path[0])) {
+ $page = $path[0];
+ }
+ if (!empty($path[1])) {
+ $subpage = $path[1];
+ }
+ $this->set(compact('page', 'subpage'));
+
+ try {
+ $this->render(implode('/', $path));
+ } catch (MissingTemplateException $exception) {
+ if (Configure::read('debug')) {
+ throw $exception;
+ }
+ throw new NotFoundException();
+ }
+ }
+}
diff --git a/src/Controller/StateBalancesController.php b/src/Controller/StateBalancesController.php
new file mode 100644
index 000000000..20580fcf4
--- /dev/null
+++ b/src/Controller/StateBalancesController.php
@@ -0,0 +1,111 @@
+paginate = [
+ 'contain' => ['StateUsers']
+ ];
+ $stateBalances = $this->paginate($this->StateBalances);
+
+ $this->set(compact('stateBalances'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id State Balance id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $stateBalance = $this->StateBalances->get($id, [
+ 'contain' => ['StateUsers']
+ ]);
+
+ $this->set('stateBalance', $stateBalance);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $stateBalance = $this->StateBalances->newEntity();
+ if ($this->request->is('post')) {
+ $stateBalance = $this->StateBalances->patchEntity($stateBalance, $this->request->getData());
+ if ($this->StateBalances->save($stateBalance)) {
+ $this->Flash->success(__('The state balance has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state balance could not be saved. Please, try again.'));
+ }
+ $stateUsers = $this->StateBalances->StateUsers->find('list', ['limit' => 200]);
+ $this->set(compact('stateBalance', 'stateUsers'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id State Balance id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $stateBalance = $this->StateBalances->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $stateBalance = $this->StateBalances->patchEntity($stateBalance, $this->request->getData());
+ if ($this->StateBalances->save($stateBalance)) {
+ $this->Flash->success(__('The state balance has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state balance could not be saved. Please, try again.'));
+ }
+ $stateUsers = $this->StateBalances->StateUsers->find('list', ['limit' => 200]);
+ $this->set(compact('stateBalance', 'stateUsers'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id State Balance id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $stateBalance = $this->StateBalances->get($id);
+ if ($this->StateBalances->delete($stateBalance)) {
+ $this->Flash->success(__('The state balance has been deleted.'));
+ } else {
+ $this->Flash->error(__('The state balance could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/StateCreatedController.php b/src/Controller/StateCreatedController.php
new file mode 100644
index 000000000..b66f1b7c1
--- /dev/null
+++ b/src/Controller/StateCreatedController.php
@@ -0,0 +1,113 @@
+paginate = [
+ 'contain' => ['Transactions', 'StateUsers']
+ ];
+ $stateCreated = $this->paginate($this->StateCreated);
+
+ $this->set(compact('stateCreated'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id State Created id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $stateCreated = $this->StateCreated->get($id, [
+ 'contain' => ['Transactions', 'StateUsers']
+ ]);
+
+ $this->set('stateCreated', $stateCreated);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $stateCreated = $this->StateCreated->newEntity();
+ if ($this->request->is('post')) {
+ $stateCreated = $this->StateCreated->patchEntity($stateCreated, $this->request->getData());
+ if ($this->StateCreated->save($stateCreated)) {
+ $this->Flash->success(__('The state created has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state created could not be saved. Please, try again.'));
+ }
+ $transactions = $this->StateCreated->Transactions->find('list', ['limit' => 200]);
+ $stateUsers = $this->StateCreated->StateUsers->find('list', ['limit' => 200]);
+ $this->set(compact('stateCreated', 'transactions', 'stateUsers'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id State Created id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $stateCreated = $this->StateCreated->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $stateCreated = $this->StateCreated->patchEntity($stateCreated, $this->request->getData());
+ if ($this->StateCreated->save($stateCreated)) {
+ $this->Flash->success(__('The state created has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state created could not be saved. Please, try again.'));
+ }
+ $transactions = $this->StateCreated->Transactions->find('list', ['limit' => 200]);
+ $stateUsers = $this->StateCreated->StateUsers->find('list', ['limit' => 200]);
+ $this->set(compact('stateCreated', 'transactions', 'stateUsers'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id State Created id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $stateCreated = $this->StateCreated->get($id);
+ if ($this->StateCreated->delete($stateCreated)) {
+ $this->Flash->success(__('The state created has been deleted.'));
+ } else {
+ $this->Flash->error(__('The state created could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/StateGroupAddressesController.php b/src/Controller/StateGroupAddressesController.php
new file mode 100644
index 000000000..13f2b1f78
--- /dev/null
+++ b/src/Controller/StateGroupAddressesController.php
@@ -0,0 +1,113 @@
+paginate = [
+ 'contain' => ['StateGroups', 'AddressTypes']
+ ];
+ $stateGroupAddresses = $this->paginate($this->StateGroupAddresses);
+
+ $this->set(compact('stateGroupAddresses'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id State Group Address id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $stateGroupAddress = $this->StateGroupAddresses->get($id, [
+ 'contain' => ['StateGroups', 'AddressTypes']
+ ]);
+
+ $this->set('stateGroupAddress', $stateGroupAddress);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $stateGroupAddress = $this->StateGroupAddresses->newEntity();
+ if ($this->request->is('post')) {
+ $stateGroupAddress = $this->StateGroupAddresses->patchEntity($stateGroupAddress, $this->request->getData());
+ if ($this->StateGroupAddresses->save($stateGroupAddress)) {
+ $this->Flash->success(__('The state group address has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state group address could not be saved. Please, try again.'));
+ }
+ $stateGroups = $this->StateGroupAddresses->StateGroups->find('list', ['limit' => 200]);
+ $addressTypes = $this->StateGroupAddresses->AddressTypes->find('list', ['limit' => 200]);
+ $this->set(compact('stateGroupAddress', 'stateGroups', 'addressTypes'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id State Group Address id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $stateGroupAddress = $this->StateGroupAddresses->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $stateGroupAddress = $this->StateGroupAddresses->patchEntity($stateGroupAddress, $this->request->getData());
+ if ($this->StateGroupAddresses->save($stateGroupAddress)) {
+ $this->Flash->success(__('The state group address has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state group address could not be saved. Please, try again.'));
+ }
+ $stateGroups = $this->StateGroupAddresses->StateGroups->find('list', ['limit' => 200]);
+ $addressTypes = $this->StateGroupAddresses->AddressTypes->find('list', ['limit' => 200]);
+ $this->set(compact('stateGroupAddress', 'stateGroups', 'addressTypes'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id State Group Address id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $stateGroupAddress = $this->StateGroupAddresses->get($id);
+ if ($this->StateGroupAddresses->delete($stateGroupAddress)) {
+ $this->Flash->success(__('The state group address has been deleted.'));
+ } else {
+ $this->Flash->error(__('The state group address could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/StateGroupRelationshipsController.php b/src/Controller/StateGroupRelationshipsController.php
new file mode 100644
index 000000000..631ca13d1
--- /dev/null
+++ b/src/Controller/StateGroupRelationshipsController.php
@@ -0,0 +1,115 @@
+paginate = [
+ 'contain' => ['StateGroup1s', 'StateGroup2s', 'StateRelationships']
+ ];
+ $stateGroupRelationships = $this->paginate($this->StateGroupRelationships);
+
+ $this->set(compact('stateGroupRelationships'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id State Group Relationship id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $stateGroupRelationship = $this->StateGroupRelationships->get($id, [
+ 'contain' => ['StateGroup1s', 'StateGroup2s', 'StateRelationships']
+ ]);
+
+ $this->set('stateGroupRelationship', $stateGroupRelationship);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $stateGroupRelationship = $this->StateGroupRelationships->newEntity();
+ if ($this->request->is('post')) {
+ $stateGroupRelationship = $this->StateGroupRelationships->patchEntity($stateGroupRelationship, $this->request->getData());
+ if ($this->StateGroupRelationships->save($stateGroupRelationship)) {
+ $this->Flash->success(__('The state group relationship has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state group relationship could not be saved. Please, try again.'));
+ }
+ $stateGroup1s = $this->StateGroupRelationships->StateGroup1s->find('list', ['limit' => 200]);
+ $stateGroup2s = $this->StateGroupRelationships->StateGroup2s->find('list', ['limit' => 200]);
+ $stateRelationships = $this->StateGroupRelationships->StateRelationships->find('list', ['limit' => 200]);
+ $this->set(compact('stateGroupRelationship', 'stateGroup1s', 'stateGroup2s', 'stateRelationships'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id State Group Relationship id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $stateGroupRelationship = $this->StateGroupRelationships->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $stateGroupRelationship = $this->StateGroupRelationships->patchEntity($stateGroupRelationship, $this->request->getData());
+ if ($this->StateGroupRelationships->save($stateGroupRelationship)) {
+ $this->Flash->success(__('The state group relationship has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state group relationship could not be saved. Please, try again.'));
+ }
+ $stateGroup1s = $this->StateGroupRelationships->StateGroup1s->find('list', ['limit' => 200]);
+ $stateGroup2s = $this->StateGroupRelationships->StateGroup2s->find('list', ['limit' => 200]);
+ $stateRelationships = $this->StateGroupRelationships->StateRelationships->find('list', ['limit' => 200]);
+ $this->set(compact('stateGroupRelationship', 'stateGroup1s', 'stateGroup2s', 'stateRelationships'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id State Group Relationship id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $stateGroupRelationship = $this->StateGroupRelationships->get($id);
+ if ($this->StateGroupRelationships->delete($stateGroupRelationship)) {
+ $this->Flash->success(__('The state group relationship has been deleted.'));
+ } else {
+ $this->Flash->error(__('The state group relationship could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/StateGroupsController.php b/src/Controller/StateGroupsController.php
new file mode 100644
index 000000000..36969671d
--- /dev/null
+++ b/src/Controller/StateGroupsController.php
@@ -0,0 +1,111 @@
+paginate = [
+ 'contain' => ['Indices']
+ ];
+ $stateGroups = $this->paginate($this->StateGroups);
+
+ $this->set(compact('stateGroups'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id State Group id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $stateGroup = $this->StateGroups->get($id, [
+ 'contain' => ['Indices', 'StateGroupAddresses', 'StateUsers', 'TransactionGroupCreates', 'Transactions']
+ ]);
+
+ $this->set('stateGroup', $stateGroup);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $stateGroup = $this->StateGroups->newEntity();
+ if ($this->request->is('post')) {
+ $stateGroup = $this->StateGroups->patchEntity($stateGroup, $this->request->getData());
+ if ($this->StateGroups->save($stateGroup)) {
+ $this->Flash->success(__('The state group has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state group could not be saved. Please, try again.'));
+ }
+ $indices = $this->StateGroups->Indices->find('list', ['limit' => 200]);
+ $this->set(compact('stateGroup', 'indices'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id State Group id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $stateGroup = $this->StateGroups->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $stateGroup = $this->StateGroups->patchEntity($stateGroup, $this->request->getData());
+ if ($this->StateGroups->save($stateGroup)) {
+ $this->Flash->success(__('The state group has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state group could not be saved. Please, try again.'));
+ }
+ $indices = $this->StateGroups->Indices->find('list', ['limit' => 200]);
+ $this->set(compact('stateGroup', 'indices'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id State Group id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $stateGroup = $this->StateGroups->get($id);
+ if ($this->StateGroups->delete($stateGroup)) {
+ $this->Flash->success(__('The state group has been deleted.'));
+ } else {
+ $this->Flash->error(__('The state group could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/StateRelationshipTypesController.php b/src/Controller/StateRelationshipTypesController.php
new file mode 100644
index 000000000..954b594e2
--- /dev/null
+++ b/src/Controller/StateRelationshipTypesController.php
@@ -0,0 +1,106 @@
+paginate($this->StateRelationshipTypes);
+
+ $this->set(compact('stateRelationshipTypes'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id State Relationship Type id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $stateRelationshipType = $this->StateRelationshipTypes->get($id, [
+ 'contain' => []
+ ]);
+
+ $this->set('stateRelationshipType', $stateRelationshipType);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $stateRelationshipType = $this->StateRelationshipTypes->newEntity();
+ if ($this->request->is('post')) {
+ $stateRelationshipType = $this->StateRelationshipTypes->patchEntity($stateRelationshipType, $this->request->getData());
+ if ($this->StateRelationshipTypes->save($stateRelationshipType)) {
+ $this->Flash->success(__('The state relationship type has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state relationship type could not be saved. Please, try again.'));
+ }
+ $this->set(compact('stateRelationshipType'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id State Relationship Type id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $stateRelationshipType = $this->StateRelationshipTypes->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $stateRelationshipType = $this->StateRelationshipTypes->patchEntity($stateRelationshipType, $this->request->getData());
+ if ($this->StateRelationshipTypes->save($stateRelationshipType)) {
+ $this->Flash->success(__('The state relationship type has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state relationship type could not be saved. Please, try again.'));
+ }
+ $this->set(compact('stateRelationshipType'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id State Relationship Type id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $stateRelationshipType = $this->StateRelationshipTypes->get($id);
+ if ($this->StateRelationshipTypes->delete($stateRelationshipType)) {
+ $this->Flash->success(__('The state relationship type has been deleted.'));
+ } else {
+ $this->Flash->error(__('The state relationship type could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/StateUsersController.php b/src/Controller/StateUsersController.php
new file mode 100644
index 000000000..ad86e651a
--- /dev/null
+++ b/src/Controller/StateUsersController.php
@@ -0,0 +1,113 @@
+paginate = [
+ 'contain' => ['Indices', 'StateGroups']
+ ];
+ $stateUsers = $this->paginate($this->StateUsers);
+
+ $this->set(compact('stateUsers'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id State User id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $stateUser = $this->StateUsers->get($id, [
+ 'contain' => ['Indices', 'StateGroups', 'StateBalances', 'StateCreated', 'TransactionCreations', 'TransactionSendCoins']
+ ]);
+
+ $this->set('stateUser', $stateUser);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $stateUser = $this->StateUsers->newEntity();
+ if ($this->request->is('post')) {
+ $stateUser = $this->StateUsers->patchEntity($stateUser, $this->request->getData());
+ if ($this->StateUsers->save($stateUser)) {
+ $this->Flash->success(__('The state user has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state user could not be saved. Please, try again.'));
+ }
+ $indices = $this->StateUsers->Indices->find('list', ['limit' => 200]);
+ $stateGroups = $this->StateUsers->StateGroups->find('list', ['limit' => 200]);
+ $this->set(compact('stateUser', 'indices', 'stateGroups'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id State User id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $stateUser = $this->StateUsers->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $stateUser = $this->StateUsers->patchEntity($stateUser, $this->request->getData());
+ if ($this->StateUsers->save($stateUser)) {
+ $this->Flash->success(__('The state user has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The state user could not be saved. Please, try again.'));
+ }
+ $indices = $this->StateUsers->Indices->find('list', ['limit' => 200]);
+ $stateGroups = $this->StateUsers->StateGroups->find('list', ['limit' => 200]);
+ $this->set(compact('stateUser', 'indices', 'stateGroups'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id State User id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $stateUser = $this->StateUsers->get($id);
+ if ($this->StateUsers->delete($stateUser)) {
+ $this->Flash->success(__('The state user has been deleted.'));
+ } else {
+ $this->Flash->error(__('The state user could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/TransactionCreationsController.php b/src/Controller/TransactionCreationsController.php
new file mode 100644
index 000000000..126932538
--- /dev/null
+++ b/src/Controller/TransactionCreationsController.php
@@ -0,0 +1,113 @@
+paginate = [
+ 'contain' => ['Transactions', 'StateUsers']
+ ];
+ $transactionCreations = $this->paginate($this->TransactionCreations);
+
+ $this->set(compact('transactionCreations'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id Transaction Creation id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $transactionCreation = $this->TransactionCreations->get($id, [
+ 'contain' => ['Transactions', 'StateUsers']
+ ]);
+
+ $this->set('transactionCreation', $transactionCreation);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $transactionCreation = $this->TransactionCreations->newEntity();
+ if ($this->request->is('post')) {
+ $transactionCreation = $this->TransactionCreations->patchEntity($transactionCreation, $this->request->getData());
+ if ($this->TransactionCreations->save($transactionCreation)) {
+ $this->Flash->success(__('The transaction creation has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction creation could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionCreations->Transactions->find('list', ['limit' => 200]);
+ $stateUsers = $this->TransactionCreations->StateUsers->find('list', ['limit' => 200]);
+ $this->set(compact('transactionCreation', 'transactions', 'stateUsers'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id Transaction Creation id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $transactionCreation = $this->TransactionCreations->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $transactionCreation = $this->TransactionCreations->patchEntity($transactionCreation, $this->request->getData());
+ if ($this->TransactionCreations->save($transactionCreation)) {
+ $this->Flash->success(__('The transaction creation has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction creation could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionCreations->Transactions->find('list', ['limit' => 200]);
+ $stateUsers = $this->TransactionCreations->StateUsers->find('list', ['limit' => 200]);
+ $this->set(compact('transactionCreation', 'transactions', 'stateUsers'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id Transaction Creation id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $transactionCreation = $this->TransactionCreations->get($id);
+ if ($this->TransactionCreations->delete($transactionCreation)) {
+ $this->Flash->success(__('The transaction creation has been deleted.'));
+ } else {
+ $this->Flash->error(__('The transaction creation could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/TransactionGroupAddaddressController.php b/src/Controller/TransactionGroupAddaddressController.php
new file mode 100644
index 000000000..fc23c111b
--- /dev/null
+++ b/src/Controller/TransactionGroupAddaddressController.php
@@ -0,0 +1,113 @@
+paginate = [
+ 'contain' => ['Transactions', 'AddressTypes']
+ ];
+ $transactionGroupAddaddress = $this->paginate($this->TransactionGroupAddaddress);
+
+ $this->set(compact('transactionGroupAddaddress'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id Transaction Group Addaddres id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $transactionGroupAddaddres = $this->TransactionGroupAddaddress->get($id, [
+ 'contain' => ['Transactions', 'AddressTypes']
+ ]);
+
+ $this->set('transactionGroupAddaddres', $transactionGroupAddaddres);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $transactionGroupAddaddres = $this->TransactionGroupAddaddress->newEntity();
+ if ($this->request->is('post')) {
+ $transactionGroupAddaddres = $this->TransactionGroupAddaddress->patchEntity($transactionGroupAddaddres, $this->request->getData());
+ if ($this->TransactionGroupAddaddress->save($transactionGroupAddaddres)) {
+ $this->Flash->success(__('The transaction group addaddres has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction group addaddres could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionGroupAddaddress->Transactions->find('list', ['limit' => 200]);
+ $addressTypes = $this->TransactionGroupAddaddress->AddressTypes->find('list', ['limit' => 200]);
+ $this->set(compact('transactionGroupAddaddres', 'transactions', 'addressTypes'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id Transaction Group Addaddres id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $transactionGroupAddaddres = $this->TransactionGroupAddaddress->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $transactionGroupAddaddres = $this->TransactionGroupAddaddress->patchEntity($transactionGroupAddaddres, $this->request->getData());
+ if ($this->TransactionGroupAddaddress->save($transactionGroupAddaddres)) {
+ $this->Flash->success(__('The transaction group addaddres has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction group addaddres could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionGroupAddaddress->Transactions->find('list', ['limit' => 200]);
+ $addressTypes = $this->TransactionGroupAddaddress->AddressTypes->find('list', ['limit' => 200]);
+ $this->set(compact('transactionGroupAddaddres', 'transactions', 'addressTypes'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id Transaction Group Addaddres id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $transactionGroupAddaddres = $this->TransactionGroupAddaddress->get($id);
+ if ($this->TransactionGroupAddaddress->delete($transactionGroupAddaddres)) {
+ $this->Flash->success(__('The transaction group addaddres has been deleted.'));
+ } else {
+ $this->Flash->error(__('The transaction group addaddres could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/TransactionGroupAllowtradesController.php b/src/Controller/TransactionGroupAllowtradesController.php
new file mode 100644
index 000000000..0b83332c6
--- /dev/null
+++ b/src/Controller/TransactionGroupAllowtradesController.php
@@ -0,0 +1,113 @@
+paginate = [
+ 'contain' => ['Transactions', 'Groups']
+ ];
+ $transactionGroupAllowtrades = $this->paginate($this->TransactionGroupAllowtrades);
+
+ $this->set(compact('transactionGroupAllowtrades'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id Transaction Group Allowtrade id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->get($id, [
+ 'contain' => ['Transactions', 'Groups']
+ ]);
+
+ $this->set('transactionGroupAllowtrade', $transactionGroupAllowtrade);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->newEntity();
+ if ($this->request->is('post')) {
+ $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->patchEntity($transactionGroupAllowtrade, $this->request->getData());
+ if ($this->TransactionGroupAllowtrades->save($transactionGroupAllowtrade)) {
+ $this->Flash->success(__('The transaction group allowtrade has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction group allowtrade could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionGroupAllowtrades->Transactions->find('list', ['limit' => 200]);
+ $groups = $this->TransactionGroupAllowtrades->Groups->find('list', ['limit' => 200]);
+ $this->set(compact('transactionGroupAllowtrade', 'transactions', 'groups'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id Transaction Group Allowtrade id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->patchEntity($transactionGroupAllowtrade, $this->request->getData());
+ if ($this->TransactionGroupAllowtrades->save($transactionGroupAllowtrade)) {
+ $this->Flash->success(__('The transaction group allowtrade has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction group allowtrade could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionGroupAllowtrades->Transactions->find('list', ['limit' => 200]);
+ $groups = $this->TransactionGroupAllowtrades->Groups->find('list', ['limit' => 200]);
+ $this->set(compact('transactionGroupAllowtrade', 'transactions', 'groups'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id Transaction Group Allowtrade id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $transactionGroupAllowtrade = $this->TransactionGroupAllowtrades->get($id);
+ if ($this->TransactionGroupAllowtrades->delete($transactionGroupAllowtrade)) {
+ $this->Flash->success(__('The transaction group allowtrade has been deleted.'));
+ } else {
+ $this->Flash->error(__('The transaction group allowtrade could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/TransactionGroupCreatesController.php b/src/Controller/TransactionGroupCreatesController.php
new file mode 100644
index 000000000..57e5c7d8f
--- /dev/null
+++ b/src/Controller/TransactionGroupCreatesController.php
@@ -0,0 +1,113 @@
+paginate = [
+ 'contain' => ['Transactions', 'StateGroups']
+ ];
+ $transactionGroupCreates = $this->paginate($this->TransactionGroupCreates);
+
+ $this->set(compact('transactionGroupCreates'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id Transaction Group Create id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $transactionGroupCreate = $this->TransactionGroupCreates->get($id, [
+ 'contain' => ['Transactions', 'StateGroups']
+ ]);
+
+ $this->set('transactionGroupCreate', $transactionGroupCreate);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $transactionGroupCreate = $this->TransactionGroupCreates->newEntity();
+ if ($this->request->is('post')) {
+ $transactionGroupCreate = $this->TransactionGroupCreates->patchEntity($transactionGroupCreate, $this->request->getData());
+ if ($this->TransactionGroupCreates->save($transactionGroupCreate)) {
+ $this->Flash->success(__('The transaction group create has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction group create could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionGroupCreates->Transactions->find('list', ['limit' => 200]);
+ $stateGroups = $this->TransactionGroupCreates->StateGroups->find('list', ['limit' => 200]);
+ $this->set(compact('transactionGroupCreate', 'transactions', 'stateGroups'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id Transaction Group Create id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $transactionGroupCreate = $this->TransactionGroupCreates->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $transactionGroupCreate = $this->TransactionGroupCreates->patchEntity($transactionGroupCreate, $this->request->getData());
+ if ($this->TransactionGroupCreates->save($transactionGroupCreate)) {
+ $this->Flash->success(__('The transaction group create has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction group create could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionGroupCreates->Transactions->find('list', ['limit' => 200]);
+ $stateGroups = $this->TransactionGroupCreates->StateGroups->find('list', ['limit' => 200]);
+ $this->set(compact('transactionGroupCreate', 'transactions', 'stateGroups'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id Transaction Group Create id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $transactionGroupCreate = $this->TransactionGroupCreates->get($id);
+ if ($this->TransactionGroupCreates->delete($transactionGroupCreate)) {
+ $this->Flash->success(__('The transaction group create has been deleted.'));
+ } else {
+ $this->Flash->error(__('The transaction group create could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/TransactionSendCoinsController.php b/src/Controller/TransactionSendCoinsController.php
new file mode 100644
index 000000000..491f6ddb5
--- /dev/null
+++ b/src/Controller/TransactionSendCoinsController.php
@@ -0,0 +1,115 @@
+paginate = [
+ 'contain' => ['Transactions', 'StateUsers', 'ReceiverUsers']
+ ];
+ $transactionSendCoins = $this->paginate($this->TransactionSendCoins);
+
+ $this->set(compact('transactionSendCoins'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id Transaction Send Coin id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $transactionSendCoin = $this->TransactionSendCoins->get($id, [
+ 'contain' => ['Transactions', 'StateUsers', 'ReceiverUsers']
+ ]);
+
+ $this->set('transactionSendCoin', $transactionSendCoin);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $transactionSendCoin = $this->TransactionSendCoins->newEntity();
+ if ($this->request->is('post')) {
+ $transactionSendCoin = $this->TransactionSendCoins->patchEntity($transactionSendCoin, $this->request->getData());
+ if ($this->TransactionSendCoins->save($transactionSendCoin)) {
+ $this->Flash->success(__('The transaction send coin has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction send coin could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionSendCoins->Transactions->find('list', ['limit' => 200]);
+ $stateUsers = $this->TransactionSendCoins->StateUsers->find('list', ['limit' => 200]);
+ $receiverUsers = $this->TransactionSendCoins->ReceiverUsers->find('list', ['limit' => 200]);
+ $this->set(compact('transactionSendCoin', 'transactions', 'stateUsers', 'receiverUsers'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id Transaction Send Coin id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $transactionSendCoin = $this->TransactionSendCoins->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $transactionSendCoin = $this->TransactionSendCoins->patchEntity($transactionSendCoin, $this->request->getData());
+ if ($this->TransactionSendCoins->save($transactionSendCoin)) {
+ $this->Flash->success(__('The transaction send coin has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction send coin could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionSendCoins->Transactions->find('list', ['limit' => 200]);
+ $stateUsers = $this->TransactionSendCoins->StateUsers->find('list', ['limit' => 200]);
+ $receiverUsers = $this->TransactionSendCoins->ReceiverUsers->find('list', ['limit' => 200]);
+ $this->set(compact('transactionSendCoin', 'transactions', 'stateUsers', 'receiverUsers'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id Transaction Send Coin id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $transactionSendCoin = $this->TransactionSendCoins->get($id);
+ if ($this->TransactionSendCoins->delete($transactionSendCoin)) {
+ $this->Flash->success(__('The transaction send coin has been deleted.'));
+ } else {
+ $this->Flash->error(__('The transaction send coin could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/TransactionSignaturesController.php b/src/Controller/TransactionSignaturesController.php
new file mode 100644
index 000000000..91aea9558
--- /dev/null
+++ b/src/Controller/TransactionSignaturesController.php
@@ -0,0 +1,111 @@
+paginate = [
+ 'contain' => ['Transactions']
+ ];
+ $transactionSignatures = $this->paginate($this->TransactionSignatures);
+
+ $this->set(compact('transactionSignatures'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id Transaction Signature id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $transactionSignature = $this->TransactionSignatures->get($id, [
+ 'contain' => ['Transactions']
+ ]);
+
+ $this->set('transactionSignature', $transactionSignature);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $transactionSignature = $this->TransactionSignatures->newEntity();
+ if ($this->request->is('post')) {
+ $transactionSignature = $this->TransactionSignatures->patchEntity($transactionSignature, $this->request->getData());
+ if ($this->TransactionSignatures->save($transactionSignature)) {
+ $this->Flash->success(__('The transaction signature has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction signature could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionSignatures->Transactions->find('list', ['limit' => 200]);
+ $this->set(compact('transactionSignature', 'transactions'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id Transaction Signature id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $transactionSignature = $this->TransactionSignatures->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $transactionSignature = $this->TransactionSignatures->patchEntity($transactionSignature, $this->request->getData());
+ if ($this->TransactionSignatures->save($transactionSignature)) {
+ $this->Flash->success(__('The transaction signature has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction signature could not be saved. Please, try again.'));
+ }
+ $transactions = $this->TransactionSignatures->Transactions->find('list', ['limit' => 200]);
+ $this->set(compact('transactionSignature', 'transactions'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id Transaction Signature id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $transactionSignature = $this->TransactionSignatures->get($id);
+ if ($this->TransactionSignatures->delete($transactionSignature)) {
+ $this->Flash->success(__('The transaction signature has been deleted.'));
+ } else {
+ $this->Flash->error(__('The transaction signature could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/TransactionTypesController.php b/src/Controller/TransactionTypesController.php
new file mode 100644
index 000000000..8256b22eb
--- /dev/null
+++ b/src/Controller/TransactionTypesController.php
@@ -0,0 +1,106 @@
+paginate($this->TransactionTypes);
+
+ $this->set(compact('transactionTypes'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id Transaction Type id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $transactionType = $this->TransactionTypes->get($id, [
+ 'contain' => ['Transactions']
+ ]);
+
+ $this->set('transactionType', $transactionType);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $transactionType = $this->TransactionTypes->newEntity();
+ if ($this->request->is('post')) {
+ $transactionType = $this->TransactionTypes->patchEntity($transactionType, $this->request->getData());
+ if ($this->TransactionTypes->save($transactionType)) {
+ $this->Flash->success(__('The transaction type has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction type could not be saved. Please, try again.'));
+ }
+ $this->set(compact('transactionType'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id Transaction Type id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $transactionType = $this->TransactionTypes->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $transactionType = $this->TransactionTypes->patchEntity($transactionType, $this->request->getData());
+ if ($this->TransactionTypes->save($transactionType)) {
+ $this->Flash->success(__('The transaction type has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction type could not be saved. Please, try again.'));
+ }
+ $this->set(compact('transactionType'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id Transaction Type id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $transactionType = $this->TransactionTypes->get($id);
+ if ($this->TransactionTypes->delete($transactionType)) {
+ $this->Flash->success(__('The transaction type has been deleted.'));
+ } else {
+ $this->Flash->error(__('The transaction type could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Controller/TransactionsController.php b/src/Controller/TransactionsController.php
new file mode 100644
index 000000000..78d01a848
--- /dev/null
+++ b/src/Controller/TransactionsController.php
@@ -0,0 +1,113 @@
+paginate = [
+ 'contain' => ['StateGroups', 'TransactionTypes']
+ ];
+ $transactions = $this->paginate($this->Transactions);
+
+ $this->set(compact('transactions'));
+ }
+
+ /**
+ * View method
+ *
+ * @param string|null $id Transaction id.
+ * @return \Cake\Http\Response|null
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function view($id = null)
+ {
+ $transaction = $this->Transactions->get($id, [
+ 'contain' => ['StateGroups', 'TransactionTypes', 'StateCreated', 'TransactionCreations', 'TransactionGroupAddaddress', 'TransactionGroupAllowtrades', 'TransactionGroupCreates', 'TransactionSendCoins', 'TransactionSignatures']
+ ]);
+
+ $this->set('transaction', $transaction);
+ }
+
+ /**
+ * Add method
+ *
+ * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
+ */
+ public function add()
+ {
+ $transaction = $this->Transactions->newEntity();
+ if ($this->request->is('post')) {
+ $transaction = $this->Transactions->patchEntity($transaction, $this->request->getData());
+ if ($this->Transactions->save($transaction)) {
+ $this->Flash->success(__('The transaction has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction could not be saved. Please, try again.'));
+ }
+ $stateGroups = $this->Transactions->StateGroups->find('list', ['limit' => 200]);
+ $transactionTypes = $this->Transactions->TransactionTypes->find('list', ['limit' => 200]);
+ $this->set(compact('transaction', 'stateGroups', 'transactionTypes'));
+ }
+
+ /**
+ * Edit method
+ *
+ * @param string|null $id Transaction id.
+ * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function edit($id = null)
+ {
+ $transaction = $this->Transactions->get($id, [
+ 'contain' => []
+ ]);
+ if ($this->request->is(['patch', 'post', 'put'])) {
+ $transaction = $this->Transactions->patchEntity($transaction, $this->request->getData());
+ if ($this->Transactions->save($transaction)) {
+ $this->Flash->success(__('The transaction has been saved.'));
+
+ return $this->redirect(['action' => 'index']);
+ }
+ $this->Flash->error(__('The transaction could not be saved. Please, try again.'));
+ }
+ $stateGroups = $this->Transactions->StateGroups->find('list', ['limit' => 200]);
+ $transactionTypes = $this->Transactions->TransactionTypes->find('list', ['limit' => 200]);
+ $this->set(compact('transaction', 'stateGroups', 'transactionTypes'));
+ }
+
+ /**
+ * Delete method
+ *
+ * @param string|null $id Transaction id.
+ * @return \Cake\Http\Response|null Redirects to index.
+ * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
+ */
+ public function delete($id = null)
+ {
+ $this->request->allowMethod(['post', 'delete']);
+ $transaction = $this->Transactions->get($id);
+ if ($this->Transactions->delete($transaction)) {
+ $this->Flash->success(__('The transaction has been deleted.'));
+ } else {
+ $this->Flash->error(__('The transaction could not be deleted. Please, try again.'));
+ }
+
+ return $this->redirect(['action' => 'index']);
+ }
+}
diff --git a/src/Model/Behavior/empty b/src/Model/Behavior/empty
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/Model/Entity/AddressType.php b/src/Model/Entity/AddressType.php
new file mode 100644
index 000000000..08dbba281
--- /dev/null
+++ b/src/Model/Entity/AddressType.php
@@ -0,0 +1,33 @@
+ true,
+ 'text' => true,
+ 'state_group_addresses' => true,
+ 'transaction_group_addaddress' => true
+ ];
+}
diff --git a/src/Model/Entity/Operator.php b/src/Model/Entity/Operator.php
new file mode 100644
index 000000000..681fd146c
--- /dev/null
+++ b/src/Model/Entity/Operator.php
@@ -0,0 +1,28 @@
+ true,
+ 'data_base64' => true
+ ];
+}
diff --git a/src/Model/Entity/StateBalance.php b/src/Model/Entity/StateBalance.php
new file mode 100644
index 000000000..30d0d091f
--- /dev/null
+++ b/src/Model/Entity/StateBalance.php
@@ -0,0 +1,33 @@
+ true,
+ 'modified' => true,
+ 'amount' => true,
+ 'state_user' => true
+ ];
+}
diff --git a/src/Model/Entity/StateCreated.php b/src/Model/Entity/StateCreated.php
new file mode 100644
index 000000000..99c783e6c
--- /dev/null
+++ b/src/Model/Entity/StateCreated.php
@@ -0,0 +1,41 @@
+ true,
+ 'month' => true,
+ 'year' => true,
+ 'state_user_id' => true,
+ 'created' => true,
+ 'short_ident_hash' => true,
+ 'transaction' => true,
+ 'state_user' => true
+ ];
+}
diff --git a/src/Model/Entity/StateGroup.php b/src/Model/Entity/StateGroup.php
new file mode 100644
index 000000000..c2bdc75fc
--- /dev/null
+++ b/src/Model/Entity/StateGroup.php
@@ -0,0 +1,43 @@
+ true,
+ 'name' => true,
+ 'root_public_key' => true,
+ 'user_count' => true,
+ 'index' => true,
+ 'state_group_addresses' => true,
+ 'state_users' => true,
+ 'transaction_group_creates' => true,
+ 'transactions' => true
+ ];
+}
diff --git a/src/Model/Entity/StateGroupAddress.php b/src/Model/Entity/StateGroupAddress.php
new file mode 100644
index 000000000..e5ce71681
--- /dev/null
+++ b/src/Model/Entity/StateGroupAddress.php
@@ -0,0 +1,35 @@
+ true,
+ 'public_key' => true,
+ 'address_type_id' => true,
+ 'state_group' => true,
+ 'address_type' => true
+ ];
+}
diff --git a/src/Model/Entity/StateGroupRelationship.php b/src/Model/Entity/StateGroupRelationship.php
new file mode 100644
index 000000000..974b1375d
--- /dev/null
+++ b/src/Model/Entity/StateGroupRelationship.php
@@ -0,0 +1,37 @@
+ true,
+ 'state_group2_id' => true,
+ 'state_relationship_id' => true,
+ 'state_group1' => true,
+ 'state_group2' => true,
+ 'state_relationship' => true
+ ];
+}
diff --git a/src/Model/Entity/StateRelationshipType.php b/src/Model/Entity/StateRelationshipType.php
new file mode 100644
index 000000000..f3c70d31e
--- /dev/null
+++ b/src/Model/Entity/StateRelationshipType.php
@@ -0,0 +1,28 @@
+ true,
+ 'text' => true
+ ];
+}
diff --git a/src/Model/Entity/StateUser.php b/src/Model/Entity/StateUser.php
new file mode 100644
index 000000000..59bd19e9a
--- /dev/null
+++ b/src/Model/Entity/StateUser.php
@@ -0,0 +1,43 @@
+ true,
+ 'state_group_id' => true,
+ 'public_key' => true,
+ 'index' => true,
+ 'state_group' => true,
+ 'state_balances' => true,
+ 'state_created' => true,
+ 'transaction_creations' => true,
+ 'transaction_send_coins' => true
+ ];
+}
diff --git a/src/Model/Entity/Transaction.php b/src/Model/Entity/Transaction.php
new file mode 100644
index 000000000..98948adae
--- /dev/null
+++ b/src/Model/Entity/Transaction.php
@@ -0,0 +1,51 @@
+ true,
+ 'transaction_type_id' => true,
+ 'tx_hash' => true,
+ 'received' => true,
+ 'state_group' => true,
+ 'transaction_type' => true,
+ 'state_created' => true,
+ 'transaction_creations' => true,
+ 'transaction_group_addaddress' => true,
+ 'transaction_group_allowtrades' => true,
+ 'transaction_group_creates' => true,
+ 'transaction_send_coins' => true,
+ 'transaction_signatures' => true
+ ];
+}
diff --git a/src/Model/Entity/TransactionCreation.php b/src/Model/Entity/TransactionCreation.php
new file mode 100644
index 000000000..5bd34da22
--- /dev/null
+++ b/src/Model/Entity/TransactionCreation.php
@@ -0,0 +1,37 @@
+ true,
+ 'state_user_id' => true,
+ 'amount' => true,
+ 'ident_hash' => true,
+ 'transaction' => true,
+ 'state_user' => true
+ ];
+}
diff --git a/src/Model/Entity/TransactionGroupAddaddres.php b/src/Model/Entity/TransactionGroupAddaddres.php
new file mode 100644
index 000000000..3cb73b9ee
--- /dev/null
+++ b/src/Model/Entity/TransactionGroupAddaddres.php
@@ -0,0 +1,35 @@
+ true,
+ 'address_type_id' => true,
+ 'public_key' => true,
+ 'transaction' => true,
+ 'address_type' => true
+ ];
+}
diff --git a/src/Model/Entity/TransactionGroupAllowtrade.php b/src/Model/Entity/TransactionGroupAllowtrade.php
new file mode 100644
index 000000000..d097c643f
--- /dev/null
+++ b/src/Model/Entity/TransactionGroupAllowtrade.php
@@ -0,0 +1,35 @@
+ true,
+ 'group_id' => true,
+ 'allow' => true,
+ 'transaction' => true,
+ 'group' => true
+ ];
+}
diff --git a/src/Model/Entity/TransactionGroupCreate.php b/src/Model/Entity/TransactionGroupCreate.php
new file mode 100644
index 000000000..26fab510b
--- /dev/null
+++ b/src/Model/Entity/TransactionGroupCreate.php
@@ -0,0 +1,37 @@
+ true,
+ 'group_public_key' => true,
+ 'state_group_id' => true,
+ 'name' => true,
+ 'transaction' => true,
+ 'state_group' => true
+ ];
+}
diff --git a/src/Model/Entity/TransactionSendCoin.php b/src/Model/Entity/TransactionSendCoin.php
new file mode 100644
index 000000000..4d774501e
--- /dev/null
+++ b/src/Model/Entity/TransactionSendCoin.php
@@ -0,0 +1,43 @@
+ true,
+ 'state_user_id' => true,
+ 'receiver_public_key' => true,
+ 'receiver_user_id' => true,
+ 'amount' => true,
+ 'sender_final_balance' => true,
+ 'transaction' => true,
+ 'state_user' => true,
+ 'receiver_user' => true
+ ];
+}
diff --git a/src/Model/Entity/TransactionSignature.php b/src/Model/Entity/TransactionSignature.php
new file mode 100644
index 000000000..16bce8b00
--- /dev/null
+++ b/src/Model/Entity/TransactionSignature.php
@@ -0,0 +1,33 @@
+ true,
+ 'signature' => true,
+ 'pubkey' => true,
+ 'transaction' => true
+ ];
+}
diff --git a/src/Model/Entity/TransactionType.php b/src/Model/Entity/TransactionType.php
new file mode 100644
index 000000000..b8f13e474
--- /dev/null
+++ b/src/Model/Entity/TransactionType.php
@@ -0,0 +1,31 @@
+ true,
+ 'text' => true,
+ 'transactions' => true
+ ];
+}
diff --git a/src/Model/Table/AddressTypesTable.php b/src/Model/Table/AddressTypesTable.php
new file mode 100644
index 000000000..ea0c86d6e
--- /dev/null
+++ b/src/Model/Table/AddressTypesTable.php
@@ -0,0 +1,73 @@
+setTable('address_types');
+ $this->setDisplayField('name');
+ $this->setPrimaryKey('id');
+
+ $this->hasMany('StateGroupAddresses', [
+ 'foreignKey' => 'address_type_id'
+ ]);
+ $this->hasMany('TransactionGroupAddaddress', [
+ 'foreignKey' => 'address_type_id'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->scalar('name')
+ ->maxLength('name', 25)
+ ->requirePresence('name', 'create')
+ ->notEmptyString('name');
+
+ $validator
+ ->scalar('text')
+ ->maxLength('text', 255)
+ ->allowEmptyString('text');
+
+ return $validator;
+ }
+}
diff --git a/src/Model/Table/OperatorsTable.php b/src/Model/Table/OperatorsTable.php
new file mode 100644
index 000000000..f47a96b9f
--- /dev/null
+++ b/src/Model/Table/OperatorsTable.php
@@ -0,0 +1,79 @@
+setTable('operators');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->scalar('username')
+ ->maxLength('username', 128)
+ ->requirePresence('username', 'create')
+ ->notEmptyString('username')
+ ->add('username', 'unique', ['rule' => 'validateUnique', 'provider' => 'table']);
+
+ $validator
+ ->scalar('data_base64')
+ ->maxLength('data_base64', 255)
+ ->requirePresence('data_base64', 'create')
+ ->notEmptyString('data_base64');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->isUnique(['username']));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/StateBalancesTable.php b/src/Model/Table/StateBalancesTable.php
new file mode 100644
index 000000000..85b2f7837
--- /dev/null
+++ b/src/Model/Table/StateBalancesTable.php
@@ -0,0 +1,81 @@
+setTable('state_balances');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+
+ $this->addBehavior('Timestamp');
+
+ $this->belongsTo('StateUsers', [
+ 'foreignKey' => 'state_user_id',
+ 'joinType' => 'INNER'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->requirePresence('amount', 'create')
+ ->notEmptyString('amount');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['state_user_id'], 'StateUsers'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/StateCreatedTable.php b/src/Model/Table/StateCreatedTable.php
new file mode 100644
index 000000000..c97851f28
--- /dev/null
+++ b/src/Model/Table/StateCreatedTable.php
@@ -0,0 +1,96 @@
+setTable('state_created');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+
+ $this->addBehavior('Timestamp');
+
+ $this->belongsTo('Transactions', [
+ 'foreignKey' => 'transaction_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('StateUsers', [
+ 'foreignKey' => 'state_user_id',
+ 'joinType' => 'INNER'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->requirePresence('month', 'create')
+ ->notEmptyString('month');
+
+ $validator
+ ->requirePresence('year', 'create')
+ ->notEmptyString('year');
+
+ $validator
+ ->integer('short_ident_hash')
+ ->requirePresence('short_ident_hash', 'create')
+ ->notEmptyString('short_ident_hash');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['transaction_id'], 'Transactions'));
+ $rules->add($rules->existsIn(['state_user_id'], 'StateUsers'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/StateGroupAddressesTable.php b/src/Model/Table/StateGroupAddressesTable.php
new file mode 100644
index 000000000..62fcf9470
--- /dev/null
+++ b/src/Model/Table/StateGroupAddressesTable.php
@@ -0,0 +1,83 @@
+setTable('state_group_addresses');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+
+ $this->belongsTo('StateGroups', [
+ 'foreignKey' => 'state_group_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('AddressTypes', [
+ 'foreignKey' => 'address_type_id',
+ 'joinType' => 'INNER'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->requirePresence('public_key', 'create')
+ ->notEmptyString('public_key');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['state_group_id'], 'StateGroups'));
+ $rules->add($rules->existsIn(['address_type_id'], 'AddressTypes'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/StateGroupRelationshipsTable.php b/src/Model/Table/StateGroupRelationshipsTable.php
new file mode 100644
index 000000000..449561583
--- /dev/null
+++ b/src/Model/Table/StateGroupRelationshipsTable.php
@@ -0,0 +1,85 @@
+setTable('state_group_relationships');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+
+ $this->belongsTo('StateGroup1s', [
+ 'foreignKey' => 'state_group1_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('StateGroup2s', [
+ 'foreignKey' => 'state_group2_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('StateRelationships', [
+ 'foreignKey' => 'state_relationship_id',
+ 'joinType' => 'INNER'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['state_group1_id'], 'StateGroup1s'));
+ $rules->add($rules->existsIn(['state_group2_id'], 'StateGroup2s'));
+ $rules->add($rules->existsIn(['state_relationship_id'], 'StateRelationships'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/StateGroupsTable.php b/src/Model/Table/StateGroupsTable.php
new file mode 100644
index 000000000..49911d495
--- /dev/null
+++ b/src/Model/Table/StateGroupsTable.php
@@ -0,0 +1,102 @@
+setTable('state_groups');
+ $this->setDisplayField('name');
+ $this->setPrimaryKey('id');
+
+ $this->belongsTo('Indices', [
+ 'foreignKey' => 'index_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->hasMany('StateGroupAddresses', [
+ 'foreignKey' => 'state_group_id'
+ ]);
+ $this->hasMany('StateUsers', [
+ 'foreignKey' => 'state_group_id'
+ ]);
+ $this->hasMany('TransactionGroupCreates', [
+ 'foreignKey' => 'state_group_id'
+ ]);
+ $this->hasMany('Transactions', [
+ 'foreignKey' => 'state_group_id'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->scalar('name')
+ ->maxLength('name', 50)
+ ->requirePresence('name', 'create')
+ ->notEmptyString('name');
+
+ $validator
+ ->requirePresence('root_public_key', 'create')
+ ->notEmptyString('root_public_key');
+
+ $validator
+ ->notEmptyString('user_count');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['index_id'], 'Indices'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/StateRelationshipTypesTable.php b/src/Model/Table/StateRelationshipTypesTable.php
new file mode 100644
index 000000000..a18e7ce51
--- /dev/null
+++ b/src/Model/Table/StateRelationshipTypesTable.php
@@ -0,0 +1,63 @@
+setTable('state_relationship_types');
+ $this->setDisplayField('name');
+ $this->setPrimaryKey('id');
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->scalar('name')
+ ->maxLength('name', 25)
+ ->requirePresence('name', 'create')
+ ->notEmptyString('name');
+
+ $validator
+ ->scalar('text')
+ ->maxLength('text', 255)
+ ->allowEmptyString('text');
+
+ return $validator;
+ }
+}
diff --git a/src/Model/Table/StateUsersTable.php b/src/Model/Table/StateUsersTable.php
new file mode 100644
index 000000000..4c73ddbc2
--- /dev/null
+++ b/src/Model/Table/StateUsersTable.php
@@ -0,0 +1,99 @@
+setTable('state_users');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+
+ $this->belongsTo('Indices', [
+ 'foreignKey' => 'index_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('StateGroups', [
+ 'foreignKey' => 'state_group_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->hasMany('StateBalances', [
+ 'foreignKey' => 'state_user_id'
+ ]);
+ $this->hasMany('StateCreated', [
+ 'foreignKey' => 'state_user_id'
+ ]);
+ $this->hasMany('TransactionCreations', [
+ 'foreignKey' => 'state_user_id'
+ ]);
+ $this->hasMany('TransactionSendCoins', [
+ 'foreignKey' => 'state_user_id'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->requirePresence('public_key', 'create')
+ ->notEmptyString('public_key');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['index_id'], 'Indices'));
+ $rules->add($rules->existsIn(['state_group_id'], 'StateGroups'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/TransactionCreationsTable.php b/src/Model/Table/TransactionCreationsTable.php
new file mode 100644
index 000000000..60a636aa2
--- /dev/null
+++ b/src/Model/Table/TransactionCreationsTable.php
@@ -0,0 +1,87 @@
+setTable('transaction_creations');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+
+ $this->belongsTo('Transactions', [
+ 'foreignKey' => 'transaction_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('StateUsers', [
+ 'foreignKey' => 'state_user_id',
+ 'joinType' => 'INNER'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->requirePresence('amount', 'create')
+ ->notEmptyString('amount');
+
+ $validator
+ ->requirePresence('ident_hash', 'create')
+ ->notEmptyString('ident_hash');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['transaction_id'], 'Transactions'));
+ $rules->add($rules->existsIn(['state_user_id'], 'StateUsers'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/TransactionGroupAddaddressTable.php b/src/Model/Table/TransactionGroupAddaddressTable.php
new file mode 100644
index 000000000..3fd03f32a
--- /dev/null
+++ b/src/Model/Table/TransactionGroupAddaddressTable.php
@@ -0,0 +1,83 @@
+setTable('transaction_group_addaddress');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+
+ $this->belongsTo('Transactions', [
+ 'foreignKey' => 'transaction_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('AddressTypes', [
+ 'foreignKey' => 'address_type_id',
+ 'joinType' => 'INNER'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->requirePresence('public_key', 'create')
+ ->notEmptyString('public_key');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['transaction_id'], 'Transactions'));
+ $rules->add($rules->existsIn(['address_type_id'], 'AddressTypes'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/TransactionGroupAllowtradesTable.php b/src/Model/Table/TransactionGroupAllowtradesTable.php
new file mode 100644
index 000000000..463d1af8e
--- /dev/null
+++ b/src/Model/Table/TransactionGroupAllowtradesTable.php
@@ -0,0 +1,83 @@
+setTable('transaction_group_allowtrades');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+
+ $this->belongsTo('Transactions', [
+ 'foreignKey' => 'transaction_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('Groups', [
+ 'foreignKey' => 'group_id',
+ 'joinType' => 'INNER'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->boolean('allow')
+ ->notEmptyString('allow');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['transaction_id'], 'Transactions'));
+ $rules->add($rules->existsIn(['group_id'], 'Groups'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/TransactionGroupCreatesTable.php b/src/Model/Table/TransactionGroupCreatesTable.php
new file mode 100644
index 000000000..263182b8e
--- /dev/null
+++ b/src/Model/Table/TransactionGroupCreatesTable.php
@@ -0,0 +1,89 @@
+setTable('transaction_group_creates');
+ $this->setDisplayField('name');
+ $this->setPrimaryKey('id');
+
+ $this->belongsTo('Transactions', [
+ 'foreignKey' => 'transaction_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('StateGroups', [
+ 'foreignKey' => 'state_group_id',
+ 'joinType' => 'INNER'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->requirePresence('group_public_key', 'create')
+ ->notEmptyString('group_public_key');
+
+ $validator
+ ->scalar('name')
+ ->maxLength('name', 64)
+ ->requirePresence('name', 'create')
+ ->notEmptyString('name');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['transaction_id'], 'Transactions'));
+ $rules->add($rules->existsIn(['state_group_id'], 'StateGroups'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/TransactionSendCoinsTable.php b/src/Model/Table/TransactionSendCoinsTable.php
new file mode 100644
index 000000000..2a0849cde
--- /dev/null
+++ b/src/Model/Table/TransactionSendCoinsTable.php
@@ -0,0 +1,97 @@
+setTable('transaction_send_coins');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+
+ $this->belongsTo('Transactions', [
+ 'foreignKey' => 'transaction_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('StateUsers', [
+ 'foreignKey' => 'state_user_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('ReceiverUsers', [
+ 'foreignKey' => 'receiver_user_id',
+ 'joinType' => 'INNER'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->requirePresence('receiver_public_key', 'create')
+ ->notEmptyString('receiver_public_key');
+
+ $validator
+ ->requirePresence('amount', 'create')
+ ->notEmptyString('amount');
+
+ $validator
+ ->requirePresence('sender_final_balance', 'create')
+ ->notEmptyString('sender_final_balance');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['transaction_id'], 'Transactions'));
+ $rules->add($rules->existsIn(['state_user_id'], 'StateUsers'));
+ $rules->add($rules->existsIn(['receiver_user_id'], 'ReceiverUsers'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/TransactionSignaturesTable.php b/src/Model/Table/TransactionSignaturesTable.php
new file mode 100644
index 000000000..60c1ae99f
--- /dev/null
+++ b/src/Model/Table/TransactionSignaturesTable.php
@@ -0,0 +1,81 @@
+setTable('transaction_signatures');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+
+ $this->belongsTo('Transactions', [
+ 'foreignKey' => 'transaction_id',
+ 'joinType' => 'INNER'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->requirePresence('signature', 'create')
+ ->notEmptyString('signature');
+
+ $validator
+ ->requirePresence('pubkey', 'create')
+ ->notEmptyString('pubkey');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['transaction_id'], 'Transactions'));
+
+ return $rules;
+ }
+}
diff --git a/src/Model/Table/TransactionTypesTable.php b/src/Model/Table/TransactionTypesTable.php
new file mode 100644
index 000000000..5cc842f5e
--- /dev/null
+++ b/src/Model/Table/TransactionTypesTable.php
@@ -0,0 +1,69 @@
+setTable('transaction_types');
+ $this->setDisplayField('name');
+ $this->setPrimaryKey('id');
+
+ $this->hasMany('Transactions', [
+ 'foreignKey' => 'transaction_type_id'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->integer('id')
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->scalar('name')
+ ->maxLength('name', 24)
+ ->requirePresence('name', 'create')
+ ->notEmptyString('name');
+
+ $validator
+ ->scalar('text')
+ ->maxLength('text', 255)
+ ->allowEmptyString('text');
+
+ return $validator;
+ }
+}
diff --git a/src/Model/Table/TransactionsTable.php b/src/Model/Table/TransactionsTable.php
new file mode 100644
index 000000000..99c2473b8
--- /dev/null
+++ b/src/Model/Table/TransactionsTable.php
@@ -0,0 +1,114 @@
+setTable('transactions');
+ $this->setDisplayField('id');
+ $this->setPrimaryKey('id');
+
+ $this->belongsTo('StateGroups', [
+ 'foreignKey' => 'state_group_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->belongsTo('TransactionTypes', [
+ 'foreignKey' => 'transaction_type_id',
+ 'joinType' => 'INNER'
+ ]);
+ $this->hasMany('StateCreated', [
+ 'foreignKey' => 'transaction_id'
+ ]);
+ $this->hasMany('TransactionCreations', [
+ 'foreignKey' => 'transaction_id'
+ ]);
+ $this->hasMany('TransactionGroupAddaddress', [
+ 'foreignKey' => 'transaction_id'
+ ]);
+ $this->hasMany('TransactionGroupAllowtrades', [
+ 'foreignKey' => 'transaction_id'
+ ]);
+ $this->hasMany('TransactionGroupCreates', [
+ 'foreignKey' => 'transaction_id'
+ ]);
+ $this->hasMany('TransactionSendCoins', [
+ 'foreignKey' => 'transaction_id'
+ ]);
+ $this->hasMany('TransactionSignatures', [
+ 'foreignKey' => 'transaction_id'
+ ]);
+ }
+
+ /**
+ * Default validation rules.
+ *
+ * @param \Cake\Validation\Validator $validator Validator instance.
+ * @return \Cake\Validation\Validator
+ */
+ public function validationDefault(Validator $validator)
+ {
+ $validator
+ ->allowEmptyString('id', null, 'create');
+
+ $validator
+ ->requirePresence('tx_hash', 'create')
+ ->notEmptyString('tx_hash');
+
+ $validator
+ ->dateTime('received')
+ ->notEmptyDateTime('received');
+
+ return $validator;
+ }
+
+ /**
+ * Returns a rules checker object that will be used for validating
+ * application integrity.
+ *
+ * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
+ * @return \Cake\ORM\RulesChecker
+ */
+ public function buildRules(RulesChecker $rules)
+ {
+ $rules->add($rules->existsIn(['state_group_id'], 'StateGroups'));
+ $rules->add($rules->existsIn(['transaction_type_id'], 'TransactionTypes'));
+
+ return $rules;
+ }
+}
diff --git a/src/Shell/ConsoleShell.php b/src/Shell/ConsoleShell.php
new file mode 100644
index 000000000..f7bfe8ed4
--- /dev/null
+++ b/src/Shell/ConsoleShell.php
@@ -0,0 +1,81 @@
+err('Unable to load Psy\Shell. ');
+ $this->err('');
+ $this->err('Make sure you have installed psysh as a dependency,');
+ $this->err('and that Psy\Shell is registered in your autoloader.');
+ $this->err('');
+ $this->err('If you are using composer run');
+ $this->err('');
+ $this->err('$ php composer.phar require --dev psy/psysh ');
+ $this->err('');
+
+ return self::CODE_ERROR;
+ }
+
+ $this->out("You can exit with `CTRL-C` or `exit` ");
+ $this->out('');
+
+ Log::drop('debug');
+ Log::drop('error');
+ $this->_io->setLoggers(false);
+ restore_error_handler();
+ restore_exception_handler();
+
+ $psy = new PsyShell();
+ $psy->run();
+ }
+
+ /**
+ * Display help for this console.
+ *
+ * @return \Cake\Console\ConsoleOptionParser
+ */
+ public function getOptionParser()
+ {
+ $parser = new ConsoleOptionParser('console');
+ $parser->setDescription(
+ 'This shell provides a REPL that you can use to interact with ' .
+ 'your application in a command line designed to run PHP code. ' .
+ 'You can use it to run adhoc queries with your models, or ' .
+ 'explore the features of CakePHP and your application.' .
+ "\n\n" .
+ 'You will need to have psysh installed for this Shell to work.'
+ );
+
+ return $parser;
+ }
+}
diff --git a/src/Template/AddressTypes/add.ctp b/src/Template/AddressTypes/add.ctp
new file mode 100644
index 000000000..f62c5115e
--- /dev/null
+++ b/src/Template/AddressTypes/add.ctp
@@ -0,0 +1,28 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List Address Types'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Group Addresses'), ['controller' => 'StateGroupAddresses', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group Address'), ['controller' => 'StateGroupAddresses', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Addaddress'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Addaddres'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($addressType) ?>
+
+ = __('Add Address Type') ?>
+ Form->control('name');
+ echo $this->Form->control('text');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/AddressTypes/edit.ctp b/src/Template/AddressTypes/edit.ctp
new file mode 100644
index 000000000..3e363e331
--- /dev/null
+++ b/src/Template/AddressTypes/edit.ctp
@@ -0,0 +1,34 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $addressType->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $addressType->id)]
+ )
+ ?>
+ = $this->Html->link(__('List Address Types'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Group Addresses'), ['controller' => 'StateGroupAddresses', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group Address'), ['controller' => 'StateGroupAddresses', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Addaddress'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Addaddres'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($addressType) ?>
+
+ = __('Edit Address Type') ?>
+ Form->control('name');
+ echo $this->Form->control('text');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/AddressTypes/index.ctp b/src/Template/AddressTypes/index.ctp
new file mode 100644
index 000000000..905d406a1
--- /dev/null
+++ b/src/Template/AddressTypes/index.ctp
@@ -0,0 +1,53 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New Address Type'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Group Addresses'), ['controller' => 'StateGroupAddresses', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group Address'), ['controller' => 'StateGroupAddresses', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Addaddress'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Addaddres'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'add']) ?>
+
+
+
+
= __('Address Types') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('name') ?>
+ = $this->Paginator->sort('text') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($addressType->id) ?>
+ = h($addressType->name) ?>
+ = h($addressType->text) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $addressType->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $addressType->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $addressType->id], ['confirm' => __('Are you sure you want to delete # {0}?', $addressType->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/AddressTypes/view.ctp b/src/Template/AddressTypes/view.ctp
new file mode 100644
index 000000000..7f838680b
--- /dev/null
+++ b/src/Template/AddressTypes/view.ctp
@@ -0,0 +1,90 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit Address Type'), ['action' => 'edit', $addressType->id]) ?>
+ = $this->Form->postLink(__('Delete Address Type'), ['action' => 'delete', $addressType->id], ['confirm' => __('Are you sure you want to delete # {0}?', $addressType->id)]) ?>
+ = $this->Html->link(__('List Address Types'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New Address Type'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Group Addresses'), ['controller' => 'StateGroupAddresses', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group Address'), ['controller' => 'StateGroupAddresses', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Addaddress'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Addaddres'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'add']) ?>
+
+
+
+
= h($addressType->name) ?>
+
+
+ = __('Name') ?>
+ = h($addressType->name) ?>
+
+
+ = __('Text') ?>
+ = h($addressType->text) ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($addressType->id) ?>
+
+
+
+
+
diff --git a/src/Template/Cell/empty b/src/Template/Cell/empty
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/src/Template/Cell/empty
@@ -0,0 +1 @@
+
diff --git a/src/Template/Element/Flash/default.ctp b/src/Template/Element/Flash/default.ctp
new file mode 100644
index 000000000..736b27db6
--- /dev/null
+++ b/src/Template/Element/Flash/default.ctp
@@ -0,0 +1,10 @@
+
+= $message ?>
diff --git a/src/Template/Element/Flash/error.ctp b/src/Template/Element/Flash/error.ctp
new file mode 100644
index 000000000..e7c4af102
--- /dev/null
+++ b/src/Template/Element/Flash/error.ctp
@@ -0,0 +1,6 @@
+
+= $message ?>
diff --git a/src/Template/Element/Flash/success.ctp b/src/Template/Element/Flash/success.ctp
new file mode 100644
index 000000000..becd5a1fd
--- /dev/null
+++ b/src/Template/Element/Flash/success.ctp
@@ -0,0 +1,6 @@
+
+= $message ?>
diff --git a/src/Template/Email/html/default.ctp b/src/Template/Email/html/default.ctp
new file mode 100644
index 000000000..ac3daa7fe
--- /dev/null
+++ b/src/Template/Email/html/default.ctp
@@ -0,0 +1,20 @@
+ ' . $line . "\n";
+endforeach;
diff --git a/src/Template/Email/text/default.ctp b/src/Template/Email/text/default.ctp
new file mode 100644
index 000000000..862cd9f76
--- /dev/null
+++ b/src/Template/Email/text/default.ctp
@@ -0,0 +1,16 @@
+layout = 'error';
+
+if (Configure::read('debug')) :
+ $this->layout = 'dev_error';
+
+ $this->assign('title', $message);
+ $this->assign('templateName', 'error400.ctp');
+
+ $this->start('file');
+?>
+queryString)) : ?>
+
+ SQL Query:
+ = h($error->queryString) ?>
+
+
+params)) : ?>
+ SQL Query Params:
+ params) ?>
+
+= $this->element('auto_table_warning') ?>
+end();
+endif;
+?>
+= h($message) ?>
+
+ = __d('cake', 'Error') ?>:
+ = __d('cake', 'The requested address {0} was not found on this server.', "'{$url}' ") ?>
+
diff --git a/src/Template/Error/error500.ctp b/src/Template/Error/error500.ctp
new file mode 100644
index 000000000..3328cc52c
--- /dev/null
+++ b/src/Template/Error/error500.ctp
@@ -0,0 +1,43 @@
+layout = 'error';
+
+if (Configure::read('debug')) :
+ $this->layout = 'dev_error';
+
+ $this->assign('title', $message);
+ $this->assign('templateName', 'error500.ctp');
+
+ $this->start('file');
+?>
+queryString)) : ?>
+
+ SQL Query:
+ = h($error->queryString) ?>
+
+
+params)) : ?>
+ SQL Query Params:
+ params) ?>
+
+
+ Error in:
+ = sprintf('%s, line %s', str_replace(ROOT, 'ROOT', $error->getFile()), $error->getLine()) ?>
+
+element('auto_table_warning');
+
+ if (extension_loaded('xdebug')) :
+ xdebug_print_function_stack();
+ endif;
+
+ $this->end();
+endif;
+?>
+= __d('cake', 'An Internal Error Has Occurred') ?>
+
+ = __d('cake', 'Error') ?>:
+ = h($message) ?>
+
diff --git a/src/Template/Layout/Email/html/default.ctp b/src/Template/Layout/Email/html/default.ctp
new file mode 100644
index 000000000..3ff87ff83
--- /dev/null
+++ b/src/Template/Layout/Email/html/default.ctp
@@ -0,0 +1,24 @@
+
+
+
+
+ = $this->fetch('title') ?>
+
+
+ = $this->fetch('content') ?>
+
+
diff --git a/src/Template/Layout/Email/text/default.ctp b/src/Template/Layout/Email/text/default.ctp
new file mode 100644
index 000000000..29b439ccc
--- /dev/null
+++ b/src/Template/Layout/Email/text/default.ctp
@@ -0,0 +1,16 @@
+fetch('content');
diff --git a/src/Template/Layout/ajax.ctp b/src/Template/Layout/ajax.ctp
new file mode 100644
index 000000000..29b439ccc
--- /dev/null
+++ b/src/Template/Layout/ajax.ctp
@@ -0,0 +1,16 @@
+fetch('content');
diff --git a/src/Template/Layout/default.ctp b/src/Template/Layout/default.ctp
new file mode 100644
index 000000000..caf014ebc
--- /dev/null
+++ b/src/Template/Layout/default.ctp
@@ -0,0 +1,57 @@
+
+
+
+
+ = $this->Html->charset() ?>
+
+
+ = $cakeDescription ?>:
+ = $this->fetch('title') ?>
+
+ = $this->Html->meta('icon') ?>
+
+ = $this->Html->css('base.css') ?>
+ = $this->Html->css('style.css') ?>
+
+ = $this->fetch('meta') ?>
+ = $this->fetch('css') ?>
+ = $this->fetch('script') ?>
+
+
+
+
+
+
+ = $this->Flash->render() ?>
+
+ = $this->fetch('content') ?>
+
+
+
+
diff --git a/src/Template/Layout/error.ctp b/src/Template/Layout/error.ctp
new file mode 100644
index 000000000..7367c1bf7
--- /dev/null
+++ b/src/Template/Layout/error.ctp
@@ -0,0 +1,47 @@
+
+
+
+
+ = $this->Html->charset() ?>
+
+ = $this->fetch('title') ?>
+
+ = $this->Html->meta('icon') ?>
+
+ = $this->Html->css('base.css') ?>
+ = $this->Html->css('style.css') ?>
+
+ = $this->fetch('meta') ?>
+ = $this->fetch('css') ?>
+ = $this->fetch('script') ?>
+
+
+
+
+
+ = $this->Flash->render() ?>
+
+ = $this->fetch('content') ?>
+
+
+
+
+
diff --git a/src/Template/Layout/rss/default.ctp b/src/Template/Layout/rss/default.ctp
new file mode 100644
index 000000000..8269be212
--- /dev/null
+++ b/src/Template/Layout/rss/default.ctp
@@ -0,0 +1,11 @@
+fetch('title');
+endif;
+
+echo $this->Rss->document(
+ $this->Rss->channel([], $channel, $this->fetch('content'))
+);
diff --git a/src/Template/Operators/add.ctp b/src/Template/Operators/add.ctp
new file mode 100644
index 000000000..8abf5271f
--- /dev/null
+++ b/src/Template/Operators/add.ctp
@@ -0,0 +1,24 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List Operators'), ['action' => 'index']) ?>
+
+
+
+ = $this->Form->create($operator) ?>
+
+ = __('Add Operator') ?>
+ Form->control('username');
+ echo $this->Form->control('data_base64');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/Operators/edit.ctp b/src/Template/Operators/edit.ctp
new file mode 100644
index 000000000..2faaf7442
--- /dev/null
+++ b/src/Template/Operators/edit.ctp
@@ -0,0 +1,30 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $operator->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $operator->id)]
+ )
+ ?>
+ = $this->Html->link(__('List Operators'), ['action' => 'index']) ?>
+
+
+
+ = $this->Form->create($operator) ?>
+
+ = __('Edit Operator') ?>
+ Form->control('username');
+ echo $this->Form->control('data_base64');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/Operators/index.ctp b/src/Template/Operators/index.ctp
new file mode 100644
index 000000000..723a6b031
--- /dev/null
+++ b/src/Template/Operators/index.ctp
@@ -0,0 +1,49 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New Operator'), ['action' => 'add']) ?>
+
+
+
+
= __('Operators') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('username') ?>
+ = $this->Paginator->sort('data_base64') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($operator->id) ?>
+ = h($operator->username) ?>
+ = h($operator->data_base64) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $operator->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $operator->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $operator->id], ['confirm' => __('Are you sure you want to delete # {0}?', $operator->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/Operators/view.ctp b/src/Template/Operators/view.ctp
new file mode 100644
index 000000000..a2bcd98e9
--- /dev/null
+++ b/src/Template/Operators/view.ctp
@@ -0,0 +1,32 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit Operator'), ['action' => 'edit', $operator->id]) ?>
+ = $this->Form->postLink(__('Delete Operator'), ['action' => 'delete', $operator->id], ['confirm' => __('Are you sure you want to delete # {0}?', $operator->id)]) ?>
+ = $this->Html->link(__('List Operators'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New Operator'), ['action' => 'add']) ?>
+
+
+
+
= h($operator->id) ?>
+
+
+ = __('Username') ?>
+ = h($operator->username) ?>
+
+
+ = __('Data Base64') ?>
+ = h($operator->data_base64) ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($operator->id) ?>
+
+
+
diff --git a/src/Template/Pages/home.ctp b/src/Template/Pages/home.ctp
new file mode 100644
index 000000000..5a3731e4c
--- /dev/null
+++ b/src/Template/Pages/home.ctp
@@ -0,0 +1,276 @@
+layout = false;
+
+if (!Configure::read('debug')) :
+ throw new NotFoundException(
+ 'Please replace src/Template/Pages/home.ctp with your own version or re-enable debug mode.'
+ );
+endif;
+
+$cakeDescription = 'CakePHP: the rapid development PHP framework';
+?>
+
+
+
+ = $this->Html->charset() ?>
+
+
+ = $cakeDescription ?>
+
+
+ = $this->Html->meta('icon') ?>
+ = $this->Html->css('base.css') ?>
+ = $this->Html->css('style.css') ?>
+ = $this->Html->css('home.css') ?>
+
+
+
+
+
+
+
+
+
+
Please be aware that this page will not be shown if you turn off debug mode unless you replace src/Template/Pages/home.ctp with your own version.
+
+
+
+
+
+
+
+
+
Environment
+
+ =')) : ?>
+ Your version of PHP is 5.6.0 or higher (detected = PHP_VERSION ?>).
+
+ Your version of PHP is too low. You need PHP 5.6.0 or higher to use CakePHP (detected = PHP_VERSION ?>).
+
+
+
+ Your version of PHP has the mbstring extension loaded.
+
+ Your version of PHP does NOT have the mbstring extension loaded.
+
+
+
+ Your version of PHP has the openssl extension loaded.
+
+ Your version of PHP has the mcrypt extension loaded.
+
+ Your version of PHP does NOT have the openssl or mcrypt extension loaded.
+
+
+
+ Your version of PHP has the intl extension loaded.
+
+ Your version of PHP does NOT have the intl extension loaded.
+
+
+
+
+
Filesystem
+
+
+ Your tmp directory is writable.
+
+ Your tmp directory is NOT writable.
+
+
+
+ Your logs directory is writable.
+
+ Your logs directory is NOT writable.
+
+
+
+
+ The = $settings['className'] ?>Engine is being used for core caching. To change the config edit config/app.php
+
+ Your cache is NOT working. Please check the settings in config/app.php
+
+
+
+
+
+
+
+
+
Database
+ connect();
+ } catch (Exception $connectionError) {
+ $connected = false;
+ $errorMsg = $connectionError->getMessage();
+ if (method_exists($connectionError, 'getAttributes')) :
+ $attributes = $connectionError->getAttributes();
+ if (isset($errorMsg['message'])) :
+ $errorMsg .= '
' . $attributes['message'];
+ endif;
+ endif;
+ }
+ ?>
+
+
+ CakePHP is able to connect to the database.
+
+ CakePHP is NOT able to connect to the database. = $errorMsg ?>
+
+
+
+
+
DebugKit
+
+
+ DebugKit is loaded.
+
+ DebugKit is NOT loaded. You need to either install pdo_sqlite, or define the "debug_kit" connection name.
+
+
+
+
+
+
+
+
+
Editing this Page
+
+ To change the content of this page, edit: src/Template/Pages/home.ctp.
+ You can also add some CSS styles for your pages at: webroot/css/.
+
+
+
+
+
+
+
+
More about Cake
+
+ CakePHP is a rapid development framework for PHP which uses commonly known design patterns like Front Controller and MVC.
+ Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility.
+
+
+
+
+
+
+
+
P
+
Help and Bug Reports
+
+
+
+
r
+
Docs and Downloads
+
+
+
+
s
+
Training and Certification
+
+
+
+
+
+
diff --git a/src/Template/StateBalances/add.ctp b/src/Template/StateBalances/add.ctp
new file mode 100644
index 000000000..c44ddda90
--- /dev/null
+++ b/src/Template/StateBalances/add.ctp
@@ -0,0 +1,26 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List State Balances'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($stateBalance) ?>
+
+ = __('Add State Balance') ?>
+ Form->control('state_user_id', ['options' => $stateUsers]);
+ echo $this->Form->control('amount');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateBalances/edit.ctp b/src/Template/StateBalances/edit.ctp
new file mode 100644
index 000000000..29e29daf8
--- /dev/null
+++ b/src/Template/StateBalances/edit.ctp
@@ -0,0 +1,32 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $stateBalance->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $stateBalance->id)]
+ )
+ ?>
+ = $this->Html->link(__('List State Balances'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($stateBalance) ?>
+
+ = __('Edit State Balance') ?>
+ Form->control('state_user_id', ['options' => $stateUsers]);
+ echo $this->Form->control('amount');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateBalances/index.ctp b/src/Template/StateBalances/index.ctp
new file mode 100644
index 000000000..5f26e3443
--- /dev/null
+++ b/src/Template/StateBalances/index.ctp
@@ -0,0 +1,53 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New State Balance'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+
= __('State Balances') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('state_user_id') ?>
+ = $this->Paginator->sort('modified') ?>
+ = $this->Paginator->sort('amount') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($stateBalance->id) ?>
+ = $stateBalance->has('state_user') ? $this->Html->link($stateBalance->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $stateBalance->state_user->id]) : '' ?>
+ = h($stateBalance->modified) ?>
+ = $this->Number->format($stateBalance->amount) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $stateBalance->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $stateBalance->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $stateBalance->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateBalance->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/StateBalances/view.ctp b/src/Template/StateBalances/view.ctp
new file mode 100644
index 000000000..03caadd21
--- /dev/null
+++ b/src/Template/StateBalances/view.ctp
@@ -0,0 +1,38 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit State Balance'), ['action' => 'edit', $stateBalance->id]) ?>
+ = $this->Form->postLink(__('Delete State Balance'), ['action' => 'delete', $stateBalance->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateBalance->id)]) ?>
+ = $this->Html->link(__('List State Balances'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New State Balance'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+
= h($stateBalance->id) ?>
+
+
+ = __('State User') ?>
+ = $stateBalance->has('state_user') ? $this->Html->link($stateBalance->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $stateBalance->state_user->id]) : '' ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($stateBalance->id) ?>
+
+
+ = __('Amount') ?>
+ = $this->Number->format($stateBalance->amount) ?>
+
+
+ = __('Modified') ?>
+ = h($stateBalance->modified) ?>
+
+
+
diff --git a/src/Template/StateCreated/add.ctp b/src/Template/StateCreated/add.ctp
new file mode 100644
index 000000000..9fd33201b
--- /dev/null
+++ b/src/Template/StateCreated/add.ctp
@@ -0,0 +1,31 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List State Created'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($stateCreated) ?>
+
+ = __('Add State Created') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('month');
+ echo $this->Form->control('year');
+ echo $this->Form->control('state_user_id', ['options' => $stateUsers]);
+ echo $this->Form->control('short_ident_hash');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateCreated/edit.ctp b/src/Template/StateCreated/edit.ctp
new file mode 100644
index 000000000..1eb7938b0
--- /dev/null
+++ b/src/Template/StateCreated/edit.ctp
@@ -0,0 +1,37 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $stateCreated->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $stateCreated->id)]
+ )
+ ?>
+ = $this->Html->link(__('List State Created'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($stateCreated) ?>
+
+ = __('Edit State Created') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('month');
+ echo $this->Form->control('year');
+ echo $this->Form->control('state_user_id', ['options' => $stateUsers]);
+ echo $this->Form->control('short_ident_hash');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateCreated/index.ctp b/src/Template/StateCreated/index.ctp
new file mode 100644
index 000000000..cacf93ec2
--- /dev/null
+++ b/src/Template/StateCreated/index.ctp
@@ -0,0 +1,61 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New State Created'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+
= __('State Created') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('transaction_id') ?>
+ = $this->Paginator->sort('month') ?>
+ = $this->Paginator->sort('year') ?>
+ = $this->Paginator->sort('state_user_id') ?>
+ = $this->Paginator->sort('created') ?>
+ = $this->Paginator->sort('short_ident_hash') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($stateCreated->id) ?>
+ = $stateCreated->has('transaction') ? $this->Html->link($stateCreated->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $stateCreated->transaction->id]) : '' ?>
+ = $this->Number->format($stateCreated->month) ?>
+ = $this->Number->format($stateCreated->year) ?>
+ = $stateCreated->has('state_user') ? $this->Html->link($stateCreated->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $stateCreated->state_user->id]) : '' ?>
+ = h($stateCreated->created) ?>
+ = $this->Number->format($stateCreated->short_ident_hash) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $stateCreated->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $stateCreated->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $stateCreated->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateCreated->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/StateCreated/view.ctp b/src/Template/StateCreated/view.ctp
new file mode 100644
index 000000000..e127f9f53
--- /dev/null
+++ b/src/Template/StateCreated/view.ctp
@@ -0,0 +1,52 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit State Created'), ['action' => 'edit', $stateCreated->id]) ?>
+ = $this->Form->postLink(__('Delete State Created'), ['action' => 'delete', $stateCreated->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateCreated->id)]) ?>
+ = $this->Html->link(__('List State Created'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New State Created'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+
= h($stateCreated->id) ?>
+
+
+ = __('Transaction') ?>
+ = $stateCreated->has('transaction') ? $this->Html->link($stateCreated->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $stateCreated->transaction->id]) : '' ?>
+
+
+ = __('State User') ?>
+ = $stateCreated->has('state_user') ? $this->Html->link($stateCreated->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $stateCreated->state_user->id]) : '' ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($stateCreated->id) ?>
+
+
+ = __('Month') ?>
+ = $this->Number->format($stateCreated->month) ?>
+
+
+ = __('Year') ?>
+ = $this->Number->format($stateCreated->year) ?>
+
+
+ = __('Short Ident Hash') ?>
+ = $this->Number->format($stateCreated->short_ident_hash) ?>
+
+
+ = __('Created') ?>
+ = h($stateCreated->created) ?>
+
+
+
diff --git a/src/Template/StateGroupAddresses/add.ctp b/src/Template/StateGroupAddresses/add.ctp
new file mode 100644
index 000000000..0b085662a
--- /dev/null
+++ b/src/Template/StateGroupAddresses/add.ctp
@@ -0,0 +1,28 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List State Group Addresses'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Address Types'), ['controller' => 'AddressTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Address Type'), ['controller' => 'AddressTypes', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($stateGroupAddress) ?>
+
+ = __('Add State Group Address') ?>
+ Form->control('state_group_id', ['options' => $stateGroups]);
+ echo $this->Form->control('address_type_id', ['options' => $addressTypes]);
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateGroupAddresses/edit.ctp b/src/Template/StateGroupAddresses/edit.ctp
new file mode 100644
index 000000000..c0e87a9e1
--- /dev/null
+++ b/src/Template/StateGroupAddresses/edit.ctp
@@ -0,0 +1,34 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $stateGroupAddress->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroupAddress->id)]
+ )
+ ?>
+ = $this->Html->link(__('List State Group Addresses'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Address Types'), ['controller' => 'AddressTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Address Type'), ['controller' => 'AddressTypes', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($stateGroupAddress) ?>
+
+ = __('Edit State Group Address') ?>
+ Form->control('state_group_id', ['options' => $stateGroups]);
+ echo $this->Form->control('address_type_id', ['options' => $addressTypes]);
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateGroupAddresses/index.ctp b/src/Template/StateGroupAddresses/index.ctp
new file mode 100644
index 000000000..8d7d9a3db
--- /dev/null
+++ b/src/Template/StateGroupAddresses/index.ctp
@@ -0,0 +1,53 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New State Group Address'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Address Types'), ['controller' => 'AddressTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Address Type'), ['controller' => 'AddressTypes', 'action' => 'add']) ?>
+
+
+
+
= __('State Group Addresses') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('state_group_id') ?>
+ = $this->Paginator->sort('address_type_id') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($stateGroupAddress->id) ?>
+ = $stateGroupAddress->has('state_group') ? $this->Html->link($stateGroupAddress->state_group->name, ['controller' => 'StateGroups', 'action' => 'view', $stateGroupAddress->state_group->id]) : '' ?>
+ = $stateGroupAddress->has('address_type') ? $this->Html->link($stateGroupAddress->address_type->name, ['controller' => 'AddressTypes', 'action' => 'view', $stateGroupAddress->address_type->id]) : '' ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $stateGroupAddress->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $stateGroupAddress->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $stateGroupAddress->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroupAddress->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/StateGroupAddresses/view.ctp b/src/Template/StateGroupAddresses/view.ctp
new file mode 100644
index 000000000..553942bd6
--- /dev/null
+++ b/src/Template/StateGroupAddresses/view.ctp
@@ -0,0 +1,36 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit State Group Address'), ['action' => 'edit', $stateGroupAddress->id]) ?>
+ = $this->Form->postLink(__('Delete State Group Address'), ['action' => 'delete', $stateGroupAddress->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroupAddress->id)]) ?>
+ = $this->Html->link(__('List State Group Addresses'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New State Group Address'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Address Types'), ['controller' => 'AddressTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Address Type'), ['controller' => 'AddressTypes', 'action' => 'add']) ?>
+
+
+
+
= h($stateGroupAddress->id) ?>
+
+
+ = __('State Group') ?>
+ = $stateGroupAddress->has('state_group') ? $this->Html->link($stateGroupAddress->state_group->name, ['controller' => 'StateGroups', 'action' => 'view', $stateGroupAddress->state_group->id]) : '' ?>
+
+
+ = __('Address Type') ?>
+ = $stateGroupAddress->has('address_type') ? $this->Html->link($stateGroupAddress->address_type->name, ['controller' => 'AddressTypes', 'action' => 'view', $stateGroupAddress->address_type->id]) : '' ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($stateGroupAddress->id) ?>
+
+
+
diff --git a/src/Template/StateGroupRelationships/add.ctp b/src/Template/StateGroupRelationships/add.ctp
new file mode 100644
index 000000000..09c7a0c41
--- /dev/null
+++ b/src/Template/StateGroupRelationships/add.ctp
@@ -0,0 +1,25 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List State Group Relationships'), ['action' => 'index']) ?>
+
+
+
+ = $this->Form->create($stateGroupRelationship) ?>
+
+ = __('Add State Group Relationship') ?>
+ Form->control('state_group1_id');
+ echo $this->Form->control('state_group2_id');
+ echo $this->Form->control('state_relationship_id');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateGroupRelationships/edit.ctp b/src/Template/StateGroupRelationships/edit.ctp
new file mode 100644
index 000000000..f696dfddf
--- /dev/null
+++ b/src/Template/StateGroupRelationships/edit.ctp
@@ -0,0 +1,31 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $stateGroupRelationship->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroupRelationship->id)]
+ )
+ ?>
+ = $this->Html->link(__('List State Group Relationships'), ['action' => 'index']) ?>
+
+
+
+ = $this->Form->create($stateGroupRelationship) ?>
+
+ = __('Edit State Group Relationship') ?>
+ Form->control('state_group1_id');
+ echo $this->Form->control('state_group2_id');
+ echo $this->Form->control('state_relationship_id');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateGroupRelationships/index.ctp b/src/Template/StateGroupRelationships/index.ctp
new file mode 100644
index 000000000..02a6a82dc
--- /dev/null
+++ b/src/Template/StateGroupRelationships/index.ctp
@@ -0,0 +1,51 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New State Group Relationship'), ['action' => 'add']) ?>
+
+
+
+
= __('State Group Relationships') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('state_group1_id') ?>
+ = $this->Paginator->sort('state_group2_id') ?>
+ = $this->Paginator->sort('state_relationship_id') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($stateGroupRelationship->id) ?>
+ = $this->Number->format($stateGroupRelationship->state_group1_id) ?>
+ = $this->Number->format($stateGroupRelationship->state_group2_id) ?>
+ = $this->Number->format($stateGroupRelationship->state_relationship_id) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $stateGroupRelationship->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $stateGroupRelationship->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $stateGroupRelationship->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroupRelationship->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/StateGroupRelationships/view.ctp b/src/Template/StateGroupRelationships/view.ctp
new file mode 100644
index 000000000..5272c2ba5
--- /dev/null
+++ b/src/Template/StateGroupRelationships/view.ctp
@@ -0,0 +1,36 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit State Group Relationship'), ['action' => 'edit', $stateGroupRelationship->id]) ?>
+ = $this->Form->postLink(__('Delete State Group Relationship'), ['action' => 'delete', $stateGroupRelationship->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroupRelationship->id)]) ?>
+ = $this->Html->link(__('List State Group Relationships'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New State Group Relationship'), ['action' => 'add']) ?>
+
+
+
+
= h($stateGroupRelationship->id) ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($stateGroupRelationship->id) ?>
+
+
+ = __('State Group1 Id') ?>
+ = $this->Number->format($stateGroupRelationship->state_group1_id) ?>
+
+
+ = __('State Group2 Id') ?>
+ = $this->Number->format($stateGroupRelationship->state_group2_id) ?>
+
+
+ = __('State Relationship Id') ?>
+ = $this->Number->format($stateGroupRelationship->state_relationship_id) ?>
+
+
+
diff --git a/src/Template/StateGroups/add.ctp b/src/Template/StateGroups/add.ctp
new file mode 100644
index 000000000..c26f7646b
--- /dev/null
+++ b/src/Template/StateGroups/add.ctp
@@ -0,0 +1,32 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List State Groups'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Group Addresses'), ['controller' => 'StateGroupAddresses', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group Address'), ['controller' => 'StateGroupAddresses', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Creates'), ['controller' => 'TransactionGroupCreates', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Create'), ['controller' => 'TransactionGroupCreates', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($stateGroup) ?>
+
+ = __('Add State Group') ?>
+ Form->control('name');
+ echo $this->Form->control('user_count');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateGroups/edit.ctp b/src/Template/StateGroups/edit.ctp
new file mode 100644
index 000000000..2a86e827c
--- /dev/null
+++ b/src/Template/StateGroups/edit.ctp
@@ -0,0 +1,38 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $stateGroup->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroup->id)]
+ )
+ ?>
+ = $this->Html->link(__('List State Groups'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Group Addresses'), ['controller' => 'StateGroupAddresses', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group Address'), ['controller' => 'StateGroupAddresses', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Creates'), ['controller' => 'TransactionGroupCreates', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Create'), ['controller' => 'TransactionGroupCreates', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($stateGroup) ?>
+
+ = __('Edit State Group') ?>
+ Form->control('name');
+ echo $this->Form->control('user_count');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateGroups/index.ctp b/src/Template/StateGroups/index.ctp
new file mode 100644
index 000000000..af4305153
--- /dev/null
+++ b/src/Template/StateGroups/index.ctp
@@ -0,0 +1,57 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New State Group'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Group Addresses'), ['controller' => 'StateGroupAddresses', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group Address'), ['controller' => 'StateGroupAddresses', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Creates'), ['controller' => 'TransactionGroupCreates', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Create'), ['controller' => 'TransactionGroupCreates', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+
= __('State Groups') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('name') ?>
+ = $this->Paginator->sort('user_count') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($stateGroup->id) ?>
+ = h($stateGroup->name) ?>
+ = $this->Number->format($stateGroup->user_count) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $stateGroup->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $stateGroup->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $stateGroup->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroup->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/StateGroups/view.ctp b/src/Template/StateGroups/view.ctp
new file mode 100644
index 000000000..bf6eb00aa
--- /dev/null
+++ b/src/Template/StateGroups/view.ctp
@@ -0,0 +1,152 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit State Group'), ['action' => 'edit', $stateGroup->id]) ?>
+ = $this->Form->postLink(__('Delete State Group'), ['action' => 'delete', $stateGroup->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateGroup->id)]) ?>
+ = $this->Html->link(__('List State Groups'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Group Addresses'), ['controller' => 'StateGroupAddresses', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group Address'), ['controller' => 'StateGroupAddresses', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Creates'), ['controller' => 'TransactionGroupCreates', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Create'), ['controller' => 'TransactionGroupCreates', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+
= h($stateGroup->name) ?>
+
+
+ = __('Name') ?>
+ = h($stateGroup->name) ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($stateGroup->id) ?>
+
+
+ = __('User Count') ?>
+ = $this->Number->format($stateGroup->user_count) ?>
+
+
+
+
+
+
+
diff --git a/src/Template/StateRelationshipTypes/add.ctp b/src/Template/StateRelationshipTypes/add.ctp
new file mode 100644
index 000000000..acb6efd11
--- /dev/null
+++ b/src/Template/StateRelationshipTypes/add.ctp
@@ -0,0 +1,24 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List State Relationship Types'), ['action' => 'index']) ?>
+
+
+
+ = $this->Form->create($stateRelationshipType) ?>
+
+ = __('Add State Relationship Type') ?>
+ Form->control('name');
+ echo $this->Form->control('text');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateRelationshipTypes/edit.ctp b/src/Template/StateRelationshipTypes/edit.ctp
new file mode 100644
index 000000000..e7b630a09
--- /dev/null
+++ b/src/Template/StateRelationshipTypes/edit.ctp
@@ -0,0 +1,30 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $stateRelationshipType->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $stateRelationshipType->id)]
+ )
+ ?>
+ = $this->Html->link(__('List State Relationship Types'), ['action' => 'index']) ?>
+
+
+
+ = $this->Form->create($stateRelationshipType) ?>
+
+ = __('Edit State Relationship Type') ?>
+ Form->control('name');
+ echo $this->Form->control('text');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateRelationshipTypes/index.ctp b/src/Template/StateRelationshipTypes/index.ctp
new file mode 100644
index 000000000..9ba238665
--- /dev/null
+++ b/src/Template/StateRelationshipTypes/index.ctp
@@ -0,0 +1,49 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New State Relationship Type'), ['action' => 'add']) ?>
+
+
+
+
= __('State Relationship Types') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('name') ?>
+ = $this->Paginator->sort('text') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($stateRelationshipType->id) ?>
+ = h($stateRelationshipType->name) ?>
+ = h($stateRelationshipType->text) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $stateRelationshipType->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $stateRelationshipType->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $stateRelationshipType->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateRelationshipType->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/StateRelationshipTypes/view.ctp b/src/Template/StateRelationshipTypes/view.ctp
new file mode 100644
index 000000000..bb9615797
--- /dev/null
+++ b/src/Template/StateRelationshipTypes/view.ctp
@@ -0,0 +1,32 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit State Relationship Type'), ['action' => 'edit', $stateRelationshipType->id]) ?>
+ = $this->Form->postLink(__('Delete State Relationship Type'), ['action' => 'delete', $stateRelationshipType->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateRelationshipType->id)]) ?>
+ = $this->Html->link(__('List State Relationship Types'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New State Relationship Type'), ['action' => 'add']) ?>
+
+
+
+
= h($stateRelationshipType->name) ?>
+
+
+ = __('Name') ?>
+ = h($stateRelationshipType->name) ?>
+
+
+ = __('Text') ?>
+ = h($stateRelationshipType->text) ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($stateRelationshipType->id) ?>
+
+
+
diff --git a/src/Template/StateUsers/add.ctp b/src/Template/StateUsers/add.ctp
new file mode 100644
index 000000000..d1dbbe81c
--- /dev/null
+++ b/src/Template/StateUsers/add.ctp
@@ -0,0 +1,34 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List State Users'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Balances'), ['controller' => 'StateBalances', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Balance'), ['controller' => 'StateBalances', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Created'), ['controller' => 'StateCreated', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Created'), ['controller' => 'StateCreated', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Creations'), ['controller' => 'TransactionCreations', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Creation'), ['controller' => 'TransactionCreations', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Send Coins'), ['controller' => 'TransactionSendCoins', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Send Coin'), ['controller' => 'TransactionSendCoins', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($stateUser) ?>
+
+ = __('Add State User') ?>
+ Form->control('index_id');
+ echo $this->Form->control('state_group_id', ['options' => $stateGroups]);
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateUsers/edit.ctp b/src/Template/StateUsers/edit.ctp
new file mode 100644
index 000000000..aea4f9a5d
--- /dev/null
+++ b/src/Template/StateUsers/edit.ctp
@@ -0,0 +1,40 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $stateUser->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $stateUser->id)]
+ )
+ ?>
+ = $this->Html->link(__('List State Users'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Balances'), ['controller' => 'StateBalances', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Balance'), ['controller' => 'StateBalances', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Created'), ['controller' => 'StateCreated', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Created'), ['controller' => 'StateCreated', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Creations'), ['controller' => 'TransactionCreations', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Creation'), ['controller' => 'TransactionCreations', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Send Coins'), ['controller' => 'TransactionSendCoins', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Send Coin'), ['controller' => 'TransactionSendCoins', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($stateUser) ?>
+
+ = __('Edit State User') ?>
+ Form->control('index_id');
+ echo $this->Form->control('state_group_id', ['options' => $stateGroups]);
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/StateUsers/index.ctp b/src/Template/StateUsers/index.ctp
new file mode 100644
index 000000000..eda227981
--- /dev/null
+++ b/src/Template/StateUsers/index.ctp
@@ -0,0 +1,59 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New State User'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Balances'), ['controller' => 'StateBalances', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Balance'), ['controller' => 'StateBalances', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Created'), ['controller' => 'StateCreated', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Created'), ['controller' => 'StateCreated', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Creations'), ['controller' => 'TransactionCreations', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Creation'), ['controller' => 'TransactionCreations', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Send Coins'), ['controller' => 'TransactionSendCoins', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Send Coin'), ['controller' => 'TransactionSendCoins', 'action' => 'add']) ?>
+
+
+
+
= __('State Users') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('index_id') ?>
+ = $this->Paginator->sort('state_group_id') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($stateUser->id) ?>
+ = $this->Number->format($stateUser->index_id) ?>
+ = $stateUser->has('state_group') ? $this->Html->link($stateUser->state_group->name, ['controller' => 'StateGroups', 'action' => 'view', $stateUser->state_group->id]) : '' ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $stateUser->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $stateUser->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $stateUser->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateUser->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/StateUsers/view.ctp b/src/Template/StateUsers/view.ctp
new file mode 100644
index 000000000..fce54190c
--- /dev/null
+++ b/src/Template/StateUsers/view.ctp
@@ -0,0 +1,164 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit State User'), ['action' => 'edit', $stateUser->id]) ?>
+ = $this->Form->postLink(__('Delete State User'), ['action' => 'delete', $stateUser->id], ['confirm' => __('Are you sure you want to delete # {0}?', $stateUser->id)]) ?>
+ = $this->Html->link(__('List State Users'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Balances'), ['controller' => 'StateBalances', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Balance'), ['controller' => 'StateBalances', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Created'), ['controller' => 'StateCreated', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Created'), ['controller' => 'StateCreated', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Creations'), ['controller' => 'TransactionCreations', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Creation'), ['controller' => 'TransactionCreations', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Send Coins'), ['controller' => 'TransactionSendCoins', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Send Coin'), ['controller' => 'TransactionSendCoins', 'action' => 'add']) ?>
+
+
+
+
= h($stateUser->id) ?>
+
+
+ = __('State Group') ?>
+ = $stateUser->has('state_group') ? $this->Html->link($stateUser->state_group->name, ['controller' => 'StateGroups', 'action' => 'view', $stateUser->state_group->id]) : '' ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($stateUser->id) ?>
+
+
+ = __('Index Id') ?>
+ = $this->Number->format($stateUser->index_id) ?>
+
+
+
+
+
+
+
diff --git a/src/Template/TransactionCreations/add.ctp b/src/Template/TransactionCreations/add.ctp
new file mode 100644
index 000000000..228410d3c
--- /dev/null
+++ b/src/Template/TransactionCreations/add.ctp
@@ -0,0 +1,29 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List Transaction Creations'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionCreation) ?>
+
+ = __('Add Transaction Creation') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('state_user_id', ['options' => $stateUsers]);
+ echo $this->Form->control('amount');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionCreations/edit.ctp b/src/Template/TransactionCreations/edit.ctp
new file mode 100644
index 000000000..cb861a084
--- /dev/null
+++ b/src/Template/TransactionCreations/edit.ctp
@@ -0,0 +1,35 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $transactionCreation->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $transactionCreation->id)]
+ )
+ ?>
+ = $this->Html->link(__('List Transaction Creations'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionCreation) ?>
+
+ = __('Edit Transaction Creation') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('state_user_id', ['options' => $stateUsers]);
+ echo $this->Form->control('amount');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionCreations/index.ctp b/src/Template/TransactionCreations/index.ctp
new file mode 100644
index 000000000..e85bacdfd
--- /dev/null
+++ b/src/Template/TransactionCreations/index.ctp
@@ -0,0 +1,55 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New Transaction Creation'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+
= __('Transaction Creations') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('transaction_id') ?>
+ = $this->Paginator->sort('state_user_id') ?>
+ = $this->Paginator->sort('amount') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($transactionCreation->id) ?>
+ = $transactionCreation->has('transaction') ? $this->Html->link($transactionCreation->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionCreation->transaction->id]) : '' ?>
+ = $transactionCreation->has('state_user') ? $this->Html->link($transactionCreation->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $transactionCreation->state_user->id]) : '' ?>
+ = $this->Number->format($transactionCreation->amount) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $transactionCreation->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $transactionCreation->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $transactionCreation->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionCreation->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/TransactionCreations/view.ctp b/src/Template/TransactionCreations/view.ctp
new file mode 100644
index 000000000..bee12387d
--- /dev/null
+++ b/src/Template/TransactionCreations/view.ctp
@@ -0,0 +1,40 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit Transaction Creation'), ['action' => 'edit', $transactionCreation->id]) ?>
+ = $this->Form->postLink(__('Delete Transaction Creation'), ['action' => 'delete', $transactionCreation->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionCreation->id)]) ?>
+ = $this->Html->link(__('List Transaction Creations'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Creation'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+
= h($transactionCreation->id) ?>
+
+
+ = __('Transaction') ?>
+ = $transactionCreation->has('transaction') ? $this->Html->link($transactionCreation->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionCreation->transaction->id]) : '' ?>
+
+
+ = __('State User') ?>
+ = $transactionCreation->has('state_user') ? $this->Html->link($transactionCreation->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $transactionCreation->state_user->id]) : '' ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($transactionCreation->id) ?>
+
+
+ = __('Amount') ?>
+ = $this->Number->format($transactionCreation->amount) ?>
+
+
+
diff --git a/src/Template/TransactionGroupAddaddress/add.ctp b/src/Template/TransactionGroupAddaddress/add.ctp
new file mode 100644
index 000000000..a5be64109
--- /dev/null
+++ b/src/Template/TransactionGroupAddaddress/add.ctp
@@ -0,0 +1,28 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List Transaction Group Addaddress'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Address Types'), ['controller' => 'AddressTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Address Type'), ['controller' => 'AddressTypes', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionGroupAddaddres) ?>
+
+ = __('Add Transaction Group Addaddres') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('address_type_id', ['options' => $addressTypes]);
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionGroupAddaddress/edit.ctp b/src/Template/TransactionGroupAddaddress/edit.ctp
new file mode 100644
index 000000000..3be65225f
--- /dev/null
+++ b/src/Template/TransactionGroupAddaddress/edit.ctp
@@ -0,0 +1,34 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $transactionGroupAddaddres->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupAddaddres->id)]
+ )
+ ?>
+ = $this->Html->link(__('List Transaction Group Addaddress'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Address Types'), ['controller' => 'AddressTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Address Type'), ['controller' => 'AddressTypes', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionGroupAddaddres) ?>
+
+ = __('Edit Transaction Group Addaddres') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('address_type_id', ['options' => $addressTypes]);
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionGroupAddaddress/index.ctp b/src/Template/TransactionGroupAddaddress/index.ctp
new file mode 100644
index 000000000..6a50f3ac6
--- /dev/null
+++ b/src/Template/TransactionGroupAddaddress/index.ctp
@@ -0,0 +1,53 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New Transaction Group Addaddres'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Address Types'), ['controller' => 'AddressTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Address Type'), ['controller' => 'AddressTypes', 'action' => 'add']) ?>
+
+
+
+
= __('Transaction Group Addaddress') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('transaction_id') ?>
+ = $this->Paginator->sort('address_type_id') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($transactionGroupAddaddres->id) ?>
+ = $transactionGroupAddaddres->has('transaction') ? $this->Html->link($transactionGroupAddaddres->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupAddaddres->transaction->id]) : '' ?>
+ = $transactionGroupAddaddres->has('address_type') ? $this->Html->link($transactionGroupAddaddres->address_type->name, ['controller' => 'AddressTypes', 'action' => 'view', $transactionGroupAddaddres->address_type->id]) : '' ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $transactionGroupAddaddres->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $transactionGroupAddaddres->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $transactionGroupAddaddres->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupAddaddres->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/TransactionGroupAddaddress/view.ctp b/src/Template/TransactionGroupAddaddress/view.ctp
new file mode 100644
index 000000000..8acc8d0c5
--- /dev/null
+++ b/src/Template/TransactionGroupAddaddress/view.ctp
@@ -0,0 +1,36 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit Transaction Group Addaddres'), ['action' => 'edit', $transactionGroupAddaddres->id]) ?>
+ = $this->Form->postLink(__('Delete Transaction Group Addaddres'), ['action' => 'delete', $transactionGroupAddaddres->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupAddaddres->id)]) ?>
+ = $this->Html->link(__('List Transaction Group Addaddress'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Addaddres'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Address Types'), ['controller' => 'AddressTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Address Type'), ['controller' => 'AddressTypes', 'action' => 'add']) ?>
+
+
+
+
= h($transactionGroupAddaddres->id) ?>
+
+
+ = __('Transaction') ?>
+ = $transactionGroupAddaddres->has('transaction') ? $this->Html->link($transactionGroupAddaddres->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupAddaddres->transaction->id]) : '' ?>
+
+
+ = __('Address Type') ?>
+ = $transactionGroupAddaddres->has('address_type') ? $this->Html->link($transactionGroupAddaddres->address_type->name, ['controller' => 'AddressTypes', 'action' => 'view', $transactionGroupAddaddres->address_type->id]) : '' ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($transactionGroupAddaddres->id) ?>
+
+
+
diff --git a/src/Template/TransactionGroupAllowtrades/add.ctp b/src/Template/TransactionGroupAllowtrades/add.ctp
new file mode 100644
index 000000000..fa09b951f
--- /dev/null
+++ b/src/Template/TransactionGroupAllowtrades/add.ctp
@@ -0,0 +1,27 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List Transaction Group Allowtrades'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionGroupAllowtrade) ?>
+
+ = __('Add Transaction Group Allowtrade') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('group_id');
+ echo $this->Form->control('allow');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionGroupAllowtrades/edit.ctp b/src/Template/TransactionGroupAllowtrades/edit.ctp
new file mode 100644
index 000000000..28b6c43fa
--- /dev/null
+++ b/src/Template/TransactionGroupAllowtrades/edit.ctp
@@ -0,0 +1,33 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $transactionGroupAllowtrade->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupAllowtrade->id)]
+ )
+ ?>
+ = $this->Html->link(__('List Transaction Group Allowtrades'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionGroupAllowtrade) ?>
+
+ = __('Edit Transaction Group Allowtrade') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('group_id');
+ echo $this->Form->control('allow');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionGroupAllowtrades/index.ctp b/src/Template/TransactionGroupAllowtrades/index.ctp
new file mode 100644
index 000000000..99eb5d3c1
--- /dev/null
+++ b/src/Template/TransactionGroupAllowtrades/index.ctp
@@ -0,0 +1,53 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New Transaction Group Allowtrade'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+
= __('Transaction Group Allowtrades') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('transaction_id') ?>
+ = $this->Paginator->sort('group_id') ?>
+ = $this->Paginator->sort('allow') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($transactionGroupAllowtrade->id) ?>
+ = $transactionGroupAllowtrade->has('transaction') ? $this->Html->link($transactionGroupAllowtrade->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupAllowtrade->transaction->id]) : '' ?>
+ = $this->Number->format($transactionGroupAllowtrade->group_id) ?>
+ = h($transactionGroupAllowtrade->allow) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $transactionGroupAllowtrade->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $transactionGroupAllowtrade->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $transactionGroupAllowtrade->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupAllowtrade->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/TransactionGroupAllowtrades/view.ctp b/src/Template/TransactionGroupAllowtrades/view.ctp
new file mode 100644
index 000000000..c4cdc84c4
--- /dev/null
+++ b/src/Template/TransactionGroupAllowtrades/view.ctp
@@ -0,0 +1,38 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit Transaction Group Allowtrade'), ['action' => 'edit', $transactionGroupAllowtrade->id]) ?>
+ = $this->Form->postLink(__('Delete Transaction Group Allowtrade'), ['action' => 'delete', $transactionGroupAllowtrade->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupAllowtrade->id)]) ?>
+ = $this->Html->link(__('List Transaction Group Allowtrades'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Allowtrade'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+
= h($transactionGroupAllowtrade->id) ?>
+
+
+ = __('Transaction') ?>
+ = $transactionGroupAllowtrade->has('transaction') ? $this->Html->link($transactionGroupAllowtrade->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupAllowtrade->transaction->id]) : '' ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($transactionGroupAllowtrade->id) ?>
+
+
+ = __('Group Id') ?>
+ = $this->Number->format($transactionGroupAllowtrade->group_id) ?>
+
+
+ = __('Allow') ?>
+ = $transactionGroupAllowtrade->allow ? __('Yes') : __('No'); ?>
+
+
+
diff --git a/src/Template/TransactionGroupCreates/add.ctp b/src/Template/TransactionGroupCreates/add.ctp
new file mode 100644
index 000000000..a28936ba3
--- /dev/null
+++ b/src/Template/TransactionGroupCreates/add.ctp
@@ -0,0 +1,29 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List Transaction Group Creates'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionGroupCreate) ?>
+
+ = __('Add Transaction Group Create') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('state_group_id', ['options' => $stateGroups]);
+ echo $this->Form->control('name');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionGroupCreates/edit.ctp b/src/Template/TransactionGroupCreates/edit.ctp
new file mode 100644
index 000000000..0d2f1ee36
--- /dev/null
+++ b/src/Template/TransactionGroupCreates/edit.ctp
@@ -0,0 +1,35 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $transactionGroupCreate->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupCreate->id)]
+ )
+ ?>
+ = $this->Html->link(__('List Transaction Group Creates'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionGroupCreate) ?>
+
+ = __('Edit Transaction Group Create') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('state_group_id', ['options' => $stateGroups]);
+ echo $this->Form->control('name');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionGroupCreates/index.ctp b/src/Template/TransactionGroupCreates/index.ctp
new file mode 100644
index 000000000..42cfab422
--- /dev/null
+++ b/src/Template/TransactionGroupCreates/index.ctp
@@ -0,0 +1,55 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New Transaction Group Create'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+
+
+
+
= __('Transaction Group Creates') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('transaction_id') ?>
+ = $this->Paginator->sort('state_group_id') ?>
+ = $this->Paginator->sort('name') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($transactionGroupCreate->id) ?>
+ = $transactionGroupCreate->has('transaction') ? $this->Html->link($transactionGroupCreate->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupCreate->transaction->id]) : '' ?>
+ = $transactionGroupCreate->has('state_group') ? $this->Html->link($transactionGroupCreate->state_group->name, ['controller' => 'StateGroups', 'action' => 'view', $transactionGroupCreate->state_group->id]) : '' ?>
+ = h($transactionGroupCreate->name) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $transactionGroupCreate->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $transactionGroupCreate->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $transactionGroupCreate->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupCreate->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/TransactionGroupCreates/view.ctp b/src/Template/TransactionGroupCreates/view.ctp
new file mode 100644
index 000000000..4fdf81aa2
--- /dev/null
+++ b/src/Template/TransactionGroupCreates/view.ctp
@@ -0,0 +1,40 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit Transaction Group Create'), ['action' => 'edit', $transactionGroupCreate->id]) ?>
+ = $this->Form->postLink(__('Delete Transaction Group Create'), ['action' => 'delete', $transactionGroupCreate->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionGroupCreate->id)]) ?>
+ = $this->Html->link(__('List Transaction Group Creates'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Create'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+
+
+
+
= h($transactionGroupCreate->name) ?>
+
+
+ = __('Transaction') ?>
+ = $transactionGroupCreate->has('transaction') ? $this->Html->link($transactionGroupCreate->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionGroupCreate->transaction->id]) : '' ?>
+
+
+ = __('State Group') ?>
+ = $transactionGroupCreate->has('state_group') ? $this->Html->link($transactionGroupCreate->state_group->name, ['controller' => 'StateGroups', 'action' => 'view', $transactionGroupCreate->state_group->id]) : '' ?>
+
+
+ = __('Name') ?>
+ = h($transactionGroupCreate->name) ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($transactionGroupCreate->id) ?>
+
+
+
diff --git a/src/Template/TransactionSendCoins/add.ctp b/src/Template/TransactionSendCoins/add.ctp
new file mode 100644
index 000000000..8a9c3f69e
--- /dev/null
+++ b/src/Template/TransactionSendCoins/add.ctp
@@ -0,0 +1,30 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List Transaction Send Coins'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionSendCoin) ?>
+
+ = __('Add Transaction Send Coin') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('state_user_id', ['options' => $stateUsers]);
+ echo $this->Form->control('amount');
+ echo $this->Form->control('sender_final_balance');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionSendCoins/edit.ctp b/src/Template/TransactionSendCoins/edit.ctp
new file mode 100644
index 000000000..882ab14e3
--- /dev/null
+++ b/src/Template/TransactionSendCoins/edit.ctp
@@ -0,0 +1,36 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $transactionSendCoin->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $transactionSendCoin->id)]
+ )
+ ?>
+ = $this->Html->link(__('List Transaction Send Coins'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionSendCoin) ?>
+
+ = __('Edit Transaction Send Coin') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ echo $this->Form->control('state_user_id', ['options' => $stateUsers]);
+ echo $this->Form->control('amount');
+ echo $this->Form->control('sender_final_balance');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionSendCoins/index.ctp b/src/Template/TransactionSendCoins/index.ctp
new file mode 100644
index 000000000..542930492
--- /dev/null
+++ b/src/Template/TransactionSendCoins/index.ctp
@@ -0,0 +1,57 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New Transaction Send Coin'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+
= __('Transaction Send Coins') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('transaction_id') ?>
+ = $this->Paginator->sort('state_user_id') ?>
+ = $this->Paginator->sort('amount') ?>
+ = $this->Paginator->sort('sender_final_balance') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($transactionSendCoin->id) ?>
+ = $transactionSendCoin->has('transaction') ? $this->Html->link($transactionSendCoin->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionSendCoin->transaction->id]) : '' ?>
+ = $transactionSendCoin->has('state_user') ? $this->Html->link($transactionSendCoin->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $transactionSendCoin->state_user->id]) : '' ?>
+ = $this->Number->format($transactionSendCoin->amount) ?>
+ = $this->Number->format($transactionSendCoin->sender_final_balance) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $transactionSendCoin->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $transactionSendCoin->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $transactionSendCoin->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionSendCoin->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/TransactionSendCoins/view.ctp b/src/Template/TransactionSendCoins/view.ctp
new file mode 100644
index 000000000..b947a8aff
--- /dev/null
+++ b/src/Template/TransactionSendCoins/view.ctp
@@ -0,0 +1,44 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit Transaction Send Coin'), ['action' => 'edit', $transactionSendCoin->id]) ?>
+ = $this->Form->postLink(__('Delete Transaction Send Coin'), ['action' => 'delete', $transactionSendCoin->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionSendCoin->id)]) ?>
+ = $this->Html->link(__('List Transaction Send Coins'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Send Coin'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Users'), ['controller' => 'StateUsers', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State User'), ['controller' => 'StateUsers', 'action' => 'add']) ?>
+
+
+
+
= h($transactionSendCoin->id) ?>
+
+
+ = __('Transaction') ?>
+ = $transactionSendCoin->has('transaction') ? $this->Html->link($transactionSendCoin->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionSendCoin->transaction->id]) : '' ?>
+
+
+ = __('State User') ?>
+ = $transactionSendCoin->has('state_user') ? $this->Html->link($transactionSendCoin->state_user->id, ['controller' => 'StateUsers', 'action' => 'view', $transactionSendCoin->state_user->id]) : '' ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($transactionSendCoin->id) ?>
+
+
+ = __('Amount') ?>
+ = $this->Number->format($transactionSendCoin->amount) ?>
+
+
+ = __('Sender Final Balance') ?>
+ = $this->Number->format($transactionSendCoin->sender_final_balance) ?>
+
+
+
diff --git a/src/Template/TransactionSignatures/add.ctp b/src/Template/TransactionSignatures/add.ctp
new file mode 100644
index 000000000..1adbdcc4e
--- /dev/null
+++ b/src/Template/TransactionSignatures/add.ctp
@@ -0,0 +1,25 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List Transaction Signatures'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionSignature) ?>
+
+ = __('Add Transaction Signature') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionSignatures/edit.ctp b/src/Template/TransactionSignatures/edit.ctp
new file mode 100644
index 000000000..3783167b2
--- /dev/null
+++ b/src/Template/TransactionSignatures/edit.ctp
@@ -0,0 +1,31 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $transactionSignature->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $transactionSignature->id)]
+ )
+ ?>
+ = $this->Html->link(__('List Transaction Signatures'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionSignature) ?>
+
+ = __('Edit Transaction Signature') ?>
+ Form->control('transaction_id', ['options' => $transactions]);
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionSignatures/index.ctp b/src/Template/TransactionSignatures/index.ctp
new file mode 100644
index 000000000..d660247b3
--- /dev/null
+++ b/src/Template/TransactionSignatures/index.ctp
@@ -0,0 +1,49 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New Transaction Signature'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+
= __('Transaction Signatures') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('transaction_id') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($transactionSignature->id) ?>
+ = $transactionSignature->has('transaction') ? $this->Html->link($transactionSignature->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionSignature->transaction->id]) : '' ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $transactionSignature->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $transactionSignature->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $transactionSignature->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionSignature->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/TransactionSignatures/view.ctp b/src/Template/TransactionSignatures/view.ctp
new file mode 100644
index 000000000..12f0c8ad1
--- /dev/null
+++ b/src/Template/TransactionSignatures/view.ctp
@@ -0,0 +1,30 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit Transaction Signature'), ['action' => 'edit', $transactionSignature->id]) ?>
+ = $this->Form->postLink(__('Delete Transaction Signature'), ['action' => 'delete', $transactionSignature->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionSignature->id)]) ?>
+ = $this->Html->link(__('List Transaction Signatures'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Signature'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+
= h($transactionSignature->id) ?>
+
+
+ = __('Transaction') ?>
+ = $transactionSignature->has('transaction') ? $this->Html->link($transactionSignature->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionSignature->transaction->id]) : '' ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($transactionSignature->id) ?>
+
+
+
diff --git a/src/Template/TransactionTypes/add.ctp b/src/Template/TransactionTypes/add.ctp
new file mode 100644
index 000000000..1a23a5436
--- /dev/null
+++ b/src/Template/TransactionTypes/add.ctp
@@ -0,0 +1,26 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List Transaction Types'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionType) ?>
+
+ = __('Add Transaction Type') ?>
+ Form->control('name');
+ echo $this->Form->control('text');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionTypes/edit.ctp b/src/Template/TransactionTypes/edit.ctp
new file mode 100644
index 000000000..c9b27219c
--- /dev/null
+++ b/src/Template/TransactionTypes/edit.ctp
@@ -0,0 +1,32 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $transactionType->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $transactionType->id)]
+ )
+ ?>
+ = $this->Html->link(__('List Transaction Types'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transactionType) ?>
+
+ = __('Edit Transaction Type') ?>
+ Form->control('name');
+ echo $this->Form->control('text');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/TransactionTypes/index.ctp b/src/Template/TransactionTypes/index.ctp
new file mode 100644
index 000000000..c7c2194e1
--- /dev/null
+++ b/src/Template/TransactionTypes/index.ctp
@@ -0,0 +1,51 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New Transaction Type'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+
= __('Transaction Types') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('name') ?>
+ = $this->Paginator->sort('text') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($transactionType->id) ?>
+ = h($transactionType->name) ?>
+ = h($transactionType->text) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $transactionType->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $transactionType->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $transactionType->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionType->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/TransactionTypes/view.ctp b/src/Template/TransactionTypes/view.ctp
new file mode 100644
index 000000000..b0d82510c
--- /dev/null
+++ b/src/Template/TransactionTypes/view.ctp
@@ -0,0 +1,63 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit Transaction Type'), ['action' => 'edit', $transactionType->id]) ?>
+ = $this->Form->postLink(__('Delete Transaction Type'), ['action' => 'delete', $transactionType->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transactionType->id)]) ?>
+ = $this->Html->link(__('List Transaction Types'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Type'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List Transactions'), ['controller' => 'Transactions', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['controller' => 'Transactions', 'action' => 'add']) ?>
+
+
+
+
= h($transactionType->name) ?>
+
+
+ = __('Name') ?>
+ = h($transactionType->name) ?>
+
+
+ = __('Text') ?>
+ = h($transactionType->text) ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($transactionType->id) ?>
+
+
+
+
diff --git a/src/Template/Transactions/add.ctp b/src/Template/Transactions/add.ctp
new file mode 100644
index 000000000..31b0cb525
--- /dev/null
+++ b/src/Template/Transactions/add.ctp
@@ -0,0 +1,43 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('List Transactions'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Types'), ['controller' => 'TransactionTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Type'), ['controller' => 'TransactionTypes', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Created'), ['controller' => 'StateCreated', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Created'), ['controller' => 'StateCreated', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Creations'), ['controller' => 'TransactionCreations', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Creation'), ['controller' => 'TransactionCreations', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Addaddress'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Addaddres'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Allowtrades'), ['controller' => 'TransactionGroupAllowtrades', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Allowtrade'), ['controller' => 'TransactionGroupAllowtrades', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Creates'), ['controller' => 'TransactionGroupCreates', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Create'), ['controller' => 'TransactionGroupCreates', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Send Coins'), ['controller' => 'TransactionSendCoins', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Send Coin'), ['controller' => 'TransactionSendCoins', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Signatures'), ['controller' => 'TransactionSignatures', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Signature'), ['controller' => 'TransactionSignatures', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transaction) ?>
+
+ = __('Add Transaction') ?>
+ Form->control('state_group_id', ['options' => $stateGroups]);
+ echo $this->Form->control('transaction_type_id', ['options' => $transactionTypes]);
+ echo $this->Form->control('received');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/Transactions/edit.ctp b/src/Template/Transactions/edit.ctp
new file mode 100644
index 000000000..38421dc03
--- /dev/null
+++ b/src/Template/Transactions/edit.ctp
@@ -0,0 +1,49 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Form->postLink(
+ __('Delete'),
+ ['action' => 'delete', $transaction->id],
+ ['confirm' => __('Are you sure you want to delete # {0}?', $transaction->id)]
+ )
+ ?>
+ = $this->Html->link(__('List Transactions'), ['action' => 'index']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Types'), ['controller' => 'TransactionTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Type'), ['controller' => 'TransactionTypes', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Created'), ['controller' => 'StateCreated', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Created'), ['controller' => 'StateCreated', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Creations'), ['controller' => 'TransactionCreations', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Creation'), ['controller' => 'TransactionCreations', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Addaddress'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Addaddres'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Allowtrades'), ['controller' => 'TransactionGroupAllowtrades', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Allowtrade'), ['controller' => 'TransactionGroupAllowtrades', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Creates'), ['controller' => 'TransactionGroupCreates', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Create'), ['controller' => 'TransactionGroupCreates', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Send Coins'), ['controller' => 'TransactionSendCoins', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Send Coin'), ['controller' => 'TransactionSendCoins', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Signatures'), ['controller' => 'TransactionSignatures', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Signature'), ['controller' => 'TransactionSignatures', 'action' => 'add']) ?>
+
+
+
+ = $this->Form->create($transaction) ?>
+
+ = __('Edit Transaction') ?>
+ Form->control('state_group_id', ['options' => $stateGroups]);
+ echo $this->Form->control('transaction_type_id', ['options' => $transactionTypes]);
+ echo $this->Form->control('received');
+ ?>
+
+ = $this->Form->button(__('Submit')) ?>
+ = $this->Form->end() ?>
+
diff --git a/src/Template/Transactions/index.ctp b/src/Template/Transactions/index.ctp
new file mode 100644
index 000000000..3160f4dad
--- /dev/null
+++ b/src/Template/Transactions/index.ctp
@@ -0,0 +1,69 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('New Transaction'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Types'), ['controller' => 'TransactionTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Type'), ['controller' => 'TransactionTypes', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Created'), ['controller' => 'StateCreated', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Created'), ['controller' => 'StateCreated', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Creations'), ['controller' => 'TransactionCreations', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Creation'), ['controller' => 'TransactionCreations', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Addaddress'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Addaddres'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Allowtrades'), ['controller' => 'TransactionGroupAllowtrades', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Allowtrade'), ['controller' => 'TransactionGroupAllowtrades', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Creates'), ['controller' => 'TransactionGroupCreates', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Create'), ['controller' => 'TransactionGroupCreates', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Send Coins'), ['controller' => 'TransactionSendCoins', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Send Coin'), ['controller' => 'TransactionSendCoins', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Signatures'), ['controller' => 'TransactionSignatures', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Signature'), ['controller' => 'TransactionSignatures', 'action' => 'add']) ?>
+
+
+
+
= __('Transactions') ?>
+
+
+
+ = $this->Paginator->sort('id') ?>
+ = $this->Paginator->sort('state_group_id') ?>
+ = $this->Paginator->sort('transaction_type_id') ?>
+ = $this->Paginator->sort('received') ?>
+ = __('Actions') ?>
+
+
+
+
+
+ = $this->Number->format($transaction->id) ?>
+ = $transaction->has('state_group') ? $this->Html->link($transaction->state_group->name, ['controller' => 'StateGroups', 'action' => 'view', $transaction->state_group->id]) : '' ?>
+ = $transaction->has('transaction_type') ? $this->Html->link($transaction->transaction_type->name, ['controller' => 'TransactionTypes', 'action' => 'view', $transaction->transaction_type->id]) : '' ?>
+ = h($transaction->received) ?>
+
+ = $this->Html->link(__('View'), ['action' => 'view', $transaction->id]) ?>
+ = $this->Html->link(__('Edit'), ['action' => 'edit', $transaction->id]) ?>
+ = $this->Form->postLink(__('Delete'), ['action' => 'delete', $transaction->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transaction->id)]) ?>
+
+
+
+
+
+
+
+
= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?>
+
+
diff --git a/src/Template/Transactions/view.ctp b/src/Template/Transactions/view.ctp
new file mode 100644
index 000000000..b37d91fda
--- /dev/null
+++ b/src/Template/Transactions/view.ctp
@@ -0,0 +1,259 @@
+
+
+
+ = __('Actions') ?>
+ = $this->Html->link(__('Edit Transaction'), ['action' => 'edit', $transaction->id]) ?>
+ = $this->Form->postLink(__('Delete Transaction'), ['action' => 'delete', $transaction->id], ['confirm' => __('Are you sure you want to delete # {0}?', $transaction->id)]) ?>
+ = $this->Html->link(__('List Transactions'), ['action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction'), ['action' => 'add']) ?>
+ = $this->Html->link(__('List State Groups'), ['controller' => 'StateGroups', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Group'), ['controller' => 'StateGroups', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Types'), ['controller' => 'TransactionTypes', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Type'), ['controller' => 'TransactionTypes', 'action' => 'add']) ?>
+ = $this->Html->link(__('List State Created'), ['controller' => 'StateCreated', 'action' => 'index']) ?>
+ = $this->Html->link(__('New State Created'), ['controller' => 'StateCreated', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Creations'), ['controller' => 'TransactionCreations', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Creation'), ['controller' => 'TransactionCreations', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Addaddress'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Addaddres'), ['controller' => 'TransactionGroupAddaddress', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Allowtrades'), ['controller' => 'TransactionGroupAllowtrades', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Allowtrade'), ['controller' => 'TransactionGroupAllowtrades', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Group Creates'), ['controller' => 'TransactionGroupCreates', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Group Create'), ['controller' => 'TransactionGroupCreates', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Send Coins'), ['controller' => 'TransactionSendCoins', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Send Coin'), ['controller' => 'TransactionSendCoins', 'action' => 'add']) ?>
+ = $this->Html->link(__('List Transaction Signatures'), ['controller' => 'TransactionSignatures', 'action' => 'index']) ?>
+ = $this->Html->link(__('New Transaction Signature'), ['controller' => 'TransactionSignatures', 'action' => 'add']) ?>
+
+
+
+
= h($transaction->id) ?>
+
+
+ = __('State Group') ?>
+ = $transaction->has('state_group') ? $this->Html->link($transaction->state_group->name, ['controller' => 'StateGroups', 'action' => 'view', $transaction->state_group->id]) : '' ?>
+
+
+ = __('Transaction Type') ?>
+ = $transaction->has('transaction_type') ? $this->Html->link($transaction->transaction_type->name, ['controller' => 'TransactionTypes', 'action' => 'view', $transaction->transaction_type->id]) : '' ?>
+
+
+ = __('Id') ?>
+ = $this->Number->format($transaction->id) ?>
+
+
+ = __('Received') ?>
+ = h($transaction->received) ?>
+
+
+
+
+
+
+
+
+
+
diff --git a/src/View/AjaxView.php b/src/View/AjaxView.php
new file mode 100644
index 000000000..3cb786926
--- /dev/null
+++ b/src/View/AjaxView.php
@@ -0,0 +1,49 @@
+response = $this->response->withType('ajax');
+ }
+}
diff --git a/src/View/AppView.php b/src/View/AppView.php
new file mode 100644
index 000000000..242ab6bde
--- /dev/null
+++ b/src/View/AppView.php
@@ -0,0 +1,40 @@
+loadHelper('Html');`
+ *
+ * @return void
+ */
+ public function initialize()
+ {
+ }
+}
diff --git a/src/View/Cell/empty b/src/View/Cell/empty
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/View/Helper/empty b/src/View/Helper/empty
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/TestCase/ApplicationTest.php b/tests/TestCase/ApplicationTest.php
new file mode 100644
index 000000000..908b23539
--- /dev/null
+++ b/tests/TestCase/ApplicationTest.php
@@ -0,0 +1,84 @@
+bootstrap();
+ $plugins = $app->getPlugins();
+
+ $this->assertCount(3, $plugins);
+ $this->assertSame('Bake', $plugins->get('Bake')->getName());
+ $this->assertSame('Migrations', $plugins->get('Migrations')->getName());
+ $this->assertSame('DebugKit', $plugins->get('DebugKit')->getName());
+ }
+
+ /**
+ * testBootstrapPluginWitoutHalt
+ *
+ * @return void
+ */
+ public function testBootstrapPluginWithoutHalt()
+ {
+ $this->expectException(InvalidArgumentException::class);
+
+ $app = $this->getMockBuilder(Application::class)
+ ->setConstructorArgs([dirname(dirname(__DIR__)) . '/config'])
+ ->setMethods(['addPlugin'])
+ ->getMock();
+
+ $app->method('addPlugin')
+ ->will($this->throwException(new InvalidArgumentException('test exception.')));
+
+ $app->bootstrap();
+ }
+
+ /**
+ * testMiddleware
+ *
+ * @return void
+ */
+ public function testMiddleware()
+ {
+ $app = new Application(dirname(dirname(__DIR__)) . '/config');
+ $middleware = new MiddlewareQueue();
+
+ $middleware = $app->middleware($middleware);
+
+ $this->assertInstanceOf(ErrorHandlerMiddleware::class, $middleware->get(0));
+ $this->assertInstanceOf(AssetMiddleware::class, $middleware->get(1));
+ $this->assertInstanceOf(RoutingMiddleware::class, $middleware->get(2));
+ }
+}
diff --git a/tests/TestCase/Controller/Component/empty b/tests/TestCase/Controller/Component/empty
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/TestCase/Controller/PagesControllerTest.php b/tests/TestCase/Controller/PagesControllerTest.php
new file mode 100644
index 000000000..11b8b1db5
--- /dev/null
+++ b/tests/TestCase/Controller/PagesControllerTest.php
@@ -0,0 +1,97 @@
+get('/');
+ $this->assertResponseOk();
+ $this->get('/');
+ $this->assertResponseOk();
+ }
+
+ /**
+ * testDisplay method
+ *
+ * @return void
+ */
+ public function testDisplay()
+ {
+ $this->get('/pages/home');
+ $this->assertResponseOk();
+ $this->assertResponseContains('CakePHP');
+ $this->assertResponseContains('');
+ }
+
+ /**
+ * Test that missing template renders 404 page in production
+ *
+ * @return void
+ */
+ public function testMissingTemplate()
+ {
+ Configure::write('debug', false);
+ $this->get('/pages/not_existing');
+
+ $this->assertResponseError();
+ $this->assertResponseContains('Error');
+ }
+
+ /**
+ * Test that missing template in debug mode renders missing_template error page
+ *
+ * @return void
+ */
+ public function testMissingTemplateInDebug()
+ {
+ Configure::write('debug', true);
+ $this->get('/pages/not_existing');
+
+ $this->assertResponseFailure();
+ $this->assertResponseContains('Missing Template');
+ $this->assertResponseContains('Stacktrace');
+ $this->assertResponseContains('not_existing.ctp');
+ }
+
+ /**
+ * Test directory traversal protection
+ *
+ * @return void
+ */
+ public function testDirectoryTraversalProtection()
+ {
+ $this->get('/pages/../Layout/ajax');
+ $this->assertResponseCode(403);
+ $this->assertResponseContains('Forbidden');
+ }
+}
diff --git a/tests/TestCase/Model/Behavior/empty b/tests/TestCase/Model/Behavior/empty
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/TestCase/View/Helper/empty b/tests/TestCase/View/Helper/empty
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
new file mode 100644
index 000000000..0ca191e4a
--- /dev/null
+++ b/tests/bootstrap.php
@@ -0,0 +1,12 @@
+
+ RewriteEngine On
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteRule ^ index.php [L]
+
diff --git a/webroot/css/base.css b/webroot/css/base.css
new file mode 100644
index 000000000..458cd9489
--- /dev/null
+++ b/webroot/css/base.css
@@ -0,0 +1,455 @@
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit; /* 1 */
+ font: inherit; /* 2 */
+ margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box; /* 2 */
+ box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+}
+
+/**
+ * Foundation for Sites by ZURB
+ * Version 5
+ */
+
+/*
+ * Copyright (c) 2013-2014 ZURB, inc.
+* MIT License
+* Permission is hereby granted, free of charge, to any person obtaining
+* a copy of this software and associated documentation files (the
+* "Software"), to deal in the Software without restriction, including
+* without limitation the rights to use, copy, modify, merge, publish,
+* distribute, sublicense, and/or sell copies of the Software, and to
+* permit persons to whom the Software is furnished to do so, subject to
+* the following conditions:
+* The above copyright notice and this permission notice shall be
+* included in all copies or substantial portions of the Software.
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+meta.foundation-version{font-family:"{{ VERSION }}"}meta.foundation-mq-small{font-family:"/only screen/";width:0}meta.foundation-mq-small-only{font-family:"/only screen and (max-width: 40em)/";width:0}meta.foundation-mq-medium{font-family:"/only screen and (min-width:40.0625em)/";width:40.0625em}meta.foundation-mq-medium-only{font-family:"/only screen and (min-width:40.0625em) and (max-width:64em)/";width:40.0625em}meta.foundation-mq-large{font-family:"/only screen and (min-width:64.0625em)/";width:64.0625em}meta.foundation-mq-large-only{font-family:"/only screen and (min-width:64.0625em) and (max-width:90em)/";width:64.0625em}meta.foundation-mq-xlarge{font-family:"/only screen and (min-width:90.0625em)/";width:90.0625em}meta.foundation-mq-xlarge-only{font-family:"/only screen and (min-width:90.0625em) and (max-width:120em)/";width:90.0625em}meta.foundation-mq-xxlarge{font-family:"/only screen and (min-width:120.0625em)/";width:120.0625em}meta.foundation-data-attribute-namespace{font-family:false}html,body{height:100%}html{box-sizing:border-box}*,*:before,*:after{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}html,body{font-size:100%}body{background:#fff;color:#222;cursor:auto;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:normal;line-height:1.5;margin:0;padding:0;position:relative}a:hover{cursor:pointer}img{max-width:100%;height:auto}img{-ms-interpolation-mode:bicubic}#map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object,.mqa-display img,.mqa-display embed,.mqa-display object{max-width:none !important}.left{float:left !important}.right{float:right !important}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.hide{display:none}.invisible{visibility:hidden}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px}select{width:100%}.row{margin:0 auto;max-width:62.5rem;width:100%}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.row.collapse .row{margin-left:0;margin-right:0}.row .row{margin:0 -0.9375rem;max-width:none;width:auto}.row .row:before,.row .row:after{content:" ";display:table}.row .row:after{clear:both}.row .row.collapse{margin:0;max-width:none;width:auto}.row .row.collapse:before,.row .row.collapse:after{content:" ";display:table}.row .row.collapse:after{clear:both}.column,.columns{padding-left:0.9375rem;padding-right:0.9375rem;width:100%;float:left}.column+.column:last-child,.columns+.column:last-child,.column+.columns:last-child,.columns+.columns:last-child{float:right}.column+.column.end,.columns+.column.end,.column+.columns.end,.columns+.columns.end{float:left}@media only screen{.small-push-0{position:relative;left:0;right:auto}.small-pull-0{position:relative;right:0;left:auto}.small-push-1{position:relative;left:8.33333%;right:auto}.small-pull-1{position:relative;right:8.33333%;left:auto}.small-push-2{position:relative;left:16.66667%;right:auto}.small-pull-2{position:relative;right:16.66667%;left:auto}.small-push-3{position:relative;left:25%;right:auto}.small-pull-3{position:relative;right:25%;left:auto}.small-push-4{position:relative;left:33.33333%;right:auto}.small-pull-4{position:relative;right:33.33333%;left:auto}.small-push-5{position:relative;left:41.66667%;right:auto}.small-pull-5{position:relative;right:41.66667%;left:auto}.small-push-6{position:relative;left:50%;right:auto}.small-pull-6{position:relative;right:50%;left:auto}.small-push-7{position:relative;left:58.33333%;right:auto}.small-pull-7{position:relative;right:58.33333%;left:auto}.small-push-8{position:relative;left:66.66667%;right:auto}.small-pull-8{position:relative;right:66.66667%;left:auto}.small-push-9{position:relative;left:75%;right:auto}.small-pull-9{position:relative;right:75%;left:auto}.small-push-10{position:relative;left:83.33333%;right:auto}.small-pull-10{position:relative;right:83.33333%;left:auto}.small-push-11{position:relative;left:91.66667%;right:auto}.small-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.small-1{width:8.33333%}.small-2{width:16.66667%}.small-3{width:25%}.small-4{width:33.33333%}.small-5{width:41.66667%}.small-6{width:50%}.small-7{width:58.33333%}.small-8{width:66.66667%}.small-9{width:75%}.small-10{width:83.33333%}.small-11{width:91.66667%}.small-12{width:100%}.small-offset-0{margin-left:0 !important}.small-offset-1{margin-left:8.33333% !important}.small-offset-2{margin-left:16.66667% !important}.small-offset-3{margin-left:25% !important}.small-offset-4{margin-left:33.33333% !important}.small-offset-5{margin-left:41.66667% !important}.small-offset-6{margin-left:50% !important}.small-offset-7{margin-left:58.33333% !important}.small-offset-8{margin-left:66.66667% !important}.small-offset-9{margin-left:75% !important}.small-offset-10{margin-left:83.33333% !important}.small-offset-11{margin-left:91.66667% !important}.small-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.small-centered,.columns.small-centered{margin-left:auto;margin-right:auto;float:none}.column.small-uncentered,.columns.small-uncentered{float:left;margin-left:0;margin-right:0}.column.small-centered:last-child,.columns.small-centered:last-child{float:none}.column.small-uncentered:last-child,.columns.small-uncentered:last-child{float:left}.column.small-uncentered.opposite,.columns.small-uncentered.opposite{float:right}.row.small-collapse>.column,.row.small-collapse>.columns{padding-left:0;padding-right:0}.row.small-collapse .row{margin-left:0;margin-right:0}.row.small-uncollapse>.column,.row.small-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}}@media only screen and (min-width: 40.0625em){.medium-push-0{position:relative;left:0;right:auto}.medium-pull-0{position:relative;right:0;left:auto}.medium-push-1{position:relative;left:8.33333%;right:auto}.medium-pull-1{position:relative;right:8.33333%;left:auto}.medium-push-2{position:relative;left:16.66667%;right:auto}.medium-pull-2{position:relative;right:16.66667%;left:auto}.medium-push-3{position:relative;left:25%;right:auto}.medium-pull-3{position:relative;right:25%;left:auto}.medium-push-4{position:relative;left:33.33333%;right:auto}.medium-pull-4{position:relative;right:33.33333%;left:auto}.medium-push-5{position:relative;left:41.66667%;right:auto}.medium-pull-5{position:relative;right:41.66667%;left:auto}.medium-push-6{position:relative;left:50%;right:auto}.medium-pull-6{position:relative;right:50%;left:auto}.medium-push-7{position:relative;left:58.33333%;right:auto}.medium-pull-7{position:relative;right:58.33333%;left:auto}.medium-push-8{position:relative;left:66.66667%;right:auto}.medium-pull-8{position:relative;right:66.66667%;left:auto}.medium-push-9{position:relative;left:75%;right:auto}.medium-pull-9{position:relative;right:75%;left:auto}.medium-push-10{position:relative;left:83.33333%;right:auto}.medium-pull-10{position:relative;right:83.33333%;left:auto}.medium-push-11{position:relative;left:91.66667%;right:auto}.medium-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.medium-1{width:8.33333%}.medium-2{width:16.66667%}.medium-3{width:25%}.medium-4{width:33.33333%}.medium-5{width:41.66667%}.medium-6{width:50%}.medium-7{width:58.33333%}.medium-8{width:66.66667%}.medium-9{width:75%}.medium-10{width:83.33333%}.medium-11{width:91.66667%}.medium-12{width:100%}.medium-offset-0{margin-left:0 !important}.medium-offset-1{margin-left:8.33333% !important}.medium-offset-2{margin-left:16.66667% !important}.medium-offset-3{margin-left:25% !important}.medium-offset-4{margin-left:33.33333% !important}.medium-offset-5{margin-left:41.66667% !important}.medium-offset-6{margin-left:50% !important}.medium-offset-7{margin-left:58.33333% !important}.medium-offset-8{margin-left:66.66667% !important}.medium-offset-9{margin-left:75% !important}.medium-offset-10{margin-left:83.33333% !important}.medium-offset-11{margin-left:91.66667% !important}.medium-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.medium-centered,.columns.medium-centered{margin-left:auto;margin-right:auto;float:none}.column.medium-uncentered,.columns.medium-uncentered{float:left;margin-left:0;margin-right:0}.column.medium-centered:last-child,.columns.medium-centered:last-child{float:none}.column.medium-uncentered:last-child,.columns.medium-uncentered:last-child{float:left}.column.medium-uncentered.opposite,.columns.medium-uncentered.opposite{float:right}.row.medium-collapse>.column,.row.medium-collapse>.columns{padding-left:0;padding-right:0}.row.medium-collapse .row{margin-left:0;margin-right:0}.row.medium-uncollapse>.column,.row.medium-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}.push-0{position:relative;left:0;right:auto}.pull-0{position:relative;right:0;left:auto}.push-1{position:relative;left:8.33333%;right:auto}.pull-1{position:relative;right:8.33333%;left:auto}.push-2{position:relative;left:16.66667%;right:auto}.pull-2{position:relative;right:16.66667%;left:auto}.push-3{position:relative;left:25%;right:auto}.pull-3{position:relative;right:25%;left:auto}.push-4{position:relative;left:33.33333%;right:auto}.pull-4{position:relative;right:33.33333%;left:auto}.push-5{position:relative;left:41.66667%;right:auto}.pull-5{position:relative;right:41.66667%;left:auto}.push-6{position:relative;left:50%;right:auto}.pull-6{position:relative;right:50%;left:auto}.push-7{position:relative;left:58.33333%;right:auto}.pull-7{position:relative;right:58.33333%;left:auto}.push-8{position:relative;left:66.66667%;right:auto}.pull-8{position:relative;right:66.66667%;left:auto}.push-9{position:relative;left:75%;right:auto}.pull-9{position:relative;right:75%;left:auto}.push-10{position:relative;left:83.33333%;right:auto}.pull-10{position:relative;right:83.33333%;left:auto}.push-11{position:relative;left:91.66667%;right:auto}.pull-11{position:relative;right:91.66667%;left:auto}}@media only screen and (min-width: 64.0625em){.large-push-0{position:relative;left:0;right:auto}.large-pull-0{position:relative;right:0;left:auto}.large-push-1{position:relative;left:8.33333%;right:auto}.large-pull-1{position:relative;right:8.33333%;left:auto}.large-push-2{position:relative;left:16.66667%;right:auto}.large-pull-2{position:relative;right:16.66667%;left:auto}.large-push-3{position:relative;left:25%;right:auto}.large-pull-3{position:relative;right:25%;left:auto}.large-push-4{position:relative;left:33.33333%;right:auto}.large-pull-4{position:relative;right:33.33333%;left:auto}.large-push-5{position:relative;left:41.66667%;right:auto}.large-pull-5{position:relative;right:41.66667%;left:auto}.large-push-6{position:relative;left:50%;right:auto}.large-pull-6{position:relative;right:50%;left:auto}.large-push-7{position:relative;left:58.33333%;right:auto}.large-pull-7{position:relative;right:58.33333%;left:auto}.large-push-8{position:relative;left:66.66667%;right:auto}.large-pull-8{position:relative;right:66.66667%;left:auto}.large-push-9{position:relative;left:75%;right:auto}.large-pull-9{position:relative;right:75%;left:auto}.large-push-10{position:relative;left:83.33333%;right:auto}.large-pull-10{position:relative;right:83.33333%;left:auto}.large-push-11{position:relative;left:91.66667%;right:auto}.large-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.large-1{width:8.33333%}.large-2{width:16.66667%}.large-3{width:25%}.large-4{width:33.33333%}.large-5{width:41.66667%}.large-6{width:50%}.large-7{width:58.33333%}.large-8{width:66.66667%}.large-9{width:75%}.large-10{width:83.33333%}.large-11{width:91.66667%}.large-12{width:100%}.large-offset-0{margin-left:0 !important}.large-offset-1{margin-left:8.33333% !important}.large-offset-2{margin-left:16.66667% !important}.large-offset-3{margin-left:25% !important}.large-offset-4{margin-left:33.33333% !important}.large-offset-5{margin-left:41.66667% !important}.large-offset-6{margin-left:50% !important}.large-offset-7{margin-left:58.33333% !important}.large-offset-8{margin-left:66.66667% !important}.large-offset-9{margin-left:75% !important}.large-offset-10{margin-left:83.33333% !important}.large-offset-11{margin-left:91.66667% !important}.large-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.large-centered,.columns.large-centered{margin-left:auto;margin-right:auto;float:none}.column.large-uncentered,.columns.large-uncentered{float:left;margin-left:0;margin-right:0}.column.large-centered:last-child,.columns.large-centered:last-child{float:none}.column.large-uncentered:last-child,.columns.large-uncentered:last-child{float:left}.column.large-uncentered.opposite,.columns.large-uncentered.opposite{float:right}.row.large-collapse>.column,.row.large-collapse>.columns{padding-left:0;padding-right:0}.row.large-collapse .row{margin-left:0;margin-right:0}.row.large-uncollapse>.column,.row.large-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}.push-0{position:relative;left:0;right:auto}.pull-0{position:relative;right:0;left:auto}.push-1{position:relative;left:8.33333%;right:auto}.pull-1{position:relative;right:8.33333%;left:auto}.push-2{position:relative;left:16.66667%;right:auto}.pull-2{position:relative;right:16.66667%;left:auto}.push-3{position:relative;left:25%;right:auto}.pull-3{position:relative;right:25%;left:auto}.push-4{position:relative;left:33.33333%;right:auto}.pull-4{position:relative;right:33.33333%;left:auto}.push-5{position:relative;left:41.66667%;right:auto}.pull-5{position:relative;right:41.66667%;left:auto}.push-6{position:relative;left:50%;right:auto}.pull-6{position:relative;right:50%;left:auto}.push-7{position:relative;left:58.33333%;right:auto}.pull-7{position:relative;right:58.33333%;left:auto}.push-8{position:relative;left:66.66667%;right:auto}.pull-8{position:relative;right:66.66667%;left:auto}.push-9{position:relative;left:75%;right:auto}.pull-9{position:relative;right:75%;left:auto}.push-10{position:relative;left:83.33333%;right:auto}.pull-10{position:relative;right:83.33333%;left:auto}.push-11{position:relative;left:91.66667%;right:auto}.pull-11{position:relative;right:91.66667%;left:auto}}button,.button{-webkit-appearance:none;-moz-appearance:none;border-radius:0;border-style:solid;border-width:0;cursor:pointer;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;line-height:normal;margin:0 0 1.25rem;position:relative;text-align:center;text-decoration:none;display:inline-block;padding:1rem 2rem 1.0625rem 2rem;font-size:1rem;background-color:#008CBA;border-color:#007095;color:#fff;transition:background-color 300ms ease-out}button:hover,button:focus,.button:hover,.button:focus{background-color:#007095}button:hover,button:focus,.button:hover,.button:focus{color:#fff}button.secondary,.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{background-color:#b9b9b9}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{color:#333}button.success,.button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{background-color:#368a55}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{color:#fff}button.alert,.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{background-color:#cf2a0e}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{color:#fff}button.warning,.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}button.warning:hover,button.warning:focus,.button.warning:hover,.button.warning:focus{background-color:#cf6e0e}button.warning:hover,button.warning:focus,.button.warning:hover,.button.warning:focus{color:#fff}button.info,.button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333}button.info:hover,button.info:focus,.button.info:hover,.button.info:focus{background-color:#61b6d9}button.info:hover,button.info:focus,.button.info:hover,.button.info:focus{color:#fff}button.large,.button.large{padding:1.125rem 2.25rem 1.1875rem 2.25rem;font-size:1.25rem}button.small,.button.small{padding:0.875rem 1.75rem 0.9375rem 1.75rem;font-size:0.8125rem}button.tiny,.button.tiny{padding:0.625rem 1.25rem 0.6875rem 1.25rem;font-size:0.6875rem}button.expand,.button.expand{padding-left:0;padding-right:0;width:100%}button.left-align,.button.left-align{text-align:left;text-indent:0.75rem}button.right-align,.button.right-align{text-align:right;padding-right:0.75rem}button.radius,.button.radius{border-radius:3px}button.round,.button.round{border-radius:1000px}button.disabled,button[disabled],.button.disabled,.button[disabled]{background-color:#008CBA;border-color:#007095;color:#fff;box-shadow:none;cursor:default;opacity:0.7}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#007095}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{color:#fff}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#008CBA}button.disabled.secondary,button[disabled].secondary,.button.disabled.secondary,.button[disabled].secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333;box-shadow:none;cursor:default;opacity:0.7}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#b9b9b9}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{color:#333}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#e7e7e7}button.disabled.success,button[disabled].success,.button.disabled.success,.button[disabled].success{background-color:#43AC6A;border-color:#368a55;color:#fff;box-shadow:none;cursor:default;opacity:0.7}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#368a55}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{color:#fff}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#43AC6A}button.disabled.alert,button[disabled].alert,.button.disabled.alert,.button[disabled].alert{background-color:#f04124;border-color:#cf2a0e;color:#fff;box-shadow:none;cursor:default;opacity:0.7}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#cf2a0e}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{color:#fff}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#f04124}button.disabled.warning,button[disabled].warning,.button.disabled.warning,.button[disabled].warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff;box-shadow:none;cursor:default;opacity:0.7}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#cf6e0e}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{color:#fff}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#f08a24}button.disabled.info,button[disabled].info,.button.disabled.info,.button[disabled].info{background-color:#a0d3e8;border-color:#61b6d9;color:#333;box-shadow:none;cursor:default;opacity:0.7}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{background-color:#61b6d9}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{color:#fff}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{background-color:#a0d3e8}button::-moz-focus-inner{border:0;padding:0}@media only screen and (min-width: 40.0625em){button,.button{display:inline-block}}form{margin:0 0 1rem}form .row .row{margin:0 -0.5rem}form .row .row .column,form .row .row .columns{padding:0 0.5rem}form .row .row.collapse{margin:0}form .row .row.collapse .column,form .row .row.collapse .columns{padding:0}form .row .row.collapse input{-webkit-border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-bottom-right-radius:0;border-top-right-radius:0}form .row input.column,form .row input.columns,form .row textarea.column,form .row textarea.columns{padding-left:0.5rem}label{color:#4d4d4d;cursor:pointer;display:block;font-size:0.875rem;font-weight:normal;line-height:1.5;margin-bottom:0}label.right{float:none !important;text-align:right}label.inline{margin:0 0 1rem 0;padding:0.5625rem 0}label small{text-transform:capitalize;color:#676767}.prefix,.postfix{border-style:solid;border-width:1px;display:block;font-size:0.875rem;height:2.3125rem;line-height:2.3125rem;overflow:visible;padding-bottom:0;padding-top:0;position:relative;text-align:center;width:100%;z-index:2}.postfix.button{border-color:true}.prefix.button{border:none;padding-left:0;padding-right:0;padding-bottom:0;padding-top:0;text-align:center}.prefix.button.radius{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.postfix.button.radius{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.prefix.button.round{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.postfix.button.round{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}span.prefix,label.prefix{background:#f2f2f2;border-right:none;color:#333;border-color:#ccc}span.postfix,label.postfix{background:#f2f2f2;color:#333;border-color:#ccc}input[type="text"],input[type="password"],input[type="date"],input[type="datetime"],input[type="datetime-local"],input[type="month"],input[type="week"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="time"],input[type="url"],input[type="color"],textarea{-webkit-appearance:none;-moz-appearance:none;border-radius:0;background-color:#fff;border-style:solid;border-width:1px;border-color:#ccc;box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);color:rgba(0,0,0,0.75);display:block;font-family:inherit;font-size:0.875rem;height:2.3125rem;margin:0 0 1rem 0;padding:0.5rem;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color 0.15s linear,background 0.15s linear;-moz-transition:border-color 0.15s linear,background 0.15s linear;-ms-transition:border-color 0.15s linear,background 0.15s linear;-o-transition:border-color 0.15s linear,background 0.15s linear;transition:border-color 0.15s linear,background 0.15s linear}input[type="text"]:focus,input[type="password"]:focus,input[type="date"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="month"]:focus,input[type="week"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="time"]:focus,input[type="url"]:focus,input[type="color"]:focus,textarea:focus{background:#fafafa;border-color:#999;outline:none}input[type="text"]:disabled,input[type="password"]:disabled,input[type="date"]:disabled,input[type="datetime"]:disabled,input[type="datetime-local"]:disabled,input[type="month"]:disabled,input[type="week"]:disabled,input[type="email"]:disabled,input[type="number"]:disabled,input[type="search"]:disabled,input[type="tel"]:disabled,input[type="time"]:disabled,input[type="url"]:disabled,input[type="color"]:disabled,textarea:disabled{background-color:#ddd;cursor:default}input[type="text"][disabled],input[type="text"][readonly],fieldset[disabled] input[type="text"],input[type="password"][disabled],input[type="password"][readonly],fieldset[disabled] input[type="password"],input[type="date"][disabled],input[type="date"][readonly],fieldset[disabled] input[type="date"],input[type="datetime"][disabled],input[type="datetime"][readonly],fieldset[disabled] input[type="datetime"],input[type="datetime-local"][disabled],input[type="datetime-local"][readonly],fieldset[disabled] input[type="datetime-local"],input[type="month"][disabled],input[type="month"][readonly],fieldset[disabled] input[type="month"],input[type="week"][disabled],input[type="week"][readonly],fieldset[disabled] input[type="week"],input[type="email"][disabled],input[type="email"][readonly],fieldset[disabled] input[type="email"],input[type="number"][disabled],input[type="number"][readonly],fieldset[disabled] input[type="number"],input[type="search"][disabled],input[type="search"][readonly],fieldset[disabled] input[type="search"],input[type="tel"][disabled],input[type="tel"][readonly],fieldset[disabled] input[type="tel"],input[type="time"][disabled],input[type="time"][readonly],fieldset[disabled] input[type="time"],input[type="url"][disabled],input[type="url"][readonly],fieldset[disabled] input[type="url"],input[type="color"][disabled],input[type="color"][readonly],fieldset[disabled] input[type="color"],textarea[disabled],textarea[readonly],fieldset[disabled] textarea{background-color:#ddd;cursor:default}input[type="text"].radius,input[type="password"].radius,input[type="date"].radius,input[type="datetime"].radius,input[type="datetime-local"].radius,input[type="month"].radius,input[type="week"].radius,input[type="email"].radius,input[type="number"].radius,input[type="search"].radius,input[type="tel"].radius,input[type="time"].radius,input[type="url"].radius,input[type="color"].radius,textarea.radius{border-radius:3px}form .row .prefix-radius.row.collapse input,form .row .prefix-radius.row.collapse textarea,form .row .prefix-radius.row.collapse select,form .row .prefix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}form .row .prefix-radius.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}form .row .postfix-radius.row.collapse input,form .row .postfix-radius.row.collapse textarea,form .row .postfix-radius.row.collapse select,form .row .postfix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}form .row .postfix-radius.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}form .row .prefix-round.row.collapse input,form .row .prefix-round.row.collapse textarea,form .row .prefix-round.row.collapse select,form .row .prefix-round.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}form .row .prefix-round.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}form .row .postfix-round.row.collapse input,form .row .postfix-round.row.collapse textarea,form .row .postfix-round.row.collapse select,form .row .postfix-round.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}form .row .postfix-round.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}input[type="submit"]{-webkit-appearance:none;-moz-appearance:none;border-radius:0}textarea[rows]{height:auto}textarea{max-width:100%}::-webkit-input-placeholder{color:#ccc}:-moz-placeholder{color:#ccc}::-moz-placeholder{color:#ccc}:-ms-input-placeholder{color:#ccc}select{-webkit-appearance:none !important;-moz-appearance:none !important;background-color:#FAFAFA;border-radius:0;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+);background-position:100% center;background-repeat:no-repeat;border-style:solid;border-width:1px;border-color:#ccc;color:rgba(0,0,0,0.75);font-family:inherit;font-size:0.875rem;line-height:normal;padding:0.5rem;border-radius:0;height:2.3125rem}select::-ms-expand{display:none}select.radius{border-radius:3px}select:hover{background-color:#f3f3f3;border-color:#999}select:disabled{background-color:#ddd;cursor:default}select[multiple]{height:auto}input[type="file"],input[type="checkbox"],input[type="radio"],select{margin:0 0 1rem 0}input[type="checkbox"]+label,input[type="radio"]+label{display:inline-block;margin-left:0.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline}input[type="file"]{width:100%}fieldset{border:1px solid #ddd;margin:1.125rem 0;padding:1.25rem}fieldset legend{background:#fff;font-weight:bold;margin-left:-0.1875rem;margin:0;padding:0 0.1875rem}[data-abide] .error small.error,[data-abide] .error span.error,[data-abide] span.error,[data-abide] small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#fff}[data-abide] span.error,[data-abide] small.error{display:none}span.error,small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#fff}.error input,.error textarea,.error select{margin-bottom:0}.error input[type="checkbox"],.error input[type="radio"]{margin-bottom:1rem}.error label,.error label.error{color:#f04124}.error small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#fff}.error>label>small{background:transparent;color:#676767;display:inline;font-size:60%;font-style:normal;margin:0;padding:0;text-transform:capitalize}.error span.error-message{display:block}input.error,textarea.error,select.error{margin-bottom:0}label.error{color:#f04124}meta.foundation-mq-topbar{font-family:"/only screen and (min-width:40.0625em)/";width:40.0625em}.contain-to-grid{width:100%;background:#333}.contain-to-grid .top-bar{margin-bottom:0}.fixed{position:fixed;top:0;width:100%;z-index:99;left:0}.fixed.expanded:not(.top-bar){height:auto;max-height:100%;overflow-y:auto;width:100%}.fixed.expanded:not(.top-bar) .title-area{position:fixed;width:100%;z-index:99}.fixed.expanded:not(.top-bar) .top-bar-section{margin-top:2.8125rem;z-index:98}.top-bar{background:#333;height:2.8125rem;line-height:2.8125rem;margin-bottom:0;overflow:hidden;position:relative}.top-bar ul{list-style:none;margin-bottom:0}.top-bar .row{max-width:none}.top-bar form,.top-bar input,.top-bar select{margin-bottom:0}.top-bar input,.top-bar select{font-size:0.75rem;height:1.75rem;padding-bottom:.35rem;padding-top:.35rem}.top-bar .button,.top-bar button{font-size:0.75rem;margin-bottom:0;padding-bottom:0.4125rem;padding-top:0.4125rem}@media only screen and (max-width: 40em){.top-bar .button,.top-bar button{position:relative;top:-1px}}.top-bar .title-area{margin:0;position:relative}.top-bar .name{font-size:16px;height:2.8125rem;margin:0}.top-bar .name h1,.top-bar .name h2,.top-bar .name h3,.top-bar .name h4,.top-bar .name p,.top-bar .name span{font-size:1.0625rem;line-height:2.8125rem;margin:0}.top-bar .name h1 a,.top-bar .name h2 a,.top-bar .name h3 a,.top-bar .name h4 a,.top-bar .name p a,.top-bar .name span a{color:#fff;display:block;font-weight:normal;padding:0 0.9375rem;width:75%}.top-bar .toggle-topbar{position:absolute;right:0;top:0}.top-bar .toggle-topbar a{color:#fff;display:block;font-size:0.8125rem;font-weight:bold;height:2.8125rem;line-height:2.8125rem;padding:0 0.9375rem;position:relative;text-transform:uppercase}.top-bar .toggle-topbar.menu-icon{margin-top:-16px;top:50%}.top-bar .toggle-topbar.menu-icon a{color:#fff;height:34px;line-height:33px;padding:0 2.5rem 0 0.9375rem;position:relative}.top-bar .toggle-topbar.menu-icon a span::after{content:"";display:block;height:0;position:absolute;margin-top:-8px;top:50%;right:0.9375rem;box-shadow:0 0 0 1px #fff,0 7px 0 1px #fff,0 14px 0 1px #fff;width:16px}.top-bar .toggle-topbar.menu-icon a span:hover:after{box-shadow:0 0 0 1px "",0 7px 0 1px "",0 14px 0 1px ""}.top-bar.expanded{background:transparent;height:auto}.top-bar.expanded .title-area{background:#333}.top-bar.expanded .toggle-topbar a{color:#888}.top-bar.expanded .toggle-topbar a span::after{box-shadow:0 0 0 1px #888,0 7px 0 1px #888,0 14px 0 1px #888}@media screen and (-webkit-min-device-pixel-ratio: 0){.top-bar.expanded .top-bar-section .has-dropdown.moved>.dropdown,.top-bar.expanded .top-bar-section .dropdown{clip:initial}.top-bar.expanded .top-bar-section .has-dropdown:not(.moved)>ul{padding:0}}.top-bar-section{left:0;position:relative;width:auto;transition:left 300ms ease-out}.top-bar-section ul{display:block;font-size:16px;height:auto;margin:0;padding:0;width:100%}.top-bar-section .divider,.top-bar-section [role="separator"]{border-top:solid 1px #1a1a1a;clear:both;height:1px;width:100%}.top-bar-section ul li{background:#333}.top-bar-section ul li>a{color:#fff;display:block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:0.8125rem;font-weight:normal;padding-left:0.9375rem;padding:12px 0 12px 0.9375rem;text-transform:none;width:100%}.top-bar-section ul li>a.button{font-size:0.8125rem;padding-left:0.9375rem;padding-right:0.9375rem;background-color:#008CBA;border-color:#007095;color:#fff}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{background-color:#007095}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{color:#fff}.top-bar-section ul li>a.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{color:#333}.top-bar-section ul li>a.button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{background-color:#368a55}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{color:#fff}.top-bar-section ul li>a.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{color:#fff}.top-bar-section ul li>a.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}.top-bar-section ul li>a.button.warning:hover,.top-bar-section ul li>a.button.warning:focus{background-color:#cf6e0e}.top-bar-section ul li>a.button.warning:hover,.top-bar-section ul li>a.button.warning:focus{color:#fff}.top-bar-section ul li>a.button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333}.top-bar-section ul li>a.button.info:hover,.top-bar-section ul li>a.button.info:focus{background-color:#61b6d9}.top-bar-section ul li>a.button.info:hover,.top-bar-section ul li>a.button.info:focus{color:#fff}.top-bar-section ul li>button{font-size:0.8125rem;padding-left:0.9375rem;padding-right:0.9375rem;background-color:#008CBA;border-color:#007095;color:#fff}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{background-color:#007095}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{color:#fff}.top-bar-section ul li>button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{color:#333}.top-bar-section ul li>button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{background-color:#368a55}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{color:#fff}.top-bar-section ul li>button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{color:#fff}.top-bar-section ul li>button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}.top-bar-section ul li>button.warning:hover,.top-bar-section ul li>button.warning:focus{background-color:#cf6e0e}.top-bar-section ul li>button.warning:hover,.top-bar-section ul li>button.warning:focus{color:#fff}.top-bar-section ul li>button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333}.top-bar-section ul li>button.info:hover,.top-bar-section ul li>button.info:focus{background-color:#61b6d9}.top-bar-section ul li>button.info:hover,.top-bar-section ul li>button.info:focus{color:#fff}.top-bar-section ul li:hover:not(.has-form)>a{background-color:#555;color:#fff;background:#222}.top-bar-section ul li.active>a{background:#008CBA;color:#fff}.top-bar-section ul li.active>a:hover{background:#0078a0;color:#fff}.top-bar-section .has-form{padding:0.9375rem}.top-bar-section .has-dropdown{position:relative}.top-bar-section .has-dropdown>a:after{border:inset 5px;content:"";display:block;height:0;width:0;border-color:transparent transparent transparent rgba(255,255,255,0.4);border-left-style:solid;margin-right:0.9375rem;margin-top:-4.5px;position:absolute;top:50%;right:0}.top-bar-section .has-dropdown.moved{position:static}.top-bar-section .has-dropdown.moved>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important;width:100%}.top-bar-section .has-dropdown.moved>a:after{display:none}.top-bar-section .dropdown{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px;display:block;padding:0;position:absolute;top:0;z-index:99;left:100%}.top-bar-section .dropdown li{height:auto;width:100%}.top-bar-section .dropdown li a{font-weight:normal;padding:8px 0.9375rem}.top-bar-section .dropdown li a.parent-link{font-weight:normal}.top-bar-section .dropdown li.title h5,.top-bar-section .dropdown li.parent-link{margin-bottom:0;margin-top:0;font-size:1.125rem}.top-bar-section .dropdown li.title h5 a,.top-bar-section .dropdown li.parent-link a{color:#fff;display:block}.top-bar-section .dropdown li.title h5 a:hover,.top-bar-section .dropdown li.parent-link a:hover{background:none}.top-bar-section .dropdown li.has-form{padding:8px 0.9375rem}.top-bar-section .dropdown li .button,.top-bar-section .dropdown li button{top:auto}.top-bar-section .dropdown label{color:#777;font-size:0.625rem;font-weight:bold;margin-bottom:0;padding:8px 0.9375rem 2px;text-transform:uppercase}.js-generated{display:block}@media only screen and (min-width: 40.0625em){.top-bar{background:#333;overflow:visible}.top-bar:before,.top-bar:after{content:" ";display:table}.top-bar:after{clear:both}.top-bar .toggle-topbar{display:none}.top-bar .title-area{float:left}.top-bar .name h1 a,.top-bar .name h2 a,.top-bar .name h3 a,.top-bar .name h4 a,.top-bar .name h5 a,.top-bar .name h6 a{width:auto}.top-bar input,.top-bar select,.top-bar .button,.top-bar button{font-size:0.875rem;height:1.75rem;position:relative;top:0.53125rem}.top-bar.expanded{background:#333}.contain-to-grid .top-bar{margin-bottom:0;margin:0 auto;max-width:62.5rem}.top-bar-section{transition:none 0 0;left:0 !important}.top-bar-section ul{display:inline;height:auto !important;width:auto}.top-bar-section ul li{float:left}.top-bar-section ul li .js-generated{display:none}.top-bar-section li.hover>a:not(.button){background-color:#555;background:#222;color:#fff}.top-bar-section li:not(.has-form) a:not(.button){background:#333;line-height:2.8125rem;padding:0 0.9375rem}.top-bar-section li:not(.has-form) a:not(.button):hover{background-color:#555;background:#222}.top-bar-section li.active:not(.has-form) a:not(.button){background:#008CBA;color:#fff;line-height:2.8125rem;padding:0 0.9375rem}.top-bar-section li.active:not(.has-form) a:not(.button):hover{background:#0078a0;color:#fff}.top-bar-section .has-dropdown>a{padding-right:2.1875rem !important}.top-bar-section .has-dropdown>a:after{border:inset 5px;content:"";display:block;height:0;width:0;border-color:rgba(255,255,255,0.4) transparent transparent transparent;border-top-style:solid;margin-top:-2.5px;top:1.40625rem}.top-bar-section .has-dropdown.moved{position:relative}.top-bar-section .has-dropdown.moved>.dropdown{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px;display:block}.top-bar-section .has-dropdown.hover>.dropdown,.top-bar-section .has-dropdown.not-click:hover>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.top-bar-section .has-dropdown>a:focus+.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.top-bar-section .has-dropdown .dropdown li.has-dropdown>a:after{border:none;content:"\00bb";top:0.1875rem;right:5px}.top-bar-section .dropdown{left:0;background:transparent;min-width:100%;top:auto}.top-bar-section .dropdown li a{background:#333;color:#fff;line-height:2.8125rem;padding:12px 0.9375rem;white-space:nowrap}.top-bar-section .dropdown li:not(.has-form):not(.active)>a:not(.button){background:#333;color:#fff}.top-bar-section .dropdown li:not(.has-form):not(.active):hover>a:not(.button){background-color:#555;color:#fff;background:#222}.top-bar-section .dropdown li label{background:#333;white-space:nowrap}.top-bar-section .dropdown li .dropdown{left:100%;top:0}.top-bar-section>ul>.divider,.top-bar-section>ul>[role="separator"]{border-right:solid 1px #4e4e4e;border-bottom:none;border-top:none;clear:none;height:2.8125rem;width:0}.top-bar-section .has-form{background:#333;height:2.8125rem;padding:0 0.9375rem}.top-bar-section .right li .dropdown{left:auto;right:0}.top-bar-section .right li .dropdown li .dropdown{right:100%}.top-bar-section .left li .dropdown{right:auto;left:0}.top-bar-section .left li .dropdown li .dropdown{left:100%}.no-js .top-bar-section ul li:hover>a{background-color:#555;background:#222;color:#fff}.no-js .top-bar-section ul li:active>a{background:#008CBA;color:#fff}.no-js .top-bar-section .has-dropdown:hover>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.no-js .top-bar-section .has-dropdown>a:focus+.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}}.breadcrumbs{border-style:solid;border-width:1px;display:block;list-style:none;margin-left:0;overflow:hidden;padding:0.5625rem 0.875rem 0.5625rem;background-color:#f4f4f4;border-color:#dcdcdc;border-radius:3px}.breadcrumbs>*{color:#008CBA;float:left;font-size:0.6875rem;line-height:0.6875rem;margin:0;text-transform:uppercase}.breadcrumbs>*:hover a,.breadcrumbs>*:focus a{text-decoration:underline}.breadcrumbs>* a{color:#008CBA}.breadcrumbs>*.current{color:#333;cursor:default}.breadcrumbs>*.current a{color:#333;cursor:default}.breadcrumbs>*.current:hover,.breadcrumbs>*.current:hover a,.breadcrumbs>*.current:focus,.breadcrumbs>*.current:focus a{text-decoration:none}.breadcrumbs>*.unavailable{color:#999}.breadcrumbs>*.unavailable a{color:#999}.breadcrumbs>*.unavailable:hover,.breadcrumbs>*.unavailable:hover a,.breadcrumbs>*.unavailable:focus,.breadcrumbs>*.unavailable a:focus{color:#999;cursor:not-allowed;text-decoration:none}.breadcrumbs>*:before{color:#aaa;content:"/";margin:0 0.75rem;position:relative;top:1px}.breadcrumbs>*:first-child:before{content:" ";margin:0}[aria-label="breadcrumbs"] [aria-hidden="true"]:after{content:"/"}.alert-box{border-style:solid;border-width:1px;display:block;font-size:0.8125rem;font-weight:normal;margin-bottom:1.25rem;padding:0.875rem 1.5rem 0.875rem 0.875rem;position:relative;transition:opacity 300ms ease-out;background-color:#008CBA;border-color:#0078a0;color:#fff}.alert-box .close{right:0.25rem;background:inherit;color:#333;font-size:1.375rem;line-height:.9;margin-top:-0.6875rem;opacity:0.3;padding:0 6px 4px;position:absolute;top:50%}.alert-box .close:hover,.alert-box .close:focus{opacity:0.5}.alert-box.radius{border-radius:3px}.alert-box.round{border-radius:1000px}.alert-box.success{background-color:#43AC6A;border-color:#3a945b;color:#fff}.alert-box.alert{background-color:#f04124;border-color:#de2d0f;color:#fff}.alert-box.secondary{background-color:#e7e7e7;border-color:#c7c7c7;color:#4f4f4f}.alert-box.warning{background-color:#f08a24;border-color:#de770f;color:#fff}.alert-box.info{background-color:#a0d3e8;border-color:#74bfdd;color:#4f4f4f}.alert-box.alert-close{opacity:0}.inline-list{list-style:none;margin-left:-1.375rem;margin-right:0;margin:0 auto 1.0625rem auto;overflow:hidden;padding:0}.inline-list>li{display:block;float:left;list-style:none;margin-left:1.375rem}.inline-list>li>*{display:block}.button-group{list-style:none;margin:0;left:0}.button-group:before,.button-group:after{content:" ";display:table}.button-group:after{clear:both}.button-group.even-2 li{display:inline-block;margin:0 -2px;width:50%}.button-group.even-2 li>button,.button-group.even-2 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-2 li:first-child button,.button-group.even-2 li:first-child .button{border-left:0}.button-group.even-2 li button,.button-group.even-2 li .button{width:100%}.button-group.even-3 li{display:inline-block;margin:0 -2px;width:33.33333%}.button-group.even-3 li>button,.button-group.even-3 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-3 li:first-child button,.button-group.even-3 li:first-child .button{border-left:0}.button-group.even-3 li button,.button-group.even-3 li .button{width:100%}.button-group.even-4 li{display:inline-block;margin:0 -2px;width:25%}.button-group.even-4 li>button,.button-group.even-4 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-4 li:first-child button,.button-group.even-4 li:first-child .button{border-left:0}.button-group.even-4 li button,.button-group.even-4 li .button{width:100%}.button-group.even-5 li{display:inline-block;margin:0 -2px;width:20%}.button-group.even-5 li>button,.button-group.even-5 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-5 li:first-child button,.button-group.even-5 li:first-child .button{border-left:0}.button-group.even-5 li button,.button-group.even-5 li .button{width:100%}.button-group.even-6 li{display:inline-block;margin:0 -2px;width:16.66667%}.button-group.even-6 li>button,.button-group.even-6 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-6 li:first-child button,.button-group.even-6 li:first-child .button{border-left:0}.button-group.even-6 li button,.button-group.even-6 li .button{width:100%}.button-group.even-7 li{display:inline-block;margin:0 -2px;width:14.28571%}.button-group.even-7 li>button,.button-group.even-7 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-7 li:first-child button,.button-group.even-7 li:first-child .button{border-left:0}.button-group.even-7 li button,.button-group.even-7 li .button{width:100%}.button-group.even-8 li{display:inline-block;margin:0 -2px;width:12.5%}.button-group.even-8 li>button,.button-group.even-8 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-8 li:first-child button,.button-group.even-8 li:first-child .button{border-left:0}.button-group.even-8 li button,.button-group.even-8 li .button{width:100%}.button-group>li{display:inline-block;margin:0 -2px}.button-group>li>button,.button-group>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group>li:first-child button,.button-group>li:first-child .button{border-left:0}.button-group.stack>li{display:block;margin:0;float:none}.button-group.stack>li>button,.button-group.stack>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack>li:first-child button,.button-group.stack>li:first-child .button{border-left:0}.button-group.stack>li>button,.button-group.stack>li .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.stack>li>button{width:100%}.button-group.stack>li:first-child button,.button-group.stack>li:first-child .button{border-top:0}.button-group.stack-for-small>li{display:inline-block;margin:0 -2px}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-left:0}@media only screen and (max-width: 40em){.button-group.stack-for-small>li{display:block;margin:0}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-left:0}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.stack-for-small>li>button{width:100%}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-top:0}}.button-group.radius>*{display:inline-block;margin:0 -2px}.button-group.radius>*>button,.button-group.radius>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius>*:first-child button,.button-group.radius>*:first-child .button{border-left:0}.button-group.radius>*,.button-group.radius>*>a,.button-group.radius>*>button,.button-group.radius>*>.button{border-radius:0}.button-group.radius>*:first-child,.button-group.radius>*:first-child>a,.button-group.radius>*:first-child>button,.button-group.radius>*:first-child>.button{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.button-group.radius>*:last-child,.button-group.radius>*:last-child>a,.button-group.radius>*:last-child>button,.button-group.radius>*:last-child>.button{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.button-group.radius.stack>*{display:block;margin:0}.button-group.radius.stack>*>button,.button-group.radius.stack>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack>*:first-child button,.button-group.radius.stack>*:first-child .button{border-left:0}.button-group.radius.stack>*>button,.button-group.radius.stack>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.radius.stack>*>button{width:100%}.button-group.radius.stack>*:first-child button,.button-group.radius.stack>*:first-child .button{border-top:0}.button-group.radius.stack>*,.button-group.radius.stack>*>a,.button-group.radius.stack>*>button,.button-group.radius.stack>*>.button{border-radius:0}.button-group.radius.stack>*:first-child,.button-group.radius.stack>*:first-child>a,.button-group.radius.stack>*:first-child>button,.button-group.radius.stack>*:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.button-group.radius.stack>*:last-child,.button-group.radius.stack>*:last-child>a,.button-group.radius.stack>*:last-child>button,.button-group.radius.stack>*:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}@media only screen and (min-width: 40.0625em){.button-group.radius.stack-for-small>*{display:inline-block;margin:0 -2px}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-left:0}.button-group.radius.stack-for-small>*,.button-group.radius.stack-for-small>*>a,.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>*>.button{border-radius:0}.button-group.radius.stack-for-small>*:first-child,.button-group.radius.stack-for-small>*:first-child>a,.button-group.radius.stack-for-small>*:first-child>button,.button-group.radius.stack-for-small>*:first-child>.button{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.button-group.radius.stack-for-small>*:last-child,.button-group.radius.stack-for-small>*:last-child>a,.button-group.radius.stack-for-small>*:last-child>button,.button-group.radius.stack-for-small>*:last-child>.button{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}}@media only screen and (max-width: 40em){.button-group.radius.stack-for-small>*{display:block;margin:0}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-left:0}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.radius.stack-for-small>*>button{width:100%}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-top:0}.button-group.radius.stack-for-small>*,.button-group.radius.stack-for-small>*>a,.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>*>.button{border-radius:0}.button-group.radius.stack-for-small>*:first-child,.button-group.radius.stack-for-small>*:first-child>a,.button-group.radius.stack-for-small>*:first-child>button,.button-group.radius.stack-for-small>*:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.button-group.radius.stack-for-small>*:last-child,.button-group.radius.stack-for-small>*:last-child>a,.button-group.radius.stack-for-small>*:last-child>button,.button-group.radius.stack-for-small>*:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}}.button-group.round>*{display:inline-block;margin:0 -2px}.button-group.round>*>button,.button-group.round>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round>*:first-child button,.button-group.round>*:first-child .button{border-left:0}.button-group.round>*,.button-group.round>*>a,.button-group.round>*>button,.button-group.round>*>.button{border-radius:0}.button-group.round>*:first-child,.button-group.round>*:first-child>a,.button-group.round>*:first-child>button,.button-group.round>*:first-child>.button{-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.button-group.round>*:last-child,.button-group.round>*:last-child>a,.button-group.round>*:last-child>button,.button-group.round>*:last-child>.button{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}.button-group.round.stack>*{display:block;margin:0}.button-group.round.stack>*>button,.button-group.round.stack>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack>*:first-child button,.button-group.round.stack>*:first-child .button{border-left:0}.button-group.round.stack>*>button,.button-group.round.stack>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.round.stack>*>button{width:100%}.button-group.round.stack>*:first-child button,.button-group.round.stack>*:first-child .button{border-top:0}.button-group.round.stack>*,.button-group.round.stack>*>a,.button-group.round.stack>*>button,.button-group.round.stack>*>.button{border-radius:0}.button-group.round.stack>*:first-child,.button-group.round.stack>*:first-child>a,.button-group.round.stack>*:first-child>button,.button-group.round.stack>*:first-child>.button{-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem}.button-group.round.stack>*:last-child,.button-group.round.stack>*:last-child>a,.button-group.round.stack>*:last-child>button,.button-group.round.stack>*:last-child>.button{-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}@media only screen and (min-width: 40.0625em){.button-group.round.stack-for-small>*{display:inline-block;margin:0 -2px}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-left:0}.button-group.round.stack-for-small>*,.button-group.round.stack-for-small>*>a,.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>*>.button{border-radius:0}.button-group.round.stack-for-small>*:first-child,.button-group.round.stack-for-small>*:first-child>a,.button-group.round.stack-for-small>*:first-child>button,.button-group.round.stack-for-small>*:first-child>.button{-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.button-group.round.stack-for-small>*:last-child,.button-group.round.stack-for-small>*:last-child>a,.button-group.round.stack-for-small>*:last-child>button,.button-group.round.stack-for-small>*:last-child>.button{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}}@media only screen and (max-width: 40em){.button-group.round.stack-for-small>*{display:block;margin:0}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-left:0}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.round.stack-for-small>*>button{width:100%}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-top:0}.button-group.round.stack-for-small>*,.button-group.round.stack-for-small>*>a,.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>*>.button{border-radius:0}.button-group.round.stack-for-small>*:first-child,.button-group.round.stack-for-small>*:first-child>a,.button-group.round.stack-for-small>*:first-child>button,.button-group.round.stack-for-small>*:first-child>.button{-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem}.button-group.round.stack-for-small>*:last-child,.button-group.round.stack-for-small>*:last-child>a,.button-group.round.stack-for-small>*:last-child>button,.button-group.round.stack-for-small>*:last-child>.button{-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}}.button-bar:before,.button-bar:after{content:" ";display:table}.button-bar:after{clear:both}.button-bar .button-group{float:left;margin-right:0.625rem}.button-bar .button-group div{overflow:hidden}.panel{border-style:solid;border-width:1px;border-color:#d8d8d8;margin-bottom:1.25rem;padding:1.25rem;background:#f2f2f2;color:#333}.panel>:first-child{margin-top:0}.panel>:last-child{margin-bottom:0}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6,.panel p,.panel li,.panel dl{color:#333}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6{line-height:1;margin-bottom:0.625rem}.panel h1.subheader,.panel h2.subheader,.panel h3.subheader,.panel h4.subheader,.panel h5.subheader,.panel h6.subheader{line-height:1.4}.panel.callout{border-style:solid;border-width:1px;border-color:#d8d8d8;margin-bottom:1.25rem;padding:1.25rem;background:#ecfaff;color:#333}.panel.callout>:first-child{margin-top:0}.panel.callout>:last-child{margin-bottom:0}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6,.panel.callout p,.panel.callout li,.panel.callout dl{color:#333}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6{line-height:1;margin-bottom:0.625rem}.panel.callout h1.subheader,.panel.callout h2.subheader,.panel.callout h3.subheader,.panel.callout h4.subheader,.panel.callout h5.subheader,.panel.callout h6.subheader{line-height:1.4}.panel.callout a:not(.button){color:#008CBA}.panel.callout a:not(.button):hover,.panel.callout a:not(.button):focus{color:#0078a0}.panel.radius{border-radius:3px}.dropdown.button,button.dropdown{position:relative;padding-right:3.5625rem}.dropdown.button::after,button.dropdown::after{border-color:#fff transparent transparent transparent;border-style:solid;content:"";display:block;height:0;position:absolute;top:50%;width:0}.dropdown.button::after,button.dropdown::after{border-width:0.375rem;right:1.40625rem;margin-top:-0.15625rem}.dropdown.button::after,button.dropdown::after{border-color:#fff transparent transparent transparent}.dropdown.button.tiny,button.dropdown.tiny{padding-right:2.625rem}.dropdown.button.tiny:after,button.dropdown.tiny:after{border-width:0.375rem;right:1.125rem;margin-top:-0.125rem}.dropdown.button.tiny::after,button.dropdown.tiny::after{border-color:#fff transparent transparent transparent}.dropdown.button.small,button.dropdown.small{padding-right:3.0625rem}.dropdown.button.small::after,button.dropdown.small::after{border-width:0.4375rem;right:1.3125rem;margin-top:-0.15625rem}.dropdown.button.small::after,button.dropdown.small::after{border-color:#fff transparent transparent transparent}.dropdown.button.large,button.dropdown.large{padding-right:3.625rem}.dropdown.button.large::after,button.dropdown.large::after{border-width:0.3125rem;right:1.71875rem;margin-top:-0.15625rem}.dropdown.button.large::after,button.dropdown.large::after{border-color:#fff transparent transparent transparent}.dropdown.button.secondary:after,button.dropdown.secondary:after{border-color:#333 transparent transparent transparent}.th{border:solid 4px #fff;box-shadow:0 0 0 1px rgba(0,0,0,0.2);display:inline-block;line-height:0;max-width:100%;transition:all 200ms ease-out}.th:hover,.th:focus{box-shadow:0 0 6px 1px rgba(0,140,186,0.5)}.th.radius{border-radius:3px}.pricing-table{border:solid 1px #ddd;margin-left:0;margin-bottom:1.25rem}.pricing-table *{list-style:none;line-height:1}.pricing-table .title{background-color:#333;color:#eee;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:1rem;font-weight:normal;padding:0.9375rem 1.25rem;text-align:center}.pricing-table .price{background-color:#F6F6F6;color:#333;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:2rem;font-weight:normal;padding:0.9375rem 1.25rem;text-align:center}.pricing-table .description{background-color:#fff;border-bottom:dotted 1px #ddd;color:#777;font-size:0.75rem;font-weight:normal;line-height:1.4;padding:0.9375rem;text-align:center}.pricing-table .bullet-item{background-color:#fff;border-bottom:dotted 1px #ddd;color:#333;font-size:0.875rem;font-weight:normal;padding:0.9375rem;text-align:center}.pricing-table .cta-button{background-color:#fff;padding:1.25rem 1.25rem 0;text-align:center}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{from{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}.slideshow-wrapper{position:relative}.slideshow-wrapper ul{list-style-type:none;margin:0}.slideshow-wrapper ul li,.slideshow-wrapper ul li .orbit-caption{display:none}.slideshow-wrapper ul li:first-child{display:block}.slideshow-wrapper .orbit-container{background-color:transparent}.slideshow-wrapper .orbit-container li{display:block}.slideshow-wrapper .orbit-container li .orbit-caption{display:block}.slideshow-wrapper .orbit-container .orbit-bullets li{display:inline-block}.slideshow-wrapper .preloader{border-radius:1000px;animation-duration:1.5s;animation-iteration-count:infinite;animation-name:rotate;animation-timing-function:linear;border-color:#555 #fff;border:solid 3px;display:block;height:40px;left:50%;margin-left:-20px;margin-top:-20px;position:absolute;top:50%;width:40px}.orbit-container{background:none;overflow:hidden;position:relative;width:100%}.orbit-container .orbit-slides-container{list-style:none;margin:0;padding:0;position:relative;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.orbit-container .orbit-slides-container img{display:block;max-width:100%}.orbit-container .orbit-slides-container>*{position:absolute;top:0;width:100%;margin-left:100%}.orbit-container .orbit-slides-container>*:first-child{margin-left:0}.orbit-container .orbit-slides-container>* .orbit-caption{bottom:0;position:absolute;background-color:rgba(51,51,51,0.8);color:#fff;font-size:0.875rem;padding:0.625rem 0.875rem;width:100%}.orbit-container .orbit-slide-number{left:10px;background:transparent;color:#fff;font-size:12px;position:absolute;top:10px;z-index:10}.orbit-container .orbit-slide-number span{font-weight:700;padding:0.3125rem}.orbit-container .orbit-timer{position:absolute;top:12px;right:10px;height:6px;width:100px;z-index:10}.orbit-container .orbit-timer .orbit-progress{height:3px;background-color:rgba(255,255,255,0.3);display:block;width:0;position:relative;right:20px;top:5px}.orbit-container .orbit-timer>span{border:solid 4px #fff;border-bottom:none;border-top:none;display:none;height:14px;position:absolute;top:0;width:11px;right:0}.orbit-container .orbit-timer.paused>span{top:0;width:11px;height:14px;border:inset 8px;border-left-style:solid;border-color:transparent;border-left-color:#fff;right:-4px}.orbit-container .orbit-timer.paused>span.dark{border-left-color:#333}.orbit-container:hover .orbit-timer>span{display:block}.orbit-container .orbit-prev,.orbit-container .orbit-next{background-color:transparent;color:white;height:60px;line-height:50px;margin-top:-25px;position:absolute;text-indent:-9999px !important;top:45%;width:36px;z-index:10}.orbit-container .orbit-prev:hover,.orbit-container .orbit-next:hover{background-color:rgba(0,0,0,0.3)}.orbit-container .orbit-prev>span,.orbit-container .orbit-next>span{border:inset 10px;display:block;height:0;margin-top:-10px;position:absolute;top:50%;width:0}.orbit-container .orbit-prev{left:0}.orbit-container .orbit-prev>span{border-right-style:solid;border-color:transparent;border-right-color:#fff}.orbit-container .orbit-prev:hover>span{border-right-color:#fff}.orbit-container .orbit-next{right:0}.orbit-container .orbit-next>span{border-color:transparent;border-left-style:solid;border-left-color:#fff;left:50%;margin-left:-4px}.orbit-container .orbit-next:hover>span{border-left-color:#fff}.orbit-bullets-container{text-align:center}.orbit-bullets{display:block;float:none;margin:0 auto 30px auto;overflow:hidden;position:relative;text-align:center;top:10px}.orbit-bullets li{background:#ccc;cursor:pointer;display:inline-block;float:none;height:0.5625rem;margin-right:6px;width:0.5625rem;border-radius:1000px}.orbit-bullets li.active{background:#999}.orbit-bullets li:last-child{margin-right:0}.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:none}.touch .orbit-bullets{display:none}@media only screen and (min-width: 40.0625em){.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:inherit}.touch .orbit-bullets{display:block}}@media only screen and (max-width: 40em){.orbit-stack-on-small .orbit-slides-container{height:auto !important}.orbit-stack-on-small .orbit-slides-container>*{margin:0 !important;opacity:1 !important;position:relative}.orbit-stack-on-small .orbit-slide-number{display:none}.orbit-timer{display:none}.orbit-next,.orbit-prev{display:none}.orbit-bullets{display:none}}[data-magellan-expedition],[data-magellan-expedition-clone]{background:#fff;min-width:100%;padding:10px;z-index:50}[data-magellan-expedition] .sub-nav,[data-magellan-expedition-clone] .sub-nav{margin-bottom:0}[data-magellan-expedition] .sub-nav dd,[data-magellan-expedition-clone] .sub-nav dd{margin-bottom:0}[data-magellan-expedition] .sub-nav a,[data-magellan-expedition-clone] .sub-nav a{line-height:1.8em}.icon-bar{display:inline-block;font-size:0;width:100%;background:#333}.icon-bar>*{display:block;float:left;font-size:1rem;margin:0 auto;padding:1.25rem;text-align:center;width:25%}.icon-bar>* i,.icon-bar>* img{display:block;margin:0 auto}.icon-bar>* i+label,.icon-bar>* img+label{margin-top:.0625rem}.icon-bar>* i{font-size:1.875rem;vertical-align:middle}.icon-bar>* img{height:1.875rem;width:1.875rem}.icon-bar.label-right>* i,.icon-bar.label-right>* img{display:inline-block;margin:0 .0625rem 0 0}.icon-bar.label-right>* i+label,.icon-bar.label-right>* img+label{margin-top:0}.icon-bar.label-right>* label{display:inline-block}.icon-bar.vertical.label-right>*{text-align:left}.icon-bar.vertical,.icon-bar.small-vertical{height:100%;width:auto}.icon-bar.vertical .item,.icon-bar.small-vertical .item{float:none;margin:auto;width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.medium-vertical{height:100%;width:auto}.icon-bar.medium-vertical .item{float:none;margin:auto;width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.large-vertical{height:100%;width:auto}.icon-bar.large-vertical .item{float:none;margin:auto;width:auto}}.icon-bar>*{font-size:1rem;padding:1.25rem}.icon-bar>* i+label,.icon-bar>* img+label{margin-top:.0625rem;font-size:1rem}.icon-bar>* i{font-size:1.875rem}.icon-bar>* img{height:1.875rem;width:1.875rem}.icon-bar>* label{color:#fff}.icon-bar>* i{color:#fff}.icon-bar>a:hover{background:#008CBA}.icon-bar>a:hover label{color:#fff}.icon-bar>a:hover i{color:#fff}.icon-bar>a.active{background:#008CBA}.icon-bar>a.active label{color:#fff}.icon-bar>a.active i{color:#fff}.icon-bar .item.disabled{cursor:not-allowed;opacity:0.7;pointer-events:none}.icon-bar .item.disabled>*{opacity:0.7;cursor:not-allowed}.icon-bar.two-up .item{width:50%}.icon-bar.two-up.vertical .item,.icon-bar.two-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.two-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.two-up.large-vertical .item{width:auto}}.icon-bar.three-up .item{width:33.3333%}.icon-bar.three-up.vertical .item,.icon-bar.three-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.three-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.three-up.large-vertical .item{width:auto}}.icon-bar.four-up .item{width:25%}.icon-bar.four-up.vertical .item,.icon-bar.four-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.four-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.four-up.large-vertical .item{width:auto}}.icon-bar.five-up .item{width:20%}.icon-bar.five-up.vertical .item,.icon-bar.five-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.five-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.five-up.large-vertical .item{width:auto}}.icon-bar.six-up .item{width:16.66667%}.icon-bar.six-up.vertical .item,.icon-bar.six-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.six-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.six-up.large-vertical .item{width:auto}}.icon-bar.seven-up .item{width:14.28571%}.icon-bar.seven-up.vertical .item,.icon-bar.seven-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.seven-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.seven-up.large-vertical .item{width:auto}}.icon-bar.eight-up .item{width:12.5%}.icon-bar.eight-up.vertical .item,.icon-bar.eight-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.eight-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.eight-up.large-vertical .item{width:auto}}.icon-bar.two-up .item{width:50%}.icon-bar.two-up.vertical .item,.icon-bar.two-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.two-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.two-up.large-vertical .item{width:auto}}.icon-bar.three-up .item{width:33.3333%}.icon-bar.three-up.vertical .item,.icon-bar.three-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.three-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.three-up.large-vertical .item{width:auto}}.icon-bar.four-up .item{width:25%}.icon-bar.four-up.vertical .item,.icon-bar.four-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.four-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.four-up.large-vertical .item{width:auto}}.icon-bar.five-up .item{width:20%}.icon-bar.five-up.vertical .item,.icon-bar.five-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.five-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.five-up.large-vertical .item{width:auto}}.icon-bar.six-up .item{width:16.66667%}.icon-bar.six-up.vertical .item,.icon-bar.six-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.six-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.six-up.large-vertical .item{width:auto}}.icon-bar.seven-up .item{width:14.28571%}.icon-bar.seven-up.vertical .item,.icon-bar.seven-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.seven-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.seven-up.large-vertical .item{width:auto}}.icon-bar.eight-up .item{width:12.5%}.icon-bar.eight-up.vertical .item,.icon-bar.eight-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.eight-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.eight-up.large-vertical .item{width:auto}}.tabs{margin-bottom:0 !important;margin-left:0}.tabs:before,.tabs:after{content:" ";display:table}.tabs:after{clear:both}.tabs dd,.tabs .tab-title{float:left;list-style:none;margin-bottom:0 !important;position:relative}.tabs dd>a,.tabs .tab-title>a{display:block;background-color:#EFEFEF;color:#222;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:1rem;padding:1rem 2rem}.tabs dd>a:hover,.tabs .tab-title>a:hover{background-color:#e1e1e1}.tabs dd.active a,.tabs .tab-title.active a{background-color:#fff;color:#222}.tabs.radius dd:first-child a,.tabs.radius .tab:first-child a{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.tabs.radius dd:last-child a,.tabs.radius .tab:last-child a{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.tabs.vertical dd,.tabs.vertical .tab-title{position:inherit;float:none;display:block;top:auto}.tabs-content{margin-bottom:1.5rem;width:100%}.tabs-content:before,.tabs-content:after{content:" ";display:table}.tabs-content:after{clear:both}.tabs-content>.content{display:none;float:left;padding:0.9375rem 0;width:100%}.tabs-content>.content.active{display:block;float:none}.tabs-content>.content.contained{padding:0.9375rem}.tabs-content.vertical{display:block}.tabs-content.vertical>.content{padding:0 0.9375rem}@media only screen and (min-width: 40.0625em){.tabs.vertical{float:left;margin:0;margin-bottom:1.25rem !important;max-width:20%;width:20%}.tabs-content.vertical{float:left;margin-left:-1px;max-width:80%;padding-left:1rem;width:80%}}.no-js .tabs-content>.content{display:block;float:none}ul.pagination{display:block;margin-left:-0.3125rem;min-height:1.5rem}ul.pagination li{color:#222;font-size:0.875rem;height:1.5rem;margin-left:0.3125rem}ul.pagination li a,ul.pagination li button{border-radius:3px;transition:background-color 300ms ease-out;background:none;color:#999;display:block;font-size:1em;font-weight:normal;line-height:inherit;padding:0.0625rem 0.625rem 0.0625rem}ul.pagination li:hover a,ul.pagination li a:focus,ul.pagination li:hover button,ul.pagination li button:focus{background:#e6e6e6}ul.pagination li.unavailable a,ul.pagination li.unavailable button{cursor:default;color:#999}ul.pagination li.unavailable:hover a,ul.pagination li.unavailable a:focus,ul.pagination li.unavailable:hover button,ul.pagination li.unavailable button:focus{background:transparent}ul.pagination li.current a,ul.pagination li.current button{background:#008CBA;color:#fff;cursor:default;font-weight:bold}ul.pagination li.current a:hover,ul.pagination li.current a:focus,ul.pagination li.current button:hover,ul.pagination li.current button:focus{background:#008CBA}ul.pagination li{display:block;float:left}.pagination-centered{text-align:center}.pagination-centered ul.pagination li{display:inline-block;float:none}.side-nav{display:block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;list-style-position:outside;list-style-type:none;margin:0;padding:0.875rem 0}.side-nav li{font-size:0.875rem;font-weight:normal;margin:0 0 0.4375rem 0}.side-nav li a:not(.button){color:#008CBA;display:block;margin:0;padding:0.4375rem 0.875rem}.side-nav li a:not(.button):hover,.side-nav li a:not(.button):focus{background:rgba(0,0,0,0.025);color:#1cc7ff}.side-nav li a:not(.button):active{color:#1cc7ff}.side-nav li.active>a:first-child:not(.button){color:#1cc7ff;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal}.side-nav li.divider{border-top:1px solid;height:0;list-style:none;padding:0;border-top-color:#e6e6e6}.side-nav li.heading{color:#008CBA;font-size:0.875rem;font-weight:bold;text-transform:uppercase}.accordion{margin-bottom:0}.accordion:before,.accordion:after{content:" ";display:table}.accordion:after{clear:both}.accordion .accordion-navigation,.accordion dd{display:block;margin-bottom:0 !important}.accordion .accordion-navigation.active>a,.accordion dd.active>a{background:#e8e8e8}.accordion .accordion-navigation>a,.accordion dd>a{background:#EFEFEF;color:#222;display:block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:1rem;padding:1rem}.accordion .accordion-navigation>a:hover,.accordion dd>a:hover{background:#e3e3e3}.accordion .accordion-navigation>.content,.accordion dd>.content{display:none;padding:0.9375rem}.accordion .accordion-navigation>.content.active,.accordion dd>.content.active{background:#fff;display:block}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}.text-justify{text-align:justify !important}@media only screen and (max-width: 40em){.small-only-text-left{text-align:left !important}.small-only-text-right{text-align:right !important}.small-only-text-center{text-align:center !important}.small-only-text-justify{text-align:justify !important}}@media only screen{.small-text-left{text-align:left !important}.small-text-right{text-align:right !important}.small-text-center{text-align:center !important}.small-text-justify{text-align:justify !important}}@media only screen and (min-width: 40.0625em) and (max-width: 64em){.medium-only-text-left{text-align:left !important}.medium-only-text-right{text-align:right !important}.medium-only-text-center{text-align:center !important}.medium-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 40.0625em){.medium-text-left{text-align:left !important}.medium-text-right{text-align:right !important}.medium-text-center{text-align:center !important}.medium-text-justify{text-align:justify !important}}@media only screen and (min-width: 64.0625em) and (max-width: 90em){.large-only-text-left{text-align:left !important}.large-only-text-right{text-align:right !important}.large-only-text-center{text-align:center !important}.large-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 64.0625em){.large-text-left{text-align:left !important}.large-text-right{text-align:right !important}.large-text-center{text-align:center !important}.large-text-justify{text-align:justify !important}}@media only screen and (min-width: 90.0625em) and (max-width: 120em){.xlarge-only-text-left{text-align:left !important}.xlarge-only-text-right{text-align:right !important}.xlarge-only-text-center{text-align:center !important}.xlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 90.0625em){.xlarge-text-left{text-align:left !important}.xlarge-text-right{text-align:right !important}.xlarge-text-center{text-align:center !important}.xlarge-text-justify{text-align:justify !important}}@media only screen and (min-width: 120.0625em) and (max-width: 6249999.9375em){.xxlarge-only-text-left{text-align:left !important}.xxlarge-only-text-right{text-align:right !important}.xxlarge-only-text-center{text-align:center !important}.xxlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 120.0625em){.xxlarge-text-left{text-align:left !important}.xxlarge-text-right{text-align:right !important}.xxlarge-text-center{text-align:center !important}.xxlarge-text-justify{text-align:justify !important}}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}a{color:#008CBA;line-height:inherit;text-decoration:none}a:hover,a:focus{color:#0078a0}a img{border:none}p{font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.6;margin-bottom:1.25rem;text-rendering:optimizeLegibility}p.lead{font-size:1.21875rem;line-height:1.6}p aside{font-size:0.875rem;font-style:italic;line-height:1.35}h1,h2,h3,h4,h5,h6{color:#222;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:normal;line-height:1.4;margin-bottom:0.5rem;margin-top:0.2rem;text-rendering:optimizeLegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#6f6f6f;font-size:60%;line-height:0}h1{font-size:2.125rem}h2{font-size:1.6875rem}h3{font-size:1.375rem}h4{font-size:1.125rem}h5{font-size:1.125rem}h6{font-size:1rem}.subheader{line-height:1.4;color:#6f6f6f;font-weight:normal;margin-top:0.2rem;margin-bottom:0.5rem}hr{border:solid #ddd;border-width:1px 0 0;clear:both;height:0;margin:1.25rem 0 1.1875rem}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:60%;line-height:inherit}code{background-color:#f8f8f8;border-color:#dfdfdf;border-style:solid;border-width:1px;color:#333;font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:normal;padding:0.125rem 0.3125rem 0.0625rem}ul,ol,dl{font-family:inherit;font-size:1rem;line-height:1.6;list-style-position:outside;margin-bottom:1.25rem}ul{margin-left:1.1rem}ul.no-bullet{margin-left:0}ul.no-bullet li ul,ul.no-bullet li ol{margin-left:1.25rem;margin-bottom:0;list-style:none}ul li ul,ul li ol{margin-left:1.25rem;margin-bottom:0}ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}ul.square{list-style-type:square;margin-left:1.1rem}ul.circle{list-style-type:circle;margin-left:1.1rem}ul.disc{list-style-type:disc;margin-left:1.1rem}ul.no-bullet{list-style:none}ol{margin-left:1.4rem}ol li ul,ol li ol{margin-left:1.25rem;margin-bottom:0}dl dt{margin-bottom:0.3rem;font-weight:bold}dl dd{margin-bottom:0.75rem}abbr,acronym{text-transform:uppercase;font-size:90%;color:#222;cursor:help}abbr{text-transform:none}abbr[title]{border-bottom:1px dotted #ddd}blockquote{margin:0 0 1.25rem;padding:0.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #ddd}blockquote cite{display:block;font-size:0.8125rem;color:#555}blockquote cite:before{content:"\2014 \0020"}blockquote cite a,blockquote cite a:visited{color:#555}blockquote,blockquote p{line-height:1.6;color:#6f6f6f}.vcard{display:inline-block;margin:0 0 1.25rem 0;border:1px solid #ddd;padding:0.625rem 0.75rem}.vcard li{margin:0;display:block}.vcard .fn{font-weight:bold;font-size:0.9375rem}.vevent .summary{font-weight:bold}.vevent abbr{cursor:default;text-decoration:none;font-weight:bold;border:none;padding:0 0.0625rem}@media only screen and (min-width: 40.0625em){h1,h2,h3,h4,h5,h6{line-height:1.4}h1{font-size:2.75rem}h2{font-size:2.3125rem}h3{font-size:1.6875rem}h4{font-size:1.4375rem}h5{font-size:1.125rem}h6{font-size:1rem}}.split.button{position:relative;padding-right:5.0625rem}.split.button span{display:block;height:100%;position:absolute;right:0;top:0;border-left:solid 1px}.split.button span:after{position:absolute;content:"";width:0;height:0;display:block;border-style:inset;top:50%;left:50%}.split.button span:active{background-color:rgba(0,0,0,0.1)}.split.button span{border-left-color:rgba(255,255,255,0.5)}.split.button span{width:3.09375rem}.split.button span:after{border-top-style:solid;border-width:0.375rem;margin-left:-0.375rem;top:48%}.split.button span:after{border-color:#fff transparent transparent transparent}.split.button.secondary span{border-left-color:rgba(255,255,255,0.5)}.split.button.secondary span:after{border-color:#fff transparent transparent transparent}.split.button.alert span{border-left-color:rgba(255,255,255,0.5)}.split.button.success span{border-left-color:rgba(255,255,255,0.5)}.split.button.tiny{padding-right:3.75rem}.split.button.tiny span{width:2.25rem}.split.button.tiny span:after{border-top-style:solid;border-width:0.375rem;margin-left:-0.375rem;top:48%}.split.button.small{padding-right:4.375rem}.split.button.small span{width:2.625rem}.split.button.small span:after{border-top-style:solid;border-width:0.4375rem;margin-left:-0.375rem;top:48%}.split.button.large{padding-right:5.5rem}.split.button.large span{width:3.4375rem}.split.button.large span:after{border-top-style:solid;border-width:0.3125rem;margin-left:-0.375rem;top:48%}.split.button.expand{padding-left:2rem}.split.button.secondary span:after{border-color:#333 transparent transparent transparent}.split.button.radius span{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.split.button.round span{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}.split.button.no-pip span:before{border-style:none}.split.button.no-pip span:after{border-style:none}.split.button.no-pip span>i{display:block;left:50%;margin-left:-0.28889em;margin-top:-0.48889em;position:absolute;top:50%}.reveal-modal-bg{background:#000;background:rgba(0,0,0,0.45);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:1004;left:0}.reveal-modal{border-radius:3px;display:none;position:absolute;top:0;visibility:hidden;width:100%;z-index:1005;left:0;background-color:#fff;padding:1.875rem;border:solid 1px #666;box-shadow:0 0 10px rgba(0,0,0,0.4)}@media only screen and (max-width: 40em){.reveal-modal{min-height:100vh}}.reveal-modal .column,.reveal-modal .columns{min-width:0}.reveal-modal>:first-child{margin-top:0}.reveal-modal>:last-child{margin-bottom:0}@media only screen and (min-width: 40.0625em){.reveal-modal{left:0;margin:0 auto;max-width:62.5rem;right:0;width:80%}}@media only screen and (min-width: 40.0625em){.reveal-modal{top:6.25rem}}.reveal-modal.radius{border-radius:3px}.reveal-modal.round{border-radius:1000px}.reveal-modal.collapse{padding:0}@media only screen and (min-width: 40.0625em){.reveal-modal.tiny{left:0;margin:0 auto;max-width:62.5rem;right:0;width:30%}}@media only screen and (min-width: 40.0625em){.reveal-modal.small{left:0;margin:0 auto;max-width:62.5rem;right:0;width:40%}}@media only screen and (min-width: 40.0625em){.reveal-modal.medium{left:0;margin:0 auto;max-width:62.5rem;right:0;width:60%}}@media only screen and (min-width: 40.0625em){.reveal-modal.large{left:0;margin:0 auto;max-width:62.5rem;right:0;width:70%}}@media only screen and (min-width: 40.0625em){.reveal-modal.xlarge{left:0;margin:0 auto;max-width:62.5rem;right:0;width:95%}}.reveal-modal.full{height:100vh;height:100%;left:0;margin-left:0 !important;max-width:none !important;min-height:100vh;top:0}@media only screen and (min-width: 40.0625em){.reveal-modal.full{left:0;margin:0 auto;max-width:62.5rem;right:0;width:100%}}.reveal-modal.toback{z-index:1003}.reveal-modal .close-reveal-modal{color:#aaa;cursor:pointer;font-size:2.5rem;font-weight:bold;line-height:1;position:absolute;top:0.625rem;right:1.375rem}.has-tip{border-bottom:dotted 1px #ccc;color:#333;cursor:help;font-weight:bold}.has-tip:hover,.has-tip:focus{border-bottom:dotted 1px #003f54;color:#008CBA}.has-tip.tip-left,.has-tip.tip-right{float:none !important}.tooltip{background:#333;color:#fff;display:none;font-size:0.875rem;font-weight:normal;line-height:1.3;max-width:300px;padding:0.75rem;position:absolute;width:100%;z-index:1006;left:50%}.tooltip>.nub{border-color:transparent transparent #333 transparent;border:solid 5px;display:block;height:0;pointer-events:none;position:absolute;top:-10px;width:0;left:5px}.tooltip>.nub.rtl{left:auto;right:5px}.tooltip.radius{border-radius:3px}.tooltip.round{border-radius:1000px}.tooltip.round>.nub{left:2rem}.tooltip.opened{border-bottom:dotted 1px #003f54 !important;color:#008CBA !important}.tap-to-close{color:#777;display:block;font-size:0.625rem;font-weight:normal}@media only screen and (min-width: 40.0625em){.tooltip>.nub{border-color:transparent transparent #333 transparent;top:-10px}.tooltip.tip-top>.nub{border-color:#333 transparent transparent transparent;bottom:-10px;top:auto}.tooltip.tip-left,.tooltip.tip-right{float:none !important}.tooltip.tip-left>.nub{border-color:transparent transparent transparent #333;left:auto;margin-top:-5px;right:-10px;top:50%}.tooltip.tip-right>.nub{border-color:transparent #333 transparent transparent;left:-10px;margin-top:-5px;right:auto;top:50%}}.clearing-thumbs,[data-clearing]{list-style:none;margin-left:0;margin-bottom:0}.clearing-thumbs:before,.clearing-thumbs:after,[data-clearing]:before,[data-clearing]:after{content:" ";display:table}.clearing-thumbs:after,[data-clearing]:after{clear:both}.clearing-thumbs li,[data-clearing] li{float:left;margin-right:10px}.clearing-thumbs[class*="block-grid-"] li,[data-clearing][class*="block-grid-"] li{margin-right:0}.clearing-blackout{background:#333;height:100%;position:fixed;top:0;width:100%;z-index:998;left:0}.clearing-blackout .clearing-close{display:block}.clearing-container{height:100%;margin:0;overflow:hidden;position:relative;z-index:998}.clearing-touch-label{color:#aaa;font-size:.6em;left:50%;position:absolute;top:50%}.visible-img{height:95%;position:relative}.visible-img img{position:absolute;left:50%;top:50%;-webkit-transform:translateY(-50%) translateX(-50%);-moz-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);-o-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);max-height:100%;max-width:100%}.clearing-caption{background:#333;bottom:0;color:#ccc;font-size:0.875em;line-height:1.3;margin-bottom:0;padding:10px 30px 20px;position:absolute;text-align:center;width:100%;left:0}.clearing-close{color:#ccc;display:none;font-size:30px;line-height:1;padding-left:20px;padding-top:10px;z-index:999}.clearing-close:hover,.clearing-close:focus{color:#ccc}.clearing-assembled .clearing-container{height:100%}.clearing-assembled .clearing-container .carousel>ul{display:none}.clearing-feature li{display:none}.clearing-feature li.clearing-featured-img{display:block}@media only screen and (min-width: 40.0625em){.clearing-main-prev,.clearing-main-next{height:100%;position:absolute;top:0;width:40px}.clearing-main-prev>span,.clearing-main-next>span{border:solid 12px;display:block;height:0;position:absolute;top:50%;width:0}.clearing-main-prev>span:hover,.clearing-main-next>span:hover{opacity:.8}.clearing-main-prev{left:0}.clearing-main-prev>span{left:5px;border-color:transparent;border-right-color:#ccc}.clearing-main-next{right:0}.clearing-main-next>span{border-color:transparent;border-left-color:#ccc}.clearing-main-prev.disabled,.clearing-main-next.disabled{opacity:.3}.clearing-assembled .clearing-container .carousel{background:rgba(51,51,51,0.8);height:120px;margin-top:10px;text-align:center}.clearing-assembled .clearing-container .carousel>ul{display:inline-block;z-index:999;height:100%;position:relative;float:none}.clearing-assembled .clearing-container .carousel>ul li{clear:none;cursor:pointer;display:block;float:left;margin-right:0;min-height:inherit;opacity:.4;overflow:hidden;padding:0;position:relative;width:120px}.clearing-assembled .clearing-container .carousel>ul li.fix-height img{height:100%;max-width:none}.clearing-assembled .clearing-container .carousel>ul li a.th{border:none;box-shadow:none;display:block}.clearing-assembled .clearing-container .carousel>ul li img{cursor:pointer !important;width:100% !important}.clearing-assembled .clearing-container .carousel>ul li.visible{opacity:1}.clearing-assembled .clearing-container .carousel>ul li:hover{opacity:.8}.clearing-assembled .clearing-container .visible-img{background:#333;height:85%;overflow:hidden}.clearing-close{padding-left:0;padding-top:0;position:absolute;top:10px;right:20px}}.progress{background-color:#F6F6F6;border:1px solid #fff;height:1.5625rem;margin-bottom:0.625rem;padding:0.125rem}.progress .meter{background:#008CBA;display:block;height:100%}.progress.secondary .meter{background:#e7e7e7;display:block;height:100%}.progress.success .meter{background:#43AC6A;display:block;height:100%}.progress.alert .meter{background:#f04124;display:block;height:100%}.progress.radius{border-radius:3px}.progress.radius .meter{border-radius:2px}.progress.round{border-radius:1000px}.progress.round .meter{border-radius:999px}.sub-nav{display:block;margin:-0.25rem 0 1.125rem;overflow:hidden;padding-top:0.25rem;width:auto}.sub-nav dt{text-transform:uppercase}.sub-nav dt,.sub-nav dd,.sub-nav li{color:#999;float:left;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:0.875rem;font-weight:normal;margin-left:1rem;margin-bottom:0}.sub-nav dt a,.sub-nav dd a,.sub-nav li a{color:#999;padding:0.1875rem 1rem;text-decoration:none}.sub-nav dt a:hover,.sub-nav dd a:hover,.sub-nav li a:hover{color:#737373}.sub-nav dt.active a,.sub-nav dd.active a,.sub-nav li.active a{border-radius:3px;background:#008CBA;color:#fff;cursor:default;font-weight:normal;padding:0.1875rem 1rem}.sub-nav dt.active a:hover,.sub-nav dd.active a:hover,.sub-nav li.active a:hover{background:#0078a0}.joyride-list{display:none}.joyride-tip-guide{background:#333;color:#fff;display:none;font-family:inherit;font-weight:normal;position:absolute;top:0;width:95%;z-index:101;left:2.5%}.lt-ie9 .joyride-tip-guide{margin-left:-400px;max-width:800px;left:50%}.joyride-content-wrapper{padding:1.125rem 1.25rem 1.5rem;width:100%}.joyride-content-wrapper .button{margin-bottom:0 !important}.joyride-content-wrapper .joyride-prev-tip{margin-right:10px}.joyride-tip-guide .joyride-nub{border:10px solid #333;display:block;height:0;position:absolute;width:0;left:22px}.joyride-tip-guide .joyride-nub.top{border-color:#333;border-top-color:transparent !important;border-top-style:solid;border-left-color:transparent !important;border-right-color:transparent !important;top:-20px}.joyride-tip-guide .joyride-nub.bottom{border-color:#333 !important;border-bottom-color:transparent !important;border-bottom-style:solid;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{right:-20px}.joyride-tip-guide .joyride-nub.left{left:-20px}.joyride-tip-guide h1,.joyride-tip-guide h2,.joyride-tip-guide h3,.joyride-tip-guide h4,.joyride-tip-guide h5,.joyride-tip-guide h6{color:#fff;font-weight:bold;line-height:1.25;margin:0}.joyride-tip-guide p{font-size:0.875rem;line-height:1.3;margin:0 0 1.125rem 0}.joyride-timer-indicator-wrap{border:solid 1px #555;bottom:1rem;height:3px;position:absolute;width:50px;right:1.0625rem}.joyride-timer-indicator{background:#666;display:block;height:inherit;width:0}.joyride-close-tip{color:#777 !important;font-size:24px;font-weight:normal;line-height:.5 !important;position:absolute;text-decoration:none;top:10px;right:12px}.joyride-close-tip:hover,.joyride-close-tip:focus{color:#eee !important}.joyride-modal-bg{background:rgba(0,0,0,0.5);cursor:pointer;display:none;height:100%;position:fixed;top:0;width:100%;z-index:100;left:0}.joyride-expose-wrapper{background-color:#fff;border-radius:3px;box-shadow:0 0 15px #fff;position:absolute;z-index:102}.joyride-expose-cover{background:transparent;border-radius:3px;left:0;position:absolute;top:0;z-index:9999}@media only screen and (min-width: 40.0625em){.joyride-tip-guide{width:300px;left:inherit}.joyride-tip-guide .joyride-nub.bottom{border-color:#333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{border-color:#333 !important;border-right-color:transparent !important;border-bottom-color:transparent !important;border-top-color:transparent !important;left:auto;right:-20px;top:22px}.joyride-tip-guide .joyride-nub.left{border-color:#333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-top-color:transparent !important;left:-20px;right:auto;top:22px}}.label{display:inline-block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;line-height:1;margin-bottom:auto;position:relative;text-align:center;text-decoration:none;white-space:nowrap;padding:0.25rem 0.5rem 0.25rem;font-size:0.6875rem;background-color:#008CBA;color:#fff}.label.radius{border-radius:3px}.label.round{border-radius:1000px}.label.alert{background-color:#f04124;color:#fff}.label.warning{background-color:#f08a24;color:#fff}.label.success{background-color:#43AC6A;color:#fff}.label.secondary{background-color:#e7e7e7;color:#333}.label.info{background-color:#a0d3e8;color:#333}.off-canvas-wrap{-webkit-backface-visibility:hidden;position:relative;width:100%;overflow:hidden}.off-canvas-wrap.move-right,.off-canvas-wrap.move-left{min-height:100%;-webkit-overflow-scrolling:touch}.inner-wrap{position:relative;width:100%;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.inner-wrap:before,.inner-wrap:after{content:" ";display:table}.inner-wrap:after{clear:both}.tab-bar{-webkit-backface-visibility:hidden;background:#333;color:#fff;height:2.8125rem;line-height:2.8125rem;position:relative}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4,.tab-bar h5,.tab-bar h6{color:#fff;font-weight:bold;line-height:2.8125rem;margin:0}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4{font-size:1.125rem}.left-small{height:2.8125rem;position:absolute;top:0;width:2.8125rem;border-right:solid 1px #1a1a1a;left:0}.right-small{height:2.8125rem;position:absolute;top:0;width:2.8125rem;border-left:solid 1px #1a1a1a;right:0}.tab-bar-section{height:2.8125rem;padding:0 0.625rem;position:absolute;text-align:center;top:0}.tab-bar-section.left{text-align:left}.tab-bar-section.right{text-align:right}.tab-bar-section.left{left:0;right:2.8125rem}.tab-bar-section.right{left:2.8125rem;right:0}.tab-bar-section.middle{left:2.8125rem;right:2.8125rem}.tab-bar .menu-icon{color:#fff;display:block;height:2.8125rem;padding:0;position:relative;text-indent:2.1875rem;transform:translate3d(0, 0, 0);width:2.8125rem}.tab-bar .menu-icon span::after{content:"";display:block;height:0;position:absolute;top:50%;margin-top:-0.5rem;left:0.90625rem;box-shadow:0 0 0 1px #fff,0 7px 0 1px #fff,0 14px 0 1px #fff;width:1rem}.tab-bar .menu-icon span:hover:after{box-shadow:0 0 0 1px #b3b3b3,0 7px 0 1px #b3b3b3,0 14px 0 1px #b3b3b3}.left-off-canvas-menu{-webkit-backface-visibility:hidden;background:#333;bottom:0;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;transition:transform 500ms ease 0s;width:15.625rem;z-index:1001;-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate(-100%, 0);-ms-transform:translate3d(-100%, 0, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.left-off-canvas-menu *{-webkit-backface-visibility:hidden}.right-off-canvas-menu{-webkit-backface-visibility:hidden;background:#333;bottom:0;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;transition:transform 500ms ease 0s;width:15.625rem;z-index:1001;-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate(100%, 0);-ms-transform:translate3d(100%, 0, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0}.right-off-canvas-menu *{-webkit-backface-visibility:hidden}ul.off-canvas-list{list-style-type:none;margin:0;padding:0}ul.off-canvas-list li label{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999;display:block;font-size:0.75rem;font-weight:bold;margin:0;padding:0.3rem 0.9375rem;text-transform:uppercase}ul.off-canvas-list li a{border-bottom:1px solid #262626;color:rgba(255,255,255,0.7);display:block;padding:0.66667rem;transition:background 300ms ease}ul.off-canvas-list li a:hover{background:#242424}ul.off-canvas-list li a:active{background:#242424}.move-right>.inner-wrap{-webkit-transform:translate3d(15.625rem, 0, 0);-moz-transform:translate3d(15.625rem, 0, 0);-ms-transform:translate(15.625rem, 0);-ms-transform:translate3d(15.625rem, 0, 0);-o-transform:translate3d(15.625rem, 0, 0);transform:translate3d(15.625rem, 0, 0)}.move-right .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.move-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.move-left>.inner-wrap{-webkit-transform:translate3d(-15.625rem, 0, 0);-moz-transform:translate3d(-15.625rem, 0, 0);-ms-transform:translate(-15.625rem, 0);-ms-transform:translate3d(-15.625rem, 0, 0);-o-transform:translate3d(-15.625rem, 0, 0);transform:translate3d(-15.625rem, 0, 0)}.move-left .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.move-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap .left-off-canvas-menu,.offcanvas-overlap .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.offcanvas-overlap .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-left .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-left .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.offcanvas-overlap-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-right .left-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-right .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.offcanvas-overlap-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.no-csstransforms .left-off-canvas-menu{left:-15.625rem}.no-csstransforms .right-off-canvas-menu{right:-15.625rem}.no-csstransforms .move-left>.inner-wrap{right:15.625rem}.no-csstransforms .move-right>.inner-wrap{left:15.625rem}.left-submenu{-webkit-backface-visibility:hidden;-webkit-overflow-scrolling:touch;background:#333;bottom:0;box-sizing:content-box;margin:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;width:15.625rem;z-index:1002;-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate(-100%, 0);-ms-transform:translate3d(-100%, 0, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.left-submenu *{-webkit-backface-visibility:hidden}.left-submenu .back>a{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999;font-weight:bold;padding:0.3rem 0.9375rem;text-transform:uppercase;margin:0}.left-submenu .back>a:hover{background:#303030;border-bottom:none;border-top:1px solid #5e5e5e}.left-submenu .back>a:before{content:"\AB";margin-right:.5rem;display:inline}.left-submenu.move-right,.left-submenu.offcanvas-overlap-right,.left-submenu.offcanvas-overlap{-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate(0%, 0);-ms-transform:translate3d(0%, 0, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0)}.right-submenu{-webkit-backface-visibility:hidden;-webkit-overflow-scrolling:touch;background:#333;bottom:0;box-sizing:content-box;margin:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;width:15.625rem;z-index:1002;-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate(100%, 0);-ms-transform:translate3d(100%, 0, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.right-submenu *{-webkit-backface-visibility:hidden}.right-submenu .back>a{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999;font-weight:bold;padding:0.3rem 0.9375rem;text-transform:uppercase;margin:0}.right-submenu .back>a:hover{background:#303030;border-bottom:none;border-top:1px solid #5e5e5e}.right-submenu .back>a:after{content:"\BB";margin-left:.5rem;display:inline}.right-submenu.move-left,.right-submenu.offcanvas-overlap-left,.right-submenu.offcanvas-overlap{-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate(0%, 0);-ms-transform:translate3d(0%, 0, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0)}.left-off-canvas-menu ul.off-canvas-list li.has-submenu>a:after{content:"\BB";margin-left:.5rem;display:inline}.right-off-canvas-menu ul.off-canvas-list li.has-submenu>a:before{content:"\AB";margin-right:.5rem;display:inline}.f-dropdown{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:2px;max-width:200px}.f-dropdown.open{display:block}.f-dropdown>*:first-child{margin-top:0}.f-dropdown>*:last-child{margin-bottom:0}.f-dropdown:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent transparent #fff transparent;border-bottom-style:solid;position:absolute;top:-12px;left:10px;z-index:89}.f-dropdown:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent transparent #ccc transparent;border-bottom-style:solid;position:absolute;top:-14px;left:9px;z-index:88}.f-dropdown.right:before{left:auto;right:10px}.f-dropdown.right:after{left:auto;right:9px}.f-dropdown.drop-right{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:0;margin-left:2px;max-width:200px}.f-dropdown.drop-right.open{display:block}.f-dropdown.drop-right>*:first-child{margin-top:0}.f-dropdown.drop-right>*:last-child{margin-bottom:0}.f-dropdown.drop-right:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent #fff transparent transparent;border-right-style:solid;position:absolute;top:10px;left:-12px;z-index:89}.f-dropdown.drop-right:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent #ccc transparent transparent;border-right-style:solid;position:absolute;top:9px;left:-14px;z-index:88}.f-dropdown.drop-left{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:0;margin-left:-2px;max-width:200px}.f-dropdown.drop-left.open{display:block}.f-dropdown.drop-left>*:first-child{margin-top:0}.f-dropdown.drop-left>*:last-child{margin-bottom:0}.f-dropdown.drop-left:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent transparent transparent #fff;border-left-style:solid;position:absolute;top:10px;right:-12px;left:auto;z-index:89}.f-dropdown.drop-left:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent transparent transparent #ccc;border-left-style:solid;position:absolute;top:9px;right:-14px;left:auto;z-index:88}.f-dropdown.drop-top{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-left:0;margin-top:-2px;max-width:200px}.f-dropdown.drop-top.open{display:block}.f-dropdown.drop-top>*:first-child{margin-top:0}.f-dropdown.drop-top>*:last-child{margin-bottom:0}.f-dropdown.drop-top:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:#fff transparent transparent transparent;border-top-style:solid;bottom:-12px;position:absolute;top:auto;left:10px;right:auto;z-index:89}.f-dropdown.drop-top:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:#ccc transparent transparent transparent;border-top-style:solid;bottom:-14px;position:absolute;top:auto;left:9px;right:auto;z-index:88}.f-dropdown li{cursor:pointer;font-size:0.875rem;line-height:1.125rem;margin:0}.f-dropdown li:hover,.f-dropdown li:focus{background:#eee}.f-dropdown li.radius{border-radius:3px}.f-dropdown li a{display:block;padding:0.5rem;color:#555}.f-dropdown.content{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;padding:1.25rem;width:100%;z-index:89;max-width:200px}.f-dropdown.content.open{display:block}.f-dropdown.content>*:first-child{margin-top:0}.f-dropdown.content>*:last-child{margin-bottom:0}.f-dropdown.tiny{max-width:200px}.f-dropdown.small{max-width:300px}.f-dropdown.medium{max-width:500px}.f-dropdown.large{max-width:800px}.f-dropdown.mega{width:100% !important;max-width:100% !important}.f-dropdown.mega.open{left:0 !important}table{background:#fff;border:solid 1px #ddd;margin-bottom:1.25rem;table-layout:auto}table caption{background:transparent;color:#222;font-size:1rem;font-weight:bold}table thead{background:#F5F5F5}table thead tr th,table thead tr td{color:#222;font-size:0.875rem;font-weight:bold;padding:0.5rem 0.625rem 0.625rem}table tfoot{background:#F5F5F5}table tfoot tr th,table tfoot tr td{color:#222;font-size:0.875rem;font-weight:bold;padding:0.5rem 0.625rem 0.625rem}table tr th,table tr td{color:#222;font-size:0.875rem;padding:0.5625rem 0.625rem;text-align:left}table tr.even,table tr.alt,table tr:nth-of-type(even){background:#F9F9F9}table thead tr th,table tfoot tr th,table tfoot tr td,table tbody tr th,table tbody tr td,table tr td{display:table-cell;line-height:1.125rem}.range-slider{border:1px solid #ddd;margin:1.25rem 0;position:relative;-ms-touch-action:none;touch-action:none;display:block;height:1rem;width:100%;background:#FAFAFA}.range-slider.vertical-range{border:1px solid #ddd;margin:1.25rem 0;position:relative;-ms-touch-action:none;touch-action:none;display:inline-block;height:12.5rem;width:1rem}.range-slider.vertical-range .range-slider-handle{bottom:-10.5rem;margin-left:-0.5rem;margin-top:0;position:absolute}.range-slider.vertical-range .range-slider-active-segment{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;border-top-left-radius:initial;bottom:0;height:auto;width:0.875rem}.range-slider.radius{background:#FAFAFA;border-radius:3px}.range-slider.radius .range-slider-handle{background:#008CBA;border-radius:3px}.range-slider.radius .range-slider-handle:hover{background:#007ba4}.range-slider.round{background:#FAFAFA;border-radius:1000px}.range-slider.round .range-slider-handle{background:#008CBA;border-radius:1000px}.range-slider.round .range-slider-handle:hover{background:#007ba4}.range-slider.disabled,.range-slider[disabled]{background:#FAFAFA;cursor:not-allowed;opacity:0.7}.range-slider.disabled .range-slider-handle,.range-slider[disabled] .range-slider-handle{background:#008CBA;cursor:default;opacity:0.7}.range-slider.disabled .range-slider-handle:hover,.range-slider[disabled] .range-slider-handle:hover{background:#007ba4}.range-slider-active-segment{background:#e5e5e5;border-bottom-left-radius:inherit;border-top-left-radius:inherit;display:inline-block;height:0.875rem;position:absolute}.range-slider-handle{border:1px solid none;cursor:pointer;display:inline-block;height:1.375rem;position:absolute;top:-0.3125rem;width:2rem;z-index:1;-ms-touch-action:manipulation;touch-action:manipulation;background:#008CBA}.range-slider-handle:hover{background:#007ba4}[class*="block-grid-"]{display:block;padding:0;margin:0 -0.625rem}[class*="block-grid-"]:before,[class*="block-grid-"]:after{content:" ";display:table}[class*="block-grid-"]:after{clear:both}[class*="block-grid-"]>li{display:block;float:left;height:auto;padding:0 0.625rem 1.25rem}@media only screen{.small-block-grid-1>li{list-style:none;width:100%}.small-block-grid-1>li:nth-of-type(1n){clear:none}.small-block-grid-1>li:nth-of-type(1n+1){clear:both}.small-block-grid-2>li{list-style:none;width:50%}.small-block-grid-2>li:nth-of-type(1n){clear:none}.small-block-grid-2>li:nth-of-type(2n+1){clear:both}.small-block-grid-3>li{list-style:none;width:33.33333%}.small-block-grid-3>li:nth-of-type(1n){clear:none}.small-block-grid-3>li:nth-of-type(3n+1){clear:both}.small-block-grid-4>li{list-style:none;width:25%}.small-block-grid-4>li:nth-of-type(1n){clear:none}.small-block-grid-4>li:nth-of-type(4n+1){clear:both}.small-block-grid-5>li{list-style:none;width:20%}.small-block-grid-5>li:nth-of-type(1n){clear:none}.small-block-grid-5>li:nth-of-type(5n+1){clear:both}.small-block-grid-6>li{list-style:none;width:16.66667%}.small-block-grid-6>li:nth-of-type(1n){clear:none}.small-block-grid-6>li:nth-of-type(6n+1){clear:both}.small-block-grid-7>li{list-style:none;width:14.28571%}.small-block-grid-7>li:nth-of-type(1n){clear:none}.small-block-grid-7>li:nth-of-type(7n+1){clear:both}.small-block-grid-8>li{list-style:none;width:12.5%}.small-block-grid-8>li:nth-of-type(1n){clear:none}.small-block-grid-8>li:nth-of-type(8n+1){clear:both}.small-block-grid-9>li{list-style:none;width:11.11111%}.small-block-grid-9>li:nth-of-type(1n){clear:none}.small-block-grid-9>li:nth-of-type(9n+1){clear:both}.small-block-grid-10>li{list-style:none;width:10%}.small-block-grid-10>li:nth-of-type(1n){clear:none}.small-block-grid-10>li:nth-of-type(10n+1){clear:both}.small-block-grid-11>li{list-style:none;width:9.09091%}.small-block-grid-11>li:nth-of-type(1n){clear:none}.small-block-grid-11>li:nth-of-type(11n+1){clear:both}.small-block-grid-12>li{list-style:none;width:8.33333%}.small-block-grid-12>li:nth-of-type(1n){clear:none}.small-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width: 40.0625em){.medium-block-grid-1>li{list-style:none;width:100%}.medium-block-grid-1>li:nth-of-type(1n){clear:none}.medium-block-grid-1>li:nth-of-type(1n+1){clear:both}.medium-block-grid-2>li{list-style:none;width:50%}.medium-block-grid-2>li:nth-of-type(1n){clear:none}.medium-block-grid-2>li:nth-of-type(2n+1){clear:both}.medium-block-grid-3>li{list-style:none;width:33.33333%}.medium-block-grid-3>li:nth-of-type(1n){clear:none}.medium-block-grid-3>li:nth-of-type(3n+1){clear:both}.medium-block-grid-4>li{list-style:none;width:25%}.medium-block-grid-4>li:nth-of-type(1n){clear:none}.medium-block-grid-4>li:nth-of-type(4n+1){clear:both}.medium-block-grid-5>li{list-style:none;width:20%}.medium-block-grid-5>li:nth-of-type(1n){clear:none}.medium-block-grid-5>li:nth-of-type(5n+1){clear:both}.medium-block-grid-6>li{list-style:none;width:16.66667%}.medium-block-grid-6>li:nth-of-type(1n){clear:none}.medium-block-grid-6>li:nth-of-type(6n+1){clear:both}.medium-block-grid-7>li{list-style:none;width:14.28571%}.medium-block-grid-7>li:nth-of-type(1n){clear:none}.medium-block-grid-7>li:nth-of-type(7n+1){clear:both}.medium-block-grid-8>li{list-style:none;width:12.5%}.medium-block-grid-8>li:nth-of-type(1n){clear:none}.medium-block-grid-8>li:nth-of-type(8n+1){clear:both}.medium-block-grid-9>li{list-style:none;width:11.11111%}.medium-block-grid-9>li:nth-of-type(1n){clear:none}.medium-block-grid-9>li:nth-of-type(9n+1){clear:both}.medium-block-grid-10>li{list-style:none;width:10%}.medium-block-grid-10>li:nth-of-type(1n){clear:none}.medium-block-grid-10>li:nth-of-type(10n+1){clear:both}.medium-block-grid-11>li{list-style:none;width:9.09091%}.medium-block-grid-11>li:nth-of-type(1n){clear:none}.medium-block-grid-11>li:nth-of-type(11n+1){clear:both}.medium-block-grid-12>li{list-style:none;width:8.33333%}.medium-block-grid-12>li:nth-of-type(1n){clear:none}.medium-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width: 64.0625em){.large-block-grid-1>li{list-style:none;width:100%}.large-block-grid-1>li:nth-of-type(1n){clear:none}.large-block-grid-1>li:nth-of-type(1n+1){clear:both}.large-block-grid-2>li{list-style:none;width:50%}.large-block-grid-2>li:nth-of-type(1n){clear:none}.large-block-grid-2>li:nth-of-type(2n+1){clear:both}.large-block-grid-3>li{list-style:none;width:33.33333%}.large-block-grid-3>li:nth-of-type(1n){clear:none}.large-block-grid-3>li:nth-of-type(3n+1){clear:both}.large-block-grid-4>li{list-style:none;width:25%}.large-block-grid-4>li:nth-of-type(1n){clear:none}.large-block-grid-4>li:nth-of-type(4n+1){clear:both}.large-block-grid-5>li{list-style:none;width:20%}.large-block-grid-5>li:nth-of-type(1n){clear:none}.large-block-grid-5>li:nth-of-type(5n+1){clear:both}.large-block-grid-6>li{list-style:none;width:16.66667%}.large-block-grid-6>li:nth-of-type(1n){clear:none}.large-block-grid-6>li:nth-of-type(6n+1){clear:both}.large-block-grid-7>li{list-style:none;width:14.28571%}.large-block-grid-7>li:nth-of-type(1n){clear:none}.large-block-grid-7>li:nth-of-type(7n+1){clear:both}.large-block-grid-8>li{list-style:none;width:12.5%}.large-block-grid-8>li:nth-of-type(1n){clear:none}.large-block-grid-8>li:nth-of-type(8n+1){clear:both}.large-block-grid-9>li{list-style:none;width:11.11111%}.large-block-grid-9>li:nth-of-type(1n){clear:none}.large-block-grid-9>li:nth-of-type(9n+1){clear:both}.large-block-grid-10>li{list-style:none;width:10%}.large-block-grid-10>li:nth-of-type(1n){clear:none}.large-block-grid-10>li:nth-of-type(10n+1){clear:both}.large-block-grid-11>li{list-style:none;width:9.09091%}.large-block-grid-11>li:nth-of-type(1n){clear:none}.large-block-grid-11>li:nth-of-type(11n+1){clear:both}.large-block-grid-12>li{list-style:none;width:8.33333%}.large-block-grid-12>li:nth-of-type(1n){clear:none}.large-block-grid-12>li:nth-of-type(12n+1){clear:both}}.flex-video{height:0;margin-bottom:1rem;overflow:hidden;padding-bottom:67.5%;padding-top:1.5625rem;position:relative}.flex-video.widescreen{padding-bottom:56.34%}.flex-video.vimeo{padding-top:0}.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{height:100%;position:absolute;top:0;width:100%;left:0}.keystroke,kbd{background-color:#ededed;border-color:#ddd;color:#222;border-style:solid;border-width:1px;font-family:"Consolas","Menlo","Courier",monospace;font-size:inherit;margin:0;padding:0.125rem 0.25rem 0;border-radius:3px}.switch{border:none;margin-bottom:1.5rem;outline:0;padding:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch label{background:#ddd;color:transparent;cursor:pointer;display:block;margin-bottom:1rem;position:relative;text-indent:100%;width:4rem;height:2rem;transition:left 0.15s ease-out}.switch input{left:10px;opacity:0;padding:0;position:absolute;top:9px}.switch input+label{margin-left:0;margin-right:0}.switch label:after{background:#fff;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;width:1.5rem;-webkit-transition:left 0.15s ease-out;-moz-transition:left 0.15s ease-out;-o-transition:translate3d(0, 0, 0);transition:left 0.15s ease-out;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.switch input:checked+label{background:#008CBA}.switch input:checked+label:after{left:2.25rem}.switch label{height:2rem;width:4rem}.switch label:after{height:1.5rem;width:1.5rem}.switch input:checked+label:after{left:2.25rem}.switch label{color:transparent;background:#ddd}.switch label:after{background:#fff}.switch input:checked+label{background:#008CBA}.switch.large label{height:2.5rem;width:5rem}.switch.large label:after{height:2rem;width:2rem}.switch.large input:checked+label:after{left:2.75rem}.switch.small label{height:1.75rem;width:3.5rem}.switch.small label:after{height:1.25rem;width:1.25rem}.switch.small input:checked+label:after{left:2rem}.switch.tiny label{height:1.5rem;width:3rem}.switch.tiny label:after{height:1rem;width:1rem}.switch.tiny input:checked+label:after{left:1.75rem}.switch.radius label{border-radius:4px}.switch.radius label:after{border-radius:3px}.switch.round{border-radius:1000px}.switch.round label{border-radius:2rem}.switch.round label:after{border-radius:2rem}@media only screen{.show-for-small-only,.show-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.hide-for-small-only,.hide-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.visible-for-small-only,.visible-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.hidden-for-small-only,.hidden-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.show-for-small-only,table.show-for-small-up,table.show-for-small,table.show-for-small-down,table.hide-for-medium-only,table.hide-for-medium-up,table.hide-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.show-for-small-only,thead.show-for-small-up,thead.show-for-small,thead.show-for-small-down,thead.hide-for-medium-only,thead.hide-for-medium-up,thead.hide-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.show-for-small-only,tbody.show-for-small-up,tbody.show-for-small,tbody.show-for-small-down,tbody.hide-for-medium-only,tbody.hide-for-medium-up,tbody.hide-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.show-for-small-only,tr.show-for-small-up,tr.show-for-small,tr.show-for-small-down,tr.hide-for-medium-only,tr.hide-for-medium-up,tr.hide-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.show-for-small-only,td.show-for-small-only,th.show-for-small-up,td.show-for-small-up,th.show-for-small,td.show-for-small,th.show-for-small-down,td.show-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.hide-for-medium-up,td.hide-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 40.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.show-for-medium-only,table.show-for-medium-up,table.show-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.show-for-medium-only,thead.show-for-medium-up,thead.show-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.show-for-medium-only,tbody.show-for-medium-up,tbody.show-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.show-for-medium-only,tr.show-for-medium-up,tr.show-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.show-for-medium-only,td.show-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.show-for-medium,td.show-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 64.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.show-for-large-only,table.show-for-large-up,table.show-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.show-for-large-only,thead.show-for-large-up,thead.show-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.show-for-large-only,tbody.show-for-large-up,tbody.show-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.show-for-large-only,tr.show-for-large-up,tr.show-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.show-for-large-only,td.show-for-large-only,th.show-for-large-up,td.show-for-large-up,th.show-for-large,td.show-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 90.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.show-for-xlarge-only,table.show-for-xlarge-up,table.show-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.show-for-xlarge-only,thead.show-for-xlarge-up,thead.show-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.show-for-xlarge-only,tbody.show-for-xlarge-up,tbody.show-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.show-for-xlarge-only,tr.show-for-xlarge-up,tr.show-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.show-for-xlarge-only,td.show-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.show-for-xlarge,td.show-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 120.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.hide-for-xlarge-only,.show-for-xlarge-up,.hide-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.show-for-xlarge-only,.hide-for-xlarge-up,.show-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.hidden-for-xlarge-only,.visible-for-xlarge-up,.hidden-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.visible-for-xlarge-only,.hidden-for-xlarge-up,.visible-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.hide-for-xlarge-only,table.show-for-xlarge-up,table.hide-for-xlarge,table.hide-for-xlarge-down,table.show-for-xxlarge-only,table.show-for-xxlarge-up,table.show-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.hide-for-xlarge-only,thead.show-for-xlarge-up,thead.hide-for-xlarge,thead.hide-for-xlarge-down,thead.show-for-xxlarge-only,thead.show-for-xxlarge-up,thead.show-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.hide-for-xlarge-only,tbody.show-for-xlarge-up,tbody.hide-for-xlarge,tbody.hide-for-xlarge-down,tbody.show-for-xxlarge-only,tbody.show-for-xxlarge-up,tbody.show-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.hide-for-xlarge-only,tr.show-for-xlarge-up,tr.hide-for-xlarge,tr.hide-for-xlarge-down,tr.show-for-xxlarge-only,tr.show-for-xxlarge-up,tr.show-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.hide-for-xlarge-down,td.hide-for-xlarge-down,th.show-for-xxlarge-only,td.show-for-xxlarge-only,th.show-for-xxlarge-up,td.show-for-xxlarge-up,th.show-for-xxlarge,td.show-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.hide-for-landscape,table.show-for-portrait{display:table !important}thead.hide-for-landscape,thead.show-for-portrait{display:table-header-group !important}tbody.hide-for-landscape,tbody.show-for-portrait{display:table-row-group !important}tr.hide-for-landscape,tr.show-for-portrait{display:table-row !important}td.hide-for-landscape,td.show-for-portrait,th.hide-for-landscape,th.show-for-portrait{display:table-cell !important}@media only screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.show-for-landscape,table.hide-for-portrait{display:table !important}thead.show-for-landscape,thead.hide-for-portrait{display:table-header-group !important}tbody.show-for-landscape,tbody.hide-for-portrait{display:table-row-group !important}tr.show-for-landscape,tr.hide-for-portrait{display:table-row !important}td.show-for-landscape,td.hide-for-portrait,th.show-for-landscape,th.hide-for-portrait{display:table-cell !important}}@media only screen and (orientation: portrait){.show-for-portrait,.hide-for-landscape{display:inherit !important}.hide-for-portrait,.show-for-landscape{display:none !important}table.show-for-portrait,table.hide-for-landscape{display:table !important}thead.show-for-portrait,thead.hide-for-landscape{display:table-header-group !important}tbody.show-for-portrait,tbody.hide-for-landscape{display:table-row-group !important}tr.show-for-portrait,tr.hide-for-landscape{display:table-row !important}td.show-for-portrait,td.hide-for-landscape,th.show-for-portrait,th.hide-for-landscape{display:table-cell !important}}.show-for-touch{display:none !important}.hide-for-touch{display:inherit !important}.touch .show-for-touch{display:inherit !important}.touch .hide-for-touch{display:none !important}table.hide-for-touch{display:table !important}.touch table.show-for-touch{display:table !important}thead.hide-for-touch{display:table-header-group !important}.touch thead.show-for-touch{display:table-header-group !important}tbody.hide-for-touch{display:table-row-group !important}.touch tbody.show-for-touch{display:table-row-group !important}tr.hide-for-touch{display:table-row !important}.touch tr.show-for-touch{display:table-row !important}td.hide-for-touch{display:table-cell !important}.touch td.show-for-touch{display:table-cell !important}th.hide-for-touch{display:table-cell !important}.touch th.show-for-touch{display:table-cell !important}.show-for-sr{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.show-on-focus{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.show-on-focus:focus,.show-on-focus:active{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.print-only{display:none !important}@media print{*{background:transparent !important;box-shadow:none !important;color:#000 !important;text-shadow:none !important}.show-for-print{display:block}.hide-for-print{display:none}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.hide-on-print{display:none !important}.print-only{display:block !important}.hide-for-print{display:none !important}.show-for-print{display:inherit !important}}@media print{.show-for-print{display:block}.hide-for-print{display:none}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}}@media not print{.show-for-print{display:none !important}}
diff --git a/webroot/css/home.css b/webroot/css/home.css
new file mode 100644
index 000000000..6e2312f91
--- /dev/null
+++ b/webroot/css/home.css
@@ -0,0 +1,240 @@
+@font-face {
+ font-family: 'cakefont';
+ src: url('../font/cakedingbats-webfont.eot');
+ src: url('../font/cakedingbats-webfont.eot?#iefix') format('embedded-opentype'),
+ url('../font/cakedingbats-webfont.woff2') format('woff2'),
+ url('../font/cakedingbats-webfont.woff') format('woff'),
+ url('../font/cakedingbats-webfont.ttf') format('truetype'),
+ url('../font/cakedingbats-webfont.svg#cake_dingbatsregular') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+.home {
+ font-family: 'Roboto', sans-serif;
+ font-size: 14px;
+ line-height: 27px;
+ color: #404041;
+}
+
+a {
+ color: #0071BC;
+ -webkit-transition: all 0.2s;
+ -moz-transition: all 0.2s;
+ -ms-transition: all 0.2s;
+ -o-transition: all 0.2s;
+ transition: all 0.2s;
+}
+
+a:hover, a:active {
+ color: #d33d44;
+ -webkit-transition: all 0.2s;
+ -moz-transition: all 0.2s;
+ -ms-transition: all 0.2s;
+ -o-transition: all 0.2s;
+ transition: all 0.2s;
+}
+
+ul, ol, dl, p {
+ font-size: 0.85rem;
+}
+
+p {
+ line-height: 2;
+}
+
+header {
+ height: auto;
+ line-height: 1em;
+ padding: 0;
+ box-shadow: none;
+}
+
+header.row {
+ margin-bottom: 30px;
+}
+
+header .header-image {
+ text-align: center;
+ padding: 64px 0;
+}
+
+header .header-title {
+ padding: 0;
+ display: block;
+ background: #404041;
+ text-align: center;
+}
+
+header .header-title h1 {
+ font-family: 'Raleway', sans-serif;
+ margin: 0;
+ font-style: italic;
+ font-size: 18px;
+ font-weight: 500;
+ padding: 18px 30px;
+ color: #DEDED5;
+}
+
+header h1 {
+ color: #fff;
+}
+
+h3, h4 {
+ font-family: 'Roboto', sans-serif;
+ font-size: 27px;
+ line-height: 30px;
+ font-weight: 300;
+ -webkit-font-smoothing: antialiased;
+ margin-top: 0;
+ margin-bottom: 20px;
+}
+
+.more {
+ color: #ffffff;
+ background-color: #d33d44;
+ padding: 15px;
+ margin-top: 10px;
+}
+
+.row {
+ max-width: 1000px;
+}
+
+.alert {
+ background-color: #fff9e1;
+ font-size: 12px;
+ text-align: center;
+ display: block;
+ padding: 12px;
+ border-bottom: 2px solid #ffcf06;
+}
+
+.alert {
+ background-color: #fff9e1;
+ font-size: 12px;
+ display: block;
+ padding: 12px;
+ border-bottom: 2px solid #ffcf06;
+ margin-bottom: 30px;
+ color: #404041;
+}
+
+.alert p {
+ margin: 0;
+ font-size: 12px;
+ line-height: 1.4;
+}
+
+.alert p:before {
+ color: #ffcf06;
+ content: "\0055";
+ font-family: 'cakefont', sans-serif;
+ font-size: 21px;
+ margin-left: -0.8em;
+ width: 2.3em;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ padding: 0 10px 0 15px;
+ vertical-align: -2px;
+}
+
+.alert ul {
+ margin: 0;
+ font-size: 12px;
+}
+
+.alert.url-rewriting {
+ background-color: #F0F0F0;
+ border-color: #cccccc;
+ display: none;
+}
+
+.text-center {
+ text-align: center;
+}
+
+ul {
+ list-style-type: none;
+ margin: 0 0 30px 0;
+}
+
+li {
+ padding-left: 1.8em;
+}
+
+ul li ul, ul li ul li {
+ margin: 0;
+ padding: 0;
+}
+
+.bullet:before {
+ font-family: 'cakefont', sans-serif;
+ font-size: 18px;
+ display: inline-block;
+ margin-left: -1.3em;
+ width: 1.2em;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ vertical-align: -1px;
+}
+
+.success:before {
+ color: #88c671;
+ content: "\0056";
+}
+
+.problem:before {
+ color: #d33d44;
+ content: "\0057";
+}
+
+.cutlery:before {
+ color: #404041;
+ content: "\0059";
+}
+
+.book:before {
+ color: #404041;
+ content: "\0042";
+ width: 1.7em;
+}
+
+hr {
+ border-bottom: 1px solid #e7e7e7;
+ border-top: 0;
+ margin-bottom: 35px;
+ margin-left: 30px;
+ margin-right: 30px;
+}
+
+
+.icon {
+ color: #404041;
+ font-style: normal;
+ font-family: 'cakefont', sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.icon.support {
+ font-size: 60px;
+}
+.icon.docs {
+ font-size: 57px;
+}
+.icon.training {
+ font-size: 39px;
+}
+
+@media (min-width: 768px) {
+ .columns {
+ padding-left: 30px;
+ padding-right: 30px;
+ }
+}
+
+@media (min-width: 992px) {
+ header.row {
+ max-width: 940px;
+ }
+}
diff --git a/webroot/css/style.css b/webroot/css/style.css
new file mode 100644
index 000000000..40c1d2a9f
--- /dev/null
+++ b/webroot/css/style.css
@@ -0,0 +1,524 @@
+.disabled a,
+a.disabled {
+ pointer-events: none;
+}
+
+a:hover {
+ color: #15848F;
+}
+
+a {
+ color: #1798A5;
+}
+
+.side-nav li a:not(.button) {
+ color: #15848F;
+}
+
+.side-nav li a:not(.button):hover {
+ color: #15848F;
+}
+
+header {
+ background-color: #D33C44;
+ color: #ffffff;
+ font-size: 30px;
+ height: 84px;
+ line-height: 64px;
+ padding: 16px 0px;
+ box-shadow: 0px 1px rgba(0, 0, 0, 0.24);
+}
+
+header .header-title {
+ padding-left:80px
+}
+
+legend {
+ color:#15848F;
+}
+
+.row {
+ max-width: 80rem;
+}
+
+.actions.columns {
+ margin-top:1rem;
+ border-left: 5px solid #15848F;
+ padding-left: 15px;
+ padding: 32px 20px;
+}
+
+.actions.columns h3 {
+ color:#15848F;
+}
+
+.related table {
+ border: 0;
+ width: 100%;
+ table-layout: fixed;
+}
+
+.index table thead {
+ height: 3.5rem;
+}
+
+.header-help {
+ float: right;
+ margin-right:2rem;
+ margin-top: -80px;
+ font-size:16px;
+}
+
+.header-help span {
+ font-weight: normal;
+ text-align: center;
+ text-decoration: none;
+ line-height: 1;
+ white-space: nowrap;
+ display: inline-block;
+ padding: 0.25rem 0.5rem 0.375rem;
+ font-size: 0.8rem;
+ background-color: #0097a7;
+ color: #FFF;
+ border-radius: 1000px;
+}
+
+.header-help a {
+ color: #fff;
+}
+
+ul.pagination li a {
+ color: rgba(0, 0 ,0 , 0.54);
+}
+
+ul.pagination li.active a {
+ background-color: #DCE47E;
+ color: #FFF;
+ font-weight: bold;
+ cursor: default;
+}
+ul.pagination .disabled:hover a {
+ background: none;
+}
+
+.paginator {
+ text-align: center;
+}
+
+.paginator ul.pagination li {
+ float: none;
+ display: inline-block;
+}
+
+.paginator p {
+ text-align: right;
+ color: rgba(0, 0 ,0 , 0.54);
+}
+
+.asc:after {
+ content: " \2193";
+}
+.desc:after {
+ content: " \2191";
+}
+
+.form .error-message {
+ display: block;
+ padding: 0.375rem 0.5625rem 0.5625rem;
+ margin-top: -1px;
+ margin-bottom: 1rem;
+ font-size: 0.75rem;
+ font-weight: normal;
+ font-style: italic;
+ color: rgba(0, 0, 0, 0.54);
+}
+
+.required > label {
+ font-weight: bold;
+}
+.required > label:after {
+ content: ' *';
+ color: #C3232D;
+}
+
+select[multiple] {
+ min-height:150px;
+ background: none;
+}
+input[type=checkbox],
+input[type=radio] {
+ margin-right: 0.5em;
+}
+
+.date select,
+.time select,
+.datetime select {
+ display: inline;
+ width: auto;
+ margin-right: 10px;
+}
+
+.error label,
+.error label.error {
+ color: #C3232D;
+}
+
+.view h2 {
+ color: #6F6F6F;
+}
+
+.view .columns.strings {
+ border-radius: 3px;
+ box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24);
+ margin-right:0.7rem;
+}
+
+.view .numbers {
+ background-color: #B7E3EC;
+ color: #FFF;
+ border-radius: 3px;
+ box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24);
+ margin-right: 0.7rem;
+}
+
+.view .columns.dates {
+ border-radius: 3px;
+ box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24);
+ margin-right:0.7rem;
+ background-color:#DCE47E;
+ color: #fff;
+}
+
+.view .columns.booleans {
+ border-radius: 3px;
+ box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24);
+ margin-right:0.7rem;
+ background-color: #8D6E65;
+ color: #fff;
+}
+
+.view .strings p {
+ border-bottom: 1px solid #eee;
+}
+.view .numbers .subheader, .view .dates .subheader {
+ color:#747474;
+}
+.view .booleans .subheader {
+ color: #E9E9E9
+}
+
+.view .texts .columns {
+ margin-top:1.2rem;
+ border-bottom: 1px solid #eee;
+}
+
+/** Notices and Errors **/
+.cake-error,
+.cake-debug,
+.notice,
+p.error,
+p.notice {
+ display: block;
+ clear: both;
+ background-repeat: repeat-x;
+ margin-bottom: 18px;
+ padding: 7px 14px;
+ border-radius: 3px;
+ box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24);
+}
+
+.cake-debug,
+.notice,
+p.notice {
+ color: #000000;
+ background: #ffcc00;
+}
+
+.cake-error,
+p.error {
+ color: #fff;
+ background: #C3232D;
+}
+
+pre {
+ background: none repeat scroll 0% 0% #FFF;
+ box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24);
+ margin: 15px 0px;
+ color: rgba(0, 0 ,0 , 0.74);
+ padding:5px;
+}
+
+.cake-error .cake-stack-trace {
+ margin-top:10px;
+}
+
+.cake-stack-trace code {
+ background: inherit;
+ border:0;
+}
+
+.cake-code-dump .code-highlight {
+ display: block;
+ background-color: #FFC600;
+}
+
+.cake-error a,
+.cake-error a:hover {
+ color:#fff;
+ text-decoration: underline;
+}
+
+.checks {
+ padding:30px;
+ color: #626262;
+ background-color: #B7E3EC;
+ border-radius: 3px;
+ box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.24);
+ margin-bottom: 2em;
+}
+
+.checks h4 {
+ margin-bottom: 1.5rem;
+}
+
+.checks hr {
+ border: 0;
+ height: 0;
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
+ border-bottom: 1px solid rgba(255, 255, 255, 0.3);
+}
+
+.checks .success,
+.checks .problem {
+ margin-left: 10px;
+}
+.checks .success:before,
+.checks .problem:before {
+ line-height: 0px;
+ font-size: 28px;
+ height: 12px;
+ width: 12px;
+ border-radius: 15px;
+ text-align: center;
+ vertical-align: middle;
+ display: inline-block;
+ position: relative;
+ left: -11px;
+}
+
+.checks .success:before {
+ content: "✓";
+ color: green;
+ margin-right: 9px;
+}
+
+.checks .problem:before {
+ content: "✘";
+ color: red;
+ margin-right: 9px;
+}
+
+.top-bar.expanded .title-area {
+ background: #01545b;
+}
+
+.top-bar.expanded, .top-bar,.top-bar-section ul li,.top-bar-section li:not(.has-form) a:not(.button) {
+ background: #116d76;
+}
+
+.top-bar-section li:not(.has-form) a:not(.button):hover {
+ background-color: #308e97;
+ background: #308e97;
+}
+
+.side-nav li.heading {
+ color: #1798A5;
+ font-size: 0.875rem;
+ font-weight: bold;
+ text-transform: uppercase;
+ padding: 0.4375rem 0.875rem;
+}
+
+#actions-sidebar {
+ background: #fafafa;
+}
+
+.index table {
+ margin-top: 0rem;
+ border: 0;
+ width: 100%;
+ table-layout: fixed;
+}
+
+table {
+ background: #fff;
+ margin-bottom: 1.25rem;
+ border: none;
+ table-layout: fixed;
+ width: 100%;
+}
+
+table thead {
+ background: none;
+}
+
+table tr {
+ border-bottom: 1px solid #ebebec;
+}
+
+table thead tr {
+ border-bottom: 1px solid #1798A5;
+}
+
+table tr th {
+ padding: 0.5625rem 0.625rem;
+ font-size: 0.875rem;
+ color: #1798A5;
+ text-align: left;
+ border-bottom: 2px solid #1798A5;
+}
+
+table tr:nth-of-type(even) {
+ background: none;
+}
+
+fieldset {
+ border: none;
+ padding: 1.25rem;
+ margin: 1.125rem 0;
+}
+
+fieldset legend {
+ border-bottom: 2px solid #1798A5;
+ width: 100%;
+ line-height: 2rem;
+}
+
+.form button[type="submit"] {
+ float: right;
+ text-transform: uppercase;
+ box-shadow: none;
+}
+
+.form button:hover, .form button:focus {
+ background: #BE840B;
+ box-shadow: none;
+}
+
+button {
+ background: #966600;
+}
+
+div.message {
+ text-align: center;
+ cursor: pointer;
+ display: block;
+ font-weight: normal;
+ padding: 0 1.5rem 0 1.5rem;
+ transition: height 300ms ease-out 0s;
+ background-color: #a0d3e8;
+ color: #626262;
+ top: 15px;
+ right: 15px;
+ z-index: 999;
+ overflow: hidden;
+ height: 50px;
+ line-height: 2.5em;
+}
+
+div.message:before {
+ line-height: 0px;
+ font-size: 20px;
+ height: 12px;
+ width: 12px;
+ border-radius: 15px;
+ text-align: center;
+ vertical-align: middle;
+ display: inline-block;
+ position: relative;
+ left: -11px;
+ background-color: #FFF;
+ padding: 12px 14px 12px 10px;
+ content: "i";
+ color: #a0d3e8;
+}
+
+div.message.error {
+ background-color: #C3232D;
+ color: #FFF;
+}
+
+div.message.error:before {
+ padding: 11px 16px 14px 7px;
+ color: #C3232D;
+ content: "x";
+}
+div.message.hidden {
+ height: 0;
+}
+
+
+.vertical-table th {
+ padding: 0.5625rem 0.625rem;
+ font-size: 0.875rem;
+ color: #1798A5;
+ border: none;
+ text-align: left;
+}
+
+.vertical-table {
+ vertical-align: middle;
+}
+
+.vertical-table td {
+ text-align: right;
+}
+
+.content {
+ padding: 2rem;
+}
+
+/* Use 'one true layout' methods to get equal height columns */
+.container {
+ overflow: hidden;
+ min-height: 92%; /* full height almost always */
+}
+
+/* Force equal height by overflowing */
+.content,
+#actions-sidebar {
+ margin-bottom: -99999px;
+ padding-bottom: 99999px;
+}
+@media(max-width: 640px) {
+ #actions-sidebar {
+ padding-bottom: 2rem;
+ margin-bottom: 0;
+ }
+}
+
+.content h3 {
+ color: #be140b;
+ padding-bottom: 0.5rem;
+ margin-bottom: 20px;
+}
+
+.content h4 {
+ color: #be140b;
+ padding-bottom: 0.5rem;
+ margin-bottom: 20px;
+ border-bottom: 2px solid #be140b;
+}
+
+.content .related h4 {
+ color: #4d8f97;
+ padding-bottom: 0.5rem;
+ margin-top: 20px;
+ margin-bottom: 10px;
+ border-bottom: 0px;
+}
+
+table td {
+ vertical-align: top;
+ word-break: break-all;
+}
diff --git a/webroot/favicon.ico b/webroot/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..49a060fc46e2bdfb8f3908c1873a45aa0e9babd0
GIT binary patch
literal 15086
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
AlmGw#
literal 0
HcmV?d00001
diff --git a/webroot/font/cakedingbats-webfont.eot b/webroot/font/cakedingbats-webfont.eot
new file mode 100644
index 0000000000000000000000000000000000000000..e8605d92685dc69e3555a2d46c934332ade64789
GIT binary patch
literal 75538
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