You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ma...@apache.org on 2016/02/01 10:24:37 UTC

[01/51] [partial] incubator-fineract git commit: deleted initial code

Repository: incubator-fineract
Updated Branches:
  refs/heads/master 4b1ec9ef5 -> 66cee7856


http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanApplicationTestBuilder.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanApplicationTestBuilder.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanApplicationTestBuilder.java
deleted file mode 100644
index cfa9c39..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanApplicationTestBuilder.java
+++ /dev/null
@@ -1,330 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.loans;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import com.google.gson.Gson;
-
-public class LoanApplicationTestBuilder {
-
-    private static final String DAYS = "0";
-    private static final String WEEKS = "1";
-    private static final String MONTHS = "2";
-    private static final String YEARS = "3";
-    private static final String DECLINING_BALANCE = "0";
-    private static final String FLAT_BALANCE = "1";
-    private static final String EQUAL_PRINCIPAL_PAYMENTS = "0";
-    private static final String EQUAL_INSTALLMENTS = "1";
-    private static final String CALCULATION_PERIOD_SAME_AS_REPAYMENT_PERIOD = "1";
-    public static final String DEFAULT_STRATEGY = "1";
-    public static final String RBI_INDIA_STRATEGY = "4";
-
-    private String principal = "10,000";
-    private String loanTermFrequency = "";
-    private String loanTermFrequencyType = "";
-    private String numberOfRepayment = "0";
-    private String repaymentPeriod = "0";
-    private String repaymentFrequencyType = "";
-
-    private String interestRate = "2";
-    private String interestType = FLAT_BALANCE;
-    private String amortizationType = EQUAL_PRINCIPAL_PAYMENTS;
-    private String interestCalculationPeriodType = CALCULATION_PERIOD_SAME_AS_REPAYMENT_PERIOD;
-    private String transactionProcessingID = DEFAULT_STRATEGY;
-    private String expectedDisbursmentDate = "";
-    private String submittedOnDate = "";
-    private String loanType = "individual";
-    private String fixedEmiAmount = "10000";
-    private String maxOutstandingLoanBalance = "36000";
-    private String graceOnPrincipalPayment = null;
-    private String graceOnInterestPayment = null;
-    @SuppressWarnings("rawtypes")
-    private List<HashMap> disbursementData = null;
-    @SuppressWarnings("rawtypes")
-    private List<HashMap> charges = new ArrayList<>();
-    private String recalculationRestFrequencyDate = null;
-    private String recalculationCompoundingFrequencyDate = null;
-    private String repaymentsStartingFromDate = null;
-
-    private String calendarId;
-    private boolean syncDisbursementWithMeeting = false;
-
-    public String build(final String clientID, final String groupID, final String loanProductId, final String savingsID) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("groupId", groupID);
-        map.put("clientId", clientID);
-        if (this.loanType == "jlg") {
-            if (this.calendarId != null) {
-                map.put("calendarId", this.calendarId);
-            }
-            map.put("syncDisbursementWithMeeting", this.syncDisbursementWithMeeting);
-        }
-        return build(map, loanProductId, savingsID);
-    }
-
-    public String build(final String ID, final String loanProductId, final String savingsID) {
-
-        final HashMap<String, Object> map = new HashMap<>();
-
-        if (this.loanType == "group") {
-            map.put("groupId", ID);
-        } else {
-            map.put("clientId", ID);
-        }
-        return build(map, loanProductId, savingsID);
-    }
-
-    private String build(final HashMap<String, Object> map, final String loanProductId, final String savingsID) {
-        map.put("dateFormat", "dd MMMM yyyy");
-        map.put("locale", "en_GB");
-        map.put("productId", loanProductId);
-        map.put("principal", this.principal);
-        map.put("loanTermFrequency", this.loanTermFrequency);
-        map.put("loanTermFrequencyType", this.loanTermFrequencyType);
-        map.put("numberOfRepayments", this.numberOfRepayment);
-        map.put("repaymentEvery", this.repaymentPeriod);
-        map.put("repaymentFrequencyType", this.repaymentFrequencyType);
-        map.put("interestRatePerPeriod", this.interestRate);
-        map.put("amortizationType", this.amortizationType);
-        map.put("interestType", this.interestType);
-        map.put("interestCalculationPeriodType", this.interestCalculationPeriodType);
-        map.put("transactionProcessingStrategyId", this.transactionProcessingID);
-        map.put("expectedDisbursementDate", this.expectedDisbursmentDate);
-        map.put("submittedOnDate", this.submittedOnDate);
-        map.put("loanType", this.loanType);
-        if (repaymentsStartingFromDate != null) {
-            map.put("repaymentsStartingFromDate", this.repaymentsStartingFromDate);
-        }
-        if (charges != null) {
-            map.put("charges", charges);
-        }
-        if (savingsID != null) {
-            map.put("linkAccountId", savingsID);
-        }
-
-        if (graceOnPrincipalPayment != null) {
-            map.put("graceOnPrincipalPayment", graceOnPrincipalPayment);
-        }
-
-        if (graceOnInterestPayment != null) {
-            map.put("graceOnInterestPayment", graceOnInterestPayment);
-        }
-
-        if (disbursementData != null) {
-            map.put("disbursementData", disbursementData);
-            map.put("fixedEmiAmount", fixedEmiAmount);
-            map.put("maxOutstandingLoanBalance", maxOutstandingLoanBalance);
-
-        }
-        if (recalculationRestFrequencyDate != null) {
-            map.put("recalculationRestFrequencyDate", recalculationRestFrequencyDate);
-        }
-        if (recalculationCompoundingFrequencyDate != null) {
-            map.put("recalculationCompoundingFrequencyDate", recalculationCompoundingFrequencyDate);
-        }
-
-        System.out.println("Loan Application request : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public LoanApplicationTestBuilder withPrincipal(final String principalAmount) {
-        this.principal = principalAmount;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withLoanTermFrequency(final String loanToBePayedDuration) {
-        this.loanTermFrequency = loanToBePayedDuration;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withLoanTermFrequencyAsDays() {
-        this.loanTermFrequencyType = DAYS;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withLoanTermFrequencyAsMonths() {
-        this.loanTermFrequencyType = MONTHS;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withLoanTermFrequencyAsWeeks() {
-        this.loanTermFrequencyType = WEEKS;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withLoanTermFrequencyAsYears() {
-        this.loanTermFrequencyType = YEARS;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withNumberOfRepayments(final String numberOfRepayments) {
-        this.numberOfRepayment = numberOfRepayments;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withRepaymentEveryAfter(final String repaymentPeriod) {
-        this.repaymentPeriod = repaymentPeriod;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withRepaymentFrequencyTypeAsDays() {
-        this.repaymentFrequencyType = DAYS;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withRepaymentFrequencyTypeAsMonths() {
-        this.repaymentFrequencyType = MONTHS;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withRepaymentFrequencyTypeAsWeeks() {
-        this.repaymentFrequencyType = WEEKS;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withRepaymentFrequencyTypeAsYear() {
-        this.repaymentFrequencyType = YEARS;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withInterestRatePerPeriod(final String interestRate) {
-        this.interestRate = interestRate;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withInterestTypeAsFlatBalance() {
-        this.interestType = FLAT_BALANCE;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withInterestTypeAsDecliningBalance() {
-        this.interestType = DECLINING_BALANCE;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withAmortizationTypeAsEqualInstallments() {
-        this.amortizationType = EQUAL_INSTALLMENTS;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withAmortizationTypeAsEqualPrincipalPayments() {
-        this.amortizationType = EQUAL_PRINCIPAL_PAYMENTS;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withInterestCalculationPeriodTypeSameAsRepaymentPeriod() {
-        this.interestCalculationPeriodType = CALCULATION_PERIOD_SAME_AS_REPAYMENT_PERIOD;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withInterestCalculationPeriodTypeAsDays() {
-        this.interestCalculationPeriodType = DAYS;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withExpectedDisbursementDate(final String expectedDisbursementDate) {
-        this.expectedDisbursmentDate = expectedDisbursementDate;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withSubmittedOnDate(final String loanApplicationSubmittedDate) {
-        this.submittedOnDate = loanApplicationSubmittedDate;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withCharges(final List<HashMap> charges) {
-        this.charges = charges;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withLoanType(final String loanType) {
-        this.loanType = loanType;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withPrincipalGrace(final String graceOnPrincipalPayment) {
-        this.graceOnPrincipalPayment = graceOnPrincipalPayment;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withInterestGrace(final String graceOnInterestPayment) {
-        this.graceOnInterestPayment = graceOnInterestPayment;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withTranches(final List<HashMap> disbursementData) {
-        this.disbursementData = disbursementData;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withwithRepaymentStrategy(final String transactionProcessingStrategy) {
-        this.transactionProcessingID = transactionProcessingStrategy;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withRestFrequencyDate(final String recalculationRestFrequencyDate) {
-        this.recalculationRestFrequencyDate = recalculationRestFrequencyDate;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withCompoundingFrequencyDate(final String recalculationCompoundingFrequencyDate) {
-        this.recalculationCompoundingFrequencyDate = recalculationCompoundingFrequencyDate;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withFirstRepaymentDate(final String firstRepaymentDate) {
-        this.repaymentsStartingFromDate = firstRepaymentDate;
-        return this;
-    }
-
-    /**
-     * calendarID parameter is used to sync repayments with group meetings,
-     * especially when using jlg loans
-     *
-     * @param calendarId
-     *            the id of the calender record of the group meeting from
-     *            m_calendar table
-     * @return
-     */
-    public LoanApplicationTestBuilder withCalendarID(String calendarId) {
-        this.calendarId = calendarId;
-        return this;
-    }
-
-    /**
-     * This indicator is used mainly for jlg loans when we want to sync
-     * disbursement with the group meetings (it seems that if we do use this
-     * parameter we should also use calendarID to sync repayment with group
-     * meetings)
-     * 
-     * @return
-     */
-    public LoanApplicationTestBuilder withSyncDisbursementWithMeetin() {
-        this.syncDisbursementWithMeeting = true;
-        return this;
-    }
-
-    public LoanApplicationTestBuilder withFixedEmiAmount(final String installmentAmount) {
-        this.fixedEmiAmount = installmentAmount;
-        return this;
-    }
-}


[15/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java
deleted file mode 100644
index 25a4644..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java
+++ /dev/null
@@ -1,425 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.fineract.batch.domain.BatchRequest;
-import org.apache.fineract.batch.domain.BatchResponse;
-import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
-import org.apache.fineract.integrationtests.common.BatchHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Test class for
- * {@link org.apache.fineract.batch.command.CommandStrategyProvider}. This tests
- * the response provided by commandStrategy by injecting it with a
- * {@code BatchRequest}.
- * 
- * @author RishabhShukla
- * 
- * @see org.apache.fineract.integrationtests.common.BatchHelper
- * @see org.apache.fineract.batch.domain.BatchRequest
- */
-public class BatchApiTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-
-    public BatchApiTest() {
-        super();
-    }
-
-    /**
-     * Sets up the essential settings for the TEST like contentType,
-     * expectedStatusCode. It uses the '@Before' annotation provided by jUnit.
-     */
-    @Before
-    public void setup() {
-
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    /**
-     * Tests for the unimplemented command Strategies by returning 501 status
-     * code. For a unknownRequest a statusCode 501 is returned back with
-     * response.
-     * 
-     * @see org.apache.fineract.batch.command.internal.UnknownCommandStrategy
-     */
-    @Test
-    public void shouldReturnStatusNotImplementedUnknownCommand() {
-
-        final BatchRequest br = new BatchRequest();
-        br.setRequestId(4711L);
-        br.setRelativeUrl("/nirvana");
-        br.setMethod("POST");
-
-        final List<BatchResponse> response = BatchHelper.postWithSingleRequest(this.requestSpec, this.responseSpec, br);
-
-        // Verify that only 501 is returned as the status code
-        for (BatchResponse resp : response) {
-            Assert.assertEquals("Verify Status code 501", (long) 501, (long) resp.getStatusCode());
-        }
-    }
-
-    /**
-     * Tests for the successful response for a createClient request from
-     * createClientCommand. A successful response with statusCode '200' is
-     * returned back.
-     * 
-     * @see org.apache.fineract.batch.command.internal.CreateClientCommandStrategy
-     */
-    @Test
-    public void shouldReturnOkStatusForCreateClientCommand() {
-
-        final BatchRequest br = BatchHelper.createClientRequest(4712L, "");
-
-        final List<BatchResponse> response = BatchHelper.postWithSingleRequest(this.requestSpec, this.responseSpec, br);
-
-        // Verify that a 200 response is returned as the status code
-        for (BatchResponse resp : response) {
-            Assert.assertEquals("Verify Status code 200", (long) 200, (long) resp.getStatusCode());
-        }
-    }
-
-    /**
-     * Tests for an erroneous response with statusCode '501' if transaction
-     * fails. If Query Parameter 'enclosingTransaction' is set to 'true' and if
-     * one of the request in BatchRequest fails then all transactions are rolled
-     * back.
-     * 
-     * @see org.apache.fineract.batch.command.internal.CreateClientCommandStrategy
-     * @see org.apache.fineract.batch.api.BatchApiResource
-     * @see org.apache.fineract.batch.service.BatchApiService
-     */
-    @Test
-    public void shouldRollBackAllTransactionsOnFailure() {
-
-        // Create first client request
-        final BatchRequest br1 = BatchHelper.createClientRequest(4713L, "TestExtId11");
-
-        // Create second client request
-        final BatchRequest br2 = BatchHelper.createClientRequest(4714L, "TestExtId12");
-
-        // Create third client request, having same externalID as second client,
-        // hence cause of error
-        final BatchRequest br3 = BatchHelper.createClientRequest(4715L, "TestExtId11");
-
-        final List<BatchRequest> batchRequests = new ArrayList<>();
-
-        batchRequests.add(br1);
-        batchRequests.add(br2);
-        batchRequests.add(br3);
-
-        final String jsonifiedRequest = BatchHelper.toJsonString(batchRequests);
-        final List<BatchResponse> response = BatchHelper.postBatchRequestsWithEnclosingTransaction(this.requestSpec, this.responseSpec,
-                jsonifiedRequest);
-
-        // Verifies that none of the client in BatchRequest is created on the
-        // server
-        BatchHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, "TestExtId11");
-        BatchHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, "TestExtId12");
-
-        // Asserts that all the transactions have been successfully rolled back
-        Assert.assertEquals(response.size(), 1);
-        Assert.assertEquals("Verify Status code 400", (long) 400, (long) response.get(0).getStatusCode());
-    }
-
-    /**
-     * Tests that a client information was successfully updated through
-     * updateClientCommand. A 'changes' parameter is returned in the response
-     * after successful update of client information.
-     * 
-     * @see org.apache.fineract.batch.command.internal.UpdateClientCommandStrategy
-     */
-    @Test
-    public void shouldReflectChangesOnClientUpdate() {
-
-        // Create a createClient Request
-        final BatchRequest br1 = BatchHelper.createClientRequest(4716L, "");
-
-        // Create a clientUpdate Request
-        final BatchRequest br2 = BatchHelper.updateClientRequest(4717L, 4716L);
-
-        final List<BatchRequest> batchRequests = new ArrayList<>();
-
-        batchRequests.add(br1);
-        batchRequests.add(br2);
-
-        final String jsonifiedRequest = BatchHelper.toJsonString(batchRequests);
-
-        final List<BatchResponse> response = BatchHelper.postBatchRequestsWithoutEnclosingTransaction(this.requestSpec, this.responseSpec,
-                jsonifiedRequest);
-
-        // Get the changes parameter from updateClient Response
-        final JsonObject changes = new FromJsonHelper().parse(response.get(1).getBody()).getAsJsonObject().get("changes").getAsJsonObject();
-
-        // Asserts the client information is successfully updated
-        Assert.assertEquals("Verify Firstname", "TestFirstName", changes.get("firstname").getAsString());
-        Assert.assertEquals("Verify Lastname", "TestLastName", changes.get("lastname").getAsString());
-    }
-
-    /**
-     * Tests that a ApplyLoanCommand was successfully executed and returned a
-     * 200(OK) status. It creates a new client and apply a loan to that client.
-     * This also verifies the successful resolution of dependencies among two
-     * requests.
-     * 
-     * @see org.apache.fineract.batch.command.internal.ApplyLoanCommandStrategy
-     */
-    @Test
-    public void shouldReturnOkStatusForApplyLoanCommand() {
-
-        final String loanProductJSON = new LoanProductTestBuilder() //
-                .withPrincipal("10000000.00") //
-                .withNumberOfRepayments("24") //
-                .withRepaymentAfterEvery("1") //
-                .withRepaymentTypeAsMonth() //
-                .withinterestRatePerPeriod("2") //
-                .withInterestRateFrequencyTypeAsMonths() //
-                .withAmortizationTypeAsEqualPrincipalPayment() //
-                .withInterestTypeAsDecliningBalance() //
-                .currencyDetails("0", "100").build(null);
-
-        final Integer productId = new LoanTransactionHelper(this.requestSpec, this.responseSpec).getLoanProductId(loanProductJSON);
-
-        // Create a createClient Request
-        final BatchRequest br1 = BatchHelper.createClientRequest(4718L, "");
-
-        // Create a activateClient Request
-        final BatchRequest br2 = BatchHelper.activateClientRequest(4719L, 4718L);
-
-        // Create a ApplyLoan Request
-        final BatchRequest br3 = BatchHelper.applyLoanRequest(4720L, 4719L, productId);
-
-        final List<BatchRequest> batchRequests = new ArrayList<>();
-
-        batchRequests.add(br1);
-        batchRequests.add(br2);
-        batchRequests.add(br3);
-
-        final String jsonifiedRequest = BatchHelper.toJsonString(batchRequests);
-
-        final List<BatchResponse> response = BatchHelper.postBatchRequestsWithoutEnclosingTransaction(this.requestSpec, this.responseSpec,
-                jsonifiedRequest);
-
-        // Get the clientId parameter from createClient Response
-        final JsonElement clientId = new FromJsonHelper().parse(response.get(0).getBody()).getAsJsonObject().get("clientId");
-
-        Assert.assertEquals("Verify Status Code 200" + clientId.getAsString(), 200L, (long) response.get(1).getStatusCode());
-    }
-
-    /**
-     * Tests that a new savings accounts was applied to an existing client and a
-     * 200(OK) status was returned. It first creates a new client and a savings
-     * product, then uses the cliendId and ProductId to apply a savings account.
-     * 
-     * @see org.apache.fineract.batch.command.internal.ApplySavingsCommandStrategy
-     */
-    @Test
-    public void shouldReturnOkStatusForApplySavingsCommand() {
-
-        final SavingsProductHelper savingsProductHelper = new SavingsProductHelper();
-        final String savingsProductJSON = savingsProductHelper //
-                .withInterestCompoundingPeriodTypeAsDaily() //
-                .withInterestPostingPeriodTypeAsMonthly() //
-                .withInterestCalculationPeriodTypeAsDailyBalance() //
-                .withMinimumOpenningBalance("5000").build();
-
-        final Integer productId = SavingsProductHelper.createSavingsProduct(savingsProductJSON, this.requestSpec, this.responseSpec);
-
-        // Create a createClient Request
-        final BatchRequest br1 = BatchHelper.createClientRequest(4720L, "");
-
-        // Create a activateClient Request
-        final BatchRequest br2 = BatchHelper.activateClientRequest(4721L, 4720L);
-
-        // Create a applySavings Request
-        final BatchRequest br3 = BatchHelper.applySavingsRequest(4722L, 4721L, productId);
-
-        final List<BatchRequest> batchRequests = new ArrayList<>();
-
-        batchRequests.add(br1);
-        batchRequests.add(br2);
-        batchRequests.add(br3);
-
-        final String jsonifiedRequest = BatchHelper.toJsonString(batchRequests);
-
-        final List<BatchResponse> response = BatchHelper.postBatchRequestsWithoutEnclosingTransaction(this.requestSpec, this.responseSpec,
-                jsonifiedRequest);
-
-        Assert.assertEquals("Verify Status Code 200", 200L, (long) response.get(1).getStatusCode());
-    }
-
-    /**
-     * Tests that a new charge was added to a newly created loan and charges are
-     * Collected properly 200(OK) status was returned for successful responses.
-     * It first creates a new client and apply a loan, then creates a new charge
-     * for the create loan and then fetches all the applied charges
-     * 
-     * @see org.apache.fineract.batch.command.internal.CollectChargesCommandStrategy
-     * @see org.apache.fineract.batch.command.internal.CreateChargeCommandStrategy
-     */
-    @Test
-    public void shouldReturnOkStatusForCollectChargesCommand() {
-
-        final String loanProductJSON = new LoanProductTestBuilder() //
-                .withPrincipal("10000000.00") //
-                .withNumberOfRepayments("24") //
-                .withRepaymentAfterEvery("1") //
-                .withRepaymentTypeAsMonth() //
-                .withinterestRatePerPeriod("2") //
-                .withInterestRateFrequencyTypeAsMonths() //
-                .withAmortizationTypeAsEqualPrincipalPayment() //
-                .withInterestTypeAsDecliningBalance() //
-                .currencyDetails("0", "100").build(null);
-
-        final Integer productId = new LoanTransactionHelper(this.requestSpec, this.responseSpec).getLoanProductId(loanProductJSON);
-
-        // Create a createClient Request
-        final BatchRequest br1 = BatchHelper.createClientRequest(4722L, "");
-
-        // Create a activateClient Request
-        final BatchRequest br2 = BatchHelper.activateClientRequest(4723L, 4722L);
-
-        // Create a ApplyLoan Request
-        final BatchRequest br3 = BatchHelper.applyLoanRequest(4724L, 4723L, productId);
-
-        // Create a Collect Charges Request
-        final BatchRequest br4 = BatchHelper.collectChargesRequest(4725L, 4724L);
-
-        final List<BatchRequest> batchRequests = new ArrayList<>();
-
-        batchRequests.add(br1);
-        batchRequests.add(br2);
-        batchRequests.add(br3);
-        batchRequests.add(br4);
-
-        final String jsonifiedRequest = BatchHelper.toJsonString(batchRequests);
-
-        final List<BatchResponse> response = BatchHelper.postBatchRequestsWithoutEnclosingTransaction(this.requestSpec, this.responseSpec,
-                jsonifiedRequest);
-
-        Assert.assertEquals("Verify Status Code 200 for Create Loan Charge", 200L, (long) response.get(3).getStatusCode());
-    }
-
-    /**
-     * Test for the successful activation of a pending client using
-     * 'ActivateClientCommandStrategy'. A '200' status code is expected on
-     * successful activation.
-     * 
-     * @see org.apache.fineract.batch.command.internal.ActivateClientCommandStrategy
-     */
-    @Test
-    public void shouldReturnOkStatusOnSuccessfulClientActivation() {
-
-        // Create a createClient Request
-        final BatchRequest br1 = BatchHelper.createClientRequest(4726L, "");
-
-        // Create a activateClient Request
-        final BatchRequest br2 = BatchHelper.activateClientRequest(4727L, 4726L);
-
-        final List<BatchRequest> batchRequests = new ArrayList<>();
-
-        batchRequests.add(br1);
-        batchRequests.add(br2);
-
-        final String jsonifiedRequest = BatchHelper.toJsonString(batchRequests);
-
-        final List<BatchResponse> response = BatchHelper.postBatchRequestsWithoutEnclosingTransaction(this.requestSpec, this.responseSpec,
-                jsonifiedRequest);
-
-        Assert.assertEquals("Verify Status Code 200 for Create Client", 200L, (long) response.get(0).getStatusCode());
-        Assert.assertEquals("Verify Status Code 200 for Activate Client", 200L, (long) response.get(1).getStatusCode());
-    }
-
-    /**
-     * Test for the successful approval and disbursal of a loan using
-     * 'ApproveLoanCommandStrategy' and 'DisburseLoanCommandStrategy'. A '200'
-     * status code is expected on successful activation.
-     * 
-     * @see org.apache.fineract.batch.command.internal.ApproveLoanCommandStrategy
-     * @see org.apache.fineract.batch.command.internal.DisburseLoanCommandStrategy
-     */
-    @Test
-    public void shouldReturnOkStatusOnSuccessfulLoanApprovalAndDisburse() {
-        final String loanProductJSON = new LoanProductTestBuilder() //
-                .withPrincipal("10000000.00") //
-                .withNumberOfRepayments("24") //
-                .withRepaymentAfterEvery("1") //
-                .withRepaymentTypeAsMonth() //
-                .withinterestRatePerPeriod("2") //
-                .withInterestRateFrequencyTypeAsMonths() //
-                .withAmortizationTypeAsEqualPrincipalPayment() //
-                .withInterestTypeAsDecliningBalance() //
-                .currencyDetails("0", "100").build(null);
-
-        final Integer productId = new LoanTransactionHelper(this.requestSpec, this.responseSpec).getLoanProductId(loanProductJSON);
-
-        // Create a createClient Request
-        final BatchRequest br1 = BatchHelper.createClientRequest(4730L, "");
-
-        // Create a activateClient Request
-        final BatchRequest br2 = BatchHelper.activateClientRequest(4731L, 4730L);
-
-        // Create a ApplyLoan Request
-        final BatchRequest br3 = BatchHelper.applyLoanRequest(4732L, 4731L, productId);
-
-        // Create a approveLoan Request
-        final BatchRequest br4 = BatchHelper.approveLoanRequest(4733L, 4732L);
-
-        // Create a disburseLoan Request
-        final BatchRequest br5 = BatchHelper.disburseLoanRequest(4734L, 4733L);
-
-        final List<BatchRequest> batchRequests = new ArrayList<>();
-
-        batchRequests.add(br1);
-        batchRequests.add(br2);
-        batchRequests.add(br3);
-        batchRequests.add(br4);
-        batchRequests.add(br5);
-
-        final String jsonifiedRequest = BatchHelper.toJsonString(batchRequests);
-
-        final List<BatchResponse> response = BatchHelper.postBatchRequestsWithoutEnclosingTransaction(this.requestSpec, this.responseSpec,
-                jsonifiedRequest);
-
-        Assert.assertEquals("Verify Status Code 200 for Approve Loan", 200L, (long) response.get(3).getStatusCode());
-        Assert.assertEquals("Verify Status Code 200 for Disburse Loan", 200L, (long) response.get(4).getStatusCode());
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java
deleted file mode 100644
index ad1f61b..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.fineract.batch.domain.BatchRequest;
-import org.apache.fineract.batch.domain.BatchResponse;
-import org.apache.fineract.integrationtests.common.BatchHelper;
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.GroupHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Test class for testing the integration of Batch API with custom batch
- * requests and various user defined workflow. Like in the case of mifos
- * community-app
- * 
- * @author Rishabh Shukla
- */
-public class BatchRequestsIntegrationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-
-    public BatchRequestsIntegrationTest() {
-        super();
-    }
-
-    /**
-     * Sets up the essential settings for the TEST like contentType,
-     * expectedStatusCode. It uses the '@Before' annotation provided by jUnit.
-     */
-    @Before
-    public void setup() {
-
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Test
-    /**
-     * Tests that a loan is successfully applied to client members of a group. 
-     * Firstly, it'll create a few new clients and then will add those clients
-     * to the group. Then a few loans will be created and one of those loans
-     * will be chosen at random and similarily a few of the created clients will
-     * be chosen on random. Now, the selected loan will be applied to these
-     * clients through Batch - API ApplyLoanCommandStrategy.  
-     */
-    public void shouldReturnOkStatusForLoansAppliedToSelectedClients() {
-
-        // Generate a random count of number of clients to be created
-        final Integer clientsCount = (int) Math.ceil(Math.random() * 7) + 3;
-        final Integer[] clientIDs = new Integer[clientsCount];
-
-        // Create a new group and get its groupId
-        Integer groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec, true);
-
-        // Create new clients and add those to this group
-        for (Integer i = 0; i < clientsCount; i++) {
-            clientIDs[i] = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-            groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientIDs[i].toString());
-            System.out.println("client " + clientIDs[i] + " has been added to the group " + groupID);
-        }
-
-        // Generate a random count of number of new loan products to be created
-        final Integer loansCount = (int) Math.ceil(Math.random() * 4) + 1;
-        final Integer[] loanProducts = new Integer[loansCount];
-
-        // Create new loan Products
-        for (Integer i = 0; i < loansCount; i++) {
-            final String loanProductJSON = new LoanProductTestBuilder() //
-                    .withPrincipal(String.valueOf(10000.00 + Math.ceil(Math.random() * 1000000.00))) //
-                    .withNumberOfRepayments(String.valueOf(2 + (int) Math.ceil(Math.random() * 36))) //
-                    .withRepaymentAfterEvery(String.valueOf(1 + (int) Math.ceil(Math.random() * 3))) //
-                    .withRepaymentTypeAsMonth() //
-                    .withinterestRatePerPeriod(String.valueOf(1 + (int) Math.ceil(Math.random() * 4))) //
-                    .withInterestRateFrequencyTypeAsMonths() //
-                    .withAmortizationTypeAsEqualPrincipalPayment() //
-                    .withInterestTypeAsDecliningBalance() //
-                    .currencyDetails("0", "100").build(null);
-
-            loanProducts[i] = new LoanTransactionHelper(this.requestSpec, this.responseSpec).getLoanProductId(loanProductJSON);
-        }
-
-        // Select anyone of the loan products at random
-        final Integer loanProductID = loanProducts[(int) Math.floor(Math.random() * (loansCount - 1))];
-
-        final List<BatchRequest> batchRequests = new ArrayList<>();
-
-        // Select a few clients from created group at random
-        Integer selClientsCount = (int) Math.ceil(Math.random() * clientsCount) + 2;
-        for (int i = 0; i < selClientsCount; i++) {
-            BatchRequest br = BatchHelper.applyLoanRequest((long) selClientsCount, null, loanProductID);
-            br.setBody(br.getBody().replace("$.clientId", String.valueOf(clientIDs[(int) Math.floor(Math.random() * (clientsCount - 1))])));
-            batchRequests.add(br);
-        }
-
-        // Send the request to Batch - API
-        final String jsonifiedRequest = BatchHelper.toJsonString(batchRequests);
-
-        final List<BatchResponse> response = BatchHelper.postBatchRequestsWithoutEnclosingTransaction(this.requestSpec, this.responseSpec,
-                jsonifiedRequest);
-
-        // Verify that each loan has been applied successfully
-        for (BatchResponse res : response) {
-            Assert.assertEquals("Verify Status Code 200", 200L, (long) res.getStatusCode());
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java
deleted file mode 100644
index d923ee5..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.CenterDomain;
-import org.apache.fineract.integrationtests.common.CenterHelper;
-import org.apache.fineract.integrationtests.common.OfficeHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.organisation.StaffHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class CenterIntegrationTest {
-
-    private RequestSpecification requestSpec;
-    private ResponseSpecification responseSpec;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Test
-    public void testBasicCenterCreation() {
-        int officeId = new OfficeHelper(requestSpec, responseSpec).createOffice("01 July 2007");
-
-        String name = "TestBasicCreation" + new Timestamp(new java.util.Date().getTime());
-        int resourceId = CenterHelper.createCenter(name, officeId, requestSpec, responseSpec);
-        CenterDomain center = CenterHelper.retrieveByID(resourceId, requestSpec, responseSpec);
-
-        Assert.assertNotNull(center);
-        Assert.assertTrue(center.getName().equals(name));
-        Assert.assertTrue(center.getOfficeId() == officeId);
-        Assert.assertTrue(center.isActive() == false);
-
-        // Test retrieval by listing all centers
-        int id = CenterHelper.listCenters(requestSpec, responseSpec).get(0).getId();
-        Assert.assertTrue(id > 0);
-
-        CenterDomain retrievedCenter = CenterHelper.retrieveByID(id, requestSpec, responseSpec);
-        Assert.assertNotNull(retrievedCenter);
-        Assert.assertNotNull(retrievedCenter.getName());
-        Assert.assertNotNull(retrievedCenter.getHierarchy());
-        Assert.assertNotNull(retrievedCenter.getOfficeName());
-
-    }
-
-    @Test
-    public void testFullCenterCreation() {
-
-        int officeId = new OfficeHelper(requestSpec, responseSpec).createOffice("01 July 2007");
-        String name = "TestFullCreation" + new Timestamp(new java.util.Date().getTime());
-        String externalId = Utils.randomStringGenerator("ID_", 7, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-        int staffId = StaffHelper.createStaff(requestSpec, responseSpec);
-        int[] groupMembers = generateGroupMembers(3, officeId);
-        int resourceId = CenterHelper.createCenter(name, officeId, externalId, staffId, groupMembers, requestSpec, responseSpec);
-        CenterDomain center = CenterHelper.retrieveByID(resourceId, requestSpec, responseSpec);
-
-        Assert.assertNotNull(center);
-        Assert.assertTrue(center.getName().equals(name));
-        Assert.assertTrue(center.getOfficeId() == officeId);
-        Assert.assertTrue(center.getExternalId().equals(externalId));
-        Assert.assertTrue(center.getStaffId() == staffId);
-        Assert.assertTrue(center.isActive() == false);
-        Assert.assertArrayEquals(center.getGroupMembers(), groupMembers);
-    }
-
-    @Test
-    public void testListCenters() {
-        ArrayList<CenterDomain> paginatedList = CenterHelper.paginatedListCenters(requestSpec, responseSpec);
-        ArrayList<CenterDomain> list = CenterHelper.listCenters(requestSpec, responseSpec);
-
-        Assert.assertNotNull(paginatedList);
-        Assert.assertNotNull(list);
-        Assert.assertTrue(Arrays.equals(paginatedList.toArray(new CenterDomain[paginatedList.size()]),
-                list.toArray(new CenterDomain[list.size()])));
-    }
-
-    @Test
-    public void testVoidCenterRetrieval() {
-        ArrayList<CenterDomain> arr = CenterHelper.listCenters(requestSpec, responseSpec);
-        int id = arr.get(arr.size() - 1).getId() + 1;
-        ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(404).build();
-        CenterDomain center = CenterHelper.retrieveByID(id, requestSpec, responseSpec);
-        Assert.assertNotNull(center);
-    }
-
-    @SuppressWarnings({ "rawtypes", "unchecked" })
-    @Test
-    public void testCenterUpdate() {
-        int officeId = new OfficeHelper(requestSpec, responseSpec).createOffice("01 July 2007");
-        String name = "TestFullCreation" + new Timestamp(new java.util.Date().getTime());
-        String externalId = Utils.randomStringGenerator("ID_", 7, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-        int staffId = StaffHelper.createStaff(requestSpec, responseSpec);
-        int[] groupMembers = generateGroupMembers(3, officeId);
-        int resourceId = CenterHelper.createCenter(name, officeId, externalId, staffId, groupMembers, requestSpec, responseSpec);
-
-        String newName = "TestCenterUpdateNew" + new Timestamp(new java.util.Date().getTime());
-        String newExternalId = Utils.randomStringGenerator("newID_", 7, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-        int newStaffId = StaffHelper.createStaff(requestSpec, responseSpec);
-        int[] associateGroupMembers = generateGroupMembers(2, officeId);
-
-        int[] associateResponse = CenterHelper.associateGroups(resourceId, associateGroupMembers, requestSpec, responseSpec);
-        Arrays.sort(associateResponse);
-        Arrays.sort(associateGroupMembers);
-        Assert.assertArrayEquals(associateResponse, associateGroupMembers);
-
-        int[] newGroupMembers = new int[5];
-        for (int i = 0; i < 5; i++) {
-            if (i < 3) {
-                newGroupMembers[i] = groupMembers[i];
-            } else {
-                newGroupMembers[i] = associateGroupMembers[i % 3];
-            }
-        }
-
-        HashMap request = new HashMap();
-        request.put("name", newName);
-        request.put("externalId", newExternalId);
-        request.put("staffId", newStaffId);
-        HashMap response = CenterHelper.updateCenter(resourceId, request, requestSpec, responseSpec);
-        Assert.assertNotNull(response);
-        Assert.assertEquals(newName, response.get("name"));
-        Assert.assertEquals(newExternalId, response.get("externalId"));
-        Assert.assertEquals(newStaffId, response.get("staffId"));
-
-        CenterDomain center = CenterHelper.retrieveByID(resourceId, requestSpec, responseSpec);
-        Assert.assertNotNull(center);
-        Assert.assertEquals(newName, center.getName());
-        Assert.assertEquals(newExternalId, center.getExternalId());
-        Assert.assertEquals((Integer)newStaffId, center.getStaffId());
-        Assert.assertArrayEquals(newGroupMembers, center.getGroupMembers());
-    }
-
-    @Test
-    public void testCenterDeletion() {
-        int officeId = new OfficeHelper(requestSpec, responseSpec).createOffice("01 July 2007");
-        String name = "TestBasicCreation" + new Timestamp(new java.util.Date().getTime());
-        int resourceId = CenterHelper.createCenter(name, officeId, requestSpec, responseSpec);
-
-        CenterHelper.deleteCenter(resourceId, requestSpec, responseSpec);
-        ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(404).build();
-        CenterDomain center = CenterHelper.retrieveByID(resourceId, requestSpec, responseSpec);
-        Assert.assertNotNull(center);
-    }
-
-    private int[] generateGroupMembers(int size, int officeId) {
-        int[] groupMembers = new int[size];
-        for (int i = 0; i < groupMembers.length; i++) {
-            final HashMap<String, String> map = new HashMap<>();
-            map.put("officeId", "" + officeId);
-            map.put("name", Utils.randomStringGenerator("Group_Name_", 5));
-            map.put("externalId", Utils.randomStringGenerator("ID_", 7, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
-            map.put("dateFormat", "dd MMMM yyyy");
-            map.put("locale", "en");
-            map.put("active", "true");
-            map.put("activationDate", "04 March 2011");
-
-            groupMembers[i] = Utils.performServerPost(requestSpec, responseSpec, "/fineract-provider/api/v1/groups?"
-                    + Utils.TENANT_IDENTIFIER, new Gson().toJson(map), "groupId");
-        }
-        return groupMembers;
-    }
-
-    @Test
-    public void testStaffAssignmentDuringCenterCreation() {
-
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        System.out.println("--------------creating first staff with id-------------" + staffId);
-        Assert.assertNotNull(staffId);
-
-        int centerWithStaffId = CenterHelper.createCenterWithStaffId(this.requestSpec, this.responseSpec, staffId);
-        CenterDomain center = CenterHelper.retrieveByID(centerWithStaffId, requestSpec, responseSpec);
-        Assert.assertNotNull(center);
-        Assert.assertTrue(center.getId() == centerWithStaffId);
-        Assert.assertTrue(center.getStaffId() == staffId);
-        Assert.assertTrue(center.isActive() == true);
-    }
-
-    @Test
-    public void testAssignStaffToCenter() {
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        System.out.println("--------------creating first staff with id-------------" + staffId);
-        Assert.assertNotNull(staffId);
-
-        Integer groupID = CenterHelper.createCenter(this.requestSpec, this.responseSpec);
-        CenterHelper.verifyCenterCreatedOnServer(this.requestSpec, this.responseSpec, groupID);
-
-        HashMap assignStaffToCenterResponseMap = (HashMap) CenterHelper.assignStaff(this.requestSpec, this.responseSpec, groupID.toString(),
-                staffId.longValue());
-        assertEquals("Verify assigned staff id is the same as id sent", assignStaffToCenterResponseMap.get("staffId"), staffId);
-
-        CenterDomain center = CenterHelper.retrieveByID(groupID, requestSpec, responseSpec);
-        Assert.assertNotNull(center);
-        Assert.assertTrue(center.getId() == groupID);
-        Assert.assertTrue(center.getStaffId() == staffId);
-
-    }
-
-    @Test
-    public void testUnassignStaffToCenter() {
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        System.out.println("--------------creating first staff with id-------------" + staffId);
-        Assert.assertNotNull(staffId);
-
-        Integer groupID = CenterHelper.createCenter(this.requestSpec, this.responseSpec);
-        CenterHelper.verifyCenterCreatedOnServer(this.requestSpec, this.responseSpec, groupID);
-        
-        HashMap assignStaffToCenterResponseMap = (HashMap) CenterHelper.assignStaff(this.requestSpec, this.responseSpec, groupID.toString(),
-                staffId.longValue());
-        assertEquals("Verify assigned staff id is the same as id sent", assignStaffToCenterResponseMap.get("staffId"), staffId);
-        CenterDomain centerWithStaffAssigned = CenterHelper.retrieveByID(groupID, requestSpec, responseSpec);
-        Assert.assertNotNull(centerWithStaffAssigned);
-        Assert.assertTrue(centerWithStaffAssigned.getId() == groupID);
-        Assert.assertTrue(centerWithStaffAssigned.getStaffId() == staffId);
-        
-        HashMap unassignStaffToCenterResponseMap = (HashMap) CenterHelper.unassignStaff(this.requestSpec, this.responseSpec, groupID.toString(),
-                staffId.longValue());
-        assertEquals("Verify staffId is null after unassigning ", unassignStaffToCenterResponseMap.get("staffId"), null);
-        CenterDomain centerWithStaffUnssigned = CenterHelper.retrieveByID(groupID, requestSpec, responseSpec);
-        Assert.assertNotNull(centerWithStaffUnssigned);
-        Assert.assertTrue(centerWithStaffUnssigned.getId() == groupID);
-        Assert.assertTrue(centerWithStaffUnssigned.getStaffId() == null);
-        
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ChargesTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ChargesTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ChargesTest.java
deleted file mode 100644
index d441401..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ChargesTest.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.charges.ChargesHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes" })
-public class ChargesTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Test
-    public void testChargesForLoans() {
-
-        // Retrieving all Charges
-        ArrayList<HashMap> allChargesData = ChargesHelper.getCharges(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(allChargesData);
-
-        // Testing Creation, Updation and Deletion of Disbursement Charge
-        final Integer disbursementChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getLoanDisbursementJSON());
-        Assert.assertNotNull(disbursementChargeId);
-
-        // Updating Charge Amount
-        HashMap changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, disbursementChargeId,
-                ChargesHelper.getModifyChargeJSON());
-
-        HashMap chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, disbursementChargeId);
-        Assert.assertEquals("Verifying Charge after Modification", chargeDataAfterChanges.get("amount"), changes.get("amount"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, disbursementChargeId,
-                ChargesHelper.getModifyChargeAsPecentageAmountJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, disbursementChargeId);
-
-        HashMap chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargePaymentMode");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargePaymentMode"));
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, disbursementChargeId,
-                ChargesHelper.getModifyChargeAsPecentageLoanAmountWithInterestJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, disbursementChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, disbursementChargeId,
-                ChargesHelper.getModifyChargeAsPercentageInterestJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, disbursementChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        Integer chargeIdAfterDeletion = ChargesHelper.deleteCharge(this.responseSpec, this.requestSpec, disbursementChargeId);
-        Assert.assertEquals("Verifying Charge ID after deletion", disbursementChargeId, chargeIdAfterDeletion);
-
-        // Testing Creation, Updation and Deletion of Specified due date Charge
-        final Integer specifiedDueDateChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateJSON());
-        Assert.assertNotNull(specifiedDueDateChargeId);
-
-        // Updating Charge Amount
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, specifiedDueDateChargeId,
-                ChargesHelper.getModifyChargeJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, specifiedDueDateChargeId);
-        Assert.assertEquals("Verifying Charge after Modification", chargeDataAfterChanges.get("amount"), changes.get("amount"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, specifiedDueDateChargeId,
-                ChargesHelper.getModifyChargeAsPecentageAmountJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, specifiedDueDateChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargePaymentMode");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargePaymentMode"));
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, specifiedDueDateChargeId,
-                ChargesHelper.getModifyChargeAsPecentageLoanAmountWithInterestJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, specifiedDueDateChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, specifiedDueDateChargeId,
-                ChargesHelper.getModifyChargeAsPercentageInterestJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, specifiedDueDateChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        chargeIdAfterDeletion = ChargesHelper.deleteCharge(this.responseSpec, this.requestSpec, specifiedDueDateChargeId);
-        Assert.assertEquals("Verifying Charge ID after deletion", specifiedDueDateChargeId, chargeIdAfterDeletion);
-
-        // Testing Creation, Updation and Deletion of Installment Fee Charge
-        final Integer installmentFeeChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getLoanInstallmentFeeJSON());
-
-        // Updating Charge Amount
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, installmentFeeChargeId,
-                ChargesHelper.getModifyChargeJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, installmentFeeChargeId);
-        Assert.assertEquals("Verifying Charge after Modification", chargeDataAfterChanges.get("amount"), changes.get("amount"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, installmentFeeChargeId,
-                ChargesHelper.getModifyChargeAsPecentageAmountJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, installmentFeeChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargePaymentMode");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargePaymentMode"));
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, installmentFeeChargeId,
-                ChargesHelper.getModifyChargeAsPecentageLoanAmountWithInterestJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, installmentFeeChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, installmentFeeChargeId,
-                ChargesHelper.getModifyChargeAsPercentageInterestJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, installmentFeeChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        chargeIdAfterDeletion = ChargesHelper.deleteCharge(this.responseSpec, this.requestSpec, installmentFeeChargeId);
-        Assert.assertEquals("Verifying Charge ID after deletion", installmentFeeChargeId, chargeIdAfterDeletion);
-
-        // Testing Creation, Updation and Deletion of Overdue Installment Fee
-        // Charge
-        final Integer overdueFeeChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getLoanOverdueFeeJSON());
-        Assert.assertNotNull(overdueFeeChargeId);
-
-        // Updating Charge Amount
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, overdueFeeChargeId, ChargesHelper.getModifyChargeJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, overdueFeeChargeId);
-        Assert.assertEquals("Verifying Charge after Modification", chargeDataAfterChanges.get("amount"), changes.get("amount"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, overdueFeeChargeId,
-                ChargesHelper.getModifyChargeAsPecentageAmountJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, overdueFeeChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargePaymentMode");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargePaymentMode"));
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, overdueFeeChargeId,
-                ChargesHelper.getModifyChargeAsPecentageLoanAmountWithInterestJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, overdueFeeChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, overdueFeeChargeId,
-                ChargesHelper.getModifyChargeAsPercentageInterestJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, overdueFeeChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, overdueFeeChargeId,
-                ChargesHelper.getModifyChargeFeeFrequencyAsYearsJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, overdueFeeChargeId);
-
-        chargeChangedData = (HashMap) chargeDataAfterChanges.get("feeFrequency");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("feeFrequency"));
-
-        chargeIdAfterDeletion = ChargesHelper.deleteCharge(this.responseSpec, this.requestSpec, overdueFeeChargeId);
-        Assert.assertEquals("Verifying Charge ID after deletion", overdueFeeChargeId, chargeIdAfterDeletion);
-    }
-
-    @Test
-    public void testChargesForSavings() {
-
-        // Testing Creation, Updation and Deletion of Specified due date Charge
-        final Integer specifiedDueDateChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsSpecifiedDueDateJSON());
-        Assert.assertNotNull(specifiedDueDateChargeId);
-
-        // Updating Charge Amount
-        HashMap changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, specifiedDueDateChargeId,
-                ChargesHelper.getModifyChargeJSON());
-
-        HashMap chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, specifiedDueDateChargeId);
-        Assert.assertEquals("Verifying Charge after Modification", chargeDataAfterChanges.get("amount"), changes.get("amount"));
-
-        Integer chargeIdAfterDeletion = ChargesHelper.deleteCharge(this.responseSpec, this.requestSpec, specifiedDueDateChargeId);
-        Assert.assertEquals("Verifying Charge ID after deletion", specifiedDueDateChargeId, chargeIdAfterDeletion);
-
-        // Testing Creation, Updation and Deletion of Savings Activation Charge
-        final Integer savingsActivationChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsActivationFeeJSON());
-        Assert.assertNotNull(savingsActivationChargeId);
-
-        // Updating Charge Amount
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, savingsActivationChargeId,
-                ChargesHelper.getModifyChargeJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, savingsActivationChargeId);
-        Assert.assertEquals("Verifying Charge after Modification", chargeDataAfterChanges.get("amount"), changes.get("amount"));
-
-        chargeIdAfterDeletion = ChargesHelper.deleteCharge(this.responseSpec, this.requestSpec, savingsActivationChargeId);
-        Assert.assertEquals("Verifying Charge ID after deletion", savingsActivationChargeId, chargeIdAfterDeletion);
-
-        // Testing Creation, Updation and Deletion of Charge for Withdrawal Fee
-        final Integer withdrawalFeeChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsWithdrawalFeeJSON());
-        Assert.assertNotNull(withdrawalFeeChargeId);
-
-        // Updating Charge-Calculation-Type to Withdrawal-Fee
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, withdrawalFeeChargeId,
-                ChargesHelper.getModifyWithdrawalFeeSavingsChargeJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, withdrawalFeeChargeId);
-
-        HashMap chargeChangedData = (HashMap) chargeDataAfterChanges.get("chargeCalculationType");
-        Assert.assertEquals("Verifying Charge after Modification", chargeChangedData.get("id"), changes.get("chargeCalculationType"));
-
-        chargeIdAfterDeletion = ChargesHelper.deleteCharge(this.responseSpec, this.requestSpec, withdrawalFeeChargeId);
-        Assert.assertEquals("Verifying Charge ID after deletion", withdrawalFeeChargeId, chargeIdAfterDeletion);
-
-        // Testing Creation, Updation and Deletion of Charge for Annual Fee
-        final Integer annualFeeChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsAnnualFeeJSON());
-        Assert.assertNotNull(annualFeeChargeId);
-
-        // Updating Charge Amount
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, annualFeeChargeId, ChargesHelper.getModifyChargeJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, annualFeeChargeId);
-        Assert.assertEquals("Verifying Charge after Modification", chargeDataAfterChanges.get("amount"), changes.get("amount"));
-
-        chargeIdAfterDeletion = ChargesHelper.deleteCharge(this.responseSpec, this.requestSpec, annualFeeChargeId);
-        Assert.assertEquals("Verifying Charge ID after deletion", annualFeeChargeId, chargeIdAfterDeletion);
-
-        // Testing Creation, Updation and Deletion of Charge for Monthly Fee
-        final Integer monthlyFeeChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsMonthlyFeeJSON());
-        Assert.assertNotNull(monthlyFeeChargeId);
-
-        // Updating Charge Amount
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, monthlyFeeChargeId, ChargesHelper.getModifyChargeJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, monthlyFeeChargeId);
-        Assert.assertEquals("Verifying Charge after Modification", chargeDataAfterChanges.get("amount"), changes.get("amount"));
-
-        chargeIdAfterDeletion = ChargesHelper.deleteCharge(this.responseSpec, this.requestSpec, monthlyFeeChargeId);
-        Assert.assertEquals("Verifying Charge ID after deletion", monthlyFeeChargeId, chargeIdAfterDeletion);
-
-        // Testing Creation, Updation and Deletion of Charge for Overdraft Fee
-        final Integer overdraftFeeChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsOverdraftFeeJSON());
-        Assert.assertNotNull(overdraftFeeChargeId);
-
-        // Updating Charge Amount
-        changes = ChargesHelper.updateCharges(this.requestSpec, this.responseSpec, overdraftFeeChargeId,
-                ChargesHelper.getModifyChargeJSON());
-
-        chargeDataAfterChanges = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, overdraftFeeChargeId);
-        Assert.assertEquals("Verifying Charge after Modification", chargeDataAfterChanges.get("amount"), changes.get("amount"));
-
-        chargeIdAfterDeletion = ChargesHelper.deleteCharge(this.responseSpec, this.requestSpec, overdraftFeeChargeId);
-        Assert.assertEquals("Verifying Charge ID after deletion", overdraftFeeChargeId, chargeIdAfterDeletion);
-    }
-}


[13/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java
deleted file mode 100755
index 515eb5a..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java
+++ /dev/null
@@ -1,832 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.math.BigDecimal;
-import java.text.DateFormat;
-import java.text.DecimalFormat;
-import java.text.DecimalFormatSymbols;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.charges.ChargesHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsStatusChecker;
-import org.joda.time.LocalDate;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Client Savings Integration Test for checking Savings Application.
- */
-@SuppressWarnings({ "rawtypes", "unused" })
-public class ClientSavingsIntegrationTest {
-
-    public static final String DEPOSIT_AMOUNT = "2000";
-    public static final String WITHDRAW_AMOUNT = "1000";
-    public static final String WITHDRAW_AMOUNT_ADJUSTED = "500";
-    public static final String MINIMUM_OPENING_BALANCE = "1000.0";
-    public static final String ACCOUNT_TYPE_INDIVIDUAL = "INDIVIDUAL";
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private SavingsAccountHelper savingsAccountHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Test
-    public void testSavingsAccount() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final boolean allowOverdraft = false;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap modifications = this.savingsAccountHelper.updateSavingsAccount(clientID, savingsProductID, savingsId,
-                ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertTrue(modifications.containsKey("submittedOnDate"));
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        final HashMap summaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        this.savingsAccountHelper.calculateInterestForSavings(savingsId);
-        HashMap summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        assertEquals(summaryBefore, summary);
-
-        this.savingsAccountHelper.postInterestForSavings(savingsId);
-        summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        Assert.assertFalse(summaryBefore.equals(summary));
-
-        final Object savingsInterest = this.savingsAccountHelper.getSavingsInterest(savingsId);
-        // verifySavingsInterest(savingsInterest);
-
-    }
-
-    @Test
-    public void testSavingsAccountWithMinBalanceForInterestCalculation() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-        final String minBalanceForInterestCalculation = "5000";
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final boolean allowOverdraft = false;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap modifications = this.savingsAccountHelper.updateSavingsAccount(clientID, savingsProductID, savingsId,
-                ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertTrue(modifications.containsKey("submittedOnDate"));
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        final HashMap summaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        this.savingsAccountHelper.calculateInterestForSavings(savingsId);
-        HashMap summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        assertEquals(summaryBefore, summary);
-
-        this.savingsAccountHelper.postInterestForSavings(savingsId);
-        summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        assertEquals(summaryBefore, summary);
-
-        final Object savingsInterest = this.savingsAccountHelper.getSavingsInterest(savingsId);
-        Assert.assertNull(savingsInterest);
-
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccount_CLOSE_APPLICATION() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        final ResponseSpecification errorResponse = new ResponseSpecBuilder().expectStatusCode(400).build();
-        final SavingsAccountHelper validationErrorHelper = new SavingsAccountHelper(this.requestSpec, errorResponse);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = "1000.0";
-        final String enforceMinRequiredBalance = "true";
-        final boolean allowOverdraft = false;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        Calendar todaysDate = Calendar.getInstance();
-        final String CLOSEDON_DATE = dateFormat.format(todaysDate.getTime());
-        String withdrawBalance = "false";
-        ArrayList<HashMap> savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.closeSavingsAccountAndGetBackRequiredField(
-                savingsId, withdrawBalance, CommonConstants.RESPONSE_ERROR, CLOSEDON_DATE);
-        assertEquals("validation.msg.savingsaccount.close.results.in.balance.not.zero",
-                savingsAccountErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        withdrawBalance = "true";
-        savingsStatusHashMap = this.savingsAccountHelper.closeSavingsAccount(savingsId, withdrawBalance);
-        SavingsStatusChecker.verifySavingsAccountIsClosed(savingsStatusHashMap);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccount_WITH_ENFORCE_MIN_BALANCE() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        final ResponseSpecification errorResponse = new ResponseSpecBuilder().expectStatusCode(403).build();
-        final SavingsAccountHelper validationErrorHelper = new SavingsAccountHelper(this.requestSpec, errorResponse);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = "1500.0";
-        final String openningBalance = "1600";
-        final String enforceMinRequiredBalance = "true";
-        final boolean allowOverdraft = false;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, openningBalance,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        final Integer savingsActivationChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsActivationFeeJSON());
-        Assert.assertNotNull(savingsActivationChargeId);
-
-        this.savingsAccountHelper.addChargesForSavings(savingsId, savingsActivationChargeId);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        HashMap summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        Float balance = new Float(openningBalance);
-        Float chargeAmt = 100f;
-        balance -= chargeAmt;
-        assertEquals("Verifying opening Balance", balance, summary.get("accountBalance"));
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy");
-        Calendar todaysDate = Calendar.getInstance();
-        final String TRANSACTION_DATE = dateFormat.format(todaysDate.getTime());
-        final String withdrawAmt = "800";
-        ArrayList<HashMap> savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.withdrawalFromSavingsAccount(savingsId,
-                withdrawAmt, TRANSACTION_DATE, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.insufficient.account.balance",
-                savingsAccountErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        Integer depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsId, DEPOSIT_AMOUNT,
-                TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        HashMap depositTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, depositTransactionId);
-        balance += new Float(DEPOSIT_AMOUNT);
-        assertEquals("Verifying Deposit Amount", new Float(DEPOSIT_AMOUNT), depositTransaction.get("amount"));
-        assertEquals("Verifying Balance after Deposit", balance, depositTransaction.get("runningBalance"));
-
-        Integer withdrawTransactionId = (Integer) this.savingsAccountHelper.withdrawalFromSavingsAccount(savingsId, withdrawAmt,
-                TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        HashMap withdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, withdrawTransactionId);
-        balance -= new Float(withdrawAmt);
-        assertEquals("Verifying Withdrawal Amount", new Float(withdrawAmt), withdrawTransaction.get("amount"));
-        assertEquals("Verifying Balance after Withdrawal", balance, withdrawTransaction.get("runningBalance"));
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccount_DELETE_APPLICATION() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        SavingsAccountHelper savingsAccountHelperValidationError = new SavingsAccountHelper(this.requestSpec,
-                new ResponseSpecBuilder().build());
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final boolean allowOverdraft = false;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        List<HashMap> error1 = (List<HashMap>) savingsAccountHelperValidationError.deleteSavingsApplication(savingsId,
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("validation.msg.savingsaccount.delete.not.in.submittedandpendingapproval.state",
-                error1.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        savingsStatusHashMap = this.savingsAccountHelper.undoApproval(savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        this.savingsAccountHelper.deleteSavingsApplication(savingsId, CommonConstants.RESPONSE_RESOURCE_ID);
-
-        List<HashMap> error = savingsAccountHelperValidationError.getSavingsCollectionAttribute(savingsId, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.saving.account.id.invalid", error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccount_REJECT_APPLICATION() {
-
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        SavingsAccountHelper savingsAccountHelperValidationError = new SavingsAccountHelper(this.requestSpec,
-                new ResponseSpecBuilder().build());
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final boolean allowOverdraft = false;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        List<HashMap> error1 = savingsAccountHelperValidationError.rejectApplicationWithErrorCode(savingsId,
-                SavingsAccountHelper.CREATED_DATE_PLUS_ONE);
-        assertEquals("validation.msg.savingsaccount.reject.not.in.submittedandpendingapproval.state",
-                error1.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        savingsStatusHashMap = this.savingsAccountHelper.undoApproval(savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        error1 = savingsAccountHelperValidationError.rejectApplicationWithErrorCode(savingsId, SavingsAccountHelper.getFutureDate());
-        assertEquals("validation.msg.savingsaccount.reject.cannot.be.a.future.date",
-                error1.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error1 = savingsAccountHelperValidationError.rejectApplicationWithErrorCode(savingsId, SavingsAccountHelper.CREATED_DATE_MINUS_ONE);
-        assertEquals("validation.msg.savingsaccount.reject.cannot.be.before.submittal.date",
-                error1.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        savingsStatusHashMap = this.savingsAccountHelper.rejectApplication(savingsId);
-        SavingsStatusChecker.verifySavingsIsRejected(savingsStatusHashMap);
-
-    }
-
-    @Test
-    public void testSavingsAccount_WITHDRAW_APPLICATION() {
-
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final boolean allowOverdraft = false;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.withdrawApplication(savingsId);
-        SavingsStatusChecker.verifySavingsIsWithdrawn(savingsStatusHashMap);
-
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccountTransactions() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        SavingsAccountHelper savingsAccountHelperValidationError = new SavingsAccountHelper(this.requestSpec,
-                new ResponseSpecBuilder().build());
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final boolean allowOverdraft = false;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        List<HashMap> error = (List) savingsAccountHelperValidationError.withdrawalFromSavingsAccount(savingsId, "100",
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.account.is.not.active",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error = (List) savingsAccountHelperValidationError.depositToSavingsAccount(savingsId, "100", SavingsAccountHelper.TRANSACTION_DATE,
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.account.is.not.active",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        HashMap summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        Float balance = new Float(MINIMUM_OPENING_BALANCE);
-        assertEquals("Verifying opening Balance", balance, summary.get("accountBalance"));
-
-        Integer depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsId, DEPOSIT_AMOUNT,
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        HashMap depositTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, depositTransactionId);
-        balance += new Float(DEPOSIT_AMOUNT);
-        assertEquals("Verifying Deposit Amount", new Float(DEPOSIT_AMOUNT), depositTransaction.get("amount"));
-        assertEquals("Verifying Balance after Deposit", balance, depositTransaction.get("runningBalance"));
-
-        Integer withdrawTransactionId = (Integer) this.savingsAccountHelper.withdrawalFromSavingsAccount(savingsId, WITHDRAW_AMOUNT,
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        HashMap withdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, withdrawTransactionId);
-        balance -= new Float(WITHDRAW_AMOUNT);
-        assertEquals("Verifying Withdrawal Amount", new Float(WITHDRAW_AMOUNT), withdrawTransaction.get("amount"));
-        assertEquals("Verifying Balance after Withdrawal", balance, withdrawTransaction.get("runningBalance"));
-
-        Integer newWithdrawTransactionId = this.savingsAccountHelper.updateSavingsAccountTransaction(savingsId, withdrawTransactionId,
-                WITHDRAW_AMOUNT_ADJUSTED);
-        HashMap newWithdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, newWithdrawTransactionId);
-        balance = balance + new Float(WITHDRAW_AMOUNT) - new Float(WITHDRAW_AMOUNT_ADJUSTED);
-        assertEquals("Verifying adjusted Amount", new Float(WITHDRAW_AMOUNT_ADJUSTED), newWithdrawTransaction.get("amount"));
-        assertEquals("Verifying Balance after adjust", balance, newWithdrawTransaction.get("runningBalance"));
-        summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        assertEquals("Verifying Adjusted Balance", balance, summary.get("accountBalance"));
-        withdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, withdrawTransactionId);
-        Assert.assertTrue((Boolean) withdrawTransaction.get("reversed"));
-
-        this.savingsAccountHelper.undoSavingsAccountTransaction(savingsId, newWithdrawTransactionId);
-        newWithdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, withdrawTransactionId);
-        Assert.assertTrue((Boolean) newWithdrawTransaction.get("reversed"));
-        summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        balance += new Float(WITHDRAW_AMOUNT_ADJUSTED);
-        assertEquals("Verifying Balance After Undo Transaction", balance, summary.get("accountBalance"));
-
-        error = (List) savingsAccountHelperValidationError.withdrawalFromSavingsAccount(savingsId, "5000",
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.insufficient.account.balance",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error = (List) savingsAccountHelperValidationError.withdrawalFromSavingsAccount(savingsId, "5000",
-                SavingsAccountHelper.getFutureDate(), CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.in.the.future", error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error = (List) savingsAccountHelperValidationError.depositToSavingsAccount(savingsId, "5000", SavingsAccountHelper.getFutureDate(),
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.in.the.future", error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error = (List) savingsAccountHelperValidationError.withdrawalFromSavingsAccount(savingsId, "5000",
-                SavingsAccountHelper.CREATED_DATE_MINUS_ONE, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.before.activation.date",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error = (List) savingsAccountHelperValidationError.depositToSavingsAccount(savingsId, "5000",
-                SavingsAccountHelper.CREATED_DATE_MINUS_ONE, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.before.activation.date",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccountCharges() {
-
-        final ResponseSpecification erroResponseSpec = new ResponseSpecBuilder().build();
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        final SavingsAccountHelper validationErrorHelper = new SavingsAccountHelper(this.requestSpec, erroResponseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final boolean allowOverdraft = false;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
-        Assert.assertNotNull(savingsProductID);
-
-        Assert.assertNotNull(savingsProductID);
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        final Integer withdrawalChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsWithdrawalFeeJSON());
-        Assert.assertNotNull(withdrawalChargeId);
-
-        this.savingsAccountHelper.addChargesForSavings(savingsId, withdrawalChargeId);
-        ArrayList<HashMap> chargesPendingState = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertEquals(1, chargesPendingState.size());
-
-        Integer savingsChargeId = (Integer) chargesPendingState.get(0).get("id");
-        HashMap chargeChanges = this.savingsAccountHelper.updateCharges(savingsChargeId, savingsId);
-        Assert.assertTrue(chargeChanges.containsKey("amount"));
-
-        Integer deletedChargeId = this.savingsAccountHelper.deleteCharge(savingsChargeId, savingsId);
-        assertEquals(savingsChargeId, deletedChargeId);
-
-        chargesPendingState = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertTrue(chargesPendingState == null || chargesPendingState.size() == 0);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        final Integer chargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec, ChargesHelper.getSavingsAnnualFeeJSON());
-        Assert.assertNotNull(chargeId);
-
-        ArrayList<HashMap> charges = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertTrue(charges == null || charges.size() == 0);
-
-        this.savingsAccountHelper.addChargesForSavings(savingsId, chargeId);
-        charges = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertEquals(1, charges.size());
-
-        HashMap savingsChargeForPay = charges.get(0);
-        Integer annualSavingsChargeId = (Integer) savingsChargeForPay.get("id");
-
-        ArrayList<HashMap> savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.inactivateCharge(annualSavingsChargeId,
-                savingsId, CommonConstants.RESPONSE_ERROR);
-        assertEquals("validation.msg.savingsaccountcharge.inactivation.of.charge.not.allowed.when.charge.is.due", savingsAccountErrorData
-                .get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        SimpleDateFormat sdf = new SimpleDateFormat(CommonConstants.dateFormat, Locale.US);
-        Calendar cal = Calendar.getInstance();
-        List dates = (List) savingsChargeForPay.get("dueDate");
-        cal.set(Calendar.YEAR, (Integer) dates.get(0));
-        cal.set(Calendar.MONTH, (Integer) dates.get(1) - 1);
-        cal.set(Calendar.DAY_OF_MONTH, (Integer) dates.get(2));
-        int n = 0;
-        Calendar current = Calendar.getInstance();
-        while (cal.compareTo(current) < 0) {
-            n++;
-            cal.set(Calendar.YEAR, (Integer) dates.get(0) + n);
-        }
-        cal.set(Calendar.YEAR, (Integer) dates.get(0));
-        cal.set(Calendar.MONTH, (Integer) dates.get(1) - 1);
-        cal.set(Calendar.DAY_OF_MONTH, (Integer) dates.get(2));
-
-        for (int i = 1; i <= n; i++) {
-            this.savingsAccountHelper.payCharge((Integer) savingsChargeForPay.get("id"), savingsId,
-                    ((Float) savingsChargeForPay.get("amount")).toString(), sdf.format(cal.getTime()));
-            HashMap paidCharge = this.savingsAccountHelper.getSavingsCharge(savingsId, (Integer) savingsChargeForPay.get("id"));
-            Float expectedValue = (Float) savingsChargeForPay.get("amount") * i;
-            assertEquals(expectedValue, paidCharge.get("amountPaid"));
-            cal.set(Calendar.YEAR, (Integer) dates.get(0) + i);
-        }
-
-        Integer inactivatedChargeId = (Integer) this.savingsAccountHelper.inactivateCharge(annualSavingsChargeId, savingsId,
-                CommonConstants.RESPONSE_RESOURCE_ID);
-        assertEquals("Inactivated Savings Charges Id", annualSavingsChargeId, inactivatedChargeId);
-
-        final Integer monthlyFeechargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsMonthlyFeeJSON());
-        Assert.assertNotNull(monthlyFeechargeId);
-
-        this.savingsAccountHelper.addChargesForSavings(savingsId, monthlyFeechargeId);
-        charges = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertEquals(2, charges.size());
-
-        HashMap savingsChargeForWaive = charges.get(1);
-        final Integer monthlySavingsCharge = (Integer) savingsChargeForWaive.get("id");
-
-        savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.inactivateCharge(monthlySavingsCharge, savingsId,
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("validation.msg.savingsaccountcharge.inactivation.of.charge.not.allowed.when.charge.is.due", savingsAccountErrorData
-                .get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        this.savingsAccountHelper.waiveCharge((Integer) savingsChargeForWaive.get("id"), savingsId);
-        HashMap waiveCharge = this.savingsAccountHelper.getSavingsCharge(savingsId, (Integer) savingsChargeForWaive.get("id"));
-        assertEquals(savingsChargeForWaive.get("amount"), waiveCharge.get("amountWaived"));
-
-        this.savingsAccountHelper.waiveCharge((Integer) savingsChargeForWaive.get("id"), savingsId);
-        waiveCharge = this.savingsAccountHelper.getSavingsCharge(savingsId, (Integer) savingsChargeForWaive.get("id"));
-        BigDecimal totalWaiveAmount = BigDecimal.valueOf(Double.valueOf((Float) savingsChargeForWaive.get("amount")));
-        totalWaiveAmount = totalWaiveAmount.add(totalWaiveAmount);
-        assertEquals(totalWaiveAmount.floatValue(), waiveCharge.get("amountWaived"));
-
-        final Integer weeklyFeeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsWeeklyFeeJSON());
-        Assert.assertNotNull(weeklyFeeId);
-
-        this.savingsAccountHelper.addChargesForSavings(savingsId, weeklyFeeId);
-        charges = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertEquals(3, charges.size());
-
-        savingsChargeForPay = charges.get(2);
-        final Integer weeklySavingsFeeId = (Integer) savingsChargeForPay.get("id");
-
-        savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.inactivateCharge(weeklySavingsFeeId, savingsId,
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("validation.msg.savingsaccountcharge.inactivation.of.charge.not.allowed.when.charge.is.due", savingsAccountErrorData
-                .get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        cal = Calendar.getInstance();
-        dates = (List) savingsChargeForPay.get("dueDate");
-        cal.set(Calendar.YEAR, (Integer) dates.get(0));
-        cal.set(Calendar.MONTH, (Integer) dates.get(1) - 1);
-        cal.set(Calendar.DAY_OF_MONTH, (Integer) dates.get(2));
-
-        // Depositing huge amount as scheduler job deducts the fee amount
-        Integer depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsId, "100000",
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(depositTransactionId);
-
-        this.savingsAccountHelper.payCharge((Integer) savingsChargeForPay.get("id"), savingsId,
-                ((Float) savingsChargeForPay.get("amount")).toString(), sdf.format(cal.getTime()));
-        HashMap paidCharge = this.savingsAccountHelper.getSavingsCharge(savingsId, (Integer) savingsChargeForPay.get("id"));
-        assertEquals(savingsChargeForPay.get("amount"), paidCharge.get("amountPaid"));
-        List nextDueDates = (List) paidCharge.get("dueDate");
-        LocalDate nextDueDate = new LocalDate((Integer) nextDueDates.get(0), (Integer) nextDueDates.get(1), (Integer) nextDueDates.get(2));
-        LocalDate expectedNextDueDate = new LocalDate((Integer) dates.get(0), (Integer) dates.get(1), (Integer) dates.get(2))
-                .plusWeeks((Integer) paidCharge.get("feeInterval"));
-        assertEquals(expectedNextDueDate, nextDueDate);
-    }
-
-    /***
-     * Test case for overdraft account functionality. Open account with zero
-     * balance, perform transactions then post interest and verify posted
-     * interest
-     */
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccountWithOverdraft() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        final ResponseSpecification errorResponse = new ResponseSpecBuilder().expectStatusCode(400).build();
-        final SavingsAccountHelper validationErrorHelper = new SavingsAccountHelper(this.requestSpec, errorResponse);
-
-        /***
-         * Create a client to apply for savings account (overdraft account).
-         */
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-        final String minBalanceForInterestCalculation = null;
-
-        /***
-         * Create savings product with zero opening balance and overdraft
-         * enabled
-         */
-        final String zeroOpeningBalance = "0.0";
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final boolean allowOverdraft = true;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, zeroOpeningBalance,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
-        Assert.assertNotNull(savingsProductID);
-
-        /***
-         * Apply for Savings account
-         */
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap modifications = this.savingsAccountHelper.updateSavingsAccount(clientID, savingsProductID, savingsId,
-                ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertTrue(modifications.containsKey("submittedOnDate"));
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        /***
-         * Approve the savings account
-         */
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        todaysDate.set(Calendar.DAY_OF_MONTH, 1);
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final Integer lastDayOfMonth = todaysDate.getActualMaximum(Calendar.DAY_OF_MONTH);
-        todaysDate.set(Calendar.DAY_OF_MONTH, lastDayOfMonth);
-        final String TRANSACTION_DATE = dateFormat.format(todaysDate.getTime());
-
-        /***
-         * Activate the application and verify account status
-         * 
-         * @param activationDate
-         *            this value is every time first day of previous month
-         */
-        savingsStatusHashMap = activateSavingsAccount(savingsId, ACTIVATION_DATE);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        /***
-         * Verify the account summary
-         */
-        final HashMap summaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        this.savingsAccountHelper.calculateInterestForSavings(savingsId);
-        HashMap summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        assertEquals(summaryBefore, summary);
-
-        Float balance = Float.valueOf(zeroOpeningBalance);
-
-        /***
-         * Perform withdraw transaction, verify account balance(account balance
-         * will go to negative as no deposits are there prior to this
-         * transaction)
-         */
-        Integer withdrawTransactionId = (Integer) this.savingsAccountHelper.withdrawalFromSavingsAccount(savingsId, WITHDRAW_AMOUNT,
-                ACTIVATION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        HashMap withdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, withdrawTransactionId);
-        balance -= new Float(WITHDRAW_AMOUNT);
-        assertEquals("Verifying Withdrawal Amount", new Float(WITHDRAW_AMOUNT), withdrawTransaction.get("amount"));
-        assertEquals("Verifying Balance after Withdrawal", balance, withdrawTransaction.get("runningBalance"));
-
-        /***
-         * Perform Deposit transaction on last day of month and verify account
-         * balance.
-         * 
-         * @param transactionDate
-         *            this value is every time last day of previous month
-         */
-        Integer depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsId, DEPOSIT_AMOUNT,
-                TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        HashMap depositTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, depositTransactionId);
-        balance += new Float(DEPOSIT_AMOUNT);
-        assertEquals("Verifying Deposit Amount", new Float(DEPOSIT_AMOUNT), depositTransaction.get("amount"));
-        assertEquals("Verifying Balance after Deposit", balance, depositTransaction.get("runningBalance"));
-
-        /***
-         * Perform Post interest transaction and verify the posted amount
-         */
-        this.savingsAccountHelper.postInterestForSavings(savingsId);
-        HashMap accountDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
-        summary = (HashMap) accountDetails.get("summary");
-        Float actualInterestPosted = Float.valueOf(summary.get("totalInterestPosted").toString());
-
-        /***
-         * Calculate expected interest to be posted, interest should be posted
-         * for one day only because deposit transaction happened on last day of
-         * month before this account balance is negative.
-         */
-        final Float nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
-        final HashMap interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
-        final Integer daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
-        double interestRateInFraction = (nominalAnnualInterest / 100);
-        double perDay = (double) 1 / (daysInYear);
-        double interestPerDay = interestRateInFraction * perDay;
-        Float interestPosted = (float) (interestPerDay * balance * 1);
-
-        /***
-         * Apply rounding on interestPosted, actualInterestPosted and verify
-         * both are same
-         */
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern("#.###");
-        interestPosted = new Float(decimalFormat.format(interestPosted));
-        actualInterestPosted = new Float(decimalFormat.format(actualInterestPosted));
-        assertEquals("Verifying interest posted", interestPosted, actualInterestPosted);
-
-        todaysDate = Calendar.getInstance();
-        final String CLOSEDON_DATE = dateFormat.format(todaysDate.getTime());
-        String withdrawBalance = "false";
-        ArrayList<HashMap> savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.closeSavingsAccountAndGetBackRequiredField(
-                savingsId, withdrawBalance, CommonConstants.RESPONSE_ERROR, CLOSEDON_DATE);
-        assertEquals("validation.msg.savingsaccount.close.results.in.balance.not.zero",
-                savingsAccountErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-    }
-
-    private HashMap activateSavingsAccount(final Integer savingsId, final String activationDate) {
-        final HashMap status = this.savingsAccountHelper.activateSavingsAccount(savingsId, activationDate);
-        return status;
-    }
-
-    private Integer createSavingsProduct(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String minOpenningBalance, String minBalanceForInterestCalculation, String minRequiredBalance,
-            String enforceMinRequiredBalance, final boolean allowOverdraft) {
-        System.out.println("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------");
-        SavingsProductHelper savingsProductHelper = new SavingsProductHelper();
-        if (allowOverdraft) {
-            final String overDraftLimit = "2000.0";
-            savingsProductHelper = savingsProductHelper.withOverDraft(overDraftLimit);
-        }
-
-        final String savingsProductJSON = savingsProductHelper
-                //
-                .withInterestCompoundingPeriodTypeAsDaily()
-                //
-                .withInterestPostingPeriodTypeAsMonthly()
-                //
-                .withInterestCalculationPeriodTypeAsDailyBalance()
-                //
-                .withMinBalanceForInterestCalculation(minBalanceForInterestCalculation)
-                //
-                .withMinRequiredBalance(minRequiredBalance).withEnforceMinRequiredBalance(enforceMinRequiredBalance)
-                .withMinimumOpenningBalance(minOpenningBalance).build();
-        return SavingsProductHelper.createSavingsProduct(savingsProductJSON, requestSpec, responseSpec);
-    }
-
-    /*
-     * private void verifySavingsInterest(final Object savingsInterest) {
-     * System.out.println(
-     * "--------------------VERIFYING THE BALANCE, INTEREST --------------------------"
-     * );
-     * 
-     * assertEquals("Verifying Interest Calculation", new Float("238.3399"),
-     * savingsInterest); }
-     */
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientStatusChecker.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientStatusChecker.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientStatusChecker.java
deleted file mode 100644
index 12863bb..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientStatusChecker.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.HashMap;
-
-public class ClientStatusChecker {
-
-    public static void verifyClientIsActive(final HashMap<String, Object> clientStatusHashMap) {
-        assertEquals((int) clientStatusHashMap.get("id"), 300);
-    }
-
-    public static void verifyClientClosed(final HashMap<String, Object> clientStatusHashMap) {
-        System.out.println("\n-------------------------------------- VERIFYING CLIENT IS CLOSED ------------------------------------");
-        assertEquals((int) clientStatusHashMap.get("id"), 600);
-        System.out.println("Client Status:" + clientStatusHashMap + "\n");
-    }
-
-    public static void verifyClientPending(final HashMap<String, Object> clientStatusHashMap) {
-        System.out.println("\n-------------------------------------- VERIFYING CLIENT IS PENDING ------------------------------------");
-        assertEquals((int) clientStatusHashMap.get("id"), 100);
-        System.out.println("Client Status:" + clientStatusHashMap + "\n");
-    }
-
-    public static void verifyClientRejected(final HashMap<String, Object> clientStatusHashMap) {
-        System.out.println("\n-------------------------------------- VERIFYING CLIENT IS REJECTED ------------------------------------");
-        assertEquals((int) clientStatusHashMap.get("id"), 700);
-        System.out.println("Client Status:" + clientStatusHashMap + "\n");
-    }
-
-    public static void verifyClientActiavted(final HashMap<String, Object> clientStatusHashMap) {
-        System.out.println("\n-------------------------------------- VERIFYING CLIENT IS ACTIVATED ------------------------------------");
-        assertEquals((int) clientStatusHashMap.get("id"), 300);
-        System.out.println("Client Status:" + clientStatusHashMap + "\n");
-    }
-
-    public static void verifyClientWithdrawn(final HashMap<String, Object> clientStatusHashMap) {
-        System.out.println("\n-------------------------------------- VERIFYING CLIENT IS WITHDRAWN ------------------------------------");
-        assertEquals((int) clientStatusHashMap.get("id"), 800);
-        System.out.println("Client Status:" + clientStatusHashMap + "\n");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientTest.java
deleted file mode 100644
index 0d1b86e..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientTest.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class ClientTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private ClientHelper clientHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-
-    }
-
-    @Test
-    public void testClientStatus() {
-        this.clientHelper = new ClientHelper(this.requestSpec, this.responseSpec);
-        final Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
-        ClientStatusChecker.verifyClientIsActive(status);
-
-        HashMap<String, Object> clientStatusHashMap = this.clientHelper.closeClient(clientId);
-        ClientStatusChecker.verifyClientClosed(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.reactivateClient(clientId);
-        ClientStatusChecker.verifyClientPending(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.rejectClient(clientId);
-        ClientStatusChecker.verifyClientRejected(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.activateClient(clientId);
-        ClientStatusChecker.verifyClientActiavted(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.closeClient(clientId);
-        ClientStatusChecker.verifyClientClosed(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.reactivateClient(clientId);
-        ClientStatusChecker.verifyClientPending(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.withdrawClient(clientId);
-        ClientStatusChecker.verifyClientWithdrawn(clientStatusHashMap);
-
-    }
-    
-    @Test
-    public void testClientAsPersonStatus() {
-    	
-    	this.clientHelper = new ClientHelper(this.requestSpec, this.responseSpec);
-        final Integer clientId = ClientHelper.createClientAsPerson(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
-        ClientStatusChecker.verifyClientIsActive(status);
-
-        HashMap<String, Object> clientStatusHashMap = this.clientHelper.closeClient(clientId);
-        ClientStatusChecker.verifyClientClosed(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.reactivateClient(clientId);
-        ClientStatusChecker.verifyClientPending(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.rejectClient(clientId);
-        ClientStatusChecker.verifyClientRejected(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.activateClient(clientId);
-        ClientStatusChecker.verifyClientActiavted(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.closeClient(clientId);
-        ClientStatusChecker.verifyClientClosed(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.reactivateClient(clientId);
-        ClientStatusChecker.verifyClientPending(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.withdrawClient(clientId);
-        ClientStatusChecker.verifyClientWithdrawn(clientStatusHashMap);
-
-    }
-    
-    @Test
-    public void testClientAsEntityStatus() {
-    	
-    	this.clientHelper = new ClientHelper(this.requestSpec, this.responseSpec);
-        final Integer clientId = ClientHelper.createClientAsEntity(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
-        ClientStatusChecker.verifyClientIsActive(status);
-
-        HashMap<String, Object> clientStatusHashMap = this.clientHelper.closeClient(clientId);
-        ClientStatusChecker.verifyClientClosed(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.reactivateClient(clientId);
-        ClientStatusChecker.verifyClientPending(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.rejectClient(clientId);
-        ClientStatusChecker.verifyClientRejected(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.activateClient(clientId);
-        ClientStatusChecker.verifyClientActiavted(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.closeClient(clientId);
-        ClientStatusChecker.verifyClientClosed(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.reactivateClient(clientId);
-        ClientStatusChecker.verifyClientPending(clientStatusHashMap);
-
-        clientStatusHashMap = this.clientHelper.withdrawClient(clientId);
-        ClientStatusChecker.verifyClientWithdrawn(clientStatusHashMap);
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ConcurrencyIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ConcurrencyIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ConcurrencyIntegrationTest.java
deleted file mode 100755
index 9548dc7..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ConcurrencyIntegrationTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Locale;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.accounting.Account;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class ConcurrencyIntegrationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-
-    private static final String NO_ACCOUNTING = "1";
-
-    final int MYTHREADS = 30;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-    }
-
-    @Test
-    public void verifyConcurrentLoanRepayments() {
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProduct(false, NO_ACCOUNTING);
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID, "12,000.00");
-        this.loanTransactionHelper.approveLoan("20 September 2011", loanID);
-        this.loanTransactionHelper.disburseLoan("20 September 2011", loanID, "12,000.00");
-
-        ExecutorService executor = Executors.newFixedThreadPool(MYTHREADS);
-        Calendar date = Calendar.getInstance();
-        date.set(2011, 9, 20);
-        Float repaymentAmount = 100.0f;
-        for (int i = 0; i < 10; i++) {
-            System.out.println("Starting concurrent transaction number " + i);
-            date.add(Calendar.DAY_OF_MONTH, 1);
-            repaymentAmount = repaymentAmount + 100;
-            Runnable worker = new LoanRepaymentExecutor(loanTransactionHelper, loanID, repaymentAmount, date);
-            executor.execute(worker);
-        }
-
-        executor.shutdown();
-        // Wait until all threads are finish
-        while (!executor.isTerminated()) {
-
-        }
-        System.out.println("\nFinished all threads");
-
-    }
-
-    private Integer createLoanProduct(final boolean multiDisburseLoan, final String accountingRule, final Account... accounts) {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        LoanProductTestBuilder builder = new LoanProductTestBuilder() //
-                .withPrincipal("12,000.00") //
-                .withNumberOfRepayments("4") //
-                .withRepaymentAfterEvery("1") //
-                .withRepaymentTypeAsMonth() //
-                .withinterestRatePerPeriod("1") //
-                .withInterestRateFrequencyTypeAsMonths() //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withTranches(multiDisburseLoan) //
-                .withAccounting(accountingRule, accounts);
-
-        if (multiDisburseLoan) {
-            builder = builder.withInterestCalculationPeriodTypeAsRepaymentPeriod(true);
-        }
-        final String loanProductJSON = builder.build(null);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID, String principal) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal(principal) //
-                .withLoanTermFrequency("4") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("4") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withExpectedDisbursementDate("20 September 2011") //
-                .withSubmittedOnDate("20 September 2011") //
-                .build(clientID.toString(), loanProductID.toString(), null);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-    public static class LoanRepaymentExecutor implements Runnable {
-
-        private final Integer loanId;
-        private final Float repaymentAmount;
-        private final String repaymentDate;
-        private final LoanTransactionHelper loanTransactionHelper;
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-
-        LoanRepaymentExecutor(LoanTransactionHelper loanTransactionHelper, Integer loanId, Float repaymentAmount, Calendar repaymentDate) {
-            this.loanId = loanId;
-            this.repaymentAmount = repaymentAmount;
-            this.repaymentDate = dateFormat.format(repaymentDate.getTime());
-            this.loanTransactionHelper = loanTransactionHelper;
-        }
-
-        @Override
-        public void run() {
-            try {
-                this.loanTransactionHelper.makeRepayment(repaymentDate, repaymentAmount, loanId);
-            } catch (Exception e) {
-                System.out.println("Found an exception" + e.getMessage());
-                System.out.println("Details of failed concurrent transaction (date, amount, loanId) are " + repaymentDate + ","
-                        + repaymentAmount + "," + loanId);
-                throw (e);
-            }
-            System.out.println("Details of passed concurrent transaction, details (date, amount, loanId) are " + repaymentDate + ","
-                    + repaymentAmount + "," + loanId);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrenciesTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrenciesTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrenciesTest.java
deleted file mode 100644
index a418c4c..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrenciesTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.ArrayList;
-import java.util.Collections;
-
-import org.apache.fineract.integrationtests.common.CurrenciesHelper;
-import org.apache.fineract.integrationtests.common.CurrencyDomain;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "unused", "rawtypes" })
-public class CurrenciesTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Test
-    public void testCurrencyElements() {
-
-        CurrencyDomain currency = CurrenciesHelper.getCurrencybyCode(requestSpec, responseSpec, "USD");
-        CurrencyDomain usd = CurrencyDomain.create("USD", "US Dollar", 2, "$", "currency.USD", "US Dollar ($)").build();
-
-        Assert.assertTrue(currency.getDecimalPlaces() >= 0);
-        Assert.assertNotNull(currency.getName());
-        Assert.assertNotNull(currency.getDisplaySymbol());
-        Assert.assertNotNull(currency.getDisplayLabel());
-        Assert.assertNotNull(currency.getNameCode());
-
-        Assert.assertEquals(usd, currency);
-    }
-
-    @Test
-    public void testUpdateCurrencySelection() {
-
-        // Test updation
-        ArrayList<String> currenciestoUpdate = new ArrayList<String>();
-        currenciestoUpdate.add("KES");
-        currenciestoUpdate.add("BND");
-        currenciestoUpdate.add("LBP");
-        currenciestoUpdate.add("GHC");
-        currenciestoUpdate.add("USD");
-
-        ArrayList<String> currenciesOutput = CurrenciesHelper.updateSelectedCurrencies(this.requestSpec, this.responseSpec,
-                currenciestoUpdate);
-        Assert.assertNotNull(currenciesOutput);
-
-        Assert.assertEquals("Verifying Do Outputed Currencies Match after Updation", currenciestoUpdate, currenciesOutput);
-
-        // Test that output matches updation
-        ArrayList<CurrencyDomain> currenciesBeforeUpdate = new ArrayList<CurrencyDomain>();
-        for (String e : currenciestoUpdate) {
-            currenciesBeforeUpdate.add(CurrenciesHelper.getCurrencybyCode(requestSpec, responseSpec, e));
-        }
-        Collections.sort(currenciesBeforeUpdate);
-
-        ArrayList<CurrencyDomain> currenciesAfterUpdate = CurrenciesHelper.getSelectedCurrencies(requestSpec, responseSpec);
-        Assert.assertNotNull(currenciesAfterUpdate);
-
-        Assert.assertEquals("Verifying Do Selected Currencies Match after Updation", currenciesBeforeUpdate, currenciesAfterUpdate);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrencyIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrencyIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrencyIntegrationTest.java
deleted file mode 100644
index 2468a40..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrencyIntegrationTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
-import org.junit.Before;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class CurrencyIntegrationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private SavingsAccountHelper savingsAccountHelper;
-
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-}


[30/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/jquery-1.9.1.min.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/jquery-1.9.1.min.js b/docs/system-architecture/js/vendor/jquery-1.9.1.min.js
deleted file mode 100644
index 32d50cb..0000000
--- a/docs/system-architecture/js/vendor/jquery-1.9.1.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery.min.map
-*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e)
 {if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:funct
 ion(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:fun
 ction(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;r
 eturn!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},node
 Name:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r
 &&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEv
 entListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(
 ){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r
 ={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--
 i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,check
 On:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bub
 bles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1
 %;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;
 if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[
 b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data
 -"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>a
 rguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend(
 {attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&
 (n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==
 o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length|
 |(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",col
 span:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specif
 ied?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e
 ){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.eve
 nts={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort
 (),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)
 "+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c
 =b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,han
 dlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documen
 tElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.r
 emoveEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagati
 on()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;
-return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add
 (this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r
 ,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===
 arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F
 +")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){re
 turn t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m
 =V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'><
 /a><div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!=
 =A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").leng
 th||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l
 =[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expressi
 on: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{
 },relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttr
 ibute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]
 ={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+
 e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},bu
 tton:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W,"
  ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r))
 ,i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&&gt(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),
 o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[
 1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++
 )b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var 
 n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentD
 ocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){retur
 n b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></tab
 le>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b
 .isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n
 )));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;
 n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return thi
 s}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&
 &(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.supp
 ort.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i
 =o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l)
-}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+
 ")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.
 length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"
 ),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle
 },Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parse
 Float(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":"
 "},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){var
  r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArra
 y(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}b.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn
 .load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({
 url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML}
 ,flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{},y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.d
 one,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader(
 "Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(jn,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="er
 ror",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"
 !==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readySta
 te))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0
 ]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.n
 oop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.text=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat
 (Qn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;for(;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.tim
 er(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.cssHooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overfl
 ow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}b.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this
 .prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scroll
 Top=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].ele
 m!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=fun

<TRUNCATED>


[06/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RolesTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RolesTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RolesTest.java
deleted file mode 100644
index 50a9006..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RolesTest.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.organisation.StaffHelper;
-import org.apache.fineract.integrationtests.useradministration.roles.RolesHelper;
-import org.apache.fineract.integrationtests.useradministration.users.UserHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class RolesTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @SuppressWarnings("cast")
-    @Test
-    public void testCreateRolesStatus() {
-
-        System.out.println("---------------------------------CREATING A ROLE---------------------------------------------");
-        final Integer roleId = RolesHelper.createRole(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(roleId);
-
-        System.out.println("--------------------------------- Getting ROLE -------------------------------");
-        HashMap<String, Object> role = RolesHelper.getRoleDetails(requestSpec, responseSpec, roleId);
-        assertEquals((Integer) role.get("id"), roleId);
-
-    }
-
-    @SuppressWarnings("cast")
-    @Test
-    public void testDisableRolesStatus() {
-
-        System.out.println("---------------------------------CREATING A ROLE---------------------------------------------");
-        final Integer roleId = RolesHelper.createRole(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(roleId);
-
-        System.out.println("--------------------------------- Getting ROLE -------------------------------");
-        HashMap<String, Object> role = RolesHelper.getRoleDetails(requestSpec, responseSpec, roleId);
-        assertEquals((Integer) role.get("id"), roleId);
-
-        System.out.println("--------------------------------- DISABLING ROLE -------------------------------");
-        final Integer disableRoleId = RolesHelper.disableRole(this.requestSpec, this.responseSpec, roleId);
-        assertEquals(disableRoleId, roleId);
-        role = RolesHelper.getRoleDetails(requestSpec, responseSpec, roleId);
-        assertEquals((Integer) role.get("id"), roleId);
-        assertEquals((Boolean) role.get("disabled"), true);
-
-    }
-
-    @SuppressWarnings("cast")
-    @Test
-    public void testEnableRolesStatus() {
-
-        System.out.println("---------------------------------CREATING A ROLE---------------------------------------------");
-        final Integer roleId = RolesHelper.createRole(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(roleId);
-
-        System.out.println("--------------------------------- Getting ROLE -------------------------------");
-        HashMap<String, Object> role = RolesHelper.getRoleDetails(requestSpec, responseSpec, roleId);
-        assertEquals((Integer) role.get("id"), roleId);
-
-        System.out.println("--------------------------------- DISABLING ROLE -------------------------------");
-        final Integer disableRoleId = RolesHelper.disableRole(this.requestSpec, this.responseSpec, roleId);
-        assertEquals(disableRoleId, roleId);
-        role = RolesHelper.getRoleDetails(requestSpec, responseSpec, roleId);
-        assertEquals((Integer) role.get("id"), roleId);
-        assertEquals((Boolean) role.get("disabled"), true);
-
-        System.out.println("--------------------------------- ENABLING ROLE -------------------------------");
-        final Integer enableRoleId = RolesHelper.enableRole(this.requestSpec, this.responseSpec, roleId);
-        assertEquals(enableRoleId, roleId);
-        role = RolesHelper.getRoleDetails(requestSpec, responseSpec, roleId);
-        assertEquals((Integer) role.get("id"), roleId);
-        assertEquals((Boolean) role.get("disabled"), false);
-
-    }
-
-    @SuppressWarnings("cast")
-    @Test
-    public void testDeleteRoleStatus() {
-
-        System.out.println("-------------------------------- CREATING A ROLE---------------------------------------------");
-        final Integer roleId = RolesHelper.createRole(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(roleId);
-
-        System.out.println("--------------------------------- Getting ROLE -------------------------------");
-        HashMap<String, Object> role = RolesHelper.getRoleDetails(requestSpec, responseSpec, roleId);
-        assertEquals((Integer) role.get("id"), roleId);
-
-        System.out.println("--------------------------------- DELETE ROLE -------------------------------");
-        final Integer deleteRoleId = RolesHelper.deleteRole(this.requestSpec, this.responseSpec, roleId);
-        assertEquals(deleteRoleId, roleId);
-    }
-
-    @Test
-    public void testRoleShouldGetDeletedIfNoActiveUserExists() {
-        final Integer roleId = RolesHelper.createRole(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(roleId);
-
-        final Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(staffId);
-
-        final Integer userId = UserHelper.createUser(this.requestSpec, this.responseSpec, roleId, staffId);
-        Assert.assertNotNull(userId);
-
-        final Integer deletedUserId = UserHelper.deleteUser(this.requestSpec, this.responseSpec, userId);
-        Assert.assertEquals(deletedUserId, userId);
-
-        final Integer deletedRoleId = RolesHelper.deleteRole(this.requestSpec, this.responseSpec, roleId);
-        assertEquals(deletedRoleId, roleId);
-    }
-
-    @Test
-    public void testRoleShouldNotGetDeletedIfActiveUserExists() {
-        final Integer roleId = RolesHelper.createRole(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(roleId);
-
-        final Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(staffId);
-
-        final Integer userId = UserHelper.createUser(this.requestSpec, this.responseSpec, roleId, staffId);
-        Assert.assertNotNull(userId);
-
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(403).build();
-        final Integer deletedRoleId = RolesHelper.deleteRole(this.requestSpec, this.responseSpec, roleId);
-        assertNotEquals(deletedRoleId, roleId);
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java
deleted file mode 100644
index d560784..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.SchedulerJobHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked", "static-access" })
-public class SchedulerJobsTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private ResponseSpecification responseSpecForSchedulerJob;
-    private SchedulerJobHelper schedulerJobHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.requestSpec.header("Fineract-Platform-TenantId", "default");
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.responseSpecForSchedulerJob = new ResponseSpecBuilder().expectStatusCode(202).build();
-    }
-
-    @Test
-    public void testSchedulerJobs() throws InterruptedException {
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-
-        // Retrieving Status of Scheduler
-        HashMap schedulerStatus = this.schedulerJobHelper.getSchedulerStatus(this.requestSpec, this.responseSpec);
-        Boolean status = (Boolean) schedulerStatus.get("active");
-        if (status == true) {
-            this.schedulerJobHelper.updateSchedulerStatus(this.requestSpec, this.responseSpecForSchedulerJob, "stop");
-            schedulerStatus = this.schedulerJobHelper.getSchedulerStatus(this.requestSpec, this.responseSpec);
-            // Verifying Status of the Scheduler after updation
-            Assert.assertEquals("Verifying Scheduler Job Status", false, schedulerStatus.get("active"));
-        } else {
-            this.schedulerJobHelper.updateSchedulerStatus(this.requestSpec, this.responseSpecForSchedulerJob, "start");
-            schedulerStatus = this.schedulerJobHelper.getSchedulerStatus(this.requestSpec, this.responseSpec);
-            // Verifying Status of the Scheduler after updation
-            Assert.assertEquals("Verifying Scheduler Job Status", true, schedulerStatus.get("active"));
-        }
-
-        // Retrieving All Scheduler Jobs
-        ArrayList<HashMap> allSchedulerJobsData = this.schedulerJobHelper.getAllSchedulerJobs(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(allSchedulerJobsData);
-
-        for (Integer jobIndex = 0; jobIndex < allSchedulerJobsData.size(); jobIndex++) {
-
-            Integer jobId = (Integer) allSchedulerJobsData.get(jobIndex).get("jobId");
-
-            // Retrieving Scheduler Job by ID
-            HashMap schedulerJob = this.schedulerJobHelper.getSchedulerJobById(this.requestSpec, this.responseSpec, jobId.toString());
-            Assert.assertNotNull(schedulerJob);
-
-            Boolean active = (Boolean) schedulerJob.get("active");
-
-            if (active == true) {
-                active = false;
-            } else {
-                active = true;
-            }
-
-            // Updating Scheduler Job
-            HashMap changes = this.schedulerJobHelper.updateSchedulerJob(this.requestSpec, this.responseSpec, jobId.toString(),
-                    active.toString());
-            // Verifying Scheduler Job updation
-            Assert.assertEquals("Verifying Scheduler Job Updation", active, changes.get("active"));
-
-            // Executing Scheduler Job
-            this.schedulerJobHelper.runSchedulerJob(this.requestSpec, jobId.toString());
-
-            // Retrieving Scheduler Job by ID
-            schedulerJob = this.schedulerJobHelper.getSchedulerJobById(this.requestSpec, this.responseSpec, jobId.toString());
-            Assert.assertNotNull(schedulerJob);
-
-            // Waiting for Job to complete
-            while ((Boolean) schedulerJob.get("currentlyRunning") == true) {
-                Thread.sleep(15000);
-                schedulerJob = this.schedulerJobHelper.getSchedulerJobById(this.requestSpec, this.responseSpec, jobId.toString());
-                Assert.assertNotNull(schedulerJob);
-                System.out.println("Job is Still Running");
-            }
-            ArrayList<HashMap> jobHistoryData = this.schedulerJobHelper.getSchedulerJobHistory(this.requestSpec, this.responseSpec,
-                    jobId.toString());
-
-            // Verifying the Status of the Recently executed Scheduler Job
-            Assert.assertEquals("Verifying Last Scheduler Job Status", "success",
-                    jobHistoryData.get(jobHistoryData.size() - 1).get("status"));
-        }
-
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
deleted file mode 100644
index 985889a..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
+++ /dev/null
@@ -1,915 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.text.DateFormat;
-import java.text.DecimalFormat;
-import java.text.DecimalFormatSymbols;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.GlobalConfigurationHelper;
-import org.apache.fineract.integrationtests.common.HolidayHelper;
-import org.apache.fineract.integrationtests.common.SchedulerJobHelper;
-import org.apache.fineract.integrationtests.common.StandingInstructionsHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.accounting.Account;
-import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntry;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntryHelper;
-import org.apache.fineract.integrationtests.common.charges.ChargesHelper;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositAccountHelper;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositAccountStatusChecker;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositProductHelper;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsStatusChecker;
-import org.apache.fineract.portfolio.account.PortfolioAccountType;
-import org.apache.fineract.portfolio.account.domain.AccountTransferType;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "unused", "unchecked", "rawtypes", "static-access", "cast" })
-public class SchedulerJobsTestResults {
-
-    private static final String FROM_ACCOUNT_TYPE_LOAN = "1";
-    private static final String FROM_ACCOUNT_TYPE_SAVINGS = "2";
-    private static final String TO_ACCOUNT_TYPE_LOAN = "1";
-    private static final String TO_ACCOUNT_TYPE_SAVINGS = "2";
-    private final String DATE_OF_JOINING = "01 January 2011";
-
-    private final String TRANSACTION_DATE = "01 March 2013";
-    public static final String ACCOUNT_TYPE_INDIVIDUAL = "INDIVIDUAL";
-    public static final String MINIMUM_OPENING_BALANCE = "1000";
-
-    Float SP_BALANCE = new Float(MINIMUM_OPENING_BALANCE);
-
-    private static ResponseSpecification responseSpec;
-    private static RequestSpecification requestSpec;
-    private ResponseSpecification responseSpecForSchedulerJob;
-    private SchedulerJobHelper schedulerJobHelper;
-    private SavingsAccountHelper savingsAccountHelper;
-    private LoanTransactionHelper loanTransactionHelper;
-    private HolidayHelper holidayHelper;
-    private GlobalConfigurationHelper globalConfigurationHelper;
-    private AccountHelper accountHelper;
-    private JournalEntryHelper journalEntryHelper;
-    private StandingInstructionsHelper standingInstructionsHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.requestSpec.header("Fineract-Platform-TenantId", "default");
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.responseSpecForSchedulerJob = new ResponseSpecBuilder().expectStatusCode(202).build();
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.journalEntryHelper = new JournalEntryHelper(this.requestSpec, this.responseSpec);
-    }
-
-    @Test
-    public void testApplyAnnualFeeForSavingsJobOutcome() throws InterruptedException {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec,
-                ClientSavingsIntegrationTest.MINIMUM_OPENING_BALANCE);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID,
-                ClientSavingsIntegrationTest.ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        final Integer annualFeeChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsAnnualFeeJSON());
-        Assert.assertNotNull(annualFeeChargeId);
-
-        this.savingsAccountHelper.addChargesForSavings(savingsId, annualFeeChargeId);
-        ArrayList<HashMap> chargesPendingState = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertEquals(1, chargesPendingState.size());
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        HashMap summaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        String JobName = "Apply Annual Fee For Savings";
-
-        this.schedulerJobHelper.executeJob(JobName);
-        final HashMap chargeData = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, annualFeeChargeId);
-
-        Float chargeAmount = (Float) chargeData.get("amount");
-
-        final HashMap summaryAfter = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        Assert.assertEquals("Verifying Annual Fee after Running Scheduler Job for Apply Anual Fee", chargeAmount,
-                (Float) summaryAfter.get("totalAnnualFees"));
-
-    }
-
-    @Test
-    public void testInterestPostingForSavingsJobOutcome() throws InterruptedException {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec,
-                ClientSavingsIntegrationTest.MINIMUM_OPENING_BALANCE);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID,
-                ClientSavingsIntegrationTest.ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        final HashMap summaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
-
-        String JobName = "Post Interest For Savings";
-
-        this.schedulerJobHelper.executeJob(JobName);
-        final HashMap summaryAfter = this.savingsAccountHelper.getSavingsSummary(savingsId);
-
-        Assert.assertNotSame("Verifying the Balance after running Post Interest for Savings Job", summaryBefore.get("accountBalance"),
-                summaryAfter.get("accountBalance"));
-
-    }
-
-    @Test
-    public void testTransferFeeForLoansFromSavingsJobOutcome() throws InterruptedException {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec,
-                ClientSavingsIntegrationTest.MINIMUM_OPENING_BALANCE);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID,
-                ClientSavingsIntegrationTest.ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        final Integer loanProductID = createLoanProduct(null);
-        Assert.assertNotNull(loanProductID);
-
-        final Integer loanID = applyForLoanApplication(clientID.toString(), loanProductID.toString(), savingsId.toString());
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(AccountTransferTest.LOAN_APPROVAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        Integer specifiedDueDateChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateWithAccountTransferJSON());
-        Assert.assertNotNull(specifiedDueDateChargeId);
-
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(specifiedDueDateChargeId.toString(), "12 March 2013", "100"));
-        ArrayList<HashMap> chargesPendingState = this.loanTransactionHelper.getLoanCharges(loanID);
-        Assert.assertEquals(1, chargesPendingState.size());
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(AccountTransferTest.LOAN_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-        final HashMap summaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
-
-        String JobName = "Transfer Fee For Loans From Savings";
-        this.schedulerJobHelper.executeJob(JobName);
-        final HashMap summaryAfter = this.savingsAccountHelper.getSavingsSummary(savingsId);
-
-        final HashMap chargeData = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, specifiedDueDateChargeId);
-
-        Float chargeAmount = (Float) chargeData.get("amount");
-
-        final Float balance = (Float) summaryBefore.get("accountBalance") - chargeAmount;
-
-        Assert.assertEquals("Verifying the Balance after running Transfer Fee for Loans from Savings", balance,
-                (Float) summaryAfter.get("accountBalance"));
-
-    }
-
-    @Test
-    public void testApplyHolidaysToLoansJobOutcome() throws InterruptedException {
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        this.holidayHelper = new HolidayHelper(this.requestSpec, this.responseSpec);
-        this.globalConfigurationHelper = new GlobalConfigurationHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        Integer holidayId = this.holidayHelper.createHolidays(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(holidayId);
-
-        final Integer loanProductID = createLoanProduct(null);
-        Assert.assertNotNull(loanProductID);
-
-        final Integer loanID = applyForLoanApplication(clientID.toString(), loanProductID.toString(), null);
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(AccountTransferTest.LOAN_APPROVAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(AccountTransferTest.LOAN_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        // Retrieving All Global Configuration details
-        final ArrayList<HashMap> globalConfig = this.globalConfigurationHelper.getAllGlobalConfigurations(this.requestSpec,
-                this.responseSpec);
-        Assert.assertNotNull(globalConfig);
-
-        // Updating Value for reschedule-repayments-on-holidays Global
-        // Configuration
-        Integer configId = (Integer) globalConfig.get(3).get("id");
-        Assert.assertNotNull(configId);
-
-        HashMap configData = this.globalConfigurationHelper.getGlobalConfigurationById(this.requestSpec, this.responseSpec,
-                configId.toString());
-        Assert.assertNotNull(configData);
-
-        Boolean enabled = (Boolean) globalConfig.get(3).get("enabled");
-
-        if (enabled == false) {
-            enabled = true;
-            configId = this.globalConfigurationHelper.updateEnabledFlagForGlobalConfiguration(this.requestSpec, this.responseSpec,
-                    configId.toString(), enabled);
-        }
-        final ArrayList<HashMap> repaymentScheduleDataBeforeJob = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
-
-        holidayId = this.holidayHelper.activateHolidays(this.requestSpec, this.responseSpec, holidayId.toString());
-        Assert.assertNotNull(holidayId);
-
-        String JobName = "Apply Holidays To Loans";
-
-        this.schedulerJobHelper.executeJob(JobName);
-        final ArrayList<HashMap> repaymentScheduleDataAfterJob = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
-
-        HashMap holidayData = this.holidayHelper.getHolidayById(this.requestSpec, this.responseSpec, holidayId.toString());
-        ArrayList<Integer> repaymentsRescheduledDate = (ArrayList<Integer>) holidayData.get("repaymentsRescheduledTo");
-
-        ArrayList<Integer> rescheduleDateAfter = (ArrayList<Integer>) repaymentScheduleDataAfterJob.get(2).get("fromDate");
-
-        Assert.assertEquals("Verifying Repayment Rescheduled Date after Running Apply Holidays to Loans Scheduler Job",
-                repaymentsRescheduledDate, repaymentsRescheduledDate);
-
-    }
-
-    @Test
-    public void testApplyDueFeeChargesForSavingsJobOutcome() throws InterruptedException {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec,
-                ClientSavingsIntegrationTest.MINIMUM_OPENING_BALANCE);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID,
-                ClientSavingsIntegrationTest.ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        final Integer specifiedDueDateChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsSpecifiedDueDateJSON());
-        Assert.assertNotNull(specifiedDueDateChargeId);
-
-        this.savingsAccountHelper.addChargesForSavings(savingsId, specifiedDueDateChargeId);
-        ArrayList<HashMap> chargesPendingState = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertEquals(1, chargesPendingState.size());
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        HashMap summaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
-
-        String JobName = "Pay Due Savings Charges";
-
-        this.schedulerJobHelper.executeJob(JobName);
-        HashMap summaryAfter = this.savingsAccountHelper.getSavingsSummary(savingsId);
-
-        final HashMap chargeData = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, specifiedDueDateChargeId);
-
-        Float chargeAmount = (Float) chargeData.get("amount");
-
-        final Float balance = (Float) summaryBefore.get("accountBalance") - chargeAmount;
-
-        Assert.assertEquals("Verifying the Balance after running Pay due Savings Charges", balance,
-                (Float) summaryAfter.get("accountBalance"));
-
-    }
-
-    @Test
-    public void testUpdateAccountingRunningBalancesJobOutcome() throws InterruptedException {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        final Integer accountID = assetAccount.getAccountID();
-
-        final Integer savingsProductID = createSavingsProduct(MINIMUM_OPENING_BALANCE, assetAccount, incomeAccount, expenseAccount,
-                liabilityAccount);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, this.DATE_OF_JOINING);
-        final Integer savingsID = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsID);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsID);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsID);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        // Checking initial Account entries.
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(this.SP_BALANCE, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountInitialEntry = { new JournalEntry(this.SP_BALANCE, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.TRANSACTION_DATE, assetAccountInitialEntry);
-        this.journalEntryHelper
-                .checkJournalEntryForLiabilityAccount(liabilityAccount, this.TRANSACTION_DATE, liablilityAccountInitialEntry);
-
-        String JobName = "Update Accounting Running Balances";
-
-        this.schedulerJobHelper.executeJob(JobName);
-        final HashMap runningBalanceAfter = this.accountHelper.getAccountingWithRunningBalanceById(accountID.toString());
-
-        final Integer INT_BALANCE = new Integer(MINIMUM_OPENING_BALANCE);
-
-        Assert.assertEquals("Verifying Account Running Balance after running Update Accounting Running Balances Scheduler Job",
-                INT_BALANCE, runningBalanceAfter.get("organizationRunningBalance"));
-
-    }
-
-    @Test
-    public void testUpdateLoanArrearsAgingJobOutcome() throws InterruptedException {
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        final Integer loanProductID = createLoanProduct(null);
-        Assert.assertNotNull(loanProductID);
-
-        final Integer loanID = applyForLoanApplication(clientID.toString(), loanProductID.toString(), null);
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(AccountTransferTest.LOAN_APPROVAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(AccountTransferTest.LOAN_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        String JobName = "Update Loan Arrears Ageing";
-
-        this.schedulerJobHelper.executeJob(JobName);
-        HashMap loanSummaryData = this.loanTransactionHelper.getLoanSummary(this.requestSpec, this.responseSpec, loanID);
-
-        Float totalLoanArrearsAging = (Float) loanSummaryData.get("principalOverdue") + (Float) loanSummaryData.get("interestOverdue");
-
-        Assert.assertEquals("Verifying Arrears Aging after Running Update Loan Arrears Aging Scheduler Job", totalLoanArrearsAging,
-                loanSummaryData.get("totalOverdue"));
-
-    }
-
-    @Test
-    public void testUpdateLoanPaidInAdvanceJobOutcome() throws InterruptedException {
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-
-        Calendar todayDate = Calendar.getInstance();
-        final String currentDate = dateFormat.format(todayDate.getTime());
-
-        todayDate.add(Calendar.MONTH, -1);
-        final String LOAN_DISBURSEMENT_DATE = dateFormat.format(todayDate.getTime());
-
-        todayDate = Calendar.getInstance();
-        todayDate.add(Calendar.DATE, -5);
-        final String LOAN_FIRST_REPAYMENT_DATE = dateFormat.format(todayDate.getTime());
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        final Integer loanProductID = createLoanProduct(null);
-        Assert.assertNotNull(loanProductID);
-
-        final Integer loanID = applyForLoanApplication(clientID.toString(), loanProductID.toString(), null);
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(AccountTransferTest.LOAN_APPROVAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(LOAN_DISBURSEMENT_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        ArrayList<HashMap> loanScheduleBefore = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec,
-                loanID);
-
-        Float totalDueForCurrentPeriod = (Float) loanScheduleBefore.get(1).get("totalDueForPeriod");
-
-        this.loanTransactionHelper.makeRepayment(LOAN_FIRST_REPAYMENT_DATE, totalDueForCurrentPeriod, loanID);
-
-        HashMap loanSummary = this.loanTransactionHelper.getLoanSummary(this.requestSpec, this.responseSpec, loanID);
-
-        String JobName = "Update Loan Paid In Advance";
-        this.schedulerJobHelper.executeJob(JobName);
-        // Retrieving Loan Repayment Schedule after the successful
-        // completion of
-        // Update Loan Paid in Advance Scheduler Job
-        ArrayList<HashMap> loanScheduleAfter = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec,
-                loanID);
-
-        loanSummary = this.loanTransactionHelper.getLoanSummary(this.requestSpec, this.responseSpec, loanID);
-
-        Float totalPaidInAdvance = (Float) loanScheduleAfter.get(1).get("totalPaidInAdvanceForPeriod");
-
-        Assert.assertEquals("Verifying Loan Repayment in Advance after Running Update Loan Paid in Advance Scheduler Job",
-                totalDueForCurrentPeriod, totalPaidInAdvance);
-
-    }
-
-    // Invalid test case as it won't affect summary (Loan summary is properly
-    // updated before running this job)
-    @Ignore
-    @Test
-    public void testUpdateLoanSummaryJobOutcome() throws InterruptedException {
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        final String currentDate = dateFormat.format(todaysDate.getTime());
-
-        todaysDate.add(Calendar.MONTH, -1);
-        final String LOAN_DISBURSEMENT_DATE = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.DATE, -5);
-        final String LOAN_FIRST_REPAYMENT_DATE = dateFormat.format(todaysDate.getTime());
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        final Integer loanProductID = createLoanProduct(null);
-        Assert.assertNotNull(loanProductID);
-
-        final Integer loanID = applyForLoanApplication(clientID.toString(), loanProductID.toString(), null);
-        Assert.assertNotNull(loanID);
-
-        Integer disburseChargeId = ChargesHelper
-                .createCharges(this.requestSpec, this.responseSpec, ChargesHelper.getLoanDisbursementJSON());
-        Assert.assertNotNull(disburseChargeId);
-
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getDisbursementChargesForLoanAsJSON(disburseChargeId.toString()));
-        ArrayList<HashMap> chargesPendingState = this.loanTransactionHelper.getLoanCharges(loanID);
-        Assert.assertEquals(1, chargesPendingState.size());
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(AccountTransferTest.LOAN_APPROVAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(LOAN_DISBURSEMENT_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        HashMap loanSummaryBefore = this.loanTransactionHelper.getLoanSummary(this.requestSpec, this.responseSpec, loanID);
-
-        String JobName = "Update loan Summary";
-        this.schedulerJobHelper.executeJob(JobName);
-        Float expectedSummaryAfterJob = (Float) loanSummaryBefore.get("totalExpectedRepayment")
-               /* - (Float) loanSummaryBefore.get("feeChargesPaid")*/;
-        HashMap loanSummaryAfter = this.loanTransactionHelper.getLoanSummary(this.requestSpec, this.responseSpec, loanID);
-        Assert.assertEquals("Verifying Loan Summary after Running Update Loan Summary Scheduler Job", expectedSummaryAfterJob,
-                (Float) loanSummaryAfter.get("totalExpectedRepayment"));
-
-    }
-
-    @Test
-    public void testExecuteStandingInstructionsJobOutcome() throws InterruptedException {
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.standingInstructionsHelper = new StandingInstructionsHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.WEEK_OF_YEAR, -1);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        todaysDate.add(Calendar.YEAR, 1);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec,
-                ClientSavingsIntegrationTest.MINIMUM_OPENING_BALANCE);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer fromSavingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID,
-                ClientSavingsIntegrationTest.ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap fromSavingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, fromSavingsId);
-        SavingsStatusChecker.verifySavingsIsPending(fromSavingsStatusHashMap);
-
-        fromSavingsStatusHashMap = this.savingsAccountHelper.approveSavings(fromSavingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(fromSavingsStatusHashMap);
-
-        fromSavingsStatusHashMap = this.savingsAccountHelper.activateSavings(fromSavingsId);
-        SavingsStatusChecker.verifySavingsIsActive(fromSavingsStatusHashMap);
-
-        final Integer toSavingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID,
-                ClientSavingsIntegrationTest.ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap toSavingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, toSavingsId);
-        SavingsStatusChecker.verifySavingsIsPending(toSavingsStatusHashMap);
-
-        toSavingsStatusHashMap = this.savingsAccountHelper.approveSavings(toSavingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(toSavingsStatusHashMap);
-
-        toSavingsStatusHashMap = this.savingsAccountHelper.activateSavings(toSavingsId);
-        SavingsStatusChecker.verifySavingsIsActive(toSavingsStatusHashMap);
-
-        HashMap fromSavingsSummaryBefore = this.savingsAccountHelper.getSavingsSummary(fromSavingsId);
-        Float fromSavingsBalanceBefore = (Float) fromSavingsSummaryBefore.get("accountBalance");
-
-        HashMap toSavingsSummaryBefore = this.savingsAccountHelper.getSavingsSummary(toSavingsId);
-        Float toSavingsBalanceBefore = (Float) toSavingsSummaryBefore.get("accountBalance");
-
-        Integer standingInstructionId = this.standingInstructionsHelper.createStandingInstruction(clientID.toString(),
-                fromSavingsId.toString(), toSavingsId.toString(), FROM_ACCOUNT_TYPE_SAVINGS, TO_ACCOUNT_TYPE_SAVINGS, VALID_FROM, VALID_TO,
-                MONTH_DAY);
-        Assert.assertNotNull(standingInstructionId);
-
-        String JobName = "Execute Standing Instruction";
-        this.schedulerJobHelper.executeJob(JobName);
-        HashMap fromSavingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(fromSavingsId);
-        Float fromSavingsBalanceAfter = (Float) fromSavingsSummaryAfter.get("accountBalance");
-
-        HashMap toSavingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(toSavingsId);
-        Float toSavingsBalanceAfter = (Float) toSavingsSummaryAfter.get("accountBalance");
-
-        final HashMap standingInstructionData = this.standingInstructionsHelper
-                .getStandingInstructionById(standingInstructionId.toString());
-        Float expectedFromSavingsBalance = fromSavingsBalanceBefore - (Float) standingInstructionData.get("amount");
-        Float expectedToSavingsBalance = toSavingsBalanceBefore + (Float) standingInstructionData.get("amount");
-
-        Assert.assertEquals("Verifying From Savings Balance after Successful completion of Scheduler Job", expectedFromSavingsBalance,
-                fromSavingsBalanceAfter);
-        Assert.assertEquals("Verifying To Savings Balance after Successful completion of Scheduler Job", expectedToSavingsBalance,
-                toSavingsBalanceAfter);
-        Integer fromAccountType = PortfolioAccountType.SAVINGS.getValue();
-        Integer transferType = AccountTransferType.ACCOUNT_TRANSFER.getValue();
-        List<HashMap> standinInstructionHistoryData = this.standingInstructionsHelper.getStandingInstructionHistory(fromSavingsId,
-                fromAccountType, clientID, transferType);
-        Assert.assertEquals("Verifying the no of stainding instruction transactions logged for the client", 1,
-                standinInstructionHistoryData.size());
-        HashMap loggedTransaction = standinInstructionHistoryData.get(0);
-
-        Assert.assertEquals("Verifying transferred amount and logged transaction amounts", (Float) standingInstructionData.get("amount"),
-                (Float) loggedTransaction.get("amount"));
-
-    }
-
-    @Test
-    public void testApplyPenaltyForOverdueLoansJobOutcome() throws InterruptedException {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        Integer overdueFeeChargeId = ChargesHelper
-                .createCharges(this.requestSpec, this.responseSpec, ChargesHelper.getLoanOverdueFeeJSON());
-        Assert.assertNotNull(overdueFeeChargeId);
-
-        final Integer loanProductID = createLoanProduct(overdueFeeChargeId.toString());
-        Assert.assertNotNull(loanProductID);
-
-        final Integer loanID = applyForLoanApplication(clientID.toString(), loanProductID.toString(), null);
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(AccountTransferTest.LOAN_APPROVAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(AccountTransferTest.LOAN_APPROVAL_DATE_PLUS_ONE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        ArrayList<HashMap> repaymentScheduleDataBefore = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
-
-        String JobName = "Apply penalty to overdue loans";
-        this.schedulerJobHelper.executeJob(JobName);
-
-        final HashMap chargeData = ChargesHelper.getChargeById(this.requestSpec, this.responseSpec, overdueFeeChargeId);
-
-        Float chargeAmount = (Float) chargeData.get("amount");
-
-        ArrayList<HashMap> repaymentScheduleDataAfter = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
-
-        Assert.assertEquals("Verifying From Penalty Charges due fot first Repayment after Successful completion of Scheduler Job",
-                chargeAmount, (Float) repaymentScheduleDataAfter.get(1).get("penaltyChargesDue"));
-
-        loanStatusHashMap = this.loanTransactionHelper.undoDisbursal(loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-    }
-
-    @Test
-    public void testUpdateOverdueDaysForNPA() throws InterruptedException {
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        final Integer loanProductID = createLoanProduct(null);
-        Assert.assertNotNull(loanProductID);
-
-        final Integer loanID = applyForLoanApplication(clientID.toString(), loanProductID.toString(), null);
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(AccountTransferTest.LOAN_APPROVAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(AccountTransferTest.LOAN_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        final Boolean isNPABefore = (Boolean) this.loanTransactionHelper.getLoanDetail(requestSpec, responseSpec, loanID, "isNPA");
-        Assert.assertFalse(isNPABefore);
-        // Integer jobId = (Integer) allSchedulerJobsData.get(1).get("jobId");
-        String JobName = "Update Non Performing Assets";
-        this.schedulerJobHelper.executeJob(JobName);
-        final Boolean isNPAAfter = (Boolean) this.loanTransactionHelper.getLoanDetail(requestSpec, responseSpec, loanID, "isNPA");
-        Assert.assertTrue(isNPAAfter);
-    }
-
-    @Test
-    public void testInterestTransferForSavings() throws InterruptedException {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-        FixedDepositProductHelper fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        AccountHelper accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        FixedDepositAccountHelper fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -2);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.MONTH, 1);
-        final String WHOLE_TERM = "1";
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-        Float balance = new Float(MINIMUM_OPENING_BALANCE) + new Float(FixedDepositAccountHelper.depositAmount);
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, String.valueOf(balance));
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientId, savingsProductID,
-                ClientSavingsIntegrationTest.ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsId);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-        HashMap summary = savingsAccountHelper.getSavingsSummary(savingsId);
-        assertEquals("Verifying opening Balance", balance, summary.get("accountBalance"));
-
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, savingsId.toString(), true, fixedDepositAccountHelper);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = fixedDepositAccountHelper.activateFixedDeposit(fixedDepositAccountId, ACTIVATION_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsActive(fixedDepositAccountStatusHashMap);
-        summary = savingsAccountHelper.getSavingsSummary(savingsId);
-        balance = new Float(MINIMUM_OPENING_BALANCE);
-        assertEquals("Verifying Balance", balance, summary.get("accountBalance"));
-
-        fixedDepositAccountHelper.postInterestForFixedDeposit(fixedDepositAccountId);
-
-        HashMap fixedDepositSummary = savingsAccountHelper.getSavingsSummary(fixedDepositAccountId);
-        Float interestPosted = (Float) fixedDepositSummary.get("accountBalance") - new Float(FixedDepositAccountHelper.depositAmount);
-
-        String JobName = "Transfer Interest To Savings";
-        this.schedulerJobHelper.executeJob(JobName);
-        fixedDepositSummary = savingsAccountHelper.getSavingsSummary(fixedDepositAccountId);
-        assertEquals("Verifying opening Balance", new Float(FixedDepositAccountHelper.depositAmount),
-                fixedDepositSummary.get("accountBalance"));
-
-        summary = savingsAccountHelper.getSavingsSummary(savingsId);
-        balance = new Float(MINIMUM_OPENING_BALANCE) + interestPosted;
-        validateNumberForEqualExcludePrecission(String.valueOf(balance), String.valueOf(summary.get("accountBalance")));
-    }
-
-    private Integer createSavingsProduct(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String minOpenningBalance) {
-        System.out.println("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------");
-        SavingsProductHelper savingsProductHelper = new SavingsProductHelper();
-        final String savingsProductJSON = savingsProductHelper //
-                .withInterestCompoundingPeriodTypeAsDaily() //
-                .withInterestPostingPeriodTypeAsMonthly() //
-                .withInterestCalculationPeriodTypeAsDailyBalance() //
-                .withMinimumOpenningBalance(minOpenningBalance).build();
-        return SavingsProductHelper.createSavingsProduct(savingsProductJSON, requestSpec, responseSpec);
-    }
-
-    private static Integer createSavingsProduct(final String minOpenningBalance, final Account... accounts) {
-        System.out.println("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------");
-        final String savingsProductJSON = new SavingsProductHelper().withInterestCompoundingPeriodTypeAsDaily() //
-                .withInterestPostingPeriodTypeAsQuarterly() //
-                .withInterestCalculationPeriodTypeAsDailyBalance() //
-                .withMinimumOpenningBalance(minOpenningBalance).withAccountingRuleAsCashBased(accounts).build();
-        return SavingsProductHelper.createSavingsProduct(savingsProductJSON, requestSpec, responseSpec);
-    }
-
-    private Integer createLoanProduct(final String chargeId) {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        final String loanProductJSON = new LoanProductTestBuilder() //
-                .withPrincipal("15,000.00") //
-                .withNumberOfRepayments("4") //
-                .withRepaymentAfterEvery("1") //
-                .withRepaymentTypeAsMonth() //
-                .withinterestRatePerPeriod("1") //
-                .withInterestRateFrequencyTypeAsMonths() //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .build(chargeId);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private Integer applyForLoanApplication(final String clientID, final String loanProductID, final String savingsID) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal("15,000.00") //
-                .withLoanTermFrequency("4") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("4") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withExpectedDisbursementDate("10 January 2013") //
-                .withSubmittedOnDate("10 January 2013") //
-                .build(clientID, loanProductID, savingsID);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-    private Integer createFixedDepositProduct(final String validFrom, final String validTo, Account... accounts) {
-        System.out.println("------------------------------CREATING NEW FIXED DEPOSIT PRODUCT ---------------------------------------");
-        FixedDepositProductHelper fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        final String fixedDepositProductJSON = fixedDepositProductHelper //
-                // .withAccountingRuleAsCashBased(accounts)
-                .build(validFrom, validTo);
-        return FixedDepositProductHelper.createFixedDepositProduct(fixedDepositProductJSON, requestSpec, responseSpec);
-    }
-
-    private Integer applyForFixedDepositApplication(final String clientID, final String productID, final String validFrom,
-            final String validTo, final String submittedOnDate, final String penalInterestType, String savingsId,
-            final boolean transferInterest, final FixedDepositAccountHelper fixedDepositAccountHelper) {
-        System.out.println("--------------------------------APPLYING FOR FIXED DEPOSIT ACCOUNT --------------------------------");
-        final String fixedDepositApplicationJSON = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec)
-                //
-                .withSubmittedOnDate(submittedOnDate).withSavings(savingsId).transferInterest(true)
-                .withLockinPeriodFrequency("1", FixedDepositAccountHelper.DAYS)
-                .build(clientID, productID, validFrom, validTo, penalInterestType);
-        return fixedDepositAccountHelper.applyFixedDepositApplication(fixedDepositApplicationJSON, this.requestSpec, this.responseSpec);
-    }
-
-    public void validateNumberForEqualExcludePrecission(String val, String val2) {
-        DecimalFormat twoDForm = new DecimalFormat("#", new DecimalFormatSymbols(Locale.US));
-        Assert.assertTrue(new Float(twoDForm.format(new Float(val))).compareTo(new Float(twoDForm.format(new Float(val2)))) == 0);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffImageApiTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffImageApiTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffImageApiTest.java
deleted file mode 100644
index b6f4181..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffImageApiTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import com.sun.jersey.core.util.Base64;
-
-import org.apache.fineract.integrationtests.common.ImageHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.apache.fineract.integrationtests.common.organisation.StaffHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-import java.io.IOException;
-
-public class StaffImageApiTest {
-
-    private RequestSpecification requestSpec;
-    private ResponseSpecification responseSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-    private AccountHelper accountHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-
-    }
-
-    @Test
-    public void createStaffImage() {
-
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Integer imageId = ImageHelper.createImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        Assert.assertNotNull("Image id should not be null", imageId);
-
-    }
-
-    @Test
-    public void getStaffImage(){
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Integer imageId = ImageHelper.createImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        Assert.assertNotNull("Image id should not be null", imageId);
-        String imageAsText = ImageHelper.getStaffImageAsText(this.requestSpec, this.responseSpec, staffId);
-        Assert.assertNotNull("Image id should not be null", imageAsText);
-    }
-
-    @Test
-    public void getStaffImageAsBinary(){
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Integer imageId = ImageHelper.createImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        Assert.assertNotNull("Image id should not be null", imageId);
-        byte[] imageAsBytes = ImageHelper.getStaffImageAsBinary(this.requestSpec, this.responseSpec, staffId);
-        Assert.assertNotNull("Image content should not be null", imageAsBytes);
-    }
-
-    @Test
-    public void updateImage() {
-
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Integer imageId = ImageHelper.createImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        Assert.assertNotNull("Image id should not be null", imageId);
-        imageId = ImageHelper.updateImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        Assert.assertNotNull("Image id should not be null", imageId);
-
-    }
-
-    @Test
-    public void deleteStaffImage() {
-
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Integer imageId = ImageHelper.createImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        Assert.assertNotNull("Image id should not be null", imageId);
-        imageId = ImageHelper.deleteStaffImage(this.requestSpec, this.responseSpec, staffId);
-        Assert.assertNotNull("Image id should not be null", imageId);
-
-    }
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffTest.java
deleted file mode 100644
index d1d2873..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffTest.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.organisation.StaffHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class StaffTest {
-
-    private RequestSpecification requestSpec;
-    private ResponseSpecification responseSpec;
-    private ResponseSpecification responseSpecForValidationError;
-    private ResponseSpecification responseSpecForNotFoundError;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.responseSpecForValidationError = new ResponseSpecBuilder().expectStatusCode(400).build();
-        this.responseSpecForNotFoundError = new ResponseSpecBuilder().expectStatusCode(404).build();
-    }
-
-    @Test
-    public void testStaffCreate() {
-        final HashMap response = StaffHelper.createStaffMap(requestSpec, responseSpec);
-
-        Assert.assertNotNull(response);
-        Assert.assertEquals(response.get("officeId"), 1);
-        Assert.assertNotNull(response.get("resourceId"));
-    }
-
-    @Test
-    public void testStaffCreateValidationError() {
-
-        final String noOfficeJson = StaffHelper.createStaffWithJSONFields("firstname", "lastname");
-        final String noFirstnameJson = StaffHelper.createStaffWithJSONFields("officeId", "lastname");
-        final String noLastnameJson = StaffHelper.createStaffWithJSONFields("officeId", "firstname");
-
-        StaffHelper.createStaffWithJson(requestSpec, responseSpecForValidationError, noOfficeJson);
-        StaffHelper.createStaffWithJson(requestSpec, responseSpecForValidationError, noFirstnameJson);
-        StaffHelper.createStaffWithJson(requestSpec, responseSpecForValidationError, noLastnameJson);
-
-        final HashMap<String, Object> map = new HashMap<>();
-
-        map.put("officeId", 1);
-        map.put("firstname", Utils.randomNameGenerator("michael_", 5));
-        map.put("lastname", Utils.randomNameGenerator("Doe_", 4));
-
-        /** Long firstname test */
-        map.put("firstname", Utils.randomNameGenerator("michael_", 43));
-        StaffHelper.createStaffWithJson(requestSpec, responseSpecForValidationError, new Gson().toJson(map));
-        map.put("firstname", Utils.randomNameGenerator("michael_", 5));
-
-        /** Long lastname test */
-        map.put("lastname", Utils.randomNameGenerator("Doe_", 47));
-        StaffHelper.createStaffWithJson(requestSpec, responseSpecForValidationError, new Gson().toJson(map));
-        map.put("lastname", Utils.randomNameGenerator("Doe_",4));
-
-        /** Long mobileNo test */
-        map.put("mobileNo", Utils.randomNameGenerator("num_", 47));
-        StaffHelper.createStaffWithJson(requestSpec, responseSpecForValidationError, new Gson().toJson(map));
-    }
-
-    public void testStaffCreateMaxNameLength() {
-
-        final HashMap<String, Object> map = new HashMap<>();
-
-        map.put("officeId", 1);
-        map.put("firstname", Utils.randomNameGenerator("michael_", 42));
-        map.put("lastname", Utils.randomNameGenerator("Doe_", 46));
-
-        StaffHelper.createStaffWithJson(requestSpec, responseSpec, new Gson().toJson(map));
-    }
-
-    public void testStaffCreateExternalIdValidationError() {
-        final HashMap<String, Object> map = new HashMap<>();
-
-        map.put("officeId", 1);
-        map.put("firstname", Utils.randomNameGenerator("michael_", 5));
-        map.put("lastname", Utils.randomNameGenerator("Doe_", 4));
-
-        map.put("externalId", Utils.randomStringGenerator("EXT", 98));
-        StaffHelper.createStaffWithJson(requestSpec, responseSpecForValidationError, new Gson().toJson(map));
-    }
-
-    @Test
-    public void testStaffFetch() {
-        final HashMap response = StaffHelper.getStaff(requestSpec, responseSpec, 1);
-        Assert.assertNotNull(response);
-        Assert.assertNotNull(response.get("id"));
-        Assert.assertEquals(response.get("id"), 1);
-    }
-
-    @Test
-    public void testStaffListFetch() {
-        StaffHelper.getStaffList(requestSpec, responseSpec);
-    }
-
-    @Test
-    public void testStaffListStatusAll() {
-        StaffHelper.getStaffListWithState(requestSpec, responseSpec, "all");
-    }
-
-    @Test
-    public void testStaffListStatusActive() {
-        final List<HashMap> responseActive = (List<HashMap>) StaffHelper.getStaffListWithState(requestSpec, responseSpec, "active");
-        for(final HashMap staff : responseActive) {
-            Assert.assertNotNull(staff.get("id"));
-            Assert.assertEquals(staff.get("isActive"), true);
-        }
-    }
-
-    @Test
-    public void testStaffListStatusInactive() {
-        final List<HashMap> responseInactive = (List<HashMap>) StaffHelper.getStaffListWithState(requestSpec, responseSpec, "inactive");
-
-        for(final HashMap staff : responseInactive) {
-            Assert.assertNotNull(staff.get("id"));
-            Assert.assertEquals(staff.get("isActive"), false);
-        }
-    }
-
-    @Test
-    public void testStaffListFetchWrongState() {
-        StaffHelper.getStaffListWithState(requestSpec, responseSpecForValidationError, "xyz");
-    }
-
-    @Test
-    public void testStaffFetchNotFound() {
-        StaffHelper.getStaff(requestSpec, responseSpecForNotFoundError, Integer.MAX_VALUE);
-    }
-
-    @Test
-    public void testStaffUpdate() {
-        final HashMap<String, Object> map = new HashMap<>();
-        final String firstname = Utils.randomNameGenerator("michael_", 10);
-        final String lastname = Utils.randomNameGenerator("Doe_", 10);
-        final String externalId = Utils.randomStringGenerator("EXT", 97);
-        final String mobileNo = Utils.randomStringGenerator("num_", 10);
-
-        map.put("firstname", firstname);
-        map.put("lastname", lastname);
-        map.put("externalId", externalId);
-        map.put("mobileNo", mobileNo);
-
-        final HashMap response = (HashMap) StaffHelper.updateStaff(requestSpec, responseSpec, 1, map);
-        final HashMap changes = (HashMap)  response.get("changes");
-
-        Assert.assertEquals(1, response.get("resourceId"));
-        Assert.assertEquals(firstname, changes.get("firstname"));
-        Assert.assertEquals(lastname, changes.get("lastname"));
-        Assert.assertEquals(externalId, changes.get("externalId"));
-        Assert.assertEquals(mobileNo, changes.get("mobileNo"));
-    }
-
-    public void testStaffUpdateLongExternalIdError() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("externalId", Utils.randomStringGenerator("EXT", 98));
-
-        StaffHelper.updateStaff(requestSpec, responseSpecForValidationError, 1, map);
-    }
-
-    public void testStaffUpdateWrongActiveState() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("isActive", "xyz");
-
-        StaffHelper.updateStaff(requestSpec, responseSpecForValidationError, 1, map);
-    }
-
-    @Test
-    public void testStaffUpdateNotFoundError() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("firstname", Utils.randomNameGenerator("michael_", 5));
-
-        StaffHelper.updateStaff(requestSpec, responseSpecForNotFoundError, Integer.MAX_VALUE, map);
-    }
-
-    @Test
-    public void testStaffUpdateValidationError() {
-        final HashMap<String, Object> map = new HashMap<>();
-        final String firstname = Utils.randomNameGenerator("michael_", 5);
-        final String lastname = Utils.randomNameGenerator("Doe_", 4);
-        final String firstnameLong = Utils.randomNameGenerator("michael_", 43);
-        final String lastnameLong = Utils.randomNameGenerator("Doe_", 47);
-
-        map.put("firstname", firstname);
-        map.put("lastname", lastname);
-
-        /** Test long firstname */
-        map.put("firstname", firstnameLong);
-        StaffHelper.updateStaff(requestSpec, responseSpecForValidationError, 1, map);
-        map.put("firstname", firstname);
-
-        /** Test long lastname */
-        map.put("lastname", lastnameLong);
-        StaffHelper.updateStaff(requestSpec, responseSpecForValidationError, 1, map);
-        map.put("lastname", lastname);
-
-        /** Long mobileNo test */
-        map.put("mobileNo", Utils.randomNameGenerator("num_", 47));
-        StaffHelper.updateStaff(requestSpec, responseSpecForValidationError, 1, map);
-        map.remove("mobileNo");
-
-        /** Test unsupported parameter */
-        map.put("xyz", "xyz");
-        StaffHelper.updateStaff(requestSpec, responseSpecForValidationError, 1, map);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SurveyIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SurveyIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SurveyIntegrationTest.java
deleted file mode 100644
index c728975..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SurveyIntegrationTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Before;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Client Loan Integration Test for checking Loan Application Repayment
- * Schedule.
- */
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class SurveyIntegrationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-}
\ No newline at end of file


[12/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/DisbursalAndRepaymentScheduleTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/DisbursalAndRepaymentScheduleTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/DisbursalAndRepaymentScheduleTest.java
deleted file mode 100644
index 611a9ee..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/DisbursalAndRepaymentScheduleTest.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.*;
-import org.apache.fineract.integrationtests.common.loans.*;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Tests loan schedule change based on group meeting changes and loan
- * rescheduling
- **/
-@SuppressWarnings({ "rawtypes" })
-@Ignore
-public class DisbursalAndRepaymentScheduleTest {
-
-    private ResponseSpecification responseSpec;
-    private ResponseSpecification responseSpecForStatusCode403;
-    private ResponseSpecification generalResponseSpec;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-    private LoanRescheduleRequestHelper loanRescheduleRequestHelper;
-    private Integer loanRescheduleRequestId;
-    private Integer clientId;
-    private Integer groupId;
-    private Integer groupCalendarId;
-    private Integer loanProductId;
-    private Integer loanId;
-    private final String loanPrincipalAmount = "100000.00";
-    private final String numberOfRepayments = "12";
-    private final String interestRatePerPeriod = "18";
-
-    private final SimpleDateFormat dateFormatterStandard = new SimpleDateFormat("dd MMMM yyyy");
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-    }
-
-    @Test
-    public void testRescheduleJLGLoanSynk() {
-        System.out.println("---------------------------------STARTING RESCHEDULE JLG LOAN TEST ------------------------------------------");
-
-        Calendar meetingCalendar = Calendar.getInstance();
-        meetingCalendar.setFirstDayOfWeek(Calendar.MONDAY);
-        meetingCalendar.setTime(new java.util.Date());
-
-        int today = meetingCalendar.get(Calendar.DAY_OF_WEEK);
-        // making sure that the meeting calendar is set for the coming monday.
-        if (today >= Calendar.MONDAY) {
-            meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today + 7));
-        } else {
-            meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today));
-        }
-
-        Calendar groupMeetingChangeCalendar = (Calendar) meetingCalendar.clone();
-
-        meetingCalendar.add(Calendar.WEEK_OF_YEAR, -3);
-
-        final String groupMeetingDate = this.dateFormatterStandard.format(meetingCalendar.getTime());
-
-        final String disbursalDate = groupMeetingDate; // first meeting date
-        // after group creation
-
-        final String rescheduleSubmittedDate = this.dateFormatterStandard.format(new java.util.Date());
-
-        final String loanType = "jlg";
-        final String rescheduleInterestRate = "28.0";
-        groupMeetingChangeCalendar.add(Calendar.DAY_OF_YEAR, 1);
-        final String groupMeetingNewStartDate = this.dateFormatterStandard.format(groupMeetingChangeCalendar.getTime());
-        // The date
-        // from
-        // which we
-        // start the
-        // new group
-        // meeting
-        // occasion,
-        // this is a
-        // tuesday.
-        groupMeetingChangeCalendar.add(Calendar.WEEK_OF_YEAR, 2);
-        final String rescheduleDate = this.dateFormatterStandard.format(groupMeetingChangeCalendar.getTime());
-
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.requestSpec.header("Fineract-Platform-TenantId", "default");
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.generalResponseSpec = new ResponseSpecBuilder().build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        this.loanRescheduleRequestHelper = new LoanRescheduleRequestHelper(this.requestSpec, this.responseSpec);
-        System.out.println("---------------------------------CREATING ENTITIES AND JLG LOAN ------------------------------------------");
-        // create all required entities
-        this.createRequiredEntitiesForJLGLoanSync(groupMeetingDate);
-
-        final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(loanPrincipalAmount).withLoanTermFrequency("24")
-                .withLoanTermFrequencyAsWeeks().withNumberOfRepayments("12").withRepaymentEveryAfter("2")
-                .withRepaymentFrequencyTypeAsMonths().withAmortizationTypeAsEqualInstallments().withInterestCalculationPeriodTypeAsDays()
-                .withInterestRatePerPeriod(interestRatePerPeriod).withRepaymentFrequencyTypeAsWeeks().withSubmittedOnDate(disbursalDate)
-                .withExpectedDisbursementDate(disbursalDate).withLoanType(loanType).withSyncDisbursementWithMeetin()
-                .withCalendarID(this.groupCalendarId.toString())
-                .build(this.clientId.toString(), this.groupId.toString(), this.loanProductId.toString(), null);
-
-        this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-
-        // Test for loan account is created
-        Assert.assertNotNull(this.loanId);
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        // Test for loan account is created, can be approved
-        this.loanTransactionHelper.approveLoan(disbursalDate, this.loanId);
-        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        // Test for loan account approved can be disbursed
-        this.loanTransactionHelper.disburseLoan(disbursalDate, this.loanId);
-        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        System.out.println("---------------------------------CHANGING GROUP MEETING DATE ------------------------------------------");
-        CalendarHelper.updateMeetingCalendarForGroup(this.requestSpec, this.responseSpec, this.groupId, this.groupCalendarId.toString(),
-                groupMeetingNewStartDate, "2", "2", "2"); // New meeting dates
-                                                          // will be the tuesday
-                                                          // after the
-        // coming
-        // monday
-
-        ArrayList loanRepaymnetSchedule = this.loanTransactionHelper
-                .getLoanRepaymentSchedule(requestSpec, generalResponseSpec, this.loanId);
-
-        ArrayList dueDateLoanSchedule = (ArrayList) ((HashMap) loanRepaymnetSchedule.get(2)).get("dueDate");
-        Calendar dueDateCalendar = Calendar.getInstance();
-        dueDateCalendar.setFirstDayOfWeek(Calendar.MONDAY);
-        dueDateCalendar.set((Integer) dueDateLoanSchedule.get(0), (Integer) dueDateLoanSchedule.get(1) - 1,
-                (Integer) dueDateLoanSchedule.get(2));
-        assertEquals("AFTER MEETING CHANGE DATE THE NEXT REPAYMENT SHOULD BE ON TUESDAY", 3, dueDateCalendar.get(Calendar.DAY_OF_WEEK));
-
-        System.out.println("---------------------------------CREATING LOAN RESCHEDULE REQUEST------------------------------------------");
-
-        String requestJSON = new LoanRescheduleRequestTestBuilder().updateGraceOnInterest("2").updateGraceOnPrincipal("2")
-                .updateNewInterestRate(rescheduleInterestRate).updateRescheduleFromDate(rescheduleDate)
-                .updateSubmittedOnDate(rescheduleSubmittedDate).build(this.loanId.toString());
-
-        this.loanRescheduleRequestId = this.loanRescheduleRequestHelper.createLoanRescheduleRequest(requestJSON);
-        this.loanRescheduleRequestHelper.verifyCreationOfLoanRescheduleRequest(this.loanRescheduleRequestId);
-
-        loanRepaymnetSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec, generalResponseSpec, this.loanId);
-        dueDateLoanSchedule = (ArrayList) ((HashMap) loanRepaymnetSchedule.get(2)).get("dueDate");
-        dueDateCalendar.set((Integer) dueDateLoanSchedule.get(0), (Integer) dueDateLoanSchedule.get(1) - 1,
-                (Integer) dueDateLoanSchedule.get(2));
-        assertEquals("AFTER MEETING CHANGE DATE THE NEXT REPAYMENT SHOULD BE ON TUESDAY, EVEN AFTER LOAN RESCHEDULE REQUEST WAS SENT", 3,
-                dueDateCalendar.get(Calendar.DAY_OF_WEEK));
-
-        System.out.println("Successfully created loan reschedule request (ID: " + this.loanRescheduleRequestId + ")");
-
-        System.out.println("-----------------------------APPROVING LOAN RESCHEDULE REQUEST--------------------------");
-
-        requestJSON = new LoanRescheduleRequestTestBuilder().updateSubmittedOnDate(rescheduleSubmittedDate)
-                .getApproveLoanRescheduleRequestJSON();
-        this.loanRescheduleRequestHelper.approveLoanRescheduleRequest(this.loanRescheduleRequestId, requestJSON);
-
-        final HashMap response = (HashMap) this.loanRescheduleRequestHelper.getLoanRescheduleRequest(loanRescheduleRequestId, "statusEnum");
-        assertTrue((Boolean) response.get("approved"));
-
-        loanRepaymnetSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec, generalResponseSpec, this.loanId);
-
-        dueDateLoanSchedule = (ArrayList) ((HashMap) loanRepaymnetSchedule.get(2)).get("dueDate");
-        dueDateCalendar.set((Integer) dueDateLoanSchedule.get(0), (Integer) dueDateLoanSchedule.get(1) - 1,
-                (Integer) dueDateLoanSchedule.get(2));
-        assertEquals("AFTER MEETING CHANGE DATE THE NEXT REPAYMENT SHOULD BE ON TUESDAY, EVEN AFTER RESCHEDULE", 3,
-                dueDateCalendar.get(Calendar.DAY_OF_WEEK));
-        System.out.println("Successfully changed group meeting date (CAELNDAR ID: " + this.groupCalendarId
-                + ") and rescheduled loan (RESCHEDULE ID: " + this.loanRescheduleRequestId + ")");
-
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpecForStatusCode403);
-    }
-
-    @Test
-    public void testChangeGroupMeetingMaturedOnDate() {
-        System.out
-                .println("---------------------------------STARTING GROUP LOAN MEETING CHANGE DATE EXPECTED MATURED CHANGE------------------------------------------");
-
-        Calendar meetingCalendar = Calendar.getInstance();
-        meetingCalendar.setFirstDayOfWeek(Calendar.MONDAY);
-        meetingCalendar.setTime(new java.util.Date());
-
-        int today = meetingCalendar.get(Calendar.DAY_OF_WEEK);
-        // making sure that the meeting calendar is set for the coming monday.
-        if (today >= Calendar.MONDAY) {
-            meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today + 7));
-        } else {
-            meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today));
-        }
-
-        Calendar groupMeetingChangeCalendar = (Calendar) meetingCalendar.clone();
-
-        meetingCalendar.add(Calendar.WEEK_OF_YEAR, -3);
-
-        final String groupMeetingDate = this.dateFormatterStandard.format(meetingCalendar.getTime());
-
-        final String disbursalDate = groupMeetingDate; // first meeting date
-                                                       // after group creation
-
-        final String loanType = "jlg";
-        groupMeetingChangeCalendar.add(Calendar.DAY_OF_YEAR, 1);
-        final String groupMeetingNewStartDate = this.dateFormatterStandard.format(groupMeetingChangeCalendar.getTime());
-        // The date
-        // from
-        // which we
-        // start the
-        // new group
-        // meeting
-        // occasion,
-        // this is a
-        // tuesday.
-
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.requestSpec.header("Fineract-Platform-TenantId", "default");
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.generalResponseSpec = new ResponseSpecBuilder().build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        this.loanRescheduleRequestHelper = new LoanRescheduleRequestHelper(this.requestSpec, this.responseSpec);
-        System.out.println("---------------------------------CREATING ENTITIES AND JLG LOAN ------------------------------------------");
-        // create all required entities
-        this.createRequiredEntitiesForJLGLoanSync(groupMeetingDate);
-
-        final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(loanPrincipalAmount).withLoanTermFrequency("24")
-                .withLoanTermFrequencyAsWeeks().withNumberOfRepayments("12").withRepaymentEveryAfter("2")
-                .withRepaymentFrequencyTypeAsMonths().withAmortizationTypeAsEqualInstallments().withInterestCalculationPeriodTypeAsDays()
-                .withInterestRatePerPeriod(interestRatePerPeriod).withRepaymentFrequencyTypeAsWeeks().withSubmittedOnDate(disbursalDate)
-                .withExpectedDisbursementDate(disbursalDate).withLoanType(loanType).withSyncDisbursementWithMeetin()
-                .withCalendarID(this.groupCalendarId.toString())
-                .build(this.clientId.toString(), this.groupId.toString(), this.loanProductId.toString(), null);
-
-        this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-
-        // Test for loan account is created
-        Assert.assertNotNull(this.loanId);
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        // Test for loan account is created, can be approved
-        this.loanTransactionHelper.approveLoan(disbursalDate, this.loanId);
-        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        // Test for loan account approved can be disbursed
-        this.loanTransactionHelper.disburseLoan(disbursalDate, this.loanId);
-        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        System.out.println("---------------------------------CHANGING GROUP MEETING DATE ------------------------------------------");
-        CalendarHelper.updateMeetingCalendarForGroup(this.requestSpec, this.responseSpec, this.groupId, this.groupCalendarId.toString(),
-                groupMeetingNewStartDate, "2", "2", "2"); // New meeting dates
-                                                          // will be the tuesday
-                                                          // after the
-                                                          // coming
-                                                          // monday
-
-        Calendar expectedMaturityCalendar = Calendar.getInstance();
-        expectedMaturityCalendar.setFirstDayOfWeek(Calendar.MONDAY);
-        ArrayList expectedMaturityDate = ((ArrayList) ((HashMap) this.loanTransactionHelper.getLoanDetail(requestSpec, generalResponseSpec,
-                this.loanId, "timeline")).get("expectedMaturityDate"));
-
-        expectedMaturityCalendar.set((Integer) expectedMaturityDate.get(0), (Integer) expectedMaturityDate.get(1) - 1,
-                (Integer) expectedMaturityDate.get(2));
-
-        assertEquals("AFTER MEETING CHANGE DATE THE EXPECTED MATURITY SHOULD BE ON TUESDAY", 3,
-                expectedMaturityCalendar.get(Calendar.DAY_OF_WEEK));
-
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpecForStatusCode403);
-    }
-
-    /**
-     * entities for jlg loan
-     **/
-    private void createRequiredEntitiesForJLGLoanSync(final String groupActivationDate) {
-        this.createGroupEntityWithCalendar("2", "2", "1", groupActivationDate);// frequency=2:Weekly
-        // , interval=2:
-        // Every two weeks ,
-        // repeatsOnDay=1:Monday
-        // groupActivationDate is decided by the current date
-        this.createClientEntity();
-        this.associateClientToGroup(this.groupId, this.clientId);
-        this.createLoanProductEntity();
-
-    }
-
-    /*
-     * Associate client to the group
-     */
-
-    private void associateClientToGroup(final Integer groupId, final Integer clientId) {
-        GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupId.toString(), clientId.toString());
-        GroupHelper.verifyGroupMembers(this.requestSpec, this.responseSpec, groupId, clientId);
-    }
-
-    private void createGroupEntityWithCalendar(final String frequency, final String interval, final String repeatsOnDay,
-            final String groupActivationDate) {
-        this.groupId = GroupHelper.createGroup(this.requestSpec, this.responseSpec, groupActivationDate);
-        GroupHelper.verifyGroupCreatedOnServer(this.requestSpec, this.responseSpec, this.groupId);
-
-        final String startDate = groupActivationDate;
-
-        this.setGroupCalendarId(CalendarHelper.createMeetingCalendarForGroup(this.requestSpec, this.responseSpec, this.groupId, startDate,
-                frequency, interval, repeatsOnDay));
-    }
-
-    /**
-     * create a new client
-     **/
-    private void createClientEntity() {
-        this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, this.clientId);
-    }
-
-    /**
-     * create a new loan product
-     **/
-    private void createLoanProductEntity() {
-        final String loanProductJSON = new LoanProductTestBuilder().withPrincipal(loanPrincipalAmount)
-                .withNumberOfRepayments(numberOfRepayments).withinterestRatePerPeriod(interestRatePerPeriod)
-                .withInterestRateFrequencyTypeAsYear().build(null);
-        this.loanProductId = this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    public void setGroupCalendarId(Integer groupCalendarId) {
-        this.groupCalendarId = groupCalendarId;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ExternalServicesConfigurationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ExternalServicesConfigurationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ExternalServicesConfigurationTest.java
deleted file mode 100644
index 3abbcee..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ExternalServicesConfigurationTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.ExternalServicesConfigurationHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked", "static-access" })
-public class ExternalServicesConfigurationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private ExternalServicesConfigurationHelper externalServicesConfigurationHelper;
-    private ResponseSpecification httpStatusForidden;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.httpStatusForidden = new ResponseSpecBuilder().expectStatusCode(403).build();
-
-    }
-
-    @Test
-    public void testExternalServicesConfiguration() {
-        this.externalServicesConfigurationHelper = new ExternalServicesConfigurationHelper(this.requestSpec, this.responseSpec);
-
-        // Checking for S3
-        String configName = "s3_access_key";
-        ArrayList<HashMap> externalServicesConfig = this.externalServicesConfigurationHelper
-                .getExternalServicesConfigurationByServiceName(requestSpec, responseSpec, "S3");
-        Assert.assertNotNull(externalServicesConfig);
-        for (Integer configIndex = 0; configIndex < (externalServicesConfig.size()); configIndex++) {
-            String name = (String) externalServicesConfig.get(configIndex).get("name");
-            String value = null;
-            if (name.equals(configName)) {
-                value = (String) externalServicesConfig.get(configIndex).get("value");
-                if(value == null){
-                    value = "testnull";
-                }
-                String newValue = "test";
-                System.out.println(name + ":" + value);
-                HashMap arrayListValue = this.externalServicesConfigurationHelper.updateValueForExternaServicesConfiguration(requestSpec,
-                        responseSpec, "S3", name, newValue);
-                Assert.assertNotNull(arrayListValue.get("value"));
-                Assert.assertEquals(arrayListValue.get("value"), newValue);
-                HashMap arrayListValue1 = this.externalServicesConfigurationHelper.updateValueForExternaServicesConfiguration(requestSpec,
-                        responseSpec, "S3", name, value);
-                Assert.assertNotNull(arrayListValue1.get("value"));
-                Assert.assertEquals(arrayListValue1.get("value"), value);
-            }
-
-        }
-
-        // Checking for SMTP:
-
-        configName = "username";
-        externalServicesConfig = this.externalServicesConfigurationHelper.getExternalServicesConfigurationByServiceName(requestSpec,
-                responseSpec, "SMTP");
-        Assert.assertNotNull(externalServicesConfig);
-        for (Integer configIndex = 0; configIndex < (externalServicesConfig.size()); configIndex++) {
-            String name = (String) externalServicesConfig.get(configIndex).get("name");
-            String value = null;
-            if (name.equals(configName)) {
-                value = (String) externalServicesConfig.get(configIndex).get("value");
-                if(value == null){
-                    value = "testnull";
-                }
-                String newValue = "test";
-                System.out.println(name + ":" + value);
-                HashMap arrayListValue = this.externalServicesConfigurationHelper.updateValueForExternaServicesConfiguration(requestSpec,
-                        responseSpec, "SMTP", name, newValue);
-                Assert.assertNotNull(arrayListValue.get("value"));
-                Assert.assertEquals(arrayListValue.get("value"), newValue);
-                HashMap arrayListValue1 = this.externalServicesConfigurationHelper.updateValueForExternaServicesConfiguration(requestSpec,
-                        responseSpec, "SMTP", name, value);
-                Assert.assertNotNull(arrayListValue1.get("value"));
-                Assert.assertEquals(arrayListValue1.get("value"), value);
-            }
-
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FinancialActivityAccountsTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FinancialActivityAccountsTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FinancialActivityAccountsTest.java
deleted file mode 100755
index ef2183f..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FinancialActivityAccountsTest.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.accounting.common.AccountingConstants.FINANCIAL_ACTIVITY;
-import org.apache.fineract.accounting.financialactivityaccount.exception.DuplicateFinancialActivityAccountFoundException;
-import org.apache.fineract.accounting.financialactivityaccount.exception.FinancialActivityAccountInvalidException;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.accounting.Account;
-import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
-import org.apache.fineract.integrationtests.common.accounting.FinancialActivityAccountHelper;
-import org.junit.Assert;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings("rawtypes")
-public class FinancialActivityAccountsTest {
-
-    private ResponseSpecification responseSpec;
-    private ResponseSpecification responseSpecForValidationError;
-    private ResponseSpecification responseSpecForDomainRuleViolation;
-    private ResponseSpecification responseSpecForResourceNotFoundError;
-    private RequestSpecification requestSpec;
-    private AccountHelper accountHelper;
-    private FinancialActivityAccountHelper financialActivityAccountHelper;
-    private final Integer assetTransferFinancialActivityId = FINANCIAL_ACTIVITY.ASSET_TRANSFER.getValue();
-    public static final Integer liabilityTransferFinancialActivityId = FINANCIAL_ACTIVITY.LIABILITY_TRANSFER.getValue();
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.responseSpecForValidationError = new ResponseSpecBuilder().expectStatusCode(400).build();
-        this.responseSpecForDomainRuleViolation = new ResponseSpecBuilder().expectStatusCode(403).build();
-        this.responseSpecForResourceNotFoundError = new ResponseSpecBuilder().expectStatusCode(404).build();
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.financialActivityAccountHelper = new FinancialActivityAccountHelper(this.requestSpec);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testFinancialActivityAccounts() {
-
-        /** Create a Liability and an Asset Transfer Account **/
-        Account liabilityTransferAccount = accountHelper.createLiabilityAccount();
-        Account assetTransferAccount = accountHelper.createAssetAccount();
-        Assert.assertNotNull(assetTransferAccount);
-        Assert.assertNotNull(liabilityTransferAccount);
-
-        /*** Create A Financial Activity to Account Mapping **/
-        Integer financialActivityAccountId = (Integer) financialActivityAccountHelper.createFinancialActivityAccount(
-                liabilityTransferFinancialActivityId, liabilityTransferAccount.getAccountID(), responseSpec,
-                CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(financialActivityAccountId);
-
-        /***
-         * Fetch Created Financial Activity to Account Mapping and validate
-         * created values
-         **/
-        assertFinancialActivityAccountCreation(financialActivityAccountId, liabilityTransferFinancialActivityId, liabilityTransferAccount);
-
-        /**
-         * Update Existing Financial Activity to Account Mapping and assert
-         * changes
-         **/
-        Account newLiabilityTransferAccount = accountHelper.createLiabilityAccount();
-        Assert.assertNotNull(newLiabilityTransferAccount);
-
-        HashMap changes = (HashMap) financialActivityAccountHelper.updateFinancialActivityAccount(financialActivityAccountId,
-                liabilityTransferFinancialActivityId, newLiabilityTransferAccount.getAccountID(), responseSpec,
-                CommonConstants.RESPONSE_CHANGES);
-        Assert.assertEquals(newLiabilityTransferAccount.getAccountID(), changes.get("glAccountId"));
-
-        /** Validate update works correctly **/
-        assertFinancialActivityAccountCreation(financialActivityAccountId, liabilityTransferFinancialActivityId,
-                newLiabilityTransferAccount);
-
-        /** Update with Invalid Financial Activity should fail **/
-        List<HashMap> invalidFinancialActivityUpdateError = (List<HashMap>) financialActivityAccountHelper.updateFinancialActivityAccount(
-                financialActivityAccountId, 232, newLiabilityTransferAccount.getAccountID(), responseSpecForValidationError,
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("validation.msg.financialactivityaccount.financialActivityId.is.not.one.of.expected.enumerations",
-                invalidFinancialActivityUpdateError.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        /** Creating Duplicate Financial Activity should fail **/
-        List<HashMap> duplicateFinancialActivityAccountError = (List<HashMap>) financialActivityAccountHelper
-                .createFinancialActivityAccount(liabilityTransferFinancialActivityId, liabilityTransferAccount.getAccountID(),
-                        responseSpecForDomainRuleViolation, CommonConstants.RESPONSE_ERROR);
-        assertEquals(DuplicateFinancialActivityAccountFoundException.getErrorcode(),
-                duplicateFinancialActivityAccountError.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        /**
-         * Associating incorrect GL account types with a financial activity
-         * should fail
-         **/
-        List<HashMap> invalidFinancialActivityAccountError = (List<HashMap>) financialActivityAccountHelper.updateFinancialActivityAccount(
-                financialActivityAccountId, assetTransferFinancialActivityId, newLiabilityTransferAccount.getAccountID(),
-                responseSpecForDomainRuleViolation, CommonConstants.RESPONSE_ERROR);
-        assertEquals(FinancialActivityAccountInvalidException.getErrorcode(),
-                invalidFinancialActivityAccountError.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        /** Should be able to delete a Financial Activity to Account Mapping **/
-        Integer deletedFinancialActivityAccountId = financialActivityAccountHelper.deleteFinancialActivityAccount(
-                financialActivityAccountId, responseSpec, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(deletedFinancialActivityAccountId);
-        Assert.assertEquals(financialActivityAccountId, deletedFinancialActivityAccountId);
-
-        /*** Trying to fetch a Deleted Account Mapping should give me a 404 **/
-        financialActivityAccountHelper.getFinancialActivityAccount(deletedFinancialActivityAccountId, responseSpecForResourceNotFoundError);
-    }
-
-    private void assertFinancialActivityAccountCreation(Integer financialActivityAccountId, Integer financialActivityId, Account glAccount) {
-        HashMap mappingDetails = financialActivityAccountHelper.getFinancialActivityAccount(financialActivityAccountId, responseSpec);
-        Assert.assertEquals(financialActivityId, ((HashMap) mappingDetails.get("financialActivityData")).get("id"));
-        Assert.assertEquals(glAccount.getAccountID(), ((HashMap) mappingDetails.get("glAccountData")).get("id"));
-    }
-
-    /**
-     * Delete the Financial activities
-     */
-    @After
-    public void tearDown() {
-        List<HashMap> financialActivities = this.financialActivityAccountHelper.getAllFinancialActivityAccounts(this.responseSpec);
-        for (HashMap financialActivity : financialActivities) {
-            Integer financialActivityAccountId = (Integer) financialActivity.get("id");
-            Integer deletedFinancialActivityAccountId = this.financialActivityAccountHelper.deleteFinancialActivityAccount(
-                    financialActivityAccountId, this.responseSpec, CommonConstants.RESPONSE_RESOURCE_ID);
-            Assert.assertNotNull(deletedFinancialActivityAccountId);
-            Assert.assertEquals(financialActivityAccountId, deletedFinancialActivityAccountId);
-        }
-    }
-}


[40/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/example/jquery.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/example/jquery.js b/docs/system-architecture/css/toc-0.1.2/example/jquery.js
deleted file mode 100644
index 8ccd0ea..0000000
--- a/docs/system-architecture/css/toc-0.1.2/example/jquery.js
+++ /dev/null
@@ -1,9266 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.7.1
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Mon Nov 21 21:11:03 2011 -0500
- */
-(function( window, undefined ) {
-
-// Use the correct document accordingly with window argument (sandbox)
-var document = window.document,
-	navigator = window.navigator,
-	location = window.location;
-var jQuery = (function() {
-
-// Define a local copy of jQuery
-var jQuery = function( selector, context ) {
-		// The jQuery object is actually just the init constructor 'enhanced'
-		return new jQuery.fn.init( selector, context, rootjQuery );
-	},
-
-	// Map over jQuery in case of overwrite
-	_jQuery = window.jQuery,
-
-	// Map over the $ in case of overwrite
-	_$ = window.$,
-
-	// A central reference to the root jQuery(document)
-	rootjQuery,
-
-	// A simple way to check for HTML strings or ID strings
-	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
-	quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
-
-	// Check if a string has a non-whitespace character in it
-	rnotwhite = /\S/,
-
-	// Used for trimming whitespace
-	trimLeft = /^\s+/,
-	trimRight = /\s+$/,
-
-	// Match a standalone tag
-	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
-
-	// JSON RegExp
-	rvalidchars = /^[\],:{}\s]*$/,
-	rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
-	rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
-	rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
-
-	// Useragent RegExp
-	rwebkit = /(webkit)[ \/]([\w.]+)/,
-	ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
-	rmsie = /(msie) ([\w.]+)/,
-	rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
-
-	// Matches dashed string for camelizing
-	rdashAlpha = /-([a-z]|[0-9])/ig,
-	rmsPrefix = /^-ms-/,
-
-	// Used by jQuery.camelCase as callback to replace()
-	fcamelCase = function( all, letter ) {
-		return ( letter + "" ).toUpperCase();
-	},
-
-	// Keep a UserAgent string for use with jQuery.browser
-	userAgent = navigator.userAgent,
-
-	// For matching the engine and version of the browser
-	browserMatch,
-
-	// The deferred used on DOM ready
-	readyList,
-
-	// The ready event handler
-	DOMContentLoaded,
-
-	// Save a reference to some core methods
-	toString = Object.prototype.toString,
-	hasOwn = Object.prototype.hasOwnProperty,
-	push = Array.prototype.push,
-	slice = Array.prototype.slice,
-	trim = String.prototype.trim,
-	indexOf = Array.prototype.indexOf,
-
-	// [[Class]] -> type pairs
-	class2type = {};
-
-jQuery.fn = jQuery.prototype = {
-	constructor: jQuery,
-	init: function( selector, context, rootjQuery ) {
-		var match, elem, ret, doc;
-
-		// Handle $(""), $(null), or $(undefined)
-		if ( !selector ) {
-			return this;
-		}
-
-		// Handle $(DOMElement)
-		if ( selector.nodeType ) {
-			this.context = this[0] = selector;
-			this.length = 1;
-			return this;
-		}
-
-		// The body element only exists once, optimize finding it
-		if ( selector === "body" && !context && document.body ) {
-			this.context = document;
-			this[0] = document.body;
-			this.selector = selector;
-			this.length = 1;
-			return this;
-		}
-
-		// Handle HTML strings
-		if ( typeof selector === "string" ) {
-			// Are we dealing with HTML string or an ID?
-			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
-				// Assume that strings that start and end with <> are HTML and skip the regex check
-				match = [ null, selector, null ];
-
-			} else {
-				match = quickExpr.exec( selector );
-			}
-
-			// Verify a match, and that no context was specified for #id
-			if ( match && (match[1] || !context) ) {
-
-				// HANDLE: $(html) -> $(array)
-				if ( match[1] ) {
-					context = context instanceof jQuery ? context[0] : context;
-					doc = ( context ? context.ownerDocument || context : document );
-
-					// If a single string is passed in and it's a single tag
-					// just do a createElement and skip the rest
-					ret = rsingleTag.exec( selector );
-
-					if ( ret ) {
-						if ( jQuery.isPlainObject( context ) ) {
-							selector = [ document.createElement( ret[1] ) ];
-							jQuery.fn.attr.call( selector, context, true );
-
-						} else {
-							selector = [ doc.createElement( ret[1] ) ];
-						}
-
-					} else {
-						ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
-						selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
-					}
-
-					return jQuery.merge( this, selector );
-
-				// HANDLE: $("#id")
-				} else {
-					elem = document.getElementById( match[2] );
-
-					// Check parentNode to catch when Blackberry 4.6 returns
-					// nodes that are no longer in the document #6963
-					if ( elem && elem.parentNode ) {
-						// Handle the case where IE and Opera return items
-						// by name instead of ID
-						if ( elem.id !== match[2] ) {
-							return rootjQuery.find( selector );
-						}
-
-						// Otherwise, we inject the element directly into the jQuery object
-						this.length = 1;
-						this[0] = elem;
-					}
-
-					this.context = document;
-					this.selector = selector;
-					return this;
-				}
-
-			// HANDLE: $(expr, $(...))
-			} else if ( !context || context.jquery ) {
-				return ( context || rootjQuery ).find( selector );
-
-			// HANDLE: $(expr, context)
-			// (which is just equivalent to: $(context).find(expr)
-			} else {
-				return this.constructor( context ).find( selector );
-			}
-
-		// HANDLE: $(function)
-		// Shortcut for document ready
-		} else if ( jQuery.isFunction( selector ) ) {
-			return rootjQuery.ready( selector );
-		}
-
-		if ( selector.selector !== undefined ) {
-			this.selector = selector.selector;
-			this.context = selector.context;
-		}
-
-		return jQuery.makeArray( selector, this );
-	},
-
-	// Start with an empty selector
-	selector: "",
-
-	// The current version of jQuery being used
-	jquery: "1.7.1",
-
-	// The default length of a jQuery object is 0
-	length: 0,
-
-	// The number of elements contained in the matched element set
-	size: function() {
-		return this.length;
-	},
-
-	toArray: function() {
-		return slice.call( this, 0 );
-	},
-
-	// Get the Nth element in the matched element set OR
-	// Get the whole matched element set as a clean array
-	get: function( num ) {
-		return num == null ?
-
-			// Return a 'clean' array
-			this.toArray() :
-
-			// Return just the object
-			( num < 0 ? this[ this.length + num ] : this[ num ] );
-	},
-
-	// Take an array of elements and push it onto the stack
-	// (returning the new matched element set)
-	pushStack: function( elems, name, selector ) {
-		// Build a new jQuery matched element set
-		var ret = this.constructor();
-
-		if ( jQuery.isArray( elems ) ) {
-			push.apply( ret, elems );
-
-		} else {
-			jQuery.merge( ret, elems );
-		}
-
-		// Add the old object onto the stack (as a reference)
-		ret.prevObject = this;
-
-		ret.context = this.context;
-
-		if ( name === "find" ) {
-			ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
-		} else if ( name ) {
-			ret.selector = this.selector + "." + name + "(" + selector + ")";
-		}
-
-		// Return the newly-formed element set
-		return ret;
-	},
-
-	// Execute a callback for every element in the matched set.
-	// (You can seed the arguments with an array of args, but this is
-	// only used internally.)
-	each: function( callback, args ) {
-		return jQuery.each( this, callback, args );
-	},
-
-	ready: function( fn ) {
-		// Attach the listeners
-		jQuery.bindReady();
-
-		// Add the callback
-		readyList.add( fn );
-
-		return this;
-	},
-
-	eq: function( i ) {
-		i = +i;
-		return i === -1 ?
-			this.slice( i ) :
-			this.slice( i, i + 1 );
-	},
-
-	first: function() {
-		return this.eq( 0 );
-	},
-
-	last: function() {
-		return this.eq( -1 );
-	},
-
-	slice: function() {
-		return this.pushStack( slice.apply( this, arguments ),
-			"slice", slice.call(arguments).join(",") );
-	},
-
-	map: function( callback ) {
-		return this.pushStack( jQuery.map(this, function( elem, i ) {
-			return callback.call( elem, i, elem );
-		}));
-	},
-
-	end: function() {
-		return this.prevObject || this.constructor(null);
-	},
-
-	// For internal use only.
-	// Behaves like an Array's method, not like a jQuery method.
-	push: push,
-	sort: [].sort,
-	splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
-	var options, name, src, copy, copyIsArray, clone,
-		target = arguments[0] || {},
-		i = 1,
-		length = arguments.length,
-		deep = false;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-		target = arguments[1] || {};
-		// skip the boolean and the target
-		i = 2;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-		target = {};
-	}
-
-	// extend jQuery itself if only one argument is passed
-	if ( length === i ) {
-		target = this;
-		--i;
-	}
-
-	for ( ; i < length; i++ ) {
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null ) {
-			// Extend the base object
-			for ( name in options ) {
-				src = target[ name ];
-				copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy ) {
-					continue;
-				}
-
-				// Recurse if we're merging plain objects or arrays
-				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-					if ( copyIsArray ) {
-						copyIsArray = false;
-						clone = src && jQuery.isArray(src) ? src : [];
-
-					} else {
-						clone = src && jQuery.isPlainObject(src) ? src : {};
-					}
-
-					// Never move original objects, clone them
-					target[ name ] = jQuery.extend( deep, clone, copy );
-
-				// Don't bring in undefined values
-				} else if ( copy !== undefined ) {
-					target[ name ] = copy;
-				}
-			}
-		}
-	}
-
-	// Return the modified object
-	return target;
-};
-
-jQuery.extend({
-	noConflict: function( deep ) {
-		if ( window.$ === jQuery ) {
-			window.$ = _$;
-		}
-
-		if ( deep && window.jQuery === jQuery ) {
-			window.jQuery = _jQuery;
-		}
-
-		return jQuery;
-	},
-
-	// Is the DOM ready to be used? Set to true once it occurs.
-	isReady: false,
-
-	// A counter to track how many items to wait for before
-	// the ready event fires. See #6781
-	readyWait: 1,
-
-	// Hold (or release) the ready event
-	holdReady: function( hold ) {
-		if ( hold ) {
-			jQuery.readyWait++;
-		} else {
-			jQuery.ready( true );
-		}
-	},
-
-	// Handle when the DOM is ready
-	ready: function( wait ) {
-		// Either a released hold or an DOMready/load event and not yet ready
-		if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
-			// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-			if ( !document.body ) {
-				return setTimeout( jQuery.ready, 1 );
-			}
-
-			// Remember that the DOM is ready
-			jQuery.isReady = true;
-
-			// If a normal DOM Ready event fired, decrement, and wait if need be
-			if ( wait !== true && --jQuery.readyWait > 0 ) {
-				return;
-			}
-
-			// If there are functions bound, to execute
-			readyList.fireWith( document, [ jQuery ] );
-
-			// Trigger any bound ready events
-			if ( jQuery.fn.trigger ) {
-				jQuery( document ).trigger( "ready" ).off( "ready" );
-			}
-		}
-	},
-
-	bindReady: function() {
-		if ( readyList ) {
-			return;
-		}
-
-		readyList = jQuery.Callbacks( "once memory" );
-
-		// Catch cases where $(document).ready() is called after the
-		// browser event has already occurred.
-		if ( document.readyState === "complete" ) {
-			// Handle it asynchronously to allow scripts the opportunity to delay ready
-			return setTimeout( jQuery.ready, 1 );
-		}
-
-		// Mozilla, Opera and webkit nightlies currently support this event
-		if ( document.addEventListener ) {
-			// Use the handy event callback
-			document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
-			// A fallback to window.onload, that will always work
-			window.addEventListener( "load", jQuery.ready, false );
-
-		// If IE event model is used
-		} else if ( document.attachEvent ) {
-			// ensure firing before onload,
-			// maybe late but safe also for iframes
-			document.attachEvent( "onreadystatechange", DOMContentLoaded );
-
-			// A fallback to window.onload, that will always work
-			window.attachEvent( "onload", jQuery.ready );
-
-			// If IE and not a frame
-			// continually check to see if the document is ready
-			var toplevel = false;
-
-			try {
-				toplevel = window.frameElement == null;
-			} catch(e) {}
-
-			if ( document.documentElement.doScroll && toplevel ) {
-				doScrollCheck();
-			}
-		}
-	},
-
-	// See test/unit/core.js for details concerning isFunction.
-	// Since version 1.3, DOM methods and functions like alert
-	// aren't supported. They return false on IE (#2968).
-	isFunction: function( obj ) {
-		return jQuery.type(obj) === "function";
-	},
-
-	isArray: Array.isArray || function( obj ) {
-		return jQuery.type(obj) === "array";
-	},
-
-	// A crude way of determining if an object is a window
-	isWindow: function( obj ) {
-		return obj && typeof obj === "object" && "setInterval" in obj;
-	},
-
-	isNumeric: function( obj ) {
-		return !isNaN( parseFloat(obj) ) && isFinite( obj );
-	},
-
-	type: function( obj ) {
-		return obj == null ?
-			String( obj ) :
-			class2type[ toString.call(obj) ] || "object";
-	},
-
-	isPlainObject: function( obj ) {
-		// Must be an Object.
-		// Because of IE, we also have to check the presence of the constructor property.
-		// Make sure that DOM nodes and window objects don't pass through, as well
-		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-			return false;
-		}
-
-		try {
-			// Not own constructor property must be Object
-			if ( obj.constructor &&
-				!hasOwn.call(obj, "constructor") &&
-				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
-				return false;
-			}
-		} catch ( e ) {
-			// IE8,9 Will throw exceptions on certain host objects #9897
-			return false;
-		}
-
-		// Own properties are enumerated firstly, so to speed up,
-		// if last one is own, then all properties are own.
-
-		var key;
-		for ( key in obj ) {}
-
-		return key === undefined || hasOwn.call( obj, key );
-	},
-
-	isEmptyObject: function( obj ) {
-		for ( var name in obj ) {
-			return false;
-		}
-		return true;
-	},
-
-	error: function( msg ) {
-		throw new Error( msg );
-	},
-
-	parseJSON: function( data ) {
-		if ( typeof data !== "string" || !data ) {
-			return null;
-		}
-
-		// Make sure leading/trailing whitespace is removed (IE can't handle it)
-		data = jQuery.trim( data );
-
-		// Attempt to parse using the native JSON parser first
-		if ( window.JSON && window.JSON.parse ) {
-			return window.JSON.parse( data );
-		}
-
-		// Make sure the incoming data is actual JSON
-		// Logic borrowed from http://json.org/json2.js
-		if ( rvalidchars.test( data.replace( rvalidescape, "@" )
-			.replace( rvalidtokens, "]" )
-			.replace( rvalidbraces, "")) ) {
-
-			return ( new Function( "return " + data ) )();
-
-		}
-		jQuery.error( "Invalid JSON: " + data );
-	},
-
-	// Cross-browser xml parsing
-	parseXML: function( data ) {
-		var xml, tmp;
-		try {
-			if ( window.DOMParser ) { // Standard
-				tmp = new DOMParser();
-				xml = tmp.parseFromString( data , "text/xml" );
-			} else { // IE
-				xml = new ActiveXObject( "Microsoft.XMLDOM" );
-				xml.async = "false";
-				xml.loadXML( data );
-			}
-		} catch( e ) {
-			xml = undefined;
-		}
-		if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
-			jQuery.error( "Invalid XML: " + data );
-		}
-		return xml;
-	},
-
-	noop: function() {},
-
-	// Evaluates a script in a global context
-	// Workarounds based on findings by Jim Driscoll
-	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
-	globalEval: function( data ) {
-		if ( data && rnotwhite.test( data ) ) {
-			// We use execScript on Internet Explorer
-			// We use an anonymous function so that context is window
-			// rather than jQuery in Firefox
-			( window.execScript || function( data ) {
-				window[ "eval" ].call( window, data );
-			} )( data );
-		}
-	},
-
-	// Convert dashed to camelCase; used by the css and data modules
-	// Microsoft forgot to hump their vendor prefix (#9572)
-	camelCase: function( string ) {
-		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
-	},
-
-	nodeName: function( elem, name ) {
-		return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
-	},
-
-	// args is for internal usage only
-	each: function( object, callback, args ) {
-		var name, i = 0,
-			length = object.length,
-			isObj = length === undefined || jQuery.isFunction( object );
-
-		if ( args ) {
-			if ( isObj ) {
-				for ( name in object ) {
-					if ( callback.apply( object[ name ], args ) === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( ; i < length; ) {
-					if ( callback.apply( object[ i++ ], args ) === false ) {
-						break;
-					}
-				}
-			}
-
-		// A special, fast, case for the most common use of each
-		} else {
-			if ( isObj ) {
-				for ( name in object ) {
-					if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( ; i < length; ) {
-					if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
-						break;
-					}
-				}
-			}
-		}
-
-		return object;
-	},
-
-	// Use native String.trim function wherever possible
-	trim: trim ?
-		function( text ) {
-			return text == null ?
-				"" :
-				trim.call( text );
-		} :
-
-		// Otherwise use our own trimming functionality
-		function( text ) {
-			return text == null ?
-				"" :
-				text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
-		},
-
-	// results is for internal usage only
-	makeArray: function( array, results ) {
-		var ret = results || [];
-
-		if ( array != null ) {
-			// The window, strings (and functions) also have 'length'
-			// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
-			var type = jQuery.type( array );
-
-			if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
-				push.call( ret, array );
-			} else {
-				jQuery.merge( ret, array );
-			}
-		}
-
-		return ret;
-	},
-
-	inArray: function( elem, array, i ) {
-		var len;
-
-		if ( array ) {
-			if ( indexOf ) {
-				return indexOf.call( array, elem, i );
-			}
-
-			len = array.length;
-			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
-			for ( ; i < len; i++ ) {
-				// Skip accessing in sparse arrays
-				if ( i in array && array[ i ] === elem ) {
-					return i;
-				}
-			}
-		}
-
-		return -1;
-	},
-
-	merge: function( first, second ) {
-		var i = first.length,
-			j = 0;
-
-		if ( typeof second.length === "number" ) {
-			for ( var l = second.length; j < l; j++ ) {
-				first[ i++ ] = second[ j ];
-			}
-
-		} else {
-			while ( second[j] !== undefined ) {
-				first[ i++ ] = second[ j++ ];
-			}
-		}
-
-		first.length = i;
-
-		return first;
-	},
-
-	grep: function( elems, callback, inv ) {
-		var ret = [], retVal;
-		inv = !!inv;
-
-		// Go through the array, only saving the items
-		// that pass the validator function
-		for ( var i = 0, length = elems.length; i < length; i++ ) {
-			retVal = !!callback( elems[ i ], i );
-			if ( inv !== retVal ) {
-				ret.push( elems[ i ] );
-			}
-		}
-
-		return ret;
-	},
-
-	// arg is for internal usage only
-	map: function( elems, callback, arg ) {
-		var value, key, ret = [],
-			i = 0,
-			length = elems.length,
-			// jquery objects are treated as arrays
-			isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
-
-		// Go through the array, translating each of the items to their
-		if ( isArray ) {
-			for ( ; i < length; i++ ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret[ ret.length ] = value;
-				}
-			}
-
-		// Go through every key on the object,
-		} else {
-			for ( key in elems ) {
-				value = callback( elems[ key ], key, arg );
-
-				if ( value != null ) {
-					ret[ ret.length ] = value;
-				}
-			}
-		}
-
-		// Flatten any nested arrays
-		return ret.concat.apply( [], ret );
-	},
-
-	// A global GUID counter for objects
-	guid: 1,
-
-	// Bind a function to a context, optionally partially applying any
-	// arguments.
-	proxy: function( fn, context ) {
-		if ( typeof context === "string" ) {
-			var tmp = fn[ context ];
-			context = fn;
-			fn = tmp;
-		}
-
-		// Quick check to determine if target is callable, in the spec
-		// this throws a TypeError, but we will just return undefined.
-		if ( !jQuery.isFunction( fn ) ) {
-			return undefined;
-		}
-
-		// Simulated bind
-		var args = slice.call( arguments, 2 ),
-			proxy = function() {
-				return fn.apply( context, args.concat( slice.call( arguments ) ) );
-			};
-
-		// Set the guid of unique handler to the same of original handler, so it can be removed
-		proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
-
-		return proxy;
-	},
-
-	// Mutifunctional method to get and set values to a collection
-	// The value/s can optionally be executed if it's a function
-	access: function( elems, key, value, exec, fn, pass ) {
-		var length = elems.length;
-
-		// Setting many attributes
-		if ( typeof key === "object" ) {
-			for ( var k in key ) {
-				jQuery.access( elems, k, key[k], exec, fn, value );
-			}
-			return elems;
-		}
-
-		// Setting one attribute
-		if ( value !== undefined ) {
-			// Optionally, function values get executed if exec is true
-			exec = !pass && exec && jQuery.isFunction(value);
-
-			for ( var i = 0; i < length; i++ ) {
-				fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
-			}
-
-			return elems;
-		}
-
-		// Getting an attribute
-		return length ? fn( elems[0], key ) : undefined;
-	},
-
-	now: function() {
-		return ( new Date() ).getTime();
-	},
-
-	// Use of jQuery.browser is frowned upon.
-	// More details: http://docs.jquery.com/Utilities/jQuery.browser
-	uaMatch: function( ua ) {
-		ua = ua.toLowerCase();
-
-		var match = rwebkit.exec( ua ) ||
-			ropera.exec( ua ) ||
-			rmsie.exec( ua ) ||
-			ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
-			[];
-
-		return { browser: match[1] || "", version: match[2] || "0" };
-	},
-
-	sub: function() {
-		function jQuerySub( selector, context ) {
-			return new jQuerySub.fn.init( selector, context );
-		}
-		jQuery.extend( true, jQuerySub, this );
-		jQuerySub.superclass = this;
-		jQuerySub.fn = jQuerySub.prototype = this();
-		jQuerySub.fn.constructor = jQuerySub;
-		jQuerySub.sub = this.sub;
-		jQuerySub.fn.init = function init( selector, context ) {
-			if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
-				context = jQuerySub( context );
-			}
-
-			return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
-		};
-		jQuerySub.fn.init.prototype = jQuerySub.fn;
-		var rootjQuerySub = jQuerySub(document);
-		return jQuerySub;
-	},
-
-	browser: {}
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
-	class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-browserMatch = jQuery.uaMatch( userAgent );
-if ( browserMatch.browser ) {
-	jQuery.browser[ browserMatch.browser ] = true;
-	jQuery.browser.version = browserMatch.version;
-}
-
-// Deprecated, use jQuery.browser.webkit instead
-if ( jQuery.browser.webkit ) {
-	jQuery.browser.safari = true;
-}
-
-// IE doesn't match non-breaking spaces with \s
-if ( rnotwhite.test( "\xA0" ) ) {
-	trimLeft = /^[\s\xA0]+/;
-	trimRight = /[\s\xA0]+$/;
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-
-// Cleanup functions for the document ready method
-if ( document.addEventListener ) {
-	DOMContentLoaded = function() {
-		document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-		jQuery.ready();
-	};
-
-} else if ( document.attachEvent ) {
-	DOMContentLoaded = function() {
-		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
-		if ( document.readyState === "complete" ) {
-			document.detachEvent( "onreadystatechange", DOMContentLoaded );
-			jQuery.ready();
-		}
-	};
-}
-
-// The DOM ready check for Internet Explorer
-function doScrollCheck() {
-	if ( jQuery.isReady ) {
-		return;
-	}
-
-	try {
-		// If IE is used, use the trick by Diego Perini
-		// http://javascript.nwbox.com/IEContentLoaded/
-		document.documentElement.doScroll("left");
-	} catch(e) {
-		setTimeout( doScrollCheck, 1 );
-		return;
-	}
-
-	// and execute any waiting functions
-	jQuery.ready();
-}
-
-return jQuery;
-
-})();
-
-
-// String to Object flags format cache
-var flagsCache = {};
-
-// Convert String-formatted flags into Object-formatted ones and store in cache
-function createFlags( flags ) {
-	var object = flagsCache[ flags ] = {},
-		i, length;
-	flags = flags.split( /\s+/ );
-	for ( i = 0, length = flags.length; i < length; i++ ) {
-		object[ flags[i] ] = true;
-	}
-	return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *	flags:	an optional list of space-separated flags that will change how
- *			the callback list behaves
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible flags:
- *
- *	once:			will ensure the callback list can only be fired once (like a Deferred)
- *
- *	memory:			will keep track of previous values and will call any callback added
- *					after the list has been fired right away with the latest "memorized"
- *					values (like a Deferred)
- *
- *	unique:			will ensure a callback can only be added once (no duplicate in the list)
- *
- *	stopOnFalse:	interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( flags ) {
-
-	// Convert flags from String-formatted to Object-formatted
-	// (we check in cache first)
-	flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
-
-	var // Actual callback list
-		list = [],
-		// Stack of fire calls for repeatable lists
-		stack = [],
-		// Last fire value (for non-forgettable lists)
-		memory,
-		// Flag to know if list is currently firing
-		firing,
-		// First callback to fire (used internally by add and fireWith)
-		firingStart,
-		// End of the loop when firing
-		firingLength,
-		// Index of currently firing callback (modified by remove if needed)
-		firingIndex,
-		// Add one or several callbacks to the list
-		add = function( args ) {
-			var i,
-				length,
-				elem,
-				type,
-				actual;
-			for ( i = 0, length = args.length; i < length; i++ ) {
-				elem = args[ i ];
-				type = jQuery.type( elem );
-				if ( type === "array" ) {
-					// Inspect recursively
-					add( elem );
-				} else if ( type === "function" ) {
-					// Add if not in unique mode and callback is not in
-					if ( !flags.unique || !self.has( elem ) ) {
-						list.push( elem );
-					}
-				}
-			}
-		},
-		// Fire callbacks
-		fire = function( context, args ) {
-			args = args || [];
-			memory = !flags.memory || [ context, args ];
-			firing = true;
-			firingIndex = firingStart || 0;
-			firingStart = 0;
-			firingLength = list.length;
-			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
-				if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
-					memory = true; // Mark as halted
-					break;
-				}
-			}
-			firing = false;
-			if ( list ) {
-				if ( !flags.once ) {
-					if ( stack && stack.length ) {
-						memory = stack.shift();
-						self.fireWith( memory[ 0 ], memory[ 1 ] );
-					}
-				} else if ( memory === true ) {
-					self.disable();
-				} else {
-					list = [];
-				}
-			}
-		},
-		// Actual Callbacks object
-		self = {
-			// Add a callback or a collection of callbacks to the list
-			add: function() {
-				if ( list ) {
-					var length = list.length;
-					add( arguments );
-					// Do we need to add the callbacks to the
-					// current firing batch?
-					if ( firing ) {
-						firingLength = list.length;
-					// With memory, if we're not firing then
-					// we should call right away, unless previous
-					// firing was halted (stopOnFalse)
-					} else if ( memory && memory !== true ) {
-						firingStart = length;
-						fire( memory[ 0 ], memory[ 1 ] );
-					}
-				}
-				return this;
-			},
-			// Remove a callback from the list
-			remove: function() {
-				if ( list ) {
-					var args = arguments,
-						argIndex = 0,
-						argLength = args.length;
-					for ( ; argIndex < argLength ; argIndex++ ) {
-						for ( var i = 0; i < list.length; i++ ) {
-							if ( args[ argIndex ] === list[ i ] ) {
-								// Handle firingIndex and firingLength
-								if ( firing ) {
-									if ( i <= firingLength ) {
-										firingLength--;
-										if ( i <= firingIndex ) {
-											firingIndex--;
-										}
-									}
-								}
-								// Remove the element
-								list.splice( i--, 1 );
-								// If we have some unicity property then
-								// we only need to do this once
-								if ( flags.unique ) {
-									break;
-								}
-							}
-						}
-					}
-				}
-				return this;
-			},
-			// Control if a given callback is in the list
-			has: function( fn ) {
-				if ( list ) {
-					var i = 0,
-						length = list.length;
-					for ( ; i < length; i++ ) {
-						if ( fn === list[ i ] ) {
-							return true;
-						}
-					}
-				}
-				return false;
-			},
-			// Remove all callbacks from the list
-			empty: function() {
-				list = [];
-				return this;
-			},
-			// Have the list do nothing anymore
-			disable: function() {
-				list = stack = memory = undefined;
-				return this;
-			},
-			// Is it disabled?
-			disabled: function() {
-				return !list;
-			},
-			// Lock the list in its current state
-			lock: function() {
-				stack = undefined;
-				if ( !memory || memory === true ) {
-					self.disable();
-				}
-				return this;
-			},
-			// Is it locked?
-			locked: function() {
-				return !stack;
-			},
-			// Call all callbacks with the given context and arguments
-			fireWith: function( context, args ) {
-				if ( stack ) {
-					if ( firing ) {
-						if ( !flags.once ) {
-							stack.push( [ context, args ] );
-						}
-					} else if ( !( flags.once && memory ) ) {
-						fire( context, args );
-					}
-				}
-				return this;
-			},
-			// Call all the callbacks with the given arguments
-			fire: function() {
-				self.fireWith( this, arguments );
-				return this;
-			},
-			// To know if the callbacks have already been called at least once
-			fired: function() {
-				return !!memory;
-			}
-		};
-
-	return self;
-};
-
-
-
-
-var // Static reference to slice
-	sliceDeferred = [].slice;
-
-jQuery.extend({
-
-	Deferred: function( func ) {
-		var doneList = jQuery.Callbacks( "once memory" ),
-			failList = jQuery.Callbacks( "once memory" ),
-			progressList = jQuery.Callbacks( "memory" ),
-			state = "pending",
-			lists = {
-				resolve: doneList,
-				reject: failList,
-				notify: progressList
-			},
-			promise = {
-				done: doneList.add,
-				fail: failList.add,
-				progress: progressList.add,
-
-				state: function() {
-					return state;
-				},
-
-				// Deprecated
-				isResolved: doneList.fired,
-				isRejected: failList.fired,
-
-				then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
-					deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
-					return this;
-				},
-				always: function() {
-					deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
-					return this;
-				},
-				pipe: function( fnDone, fnFail, fnProgress ) {
-					return jQuery.Deferred(function( newDefer ) {
-						jQuery.each( {
-							done: [ fnDone, "resolve" ],
-							fail: [ fnFail, "reject" ],
-							progress: [ fnProgress, "notify" ]
-						}, function( handler, data ) {
-							var fn = data[ 0 ],
-								action = data[ 1 ],
-								returned;
-							if ( jQuery.isFunction( fn ) ) {
-								deferred[ handler ](function() {
-									returned = fn.apply( this, arguments );
-									if ( returned && jQuery.isFunction( returned.promise ) ) {
-										returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
-									} else {
-										newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
-									}
-								});
-							} else {
-								deferred[ handler ]( newDefer[ action ] );
-							}
-						});
-					}).promise();
-				},
-				// Get a promise for this deferred
-				// If obj is provided, the promise aspect is added to the object
-				promise: function( obj ) {
-					if ( obj == null ) {
-						obj = promise;
-					} else {
-						for ( var key in promise ) {
-							obj[ key ] = promise[ key ];
-						}
-					}
-					return obj;
-				}
-			},
-			deferred = promise.promise({}),
-			key;
-
-		for ( key in lists ) {
-			deferred[ key ] = lists[ key ].fire;
-			deferred[ key + "With" ] = lists[ key ].fireWith;
-		}
-
-		// Handle state
-		deferred.done( function() {
-			state = "resolved";
-		}, failList.disable, progressList.lock ).fail( function() {
-			state = "rejected";
-		}, doneList.disable, progressList.lock );
-
-		// Call given func if any
-		if ( func ) {
-			func.call( deferred, deferred );
-		}
-
-		// All done!
-		return deferred;
-	},
-
-	// Deferred helper
-	when: function( firstParam ) {
-		var args = sliceDeferred.call( arguments, 0 ),
-			i = 0,
-			length = args.length,
-			pValues = new Array( length ),
-			count = length,
-			pCount = length,
-			deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
-				firstParam :
-				jQuery.Deferred(),
-			promise = deferred.promise();
-		function resolveFunc( i ) {
-			return function( value ) {
-				args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
-				if ( !( --count ) ) {
-					deferred.resolveWith( deferred, args );
-				}
-			};
-		}
-		function progressFunc( i ) {
-			return function( value ) {
-				pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
-				deferred.notifyWith( promise, pValues );
-			};
-		}
-		if ( length > 1 ) {
-			for ( ; i < length; i++ ) {
-				if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
-					args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
-				} else {
-					--count;
-				}
-			}
-			if ( !count ) {
-				deferred.resolveWith( deferred, args );
-			}
-		} else if ( deferred !== firstParam ) {
-			deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
-		}
-		return promise;
-	}
-});
-
-
-
-
-jQuery.support = (function() {
-
-	var support,
-		all,
-		a,
-		select,
-		opt,
-		input,
-		marginDiv,
-		fragment,
-		tds,
-		events,
-		eventName,
-		i,
-		isSupported,
-		div = document.createElement( "div" ),
-		documentElement = document.documentElement;
-
-	// Preliminary tests
-	div.setAttribute("className", "t");
-	div.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-
-	all = div.getElementsByTagName( "*" );
-	a = div.getElementsByTagName( "a" )[ 0 ];
-
-	// Can't get basic test support
-	if ( !all || !all.length || !a ) {
-		return {};
-	}
-
-	// First batch of supports tests
-	select = document.createElement( "select" );
-	opt = select.appendChild( document.createElement("option") );
-	input = div.getElementsByTagName( "input" )[ 0 ];
-
-	support = {
-		// IE strips leading whitespace when .innerHTML is used
-		leadingWhitespace: ( div.firstChild.nodeType === 3 ),
-
-		// Make sure that tbody elements aren't automatically inserted
-		// IE will insert them into empty tables
-		tbody: !div.getElementsByTagName("tbody").length,
-
-		// Make sure that link elements get serialized correctly by innerHTML
-		// This requires a wrapper element in IE
-		htmlSerialize: !!div.getElementsByTagName("link").length,
-
-		// Get the style information from getAttribute
-		// (IE uses .cssText instead)
-		style: /top/.test( a.getAttribute("style") ),
-
-		// Make sure that URLs aren't manipulated
-		// (IE normalizes it by default)
-		hrefNormalized: ( a.getAttribute("href") === "/a" ),
-
-		// Make sure that element opacity exists
-		// (IE uses filter instead)
-		// Use a regex to work around a WebKit issue. See #5145
-		opacity: /^0.55/.test( a.style.opacity ),
-
-		// Verify style float existence
-		// (IE uses styleFloat instead of cssFloat)
-		cssFloat: !!a.style.cssFloat,
-
-		// Make sure that if no value is specified for a checkbox
-		// that it defaults to "on".
-		// (WebKit defaults to "" instead)
-		checkOn: ( input.value === "on" ),
-
-		// Make sure that a selected-by-default option has a working selected property.
-		// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
-		optSelected: opt.selected,
-
-		// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
-		getSetAttribute: div.className !== "t",
-
-		// Tests for enctype support on a form(#6743)
-		enctype: !!document.createElement("form").enctype,
-
-		// Makes sure cloning an html5 element does not cause problems
-		// Where outerHTML is undefined, this still works
-		html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
-
-		// Will be defined later
-		submitBubbles: true,
-		changeBubbles: true,
-		focusinBubbles: false,
-		deleteExpando: true,
-		noCloneEvent: true,
-		inlineBlockNeedsLayout: false,
-		shrinkWrapBlocks: false,
-		reliableMarginRight: true
-	};
-
-	// Make sure checked status is properly cloned
-	input.checked = true;
-	support.noCloneChecked = input.cloneNode( true ).checked;
-
-	// Make sure that the options inside disabled selects aren't marked as disabled
-	// (WebKit marks them as disabled)
-	select.disabled = true;
-	support.optDisabled = !opt.disabled;
-
-	// Test to see if it's possible to delete an expando from an element
-	// Fails in Internet Explorer
-	try {
-		delete div.test;
-	} catch( e ) {
-		support.deleteExpando = false;
-	}
-
-	if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
-		div.attachEvent( "onclick", function() {
-			// Cloning a node shouldn't copy over any
-			// bound event handlers (IE does this)
-			support.noCloneEvent = false;
-		});
-		div.cloneNode( true ).fireEvent( "onclick" );
-	}
-
-	// Check if a radio maintains its value
-	// after being appended to the DOM
-	input = document.createElement("input");
-	input.value = "t";
-	input.setAttribute("type", "radio");
-	support.radioValue = input.value === "t";
-
-	input.setAttribute("checked", "checked");
-	div.appendChild( input );
-	fragment = document.createDocumentFragment();
-	fragment.appendChild( div.lastChild );
-
-	// WebKit doesn't clone checked state correctly in fragments
-	support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
-	// Check if a disconnected checkbox will retain its checked
-	// value of true after appended to the DOM (IE6/7)
-	support.appendChecked = input.checked;
-
-	fragment.removeChild( input );
-	fragment.appendChild( div );
-
-	div.innerHTML = "";
-
-	// Check if div with explicit width and no margin-right incorrectly
-	// gets computed margin-right based on width of container. For more
-	// info see bug #3333
-	// Fails in WebKit before Feb 2011 nightlies
-	// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-	if ( window.getComputedStyle ) {
-		marginDiv = document.createElement( "div" );
-		marginDiv.style.width = "0";
-		marginDiv.style.marginRight = "0";
-		div.style.width = "2px";
-		div.appendChild( marginDiv );
-		support.reliableMarginRight =
-			( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
-	}
-
-	// Technique from Juriy Zaytsev
-	// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
-	// We only care about the case where non-standard event systems
-	// are used, namely in IE. Short-circuiting here helps us to
-	// avoid an eval call (in setAttribute) which can cause CSP
-	// to go haywire. See: https://developer.mozilla.org/en/Security/CSP
-	if ( div.attachEvent ) {
-		for( i in {
-			submit: 1,
-			change: 1,
-			focusin: 1
-		}) {
-			eventName = "on" + i;
-			isSupported = ( eventName in div );
-			if ( !isSupported ) {
-				div.setAttribute( eventName, "return;" );
-				isSupported = ( typeof div[ eventName ] === "function" );
-			}
-			support[ i + "Bubbles" ] = isSupported;
-		}
-	}
-
-	fragment.removeChild( div );
-
-	// Null elements to avoid leaks in IE
-	fragment = select = opt = marginDiv = div = input = null;
-
-	// Run tests that need a body at doc ready
-	jQuery(function() {
-		var container, outer, inner, table, td, offsetSupport,
-			conMarginTop, ptlm, vb, style, html,
-			body = document.getElementsByTagName("body")[0];
-
-		if ( !body ) {
-			// Return for frameset docs that don't have a body
-			return;
-		}
-
-		conMarginTop = 1;
-		ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";
-		vb = "visibility:hidden;border:0;";
-		style = "style='" + ptlm + "border:5px solid #000;padding:0;'";
-		html = "<div " + style + "><div></div></div>" +
-			"<table " + style + " cellpadding='0' cellspacing='0'>" +
-			"<tr><td></td></tr></table>";
-
-		container = document.createElement("div");
-		container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
-		body.insertBefore( container, body.firstChild );
-
-		// Construct the test element
-		div = document.createElement("div");
-		container.appendChild( div );
-
-		// Check if table cells still have offsetWidth/Height when they are set
-		// to display:none and there are still other visible table cells in a
-		// table row; if so, offsetWidth/Height are not reliable for use when
-		// determining if an element has been hidden directly using
-		// display:none (it is still safe to use offsets if a parent element is
-		// hidden; don safety goggles and see bug #4512 for more information).
-		// (only IE 8 fails this test)
-		div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
-		tds = div.getElementsByTagName( "td" );
-		isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
-		tds[ 0 ].style.display = "";
-		tds[ 1 ].style.display = "none";
-
-		// Check if empty table cells still have offsetWidth/Height
-		// (IE <= 8 fail this test)
-		support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
-
-		// Figure out if the W3C box model works as expected
-		div.innerHTML = "";
-		div.style.width = div.style.paddingLeft = "1px";
-		jQuery.boxModel = support.boxModel = div.offsetWidth === 2;
-
-		if ( typeof div.style.zoom !== "undefined" ) {
-			// Check if natively block-level elements act like inline-block
-			// elements when setting their display to 'inline' and giving
-			// them layout
-			// (IE < 8 does this)
-			div.style.display = "inline";
-			div.style.zoom = 1;
-			support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
-
-			// Check if elements with layout shrink-wrap their children
-			// (IE 6 does this)
-			div.style.display = "";
-			div.innerHTML = "<div style='width:4px;'></div>";
-			support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
-		}
-
-		div.style.cssText = ptlm + vb;
-		div.innerHTML = html;
-
-		outer = div.firstChild;
-		inner = outer.firstChild;
-		td = outer.nextSibling.firstChild.firstChild;
-
-		offsetSupport = {
-			doesNotAddBorder: ( inner.offsetTop !== 5 ),
-			doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
-		};
-
-		inner.style.position = "fixed";
-		inner.style.top = "20px";
-
-		// safari subtracts parent border width here which is 5px
-		offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
-		inner.style.position = inner.style.top = "";
-
-		outer.style.overflow = "hidden";
-		outer.style.position = "relative";
-
-		offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
-		offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
-
-		body.removeChild( container );
-		div  = container = null;
-
-		jQuery.extend( support, offsetSupport );
-	});
-
-	return support;
-})();
-
-
-
-
-var rbrace = /^(?:\{.*\}|\[.*\])$/,
-	rmultiDash = /([A-Z])/g;
-
-jQuery.extend({
-	cache: {},
-
-	// Please use with caution
-	uuid: 0,
-
-	// Unique for each copy of jQuery on the page
-	// Non-digits removed to match rinlinejQuery
-	expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
-
-	// The following elements throw uncatchable exceptions if you
-	// attempt to add expando properties to them.
-	noData: {
-		"embed": true,
-		// Ban all objects except for Flash (which handle expandos)
-		"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
-		"applet": true
-	},
-
-	hasData: function( elem ) {
-		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
-		return !!elem && !isEmptyDataObject( elem );
-	},
-
-	data: function( elem, name, data, pvt /* Internal Use Only */ ) {
-		if ( !jQuery.acceptData( elem ) ) {
-			return;
-		}
-
-		var privateCache, thisCache, ret,
-			internalKey = jQuery.expando,
-			getByName = typeof name === "string",
-
-			// We have to handle DOM nodes and JS objects differently because IE6-7
-			// can't GC object references properly across the DOM-JS boundary
-			isNode = elem.nodeType,
-
-			// Only DOM nodes need the global jQuery cache; JS object data is
-			// attached directly to the object so GC can occur automatically
-			cache = isNode ? jQuery.cache : elem,
-
-			// Only defining an ID for JS objects if its cache already exists allows
-			// the code to shortcut on the same path as a DOM node with no cache
-			id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
-			isEvents = name === "events";
-
-		// Avoid doing any more work than we need to when trying to get data on an
-		// object that has no data at all
-		if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
-			return;
-		}
-
-		if ( !id ) {
-			// Only DOM nodes need a new unique ID for each element since their data
-			// ends up in the global cache
-			if ( isNode ) {
-				elem[ internalKey ] = id = ++jQuery.uuid;
-			} else {
-				id = internalKey;
-			}
-		}
-
-		if ( !cache[ id ] ) {
-			cache[ id ] = {};
-
-			// Avoids exposing jQuery metadata on plain JS objects when the object
-			// is serialized using JSON.stringify
-			if ( !isNode ) {
-				cache[ id ].toJSON = jQuery.noop;
-			}
-		}
-
-		// An object can be passed to jQuery.data instead of a key/value pair; this gets
-		// shallow copied over onto the existing cache
-		if ( typeof name === "object" || typeof name === "function" ) {
-			if ( pvt ) {
-				cache[ id ] = jQuery.extend( cache[ id ], name );
-			} else {
-				cache[ id ].data = jQuery.extend( cache[ id ].data, name );
-			}
-		}
-
-		privateCache = thisCache = cache[ id ];
-
-		// jQuery data() is stored in a separate object inside the object's internal data
-		// cache in order to avoid key collisions between internal data and user-defined
-		// data.
-		if ( !pvt ) {
-			if ( !thisCache.data ) {
-				thisCache.data = {};
-			}
-
-			thisCache = thisCache.data;
-		}
-
-		if ( data !== undefined ) {
-			thisCache[ jQuery.camelCase( name ) ] = data;
-		}
-
-		// Users should not attempt to inspect the internal events object using jQuery.data,
-		// it is undocumented and subject to change. But does anyone listen? No.
-		if ( isEvents && !thisCache[ name ] ) {
-			return privateCache.events;
-		}
-
-		// Check for both converted-to-camel and non-converted data property names
-		// If a data property was specified
-		if ( getByName ) {
-
-			// First Try to find as-is property data
-			ret = thisCache[ name ];
-
-			// Test for null|undefined property data
-			if ( ret == null ) {
-
-				// Try to find the camelCased property
-				ret = thisCache[ jQuery.camelCase( name ) ];
-			}
-		} else {
-			ret = thisCache;
-		}
-
-		return ret;
-	},
-
-	removeData: function( elem, name, pvt /* Internal Use Only */ ) {
-		if ( !jQuery.acceptData( elem ) ) {
-			return;
-		}
-
-		var thisCache, i, l,
-
-			// Reference to internal data cache key
-			internalKey = jQuery.expando,
-
-			isNode = elem.nodeType,
-
-			// See jQuery.data for more information
-			cache = isNode ? jQuery.cache : elem,
-
-			// See jQuery.data for more information
-			id = isNode ? elem[ internalKey ] : internalKey;
-
-		// If there is already no cache entry for this object, there is no
-		// purpose in continuing
-		if ( !cache[ id ] ) {
-			return;
-		}
-
-		if ( name ) {
-
-			thisCache = pvt ? cache[ id ] : cache[ id ].data;
-
-			if ( thisCache ) {
-
-				// Support array or space separated string names for data keys
-				if ( !jQuery.isArray( name ) ) {
-
-					// try the string as a key before any manipulation
-					if ( name in thisCache ) {
-						name = [ name ];
-					} else {
-
-						// split the camel cased version by spaces unless a key with the spaces exists
-						name = jQuery.camelCase( name );
-						if ( name in thisCache ) {
-							name = [ name ];
-						} else {
-							name = name.split( " " );
-						}
-					}
-				}
-
-				for ( i = 0, l = name.length; i < l; i++ ) {
-					delete thisCache[ name[i] ];
-				}
-
-				// If there is no data left in the cache, we want to continue
-				// and let the cache object itself get destroyed
-				if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
-					return;
-				}
-			}
-		}
-
-		// See jQuery.data for more information
-		if ( !pvt ) {
-			delete cache[ id ].data;
-
-			// Don't destroy the parent cache unless the internal data object
-			// had been the only thing left in it
-			if ( !isEmptyDataObject(cache[ id ]) ) {
-				return;
-			}
-		}
-
-		// Browsers that fail expando deletion also refuse to delete expandos on
-		// the window, but it will allow it on all other JS objects; other browsers
-		// don't care
-		// Ensure that `cache` is not a window object #10080
-		if ( jQuery.support.deleteExpando || !cache.setInterval ) {
-			delete cache[ id ];
-		} else {
-			cache[ id ] = null;
-		}
-
-		// We destroyed the cache and need to eliminate the expando on the node to avoid
-		// false lookups in the cache for entries that no longer exist
-		if ( isNode ) {
-			// IE does not allow us to delete expando properties from nodes,
-			// nor does it have a removeAttribute function on Document nodes;
-			// we must handle all of these cases
-			if ( jQuery.support.deleteExpando ) {
-				delete elem[ internalKey ];
-			} else if ( elem.removeAttribute ) {
-				elem.removeAttribute( internalKey );
-			} else {
-				elem[ internalKey ] = null;
-			}
-		}
-	},
-
-	// For internal use only.
-	_data: function( elem, name, data ) {
-		return jQuery.data( elem, name, data, true );
-	},
-
-	// A method for determining if a DOM node can handle the data expando
-	acceptData: function( elem ) {
-		if ( elem.nodeName ) {
-			var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
-
-			if ( match ) {
-				return !(match === true || elem.getAttribute("classid") !== match);
-			}
-		}
-
-		return true;
-	}
-});
-
-jQuery.fn.extend({
-	data: function( key, value ) {
-		var parts, attr, name,
-			data = null;
-
-		if ( typeof key === "undefined" ) {
-			if ( this.length ) {
-				data = jQuery.data( this[0] );
-
-				if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) {
-					attr = this[0].attributes;
-					for ( var i = 0, l = attr.length; i < l; i++ ) {
-						name = attr[i].name;
-
-						if ( name.indexOf( "data-" ) === 0 ) {
-							name = jQuery.camelCase( name.substring(5) );
-
-							dataAttr( this[0], name, data[ name ] );
-						}
-					}
-					jQuery._data( this[0], "parsedAttrs", true );
-				}
-			}
-
-			return data;
-
-		} else if ( typeof key === "object" ) {
-			return this.each(function() {
-				jQuery.data( this, key );
-			});
-		}
-
-		parts = key.split(".");
-		parts[1] = parts[1] ? "." + parts[1] : "";
-
-		if ( value === undefined ) {
-			data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-
-			// Try to fetch any internally stored data first
-			if ( data === undefined && this.length ) {
-				data = jQuery.data( this[0], key );
-				data = dataAttr( this[0], key, data );
-			}
-
-			return data === undefined && parts[1] ?
-				this.data( parts[0] ) :
-				data;
-
-		} else {
-			return this.each(function() {
-				var self = jQuery( this ),
-					args = [ parts[0], value ];
-
-				self.triggerHandler( "setData" + parts[1] + "!", args );
-				jQuery.data( this, key, value );
-				self.triggerHandler( "changeData" + parts[1] + "!", args );
-			});
-		}
-	},
-
-	removeData: function( key ) {
-		return this.each(function() {
-			jQuery.removeData( this, key );
-		});
-	}
-});
-
-function dataAttr( elem, key, data ) {
-	// If nothing was found internally, try to fetch any
-	// data from the HTML5 data-* attribute
-	if ( data === undefined && elem.nodeType === 1 ) {
-
-		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-
-		data = elem.getAttribute( name );
-
-		if ( typeof data === "string" ) {
-			try {
-				data = data === "true" ? true :
-				data === "false" ? false :
-				data === "null" ? null :
-				jQuery.isNumeric( data ) ? parseFloat( data ) :
-					rbrace.test( data ) ? jQuery.parseJSON( data ) :
-					data;
-			} catch( e ) {}
-
-			// Make sure we set the data so it isn't changed later
-			jQuery.data( elem, key, data );
-
-		} else {
-			data = undefined;
-		}
-	}
-
-	return data;
-}
-
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
-	for ( var name in obj ) {
-
-		// if the public data object is empty, the private is still empty
-		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
-			continue;
-		}
-		if ( name !== "toJSON" ) {
-			return false;
-		}
-	}
-
-	return true;
-}
-
-
-
-
-function handleQueueMarkDefer( elem, type, src ) {
-	var deferDataKey = type + "defer",
-		queueDataKey = type + "queue",
-		markDataKey = type + "mark",
-		defer = jQuery._data( elem, deferDataKey );
-	if ( defer &&
-		( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
-		( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
-		// Give room for hard-coded callbacks to fire first
-		// and eventually mark/queue something else on the element
-		setTimeout( function() {
-			if ( !jQuery._data( elem, queueDataKey ) &&
-				!jQuery._data( elem, markDataKey ) ) {
-				jQuery.removeData( elem, deferDataKey, true );
-				defer.fire();
-			}
-		}, 0 );
-	}
-}
-
-jQuery.extend({
-
-	_mark: function( elem, type ) {
-		if ( elem ) {
-			type = ( type || "fx" ) + "mark";
-			jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
-		}
-	},
-
-	_unmark: function( force, elem, type ) {
-		if ( force !== true ) {
-			type = elem;
-			elem = force;
-			force = false;
-		}
-		if ( elem ) {
-			type = type || "fx";
-			var key = type + "mark",
-				count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
-			if ( count ) {
-				jQuery._data( elem, key, count );
-			} else {
-				jQuery.removeData( elem, key, true );
-				handleQueueMarkDefer( elem, type, "mark" );
-			}
-		}
-	},
-
-	queue: function( elem, type, data ) {
-		var q;
-		if ( elem ) {
-			type = ( type || "fx" ) + "queue";
-			q = jQuery._data( elem, type );
-
-			// Speed up dequeue by getting out quickly if this is just a lookup
-			if ( data ) {
-				if ( !q || jQuery.isArray(data) ) {
-					q = jQuery._data( elem, type, jQuery.makeArray(data) );
-				} else {
-					q.push( data );
-				}
-			}
-			return q || [];
-		}
-	},
-
-	dequeue: function( elem, type ) {
-		type = type || "fx";
-
-		var queue = jQuery.queue( elem, type ),
-			fn = queue.shift(),
-			hooks = {};
-
-		// If the fx queue is dequeued, always remove the progress sentinel
-		if ( fn === "inprogress" ) {
-			fn = queue.shift();
-		}
-
-		if ( fn ) {
-			// Add a progress sentinel to prevent the fx queue from being
-			// automatically dequeued
-			if ( type === "fx" ) {
-				queue.unshift( "inprogress" );
-			}
-
-			jQuery._data( elem, type + ".run", hooks );
-			fn.call( elem, function() {
-				jQuery.dequeue( elem, type );
-			}, hooks );
-		}
-
-		if ( !queue.length ) {
-			jQuery.removeData( elem, type + "queue " + type + ".run", true );
-			handleQueueMarkDefer( elem, type, "queue" );
-		}
-	}
-});
-
-jQuery.fn.extend({
-	queue: function( type, data ) {
-		if ( typeof type !== "string" ) {
-			data = type;
-			type = "fx";
-		}
-
-		if ( data === undefined ) {
-			return jQuery.queue( this[0], type );
-		}
-		return this.each(function() {
-			var queue = jQuery.queue( this, type, data );
-
-			if ( type === "fx" && queue[0] !== "inprogress" ) {
-				jQuery.dequeue( this, type );
-			}
-		});
-	},
-	dequeue: function( type ) {
-		return this.each(function() {
-			jQuery.dequeue( this, type );
-		});
-	},
-	// Based off of the plugin by Clint Helfers, with permission.
-	// http://blindsignals.com/index.php/2009/07/jquery-delay/
-	delay: function( time, type ) {
-		time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
-		type = type || "fx";
-
-		return this.queue( type, function( next, hooks ) {
-			var timeout = setTimeout( next, time );
-			hooks.stop = function() {
-				clearTimeout( timeout );
-			};
-		});
-	},
-	clearQueue: function( type ) {
-		return this.queue( type || "fx", [] );
-	},
-	// Get a promise resolved when queues of a certain type
-	// are emptied (fx is the type by default)
-	promise: function( type, object ) {
-		if ( typeof type !== "string" ) {
-			object = type;
-			type = undefined;
-		}
-		type = type || "fx";
-		var defer = jQuery.Deferred(),
-			elements = this,
-			i = elements.length,
-			count = 1,
-			deferDataKey = type + "defer",
-			queueDataKey = type + "queue",
-			markDataKey = type + "mark",
-			tmp;
-		function resolve() {
-			if ( !( --count ) ) {
-				defer.resolveWith( elements, [ elements ] );
-			}
-		}
-		while( i-- ) {
-			if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
-					( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
-						jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
-					jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
-				count++;
-				tmp.add( resolve );
-			}
-		}
-		resolve();
-		return defer.promise();
-	}
-});
-
-
-
-
-var rclass = /[\n\t\r]/g,
-	rspace = /\s+/,
-	rreturn = /\r/g,
-	rtype = /^(?:button|input)$/i,
-	rfocusable = /^(?:button|input|object|select|textarea)$/i,
-	rclickable = /^a(?:rea)?$/i,
-	rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
-	getSetAttribute = jQuery.support.getSetAttribute,
-	nodeHook, boolHook, fixSpecified;
-
-jQuery.fn.extend({
-	attr: function( name, value ) {
-		return jQuery.access( this, name, value, true, jQuery.attr );
-	},
-
-	removeAttr: function( name ) {
-		return this.each(function() {
-			jQuery.removeAttr( this, name );
-		});
-	},
-
-	prop: function( name, value ) {
-		return jQuery.access( this, name, value, true, jQuery.prop );
-	},
-
-	removeProp: function( name ) {
-		name = jQuery.propFix[ name ] || name;
-		return this.each(function() {
-			// try/catch handles cases where IE balks (such as removing a property on window)
-			try {
-				this[ name ] = undefined;
-				delete this[ name ];
-			} catch( e ) {}
-		});
-	},
-
-	addClass: function( value ) {
-		var classNames, i, l, elem,
-			setClass, c, cl;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).addClass( value.call(this, j, this.className) );
-			});
-		}
-
-		if ( value && typeof value === "string" ) {
-			classNames = value.split( rspace );
-
-			for ( i = 0, l = this.length; i < l; i++ ) {
-				elem = this[ i ];
-
-				if ( elem.nodeType === 1 ) {
-					if ( !elem.className && classNames.length === 1 ) {
-						elem.className = value;
-
-					} else {
-						setClass = " " + elem.className + " ";
-
-						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
-							if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
-								setClass += classNames[ c ] + " ";
-							}
-						}
-						elem.className = jQuery.trim( setClass );
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	removeClass: function( value ) {
-		var classNames, i, l, elem, className, c, cl;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).removeClass( value.call(this, j, this.className) );
-			});
-		}
-
-		if ( (value && typeof value === "string") || value === undefined ) {
-			classNames = ( value || "" ).split( rspace );
-
-			for ( i = 0, l = this.length; i < l; i++ ) {
-				elem = this[ i ];
-
-				if ( elem.nodeType === 1 && elem.className ) {
-					if ( value ) {
-						className = (" " + elem.className + " ").replace( rclass, " " );
-						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
-							className = className.replace(" " + classNames[ c ] + " ", " ");
-						}
-						elem.className = jQuery.trim( className );
-
-					} else {
-						elem.className = "";
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	toggleClass: function( value, stateVal ) {
-		var type = typeof value,
-			isBool = typeof stateVal === "boolean";
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
-			});
-		}
-
-		return this.each(function() {
-			if ( type === "string" ) {
-				// toggle individual class names
-				var className,
-					i = 0,
-					self = jQuery( this ),
-					state = stateVal,
-					classNames = value.split( rspace );
-
-				while ( (className = classNames[ i++ ]) ) {
-					// check each className given, space seperated list
-					state = isBool ? state : !self.hasClass( className );
-					self[ state ? "addClass" : "removeClass" ]( className );
-				}
-
-			} else if ( type === "undefined" || type === "boolean" ) {
-				if ( this.className ) {
-					// store className if set
-					jQuery._data( this, "__className__", this.className );
-				}
-
-				// toggle whole className
-				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
-			}
-		});
-	},
-
-	hasClass: function( selector ) {
-		var className = " " + selector + " ",
-			i = 0,
-			l = this.length;
-		for ( ; i < l; i++ ) {
-			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
-				return true;
-			}
-		}
-
-		return false;
-	},
-
-	val: function( value ) {
-		var hooks, ret, isFunction,
-			elem = this[0];
-
-		if ( !arguments.length ) {
-			if ( elem ) {
-				hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
-
-				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
-					return ret;
-				}
-
-				ret = elem.value;
-
-				return typeof ret === "string" ?
-					// handle most common string cases
-					ret.replace(rreturn, "") :
-					// handle cases where value is null/undef or number
-					ret == null ? "" : ret;
-			}
-
-			return;
-		}
-
-		isFunction = jQuery.isFunction( value );
-
-		return this.each(function( i ) {
-			var self = jQuery(this), val;
-
-			if ( this.nodeType !== 1 ) {
-				return;
-			}
-
-			if ( isFunction ) {
-				val = value.call( this, i, self.val() );
-			} else {
-				val = value;
-			}
-
-			// Treat null/undefined as ""; convert numbers to string
-			if ( val == null ) {
-				val = "";
-			} else if ( typeof val === "number" ) {
-				val += "";
-			} else if ( jQuery.isArray( val ) ) {
-				val = jQuery.map(val, function ( value ) {
-					return value == null ? "" : value + "";
-				});
-			}
-
-			hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
-
-			// If set returns undefined, fall back to normal setting
-			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
-				this.value = val;
-			}
-		});
-	}
-});
-
-jQuery.extend({
-	valHooks: {
-		option: {
-			get: function( elem ) {
-				// attributes.value is undefined in Blackberry 4.7 but
-				// uses .value. See #6932
-				var val = elem.attributes.value;
-				return !val || val.specified ? elem.value : elem.text;
-			}
-		},
-		select: {
-			get: function( elem ) {
-				var value, i, max, option,
-					index = elem.selectedIndex,
-					values = [],
-					options = elem.options,
-					one = elem.type === "select-one";
-
-				// Nothing was selected
-				if ( index < 0 ) {
-					return null;
-				}
-
-				// Loop through all the selected options
-				i = one ? index : 0;
-				max = one ? index + 1 : options.length;
-				for ( ; i < max; i++ ) {
-					option = options[ i ];
-
-					// Don't return options that are disabled or in a disabled optgroup
-					if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
-							(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
-
-						// Get the specific value for the option
-						value = jQuery( option ).val();
-
-						// We don't need an array for one selects
-						if ( one ) {
-							return value;
-						}
-
-						// Multi-Selects return an array
-						values.push( value );
-					}
-				}
-
-				// Fixes Bug #2551 -- select.val() broken in IE after form.reset()
-				if ( one && !values.length && options.length ) {
-					return jQuery( options[ index ] ).val();
-				}
-
-				return values;
-			},
-
-			set: function( elem, value ) {
-				var values = jQuery.makeArray( value );
-
-				jQuery(elem).find("option").each(function() {
-					this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
-				});
-
-				if ( !values.length ) {
-					elem.selectedIndex = -1;
-				}
-				return values;
-			}
-		}
-	},
-
-	attrFn: {
-		val: true,
-		css: true,
-		html: true,
-		text: true,
-		data: true,
-		width: true,
-		height: true,
-		offset: true
-	},
-
-	attr: function( elem, name, value, pass ) {
-		var ret, hooks, notxml,
-			nType = elem.nodeType;
-
-		// don't get/set attributes on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		if ( pass && name in jQuery.attrFn ) {
-			return jQuery( elem )[ name ]( value );
-		}
-
-		// Fallback to prop when attributes are not supported
-		if ( typeof elem.getAttribute === "undefined" ) {
-			return jQuery.prop( elem, name, value );
-		}
-
-		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
-		// All attributes are lowercase
-		// Grab necessary hook if one is defined
-		if ( notxml ) {
-			name = name.toLowerCase();
-			hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
-		}
-
-		if ( value !== undefined ) {
-
-			if ( value === null ) {
-				jQuery.removeAttr( elem, name );
-				return;
-
-			} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
-				return ret;
-
-			} else {
-				elem.setAttribute( name, "" + value );
-				return value;
-			}
-
-		} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
-			return ret;
-
-		} else {
-
-			ret = elem.getAttribute( name );
-
-			// Non-existent attributes return null, we normalize to undefined
-			return ret === null ?
-				undefined :
-				ret;
-		}
-	},
-
-	removeAttr: function( elem, value ) {
-		var propName, attrNames, name, l,
-			i = 0;
-
-		if ( value && elem.nodeType === 1 ) {
-			attrNames = value.toLowerCase().split( rspace );
-			l = attrNames.length;
-
-			for ( ; i < l; i++ ) {
-				name = attrNames[ i ];
-
-				if ( name ) {
-					propName = jQuery.propFix[ name ] || name;
-
-					// See #9699 for explanation of this approach (setting first, then removal)
-					jQuery.attr( elem, name, "" );
-					elem.removeAttribute( getSetAttribute ? name : propName );
-
-					// Set corresponding property to false for boolean attributes
-					if ( rboolean.test( name ) && propName in elem ) {
-						elem[ propName ] = false;
-					}
-				}
-			}
-		}
-	},
-
-	attrHooks: {
-		type: {
-			set: function( elem, value ) {
-				// We can't allow the type property to be changed (since it causes problems in IE)
-				if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
-					jQuery.error( "type property can't be changed" );
-				} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
-					// Setting the type on a radio button after the value resets the value in IE6-9
-					// Reset value to it's default in case type is set after value
-					// This is for element creation
-					var val = elem.value;
-					elem.setAttribute( "type", value );
-					if ( val ) {
-						elem.value = val;
-					}
-					return value;
-				}
-			}
-		},
-		// Use the value property for back compat
-		// Use the nodeHook for button elements in IE6/7 (#1954)
-		value: {
-			get: function( elem, name ) {
-				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
-					return nodeHook.get( elem, name );
-				}
-				return name in elem ?
-					elem.value :
-					null;
-			},
-			set: function( elem, value, name ) {
-				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
-					return nodeHook.set( elem, value, name );
-				}
-				// Does not return so that setAttribute is also used
-				elem.value = value;
-			}
-		}
-	},
-
-	propFix: {
-		tabindex: "tabIndex",
-		readonly: "readOnly",
-		"for": "htmlFor",
-		"class": "className",
-		maxlength: "maxLength",
-		cellspacing: "cellSpacing",
-		cellpadding: "cellPadding",
-		rowspan: "rowSpan",
-		colspan: "colSpan",
-		usemap: "useMap",
-		frameborder: "frameBorder",
-		contenteditable: "contentEditable"
-	},
-
-	prop: function( elem, name, value ) {
-		var ret, hooks, notxml,
-			nType = elem.nodeType;
-
-		// don't get/set properties on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
-		if ( notxml ) {
-			// Fix name and attach hooks
-			name = jQuery.propFix[ name ] || name;
-			hooks = jQuery.propHooks[ name ];
-		}
-
-		if ( value !== undefined ) {
-			if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
-				return ret;
-
-			} else {
-				return ( elem[ name ] = value );
-			}
-
-		} else {
-			if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
-				return ret;
-
-			} else {
-				return elem[ name ];
-			}
-		}
-	},
-
-	propHooks: {
-		tabIndex: {
-			get: function( elem ) {
-				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
-				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
-				var attributeNode = elem.getAttributeNode("tabindex");
-
-				return attributeNode && attributeNode.specified ?
-					parseInt( attributeNode.value, 10 ) :
-					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
-						0 :
-						undefined;
-			}
-		}
-	}
-});
-
-// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
-jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
-
-// Hook for boolean attributes
-boolHook = {
-	get: function( elem, name ) {
-		// Align boolean attributes with corresponding properties
-		// Fall back to attribute presence where some booleans are not supported
-		var attrNode,
-			property = jQuery.prop( elem, name );
-		return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
-			name.toLowerCase() :
-			undefined;
-	},
-	set: function( elem, value, name ) {
-		var propName;
-		if ( value === false ) {
-			// Remove boolean attributes when set to false
-			jQuery.removeAttr( elem, name );
-		} else {
-			// value is true since we know at this point it's type boolean and not false
-			// Set boolean attributes to the same name and set the DOM property
-			propName = jQuery.propFix[ name ] || name;
-			if ( propName in elem ) {
-				// Only set the IDL specifically if it already exists on the element
-				elem[ propName ] = true;
-			}
-
-			elem.setAttribute( name, name.toLowerCase() );
-		}
-		return name;
-	}
-};
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
-
-	fixSpecified = {
-		name: true,
-		id: true
-	};
-
-	// Use this for any attribute in IE6/7
-	// This fixes almost every IE6/7 issue
-	nodeHook = jQuery.valHooks.button = {
-		get: function( elem, name ) {
-			var ret;
-			ret = elem.getAttributeNode( name );
-			return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
-				ret.nodeValue :
-				undefined;
-		},
-		set: function( elem, value, name ) {
-			// Set the existing or create a new attribute node
-			var ret = elem.getAttributeNode( name );
-			if ( !ret ) {
-				ret = document.createAttribute( name );
-				elem.setAttributeNode( ret );
-			}
-			return ( ret.nodeValue = value + "" );
-		}
-	};
-
-	// Apply the nodeHook to tabindex
-	jQuery.attrHooks.tabindex.set = nodeHook.set;
-
-	// Set width and height to auto instead of 0 on empty string( Bug #8150 )
-	// This is for removals
-	jQuery.each([ "width", "height" ], function( i, name ) {
-		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
-			set: function( elem, value ) {
-				if ( value === "" ) {
-					elem.setAttribute( name, "auto" );
-					return value;
-				}
-			}
-		});
-	});
-
-	// Set contenteditable to false on removals(#10429)
-	// Setting to empty string throws an error as an invalid value
-	jQuery.attrHooks.contenteditable = {
-		get: nodeHook.get,
-		set: function( elem, value, name ) {
-			if ( value === "" ) {
-				value = "false";
-			}
-			nodeHook.set( elem, value, name );
-		}
-	};
-}
-
-
-// Some attributes require a special call on IE
-if ( !jQuery.support.hrefNormalized ) {
-	jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
-		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
-			get: function( elem ) {
-				var ret = elem.getAttribute( name, 2 );
-				return ret === null ? undefined : ret;
-			}
-		});
-	});
-}
-
-if ( !jQuery.support.style ) {
-	jQuery.attrHooks.style = {
-		get: function( elem ) {
-			// Return undefined in the case of empty string
-			// Normalize to lowercase since IE uppercases css property names
-			return elem.style.cssText.toLowerCase() || undefined;
-		},
-		set: function( elem, value ) {
-			return ( elem.style.cssText = "" + value );
-		}
-	};
-}
-
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
-	jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
-		get: function( elem ) {
-			var parent = elem.parentNode;
-
-			if ( parent ) {
-				parent.selectedIndex;
-
-				// Make sure that it also works with optgroups, see #5701
-				if ( parent.parentNode ) {
-					parent.parentNode.selectedIndex;
-				}
-			}
-			return null;
-		}
-	});
-}
-
-// IE6/7 call enctype encoding
-if ( !jQuery.support.enctype ) {
-	jQuery.propFix.enctype = "encoding";
-}
-
-// Radios and checkboxes getter/setter
-if ( !jQuery.support.checkOn ) {
-	jQuery.each([ "radio", "checkbox" ], function() {
-		jQuery.valHooks[ this ] = {
-			get: function( elem ) {
-				// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
-				return elem.getAttribute("value") === null ? "on" : elem.value;
-			}
-		};
-	});
-}
-jQuery.each([ "radio", "checkbox" ], function() {
-	jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
-		set: function( elem, value ) {
-			if ( jQuery.isArray( value ) ) {
-				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
-			}
-		}
-	});
-});
-
-
-
-
-var rformElems = /^(?:textarea|input|select)$/i,
-	rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
-	rhoverHack = /\bhover(\.\S+)?\b/,
-	rkeyEvent = /^key/,
-	rmouseEvent = /^(?:mouse|contextmenu)|click/,
-	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
-	rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
-	quickParse = function( selector ) {
-		var quick = rquickIs.exec( selector );
-		if ( quick ) {
-			//   0  1    2   3
-			// [ _, tag, id, class ]
-			quick[1] = ( quick[1] || "" ).toLowerCase();
-			quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
-		}
-		return quick;
-	},
-	quickIs = function( elem, m ) {
-		var attrs = elem.attributes || {};
-		return (
-			(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
-			(!m[2] || (attrs.id || {}).value === m[2]) &&
-			(!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
-		);
-	},
-	hoverHack = function( events ) {
-		return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
-	};
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
-	add: function( elem, types, handler, data, selector ) {
-
-		var elemData, eventHandle, events,
-			t, tns, type, namespaces, handleObj,
-			handleObjIn, quick, handlers, special;
-
-		// Don't attach events to noData or text/comment nodes (allow plain objects tho)
-		if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
-			return;
-		}
-
-		// Caller can pass in an object of custom data in lieu of the handler
-		if ( handler.handler ) {
-			handleObjIn = handler;
-			handler = handleObjIn.handler;
-		}
-
-		// Make sure that the handler has a unique ID, used to find/remove it later
-		if ( !handler.guid ) {
-			handler.guid = jQuery.guid++;
-		}
-
-		// Init the element's event structure and main handler, if this is the first
-		events = elemData.events;
-		if ( !events ) {
-			elemData.events = events = {};
-		}
-		eventHandle = elemData.handle;
-		if ( !eventHandle ) {
-			elemData.handle = eventHandle = function( e ) {
-				// Discard the second event of a jQuery.event.trigger() and
-				// when an event is called after a page has unloaded
-				return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
-					jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
-					undefined;
-			};
-			// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
-			eventHandle.elem = elem;
-		}
-
-		// Handle multiple events separated by a space
-		// jQuery(...).bind("mouseover mouseout", fn);
-		types = jQuery.trim( hoverHack(types) ).split( " " );
-		for ( t = 0; t < types.length; t++ ) {
-
-			tns = rtypenamespace.exec( types[t] ) || [];
-			type = tns[1];
-			namespaces = ( tns[2] || "" ).split( "." ).sort();
-
-			// If event changes its type, use the special event handlers for the changed type
-			special = jQuery.event.special[ type ] || {};
-
-			// If selector defined, determine special event api type, otherwise given type
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-
-			// Update special based on newly reset type
-			special = jQuery.event.special[ type ] || {};
-
-			// handleObj is passed to all event handlers
-			handleObj = jQuery.extend({
-				type: type,
-				origType: tns[1],
-				data: data,
-				handler: handler,
-				guid: handler.guid,
-				selector: selector,
-				quick: quickParse( selector ),
-				namespace: namespaces.join(".")
-			}, handleObjIn );
-
-			// Init the event handler queue if we're the first
-			handlers = events[ type ];
-			if ( !handlers ) {
-				handlers = events[ type ] = [];
-				handlers.delegateCount = 0;
-
-				// Only use addEventListener/attachEvent if the special events handler returns false
-				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-					// Bind the global event handler to the element
-					if ( elem.addEventListener ) {
-						elem.addEventListener( type, eventHandle, false );
-
-					} else if ( elem.attachEvent ) {
-						elem.attachEvent( "on" + type, eventHandle );
-					}
-				}
-			}
-
-			if ( special.add ) {
-				special.add.call( elem, handleObj );
-
-				if ( !handleObj.handler.guid ) {
-					handleObj.handler.guid = handler.guid;
-				}
-			}
-
-			// Add to the element's handler list, delegates in front
-			if ( selector ) {
-				handlers.splice( handlers.delegateCount++, 0, handleObj );
-			} else {
-				handlers.push( handleObj );
-			}
-
-			// Keep track of which events have ever been used, for event optimization
-			jQuery.event.global[ type ] = true;
-		}
-
-		// Nullify elem to prevent memory leaks in IE
-		elem = null;
-	},
-
-	global: {},
-
-	// Detach an event or set of events from an element
-	remove: function( elem, types, handler, selector, mappedTypes ) {
-
-		var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
-			t, tns, type, origType, namespaces, origCount,
-			j, events, special, handle, eventType, handleObj;
-
-		if ( !elemData || !(events = elemData.events) ) {
-			return;
-		}
-
-		// Once for each type.namespace in types; type may be omitted
-		types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
-		for ( t = 0; t < types.length; t++ ) {
-			tns = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tns[1];
-			namespaces = tns[2];
-
-			// Unbind all events (on this namespace, if provided) for the element
-			if ( !type ) {
-				for ( type in events ) {
-					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
-				}
-				continue;
-			}
-
-			special = jQuery.event.special[ type ] || {};
-			type = ( selector? special.delegateType : special.bindType ) || type;
-			eventType = events[ type ] || [];
-			origCount = eventType.length;
-			namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
-
-			// Remove matching events
-			for ( j = 0; j < eventType.length; j++ ) {
-				handleObj = eventType[ j ];
-
-				if ( ( mappedTypes || origType === handleObj.origType ) &&
-					 ( !handler || handler.guid === handleObj.guid ) &&
-					 ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
-					 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
-					eventType.splice( j--, 1 );
-
-					if ( handleObj.selector ) {
-						eventType.delegateCount--;
-					}
-					if ( special.remove ) {
-						special.remove.call( elem, handleObj );
-					}
-				}
-			}
-
-			// Remove generic event handler if we removed something and no more handlers exist
-			// (avoids potential for endless recursion during removal of special event handlers)
-			if ( eventType.length === 0 && origCount !== eventType.length ) {
-				if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
-					jQuery.removeEvent( elem, type, elemData.handle );
-				}
-
-				delete events[ type ];
-			}
-		}
-
-		// Remove the expando if it's no longer used
-		if ( jQuery.isEmptyObject( events ) ) {
-			handle = elemData.handle;
-			if ( handle ) {
-				handle.elem = null;
-			}
-
-			// removeData also checks for emptiness and clears the expando if empty
-			// so use it instead of delete
-			jQuery.removeData( elem, [ "events", "handle" ], true );
-		}
-	},
-
-	// Events that are safe to short-circuit if no handlers are attached.
-	// Native DOM events should not be added, they may have inline handlers.
-	customEvent: {
-		"getData": true,
-		"setData": true,
-		"changeData": true
-	},
-
-	trigger: function( event, data, elem, onlyHandlers ) {
-		// Don't do events on text and comment nodes
-		if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
-			return;
-		}
-
-		// Event object or event type
-		var type = event.type || event,
-			namespaces = [],
-			cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
-
-		// focus/blur morphs to focusin/out; ensure we're not firing them right now
-		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
-			return;
-		}
-
-		if ( type.indexOf( "!" ) >= 0 ) {
-			// Exclusive events trigger only for the exact event (no namespaces)
-			type = type.slice(0, -1);
-			exclusive = true;
-		}
-
-		if ( type.indexOf( "." ) >= 0 ) {
-			// Namespaced trigger; create a regexp to match event type in handle()
-			namespaces = type.split(".");
-			type = namespaces.shift();
-			namespaces.sort();
-		}
-
-		if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
-			// No jQuery handlers for this event type, and it can't have inline handlers
-			return;
-		}
-
-		// Caller can pass in an Event, Object, or just an event type string
-		event = typeof event === "object" ?
-			// jQuery.Event object
-			event[ jQuery.expando ] ? event :
-			// Object literal
-			new jQuery.Event( type, event ) :
-			// Just the event type (string)
-			new jQuery.Event( type );
-
-		event.type = type;
-		event.isTrigger = true;
-		event.exclusive = exclusive;
-		event.namespace = namespaces.join( "." );
-		event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
-		ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
-
-		// Handle a global trigger
-		if ( !elem ) {
-
-			// TODO: Stop taunting the data cache; remove global events and always attach to document
-			cache = jQuery.cache;
-			for ( i in cache ) {
-				if ( cache[ i ].events && cache[ i ].events[ type ] ) {
-					jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
-				}
-			}
-			return;
-		}
-
-		// Clean up the event in case it is being reused
-		event.result = undefined;
-		if ( !event.target ) {
-			event.target = elem;
-		}
-
-		// Clone any incoming data and prepend the event, creating the handler arg list
-		data = data != null ? jQuery.makeArray( data ) : [];
-		data.unshift( event );
-
-		// Allow special events to draw outside the lines
-		special = jQuery.event.special[ type ] || {};
-		if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
-			return;
-		}
-
-		// Determine event propagation path in advance, per W3C events spec (#9951)
-		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
-		eventPath = [[ elem, special.bindType || type ]];
-		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
-			bubbleType = special.delegateType || type;
-			cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
-			old = null;
-			for ( ; cur; cur = cur.parentNode ) {
-				eventPath.push([ cur, bubbleType ]);
-				old = cur;
-			}
-
-			// Only add window if we got to document (e.g., not plain obj or detached DOM)
-			if ( old && old === elem.ownerDocument ) {
-				eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
-			}
-		}
-
-		// Fire handlers on the event path
-		for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
-
-			cur = eventPath[i][0];
-			event.type = eventPath[i][1];
-
-			handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
-			if ( handle ) {
-				handle.apply( cur, data );
-			}
-			// Note that this is a bare JS function and not a jQuery handler
-			handle = ontype && cur[ ontype ];
-			if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
-				event.preventDefault();
-			}
-		}
-		event.type = type;
-
-		// If nobody prevented the d

<TRUNCATED>


[04/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java
deleted file mode 100755
index fa46249..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java
+++ /dev/null
@@ -1,442 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.HashMap;
-
-import org.apache.fineract.infrastructure.codes.domain.CodeValue;
-import org.apache.fineract.integrationtests.common.system.CodeHelper;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class ClientHelper {
-
-    private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-
-    private static final String CREATE_CLIENT_URL = "/fineract-provider/api/v1/clients?" + Utils.TENANT_IDENTIFIER;
-    private static final String CLIENT_URL = "/fineract-provider/api/v1/clients";
-    private static final String CLOSE_CLIENT_COMMAND = "close";
-    private static final String REACTIVATE_CLIENT_COMMAND = "reactivate";
-    private static final String REJECT_CLIENT_COMMAND = "reject";
-    private static final String ACTIVATE_CLIENT_COMMAND = "activate";
-    private static final String WITHDRAW_CLIENT_COMMAND = "withdraw";
-
-    public static final String CREATED_DATE = "27 November 2014";
-    public static final String CREATED_DATE_PLUS_ONE = "28 November 2014";
-    public static final String CREATED_DATE_MINUS_ONE = "27 November 2014";
-    public static final String TRANSACTION_DATE = "01 March 2013";
-    public static final String LAST_TRANSACTION_DATE = "01 March 2013";
-    public static final String DATE_FORMAT = "dd MMMM yyyy";
-
-    public ClientHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-
-    public static Integer createClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        return createClient(requestSpec, responseSpec, "04 March 2011");
-    }
-
-    public static Integer createClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String activationDate) {
-        return createClient(requestSpec, responseSpec, activationDate, "1");
-    }
-
-    public static Integer createClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String activationDate, final String officeId) {
-        System.out.println("---------------------------------CREATING A CLIENT---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL, getTestClientAsJSON(activationDate, officeId),
-                "clientId");
-    }
-    
-    public static Integer createClientAsPerson(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        return createClientAsPerson(requestSpec, responseSpec, "04 March 2011");
-    }
-
-    public static Integer createClientAsPerson(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String activationDate) {
-        return createClientAsPerson(requestSpec, responseSpec, activationDate, "1");
-    }
-
-    public static Integer createClientAsPerson(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String activationDate, final String officeId) {
-    	
-        System.out.println("---------------------------------CREATING A CLIENT NON PERSON(ORGANISATION)---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL, getTestPersonClientAsJSON(activationDate, officeId),
-                "clientId");
-    }
-    
-    public static Integer createClientAsEntity(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        return createClientAsEntity(requestSpec, responseSpec, "04 March 2011");
-    }
-
-    public static Integer createClientAsEntity(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String activationDate) {
-        return createClientAsEntity(requestSpec, responseSpec, activationDate, "1");
-    }
-
-    public static Integer createClientAsEntity(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String activationDate, final String officeId) {
-    	
-    	Integer constitutionCodeId = (Integer) CodeHelper.getCodeByName(requestSpec, responseSpec, "Constitution").get("id");
-    	Integer soleProprietorCodeValueId = (Integer) CodeHelper.retrieveOrCreateCodeValue(constitutionCodeId, requestSpec, responseSpec).get("id");
-    	
-        System.out.println("---------------------------------CREATING A CLIENT NON PERSON(ORGANISATION)---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL, getTestEntityClientAsJSON(activationDate, officeId, soleProprietorCodeValueId),
-                "clientId");
-    }
-
-    public static Integer createClientForAccountPreference(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer clientType, String jsonAttributeToGetBack) {
-        final String activationDate = "04 March 2011";
-        final String officeId = "1";
-        System.out.println(
-                "---------------------------------CREATING A CLIENT BASED ON ACCOUNT PREFERENCE---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL,
-                getTestClientWithClientTypeAsJSON(activationDate, officeId, clientType.toString()), jsonAttributeToGetBack);
-    }
-
-    public static Object assignStaffToClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String clientId, final String staffId) {
-        final String CLIENT_ASSIGN_STAFF_URL = "/fineract-provider/api/v1/clients/" + clientId + "?" + Utils.TENANT_IDENTIFIER
-                + "&command=assignStaff";
-
-        System.out.println("---------------------------------CREATING A CLIENT---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CLIENT_ASSIGN_STAFF_URL, assignStaffToClientAsJson(staffId), "changes");
-    }
-
-    public static Integer getClientsStaffId(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String clientId) {
-        return (Integer) getClient(requestSpec, responseSpec, clientId, "staffId");
-    }
-
-    public static String getTestClientAsJSON(final String dateOfJoining, final String officeId) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("officeId", officeId);
-        map.put("firstname", Utils.randomNameGenerator("Client_FirstName_", 5));
-        map.put("lastname", Utils.randomNameGenerator("Client_LastName_", 4));
-        map.put("externalId", randomIDGenerator("ID_", 7));
-        map.put("dateFormat", DATE_FORMAT);
-        map.put("locale", "en");
-        map.put("active", "true");
-        map.put("activationDate", dateOfJoining);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-    
-    public static String getTestPersonClientAsJSON(final String dateOfJoining, final String officeId) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("officeId", officeId);
-        map.put("fullname", Utils.randomNameGenerator("Client_FullName_", 5));
-        map.put("externalId", randomIDGenerator("ID_", 7));
-        map.put("dateFormat", DATE_FORMAT);
-        map.put("locale", "en");
-        map.put("active", "true");
-        map.put("activationDate", dateOfJoining);
-        map.put("legalFormId", 1);
-        
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-    
-    public static String getTestEntityClientAsJSON(final String dateOfJoining, final String officeId, final Integer soleProprietorCodeValueId) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("officeId", officeId);
-        map.put("fullname", Utils.randomNameGenerator("Client_FullName_", 5));
-        map.put("externalId", randomIDGenerator("ID_", 7));
-        map.put("dateFormat", DATE_FORMAT);
-        map.put("locale", "en");
-        map.put("active", "true");
-        map.put("activationDate", dateOfJoining);
-        map.put("legalFormId", 2);
-        
-        final HashMap<String, Object> clientNonPersonMap = new HashMap<>();
-        clientNonPersonMap.put("constitutionId", soleProprietorCodeValueId);
-        map.put("clientNonPersonDetails", clientNonPersonMap);
-        
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static String getTestClientWithClientTypeAsJSON(final String dateOfJoining, final String officeId, final String clientType) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("officeId", officeId);
-        map.put("firstname", Utils.randomNameGenerator("Client_FirstName_", 5));
-        map.put("lastname", Utils.randomNameGenerator("Client_LastName_", 4));
-        map.put("externalId", randomIDGenerator("ID_", 7));
-        map.put("dateFormat", DATE_FORMAT);
-        map.put("locale", "en");
-        map.put("active", "true");
-        map.put("activationDate", dateOfJoining);
-        map.put("clientTypeId", clientType);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static String assignStaffToClientAsJson(final String staffId) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("staffId", staffId);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static void verifyClientCreatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedClientID) {
-        System.out.println("------------------------------CHECK CLIENT DETAILS------------------------------------\n");
-        final String CLIENT_URL = "/fineract-provider/api/v1/clients/" + generatedClientID + "?" + Utils.TENANT_IDENTIFIER;
-        final Integer responseClientID = Utils.performServerGet(requestSpec, responseSpec, CLIENT_URL, "id");
-        assertEquals("ERROR IN CREATING THE CLIENT", generatedClientID, responseClientID);
-    }
-
-    public static Object getClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String clientId,
-            final String jsonReturn) {
-        final String GET_CLIENT_URL = "/fineract-provider/api/v1/clients/" + clientId + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------GET A CLIENT---------------------------------------------");
-        return Utils.performServerGet(requestSpec, responseSpec, GET_CLIENT_URL, jsonReturn);
-
-    }
-
-    /* Client status is a map.So adding SuppressWarnings */
-    @SuppressWarnings("unchecked")
-    public static HashMap<String, Object> getClientStatus(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String clientId) {
-        return (HashMap<String, Object>) getClient(requestSpec, responseSpec, clientId, "status");
-    }
-
-    private static String randomIDGenerator(final String prefix, final int lenOfRandomSuffix) {
-        return Utils.randomStringGenerator(prefix, lenOfRandomSuffix, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-    }
-
-    private String getCloseClientAsJSON() {
-        final HashMap<String, String> map = new HashMap<>();
-
-        /* Retrieve Code id for the Code "ClientClosureReason" */
-        String codeName = "ClientClosureReason";
-        HashMap<String, Object> code = CodeHelper.getCodeByName(this.requestSpec, this.responseSpec, codeName);
-        Integer clientClosureCodeId = (Integer) code.get("id");
-
-        /* Retrieve/Create Code Values for the Code "ClientClosureReason" */
-        HashMap<String, Object> codeValue = CodeHelper.retrieveOrCreateCodeValue(clientClosureCodeId, this.requestSpec, this.responseSpec);
-        Integer closureReasonId = (Integer) codeValue.get("id");
-
-        map.put("closureReasonId", closureReasonId.toString());
-        map.put("locale", CommonConstants.locale);
-        map.put("dateFormat", CommonConstants.dateFormat);
-        map.put("closureDate", CREATED_DATE_PLUS_ONE);
-
-        String clientJson = new Gson().toJson(map);
-        System.out.println(clientJson);
-        return clientJson;
-
-    }
-
-    private String getReactivateClientAsJSON() {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("dateFormat", CommonConstants.dateFormat);
-        map.put("reactivationDate", CREATED_DATE_PLUS_ONE);
-        String clientJson = new Gson().toJson(map);
-        System.out.println(clientJson);
-        return clientJson;
-
-    }
-
-    private String getRejectClientAsJSON() {
-        final HashMap<String, String> map = new HashMap<>();
-        /* Retrieve Code id for the Code "ClientRejectReason" */
-        String codeName = "ClientRejectReason";
-        HashMap<String, Object> code = CodeHelper.getCodeByName(this.requestSpec, this.responseSpec, codeName);
-        Integer clientRejectionReasonCodeId = (Integer) code.get("id");
-
-        /* Retrieve/Create Code Values for the Code "ClientRejectReason" */
-        HashMap<String, Object> codeValue = CodeHelper.retrieveOrCreateCodeValue(clientRejectionReasonCodeId, this.requestSpec,
-                this.responseSpec);
-        Integer rejectionReasonId = (Integer) codeValue.get("id");
-
-        map.put("locale", CommonConstants.locale);
-        map.put("dateFormat", CommonConstants.dateFormat);
-        map.put("rejectionDate", CREATED_DATE_PLUS_ONE);
-        map.put("rejectionReasonId", rejectionReasonId.toString());
-        String clientJson = new Gson().toJson(map);
-        System.out.println(clientJson);
-        return clientJson;
-
-    }
-
-    private String getActivateClientAsJSON() {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("dateFormat", CommonConstants.dateFormat);
-        map.put("activationDate", CREATED_DATE_PLUS_ONE);
-        String clientJson = new Gson().toJson(map);
-        System.out.println(clientJson);
-        return clientJson;
-
-    }
-
-    private String getWithdrawClientAsJSON() {
-        final HashMap<String, String> map = new HashMap<>();
-        /* Retrieve Code id for the Code "ClientWithdrawReason" */
-        String codeName = "ClientWithdrawReason";
-        HashMap<String, Object> code = CodeHelper.getCodeByName(this.requestSpec, this.responseSpec, codeName);
-        Integer clientWithdrawReasonCodeId = (Integer) code.get("id");
-
-        /* Retrieve/Create Code Values for the Code "ClientWithdrawReason" */
-        HashMap<String, Object> codeValue = CodeHelper.retrieveOrCreateCodeValue(clientWithdrawReasonCodeId, this.requestSpec,
-                this.responseSpec);
-        Integer withdrawalReasonId = (Integer) codeValue.get("id");
-
-        map.put("locale", CommonConstants.locale);
-        map.put("dateFormat", CommonConstants.dateFormat);
-        map.put("withdrawalDate", CREATED_DATE_PLUS_ONE);
-        map.put("withdrawalReasonId", withdrawalReasonId.toString());
-        String clientJson = new Gson().toJson(map);
-        System.out.println(clientJson);
-        return clientJson;
-
-    }
-
-    public static String getSpecifiedDueDateChargesClientAsJSON(final String chargeId, final String dueDate) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("locale", "en_GB");
-        map.put("dateFormat", DATE_FORMAT);
-        map.put("dueDate", dueDate);
-        map.put("chargeId", chargeId);
-        map.put("amount", "200");
-        String json = new Gson().toJson(map);
-        return json;
-    }
-
-    public static String getPayChargeJSON(final String date, String amount) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("locale", "en_GB");
-        map.put("dateFormat", DATE_FORMAT);
-        map.put("transactionDate", date);
-        map.put("amount", amount);
-        String json = new Gson().toJson(map);
-        System.out.println(json);
-        return json;
-    }
-
-    public static String getWaiveChargeJSON(final String amount, String clientChargeId) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("locale", "en_GB");
-        map.put("amount", amount);
-        map.put("clientChargeId", clientChargeId);
-        String json = new Gson().toJson(map);
-        System.out.println(json);
-        return json;
-    }
-
-    public HashMap<String, Object> closeClient(final Integer clientId) {
-        System.out.println("--------------------------------- CLOSE CLIENT -------------------------------");
-        return performClientActions(createClientOperationURL(CLOSE_CLIENT_COMMAND, clientId), getCloseClientAsJSON(), clientId);
-    }
-
-    public HashMap<String, Object> reactivateClient(final Integer clientId) {
-        System.out.println("--------------------------------- REACTIVATE CLIENT -------------------------------");
-        return performClientActions(createClientOperationURL(REACTIVATE_CLIENT_COMMAND, clientId), getReactivateClientAsJSON(), clientId);
-    }
-
-    public HashMap<String, Object> rejectClient(final Integer clientId) {
-        System.out.println("--------------------------------- REJECT CLIENT -------------------------------");
-        return performClientActions(createClientOperationURL(REJECT_CLIENT_COMMAND, clientId), getRejectClientAsJSON(), clientId);
-    }
-
-    public HashMap<String, Object> activateClient(final Integer clientId) {
-        System.out.println("--------------------------------- ACTIVATE CLIENT -------------------------------");
-        return performClientActions(createClientOperationURL(ACTIVATE_CLIENT_COMMAND, clientId), getActivateClientAsJSON(), clientId);
-    }
-
-    public HashMap<String, Object> withdrawClient(final Integer clientId) {
-        System.out.println("--------------------------------- WITHDRAWN CLIENT -------------------------------");
-        return performClientActions(createClientOperationURL(WITHDRAW_CLIENT_COMMAND, clientId), getWithdrawClientAsJSON(), clientId);
-    }
-
-    private String createClientOperationURL(final String command, final Integer clientId) {
-        return CLIENT_URL + "/" + clientId + "?command=" + command + "&" + Utils.TENANT_IDENTIFIER;
-    }
-
-    private HashMap<String, Object> performClientActions(final String postURLForClient, final String jsonToBeSent, final Integer clientId) {
-        Utils.performServerPost(this.requestSpec, this.responseSpec, postURLForClient, jsonToBeSent, CommonConstants.RESPONSE_STATUS);
-        HashMap<String, Object> response = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
-
-        return response;
-    }
-
-    public static Integer addChargesForClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer clientId, final String request) {
-        System.out.println("--------------------------------- ADD CHARGES FOR Client --------------------------------");
-        final String ADD_CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/charges?" + Utils.TENANT_IDENTIFIER;
-        final HashMap<?, ?> response = Utils.performServerPost(requestSpec, responseSpec, ADD_CHARGES_URL, request, "");
-        return (Integer) response.get("resourceId");
-    }
-
-    public static String payChargesForClients(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer clientId, final Integer clientChargeId, final String json) {
-        System.out.println("--------------------------------- PAY CHARGES FOR CLIENT --------------------------------");
-        final String CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/charges/" + clientChargeId + "?command=paycharge&"
-                + Utils.TENANT_IDENTIFIER;
-        final HashMap<?, ?> response = Utils.performServerPost(requestSpec, responseSpec, CHARGES_URL, json, "");
-        return response.get("transactionId") != null ? response.get("transactionId").toString() : null;
-    }
-
-    public static String waiveChargesForClients(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer clientId, final Integer clientChargeId, final String json) {
-        System.out.println("--------------------------------- WAIVE CHARGES FOR CLIENT --------------------------------");
-        final String CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/charges/" + clientChargeId + "?command=waive&"
-                + Utils.TENANT_IDENTIFIER;
-
-        final HashMap<?, ?> response = Utils.performServerPost(requestSpec, responseSpec, CHARGES_URL, json, "");
-        return response.get("transactionId").toString();
-    }
-
-    public static Integer revertClientChargeTransaction(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String clientId, String clientChargeId) {
-        System.out.println("---------------------------------UNDO TRANSACTION---------------------------------------------");
-        final String CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/transactions/" + clientChargeId + "?command=undo&"
-                + Utils.TENANT_IDENTIFIER;
-
-        final HashMap<?, ?> response = Utils.performServerPost(requestSpec, responseSpec, CHARGES_URL, "", "");
-        return (Integer) response.get("resourceId");
-
-    }
-
-    public static Object getClientCharge(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String clientId, final String clientChargeId) {
-        System.out.println("---------------------------------GET CLIENT CHARGE---------------------------------------------");
-        final String CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/charges/" + clientChargeId + "?"
-                + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerGet(requestSpec, responseSpec, CHARGES_URL, "amountOutstanding");
-    }
-
-    public static Boolean getClientTransactions(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String clientId, final String transactionId) {
-        System.out.println("---------------------------------GET CLIENT CHARGE TRANSACTIONS---------------------------------------------");
-        final String CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/transactions/" + transactionId + "?"
-                + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerGet(requestSpec, responseSpec, CHARGES_URL, "reversed");
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CommonConstants.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CommonConstants.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CommonConstants.java
deleted file mode 100755
index 8ec47af..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CommonConstants.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-
-public interface CommonConstants {
-
-    public final static String locale = "en";
-    public static final String dateFormat = "dd MMMM yyyy";
-    public static final String RESPONSE_RESOURCE_ID = "resourceId";
-    public static final String RESPONSE_CHANGES = "changes";
-    public static final String RESPONSE_STATUS = "status";
-    public static final String RESPONSE_ERROR = "errors";
-    public static final String RESPONSE_ERROR_MESSAGE_CODE = "userMessageGlobalisationCode";
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrenciesHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrenciesHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrenciesHelper.java
deleted file mode 100644
index 900e6bb..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrenciesHelper.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "unused", "rawtypes", "unchecked" })
-public class CurrenciesHelper {
-
-    private static final String CURRENCIES_URL = "/fineract-provider/api/v1/currencies";
-
-    public static ArrayList<CurrencyDomain> getAllCurrencies(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec) {
-        final String GET_ALL_CURRENCIES_URL = CURRENCIES_URL + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING ALL CURRENCIES -------------------------");
-        final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_ALL_CURRENCIES_URL, "");
-        ArrayList<HashMap> selectedCurrencyOptions = (ArrayList<HashMap>) response.get("selectedCurrencyOptions");
-        ArrayList<HashMap> currencyOptions = (ArrayList<HashMap>) response.get("currencyOptions");
-        currencyOptions.addAll(selectedCurrencyOptions);
-        final String jsonData = new Gson().toJson(new ArrayList<HashMap>(selectedCurrencyOptions));
-        return new Gson().fromJson(jsonData, new TypeToken<ArrayList<CurrencyDomain>>() {}.getType());
-    }
-
-    public static ArrayList<CurrencyDomain> getSelectedCurrencies(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec) {
-        final String GET_ALL_SELECTED_CURRENCIES_URL = CURRENCIES_URL + "?fields=selectedCurrencyOptions" + "&" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING ALL SELECTED CURRENCIES -------------------------");
-        final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_ALL_SELECTED_CURRENCIES_URL, "");
-        final String jsonData = new Gson().toJson(response.get("selectedCurrencyOptions"));
-        return new Gson().fromJson(jsonData, new TypeToken<ArrayList<CurrencyDomain>>() {}.getType());
-    }
-
-    public static CurrencyDomain getCurrencybyCode(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String code) {
-        ArrayList<CurrencyDomain> currenciesList = getAllCurrencies(requestSpec, responseSpec);
-        for (CurrencyDomain e : currenciesList) {
-            if (e.getCode().equals(code)) return e;
-        }
-        return null;
-    }
-
-    public static ArrayList<String> updateSelectedCurrencies(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final ArrayList<String> currencies) {
-        final String CURRENCIES_UPDATE_URL = CURRENCIES_URL + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------UPDATE SELECTED CURRENCIES LIST---------------------------------------------");
-        HashMap hash = Utils.performServerPut(requestSpec, responseSpec, CURRENCIES_UPDATE_URL, currenciesToJSON(currencies), "changes");
-        return (ArrayList<String>) hash.get("currencies");
-    }
-
-    private static String currenciesToJSON(final ArrayList<String> currencies) {
-        HashMap map = new HashMap<>();
-        map.put("currencies", currencies);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java
deleted file mode 100644
index 00cbc64..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import com.google.gson.Gson;
-
-public class CurrencyDomain implements Comparable<CurrencyDomain> {
-
-    public static class Builder {
-
-        private String code;
-        private String name;
-        private int decimalPlaces;
-        private String displaySymbol;
-        private String nameCode;
-        private String displayLabel;
-
-        private Builder(final String code, final String name, final int decimalPlaces, final String displaySymbol, final String nameCode,
-                final String displayLabel) {
-            this.code = code;
-            this.name = name;
-            this.decimalPlaces = decimalPlaces;
-            this.displaySymbol = displaySymbol;
-            this.nameCode = nameCode;
-            this.displayLabel = displayLabel;
-        }
-
-        public CurrencyDomain build() {
-            return new CurrencyDomain(this.code, this.name, this.decimalPlaces, this.displaySymbol, this.nameCode, this.displayLabel);
-        }
-    }
-
-    private String code;
-    private String name;
-    private int decimalPlaces;
-    private String displaySymbol;
-    private String nameCode;
-    private String displayLabel;
-
-    CurrencyDomain() {
-        super();
-    }
-
-    private CurrencyDomain(final String code, final String name, final int decimalPlaces, final String displaySymbol,
-            final String nameCode, final String displayLabel) {
-        super();
-        this.code = code;
-        this.name = name;
-        this.decimalPlaces = decimalPlaces;
-        this.displaySymbol = displaySymbol;
-        this.nameCode = nameCode;
-        this.displayLabel = displayLabel;
-    }
-
-    public String getCode() {
-        return this.code;
-    }
-
-    public int getDecimalPlaces() {
-        return this.decimalPlaces;
-    }
-
-    public String getDisplaySymbol() {
-        return this.displaySymbol;
-    }
-
-    public String getNameCode() {
-        return this.nameCode;
-    }
-
-    public String getDisplayLabel() {
-        return this.displayLabel;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public String toJSON() {
-        return new Gson().toJson(this);
-    }
-
-    public static CurrencyDomain fromJSON(final String jsonData) {
-        return new Gson().fromJson(jsonData, CurrencyDomain.class);
-    }
-
-    public static Builder create(final String code, final String name, final int decimalPlaces, final String displaySymbol,
-            final String nameCode, final String displayLabel) {
-        return new Builder(code, name, decimalPlaces, displaySymbol, nameCode, displayLabel);
-    }
-
-    @Override
-    public int hashCode() {
-        int hash = 1;
-
-        if (this.name != null) hash += this.name.hashCode();
-        if (this.code != null) hash += this.code.hashCode();
-        if (this.decimalPlaces >= 0) hash += this.decimalPlaces;
-        if (this.displaySymbol != null) hash += this.displaySymbol.hashCode();
-        if (this.nameCode != null) hash += this.nameCode.hashCode();
-        if (this.displayLabel != null) hash += this.displayLabel.hashCode();
-
-        return hash;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (obj == this) { return true; }
-
-        if (!(obj instanceof CurrencyDomain)) return false;
-
-        CurrencyDomain cd = (CurrencyDomain) obj;
-
-        if (this.name.equals(cd.name) && this.code.equals(cd.code) && this.decimalPlaces == cd.decimalPlaces
-                && this.displaySymbol.equals(cd.displaySymbol) && this.nameCode.equals(cd.nameCode)
-                && this.displayLabel.equals(cd.displayLabel)) return true;
-        return false;
-    }
-
-    @Override
-    public int compareTo(CurrencyDomain cd) {
-        return this.name.compareTo(cd.getName());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ExternalServicesConfigurationHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ExternalServicesConfigurationHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ExternalServicesConfigurationHelper.java
deleted file mode 100644
index 35011db..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ExternalServicesConfigurationHelper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class ExternalServicesConfigurationHelper {
-
-    private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-
-    public ExternalServicesConfigurationHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-
-    public static ArrayList<HashMap> getExternalServicesConfigurationByServiceName(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final String serviceName) {
-        final String GET_EXTERNAL_SERVICES_CONFIG_BY_SERVICE_NAME_URL = "/fineract-provider/api/v1/externalservice/" + serviceName + "?"
-                + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING GLOBAL CONFIGURATION BY ID -------------------------");
-        return Utils.performServerGet(requestSpec, responseSpec, GET_EXTERNAL_SERVICES_CONFIG_BY_SERVICE_NAME_URL, "");
-    }
-
-    public static HashMap updateValueForExternaServicesConfiguration(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final String serviceName, final String name, final String value) {
-        final String EXTERNAL_SERVICES_CONFIG_UPDATE_URL = "/fineract-provider/api/v1/externalservice/" + serviceName + "?"
-                + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------UPDATE VALUE FOR GLOBAL CONFIG---------------------------------------------");
-        HashMap map = Utils.performServerPut(requestSpec, responseSpec, EXTERNAL_SERVICES_CONFIG_UPDATE_URL,
-                updateExternalServicesConfigUpdateValueAsJSON(name, value), "");
-
-        return (HashMap) map.get("changes");
-    }
-
-    public static String updateExternalServicesConfigUpdateValueAsJSON(final String name, final String value) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put(name, value);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
deleted file mode 100644
index d1acfb8..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Random;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "unused", "rawtypes" })
-public class GlobalConfigurationHelper {
-
-    private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-
-    public GlobalConfigurationHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-
-    public static ArrayList getAllGlobalConfigurations(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        final String GET_ALL_GLOBAL_CONFIG_URL = "/fineract-provider/api/v1/configurations?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING ALL GLOBAL CONFIGURATIONS -------------------------");
-        final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_ALL_GLOBAL_CONFIG_URL, "");
-        return (ArrayList) response.get("globalConfiguration");
-    }
-
-    public static HashMap getGlobalConfigurationById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String configId) {
-        final String GET_GLOBAL_CONFIG_BY_ID_URL = "/fineract-provider/api/v1/configurations/" + configId + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING GLOBAL CONFIGURATION BY ID -------------------------");
-        return Utils.performServerGet(requestSpec, responseSpec, GET_GLOBAL_CONFIG_BY_ID_URL, "");
-    }
-
-    public static Integer updateValueForGlobalConfiguration(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final String configId, final String value) {
-        final String GLOBAL_CONFIG_UPDATE_URL = "/fineract-provider/api/v1/configurations/" + configId + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------UPDATE VALUE FOR GLOBAL CONFIG---------------------------------------------");
-        return Utils.performServerPut(requestSpec, responseSpec, GLOBAL_CONFIG_UPDATE_URL, updateGlobalConfigUpdateValueAsJSON(value),
-                "resourceId");
-    }
-
-    public static Integer updateEnabledFlagForGlobalConfiguration(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final String configId, final Boolean enabled) {
-        final String GLOBAL_CONFIG_UPDATE_URL = "/fineract-provider/api/v1/configurations/" + configId + "?" + Utils.TENANT_IDENTIFIER;
-        System.out
-                .println("---------------------------------UPDATE GLOBAL CONFIG FOR ENABLED FLAG---------------------------------------------");
-        return Utils.performServerPut(requestSpec, responseSpec, GLOBAL_CONFIG_UPDATE_URL,
-                updateGlobalConfigUpdateEnabledFlagAsJSON(enabled), "resourceId");
-    }
-
-    public static ArrayList getGlobalConfigurationIsCacheEnabled(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec) {
-        final String GET_IS_CACHE_GLOBAL_CONFIG_URL = "/fineract-provider/api/v1/caches?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING IS CACHE ENABLED GLOBAL CONFIGURATION -------------------------");
-        final ArrayList<HashMap> response = Utils.performServerGet(requestSpec, responseSpec, GET_IS_CACHE_GLOBAL_CONFIG_URL, "");
-        return response;
-    }
-
-    public static HashMap updateIsCacheEnabledForGlobalConfiguration(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final String cacheType) {
-        final String IS_CACHE_GLOBAL_CONFIG_UPDATE_URL = "/fineract-provider/api/v1/caches?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------UPDATE GLOBAL CONFIG FOR IS CACHE ENABLED----------------------");
-        return Utils.performServerPut(requestSpec, responseSpec, IS_CACHE_GLOBAL_CONFIG_UPDATE_URL,
-                updateIsCacheEnabledGlobalConfigUpdateAsJSON(cacheType), "changes");
-    }
-    
-    public static Object updatePasswordResetDaysForGlobalConfiguration(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final Integer configId, final String value, final String enabled, final String jsonAttributeToGetBack) {
-        final String UPDATE_URL = "/fineract-provider/api/v1/configurations/" + configId + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------UPDATE GLOBAL CONFIG FOR FORCE PASSWORD RESET DAYS----------------------");
-        return Utils.performServerPut(requestSpec, responseSpec, UPDATE_URL,
-                updatePasswordResetDaysGlobalConfigAsJSON(value, enabled), jsonAttributeToGetBack);
-    }
-
-    public static String updateGlobalConfigUpdateValueAsJSON(final String value) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("value", value);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-    
-    public static String updatePasswordResetDaysGlobalConfigAsJSON(final String value, final String enabled) {
-        final HashMap<String, String> map = new HashMap<>();
-        if(value != null){
-            map.put("value", value);
-        }
-        map.put("enabled", enabled);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static String updateGlobalConfigUpdateEnabledFlagAsJSON(final Boolean enabled) {
-        final HashMap<String, Boolean> map = new HashMap<String, Boolean>();
-        map.put("enabled", enabled);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static String updateIsCacheEnabledGlobalConfigUpdateAsJSON(final String cacheType) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("cacheType", cacheType);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GroupHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GroupHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GroupHelper.java
deleted file mode 100755
index f8a3af0..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GroupHelper.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class GroupHelper {
-
-    private static final String CREATE_GROUP_URL = "/fineract-provider/api/v1/groups?" + Utils.TENANT_IDENTIFIER;
-
-    public static Integer createGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            @SuppressWarnings("unused") final boolean active) {
-        System.out.println("---------------------------------CREATING A GROUP---------------------------------------------");
-        return createGroup(requestSpec, responseSpec, "04 March 2011");
-    }
-
-    public static Integer createGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String activationDate) {
-        System.out.println("---------------------------------CREATING A GROUP---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_GROUP_URL, getTestGroupAsJSON(true, activationDate), "groupId");
-    }
-
-    public static Integer createGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        System.out.println("---------------------------------CREATING A GROUP---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_GROUP_URL, getTestGroupAsJSON(false, ""), "groupId");
-    }
-
-    public static Integer associateClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String groupId, final String clientMember) {
-        final String GROUP_ASSOCIATE_URL = "/fineract-provider/api/v1/groups/" + groupId
-                + "?command=associateClients&" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------Associate Client To A GROUP---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSOCIATE_URL, associateClientAsJSON(clientMember), "groupId");
-    }
-
-    public static Integer disAssociateClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String groupId, final String clientMember) {
-        final String GROUP_ASSOCIATE_URL = "/fineract-provider/api/v1/groups/" + groupId
-                + "?command=disassociateClients&" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------Disassociate Client To A GROUP---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSOCIATE_URL, associateClientAsJSON(clientMember), "groupId");
-    }
-
-    public static Integer activateGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String groupId) {
-        final String GROUP_ASSOCIATE_URL = "/fineract-provider/api/v1/groups/" + groupId + "?command=activate&" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------Activate A GROUP---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSOCIATE_URL, activateGroupAsJSON(""), "groupId");
-    }
-
-    public static Integer updateGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String name,
-            final String groupId) {
-        final String GROUP_ASSOCIATE_URL = "/fineract-provider/api/v1/groups/" + groupId + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------UPDATE GROUP---------------------------------------------");
-        return Utils.performServerPut(requestSpec, responseSpec, GROUP_ASSOCIATE_URL, updateGroupAsJSON(name), "groupId");
-    }
-
-    public static Integer deleteGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String groupId) {
-        final String GROUP_ASSOCIATE_URL = "/fineract-provider/api/v1/groups/" + groupId + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------DELETE GROUP---------------------------------------------");
-        return Utils.performServerDelete(requestSpec, responseSpec, GROUP_ASSOCIATE_URL, "groupId");
-    }
-
-
-    public static Object assignStaff(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String groupId,final Long staffId){
-        final String GROUP_ASSIGN_STAFF_URL = "/fineract-provider/api/v1/groups/" + groupId + "?" + Utils.TENANT_IDENTIFIER + "&command=assignStaff";
-        System.out.println("---------------------------------DELETE GROUP---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSIGN_STAFF_URL,assignStaffAsJSON(staffId),"changes");
-    }
-    public static Object assignStaffInheritStaffForClientAccounts(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String groupId,final String staffId){
-        final String GROUP_ASSIGN_STAFF_URL = "/fineract-provider/api/v1/groups/" + groupId + "?" + Utils.TENANT_IDENTIFIER + "&command=assignStaff";
-        System.out.println("---------------------------------DELETE GROUP---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSIGN_STAFF_URL,assignStaffAndInheritStaffForClientAccountsAsJSON(staffId),"changes");
-    }
-
-
-    public static String getTestGroupAsJSON(final boolean active, final String activationDate) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("officeId", "1");
-        map.put("name", randomNameGenerator("Group_Name_", 5));
-        map.put("externalId", randomIDGenerator("ID_", 7));
-        map.put("dateFormat", "dd MMMM yyyy");
-        map.put("locale", "en");
-        if (active) {
-            map.put("active", "true");
-            map.put("activationDate", activationDate);
-        } else {
-            map.put("active", "false");
-            map.put("submittedOnDate", "04 March 2011");
-            System.out.println("defaulting to inactive group: 04 March 2011");
-        }
-
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static String associateClientAsJSON(final String clientMember) {
-        final HashMap<String, List<String>> map = new HashMap<String, List<String>>();
-        final List<String> list = new ArrayList<>();
-        list.add(clientMember);
-        map.put("clientMembers", list);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static String activateGroupAsJSON(final String activationDate) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("dateFormat", "dd MMMM yyyy");
-        map.put("locale", "en");
-        if (StringUtils.isNotEmpty(activationDate)) {
-            map.put("activationDate", activationDate);
-        } else {
-            map.put("activationDate", "04 March 2011");
-            System.out.println("defaulting to fixed date: 04 March 2011");
-        }
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static String updateGroupAsJSON(final String name) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("name", name);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-    public static String assignStaffAsJSON(final Long staffId) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("staffId", staffId);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-    public static String assignStaffAndInheritStaffForClientAccountsAsJSON(final String staffId) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("staffId", staffId);
-        map.put("inheritStaffForClientAccounts","true");
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-
-    public static void verifyGroupCreatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedGroupID) {
-        System.out.println("------------------------------CHECK GROUP DETAILS------------------------------------\n");
-        final String GROUP_URL = "/fineract-provider/api/v1/groups/" + generatedGroupID + "?" + Utils.TENANT_IDENTIFIER;
-        final Integer responseGroupID = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "id");
-        assertEquals("ERROR IN CREATING THE GROUP", generatedGroupID, responseGroupID);
-    }
-
-    public static void verifyGroupDetails(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedGroupID, final String field, final String expectedValue) {
-        System.out.println("------------------------------CHECK GROUP DETAILS------------------------------------\n");
-        final String GROUP_URL = "/fineract-provider/api/v1/groups/" + generatedGroupID + "?" + Utils.TENANT_IDENTIFIER;
-        final String responseValue = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, field);
-        assertEquals("ERROR IN CREATING THE GROUP", expectedValue, responseValue);
-    }
-
-    public static void verifyGroupActivatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedGroupID, final boolean generatedGroupStatus) {
-        System.out.println("------------------------------CHECK GROUP STATUS------------------------------------\n");
-        final String GROUP_URL = "/fineract-provider/api/v1/groups/" + generatedGroupID + "?" + Utils.TENANT_IDENTIFIER;
-        final Boolean responseGroupStatus = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "active");
-        assertEquals("ERROR IN ACTIVATING THE GROUP", generatedGroupStatus, responseGroupStatus);
-    }
-
-    public static void verifyGroupMembers(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedGroupID, final Integer groupMember) {
-        List<String> list = new ArrayList<>();
-        System.out.println("------------------------------CHECK GROUP MEMBERS------------------------------------\n");
-        final String GROUP_URL = "/fineract-provider/api/v1/groups/" + generatedGroupID
-                + "?associations=clientMembers&" + Utils.TENANT_IDENTIFIER;
-        list = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "clientMembers");
-        assertTrue("ERROR IN GROUP MEMBER", list.toString().contains("id=" + groupMember.toString()));
-    }
-
-    public static void verifyEmptyGroupMembers(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedGroupID) {
-        List<String> list = new ArrayList<>();
-        System.out.println("------------------------------CHECK EMPTY GROUP MEMBER LIST------------------------------------\n");
-        final String GROUP_URL = "/fineract-provider/api/v1/groups/" + generatedGroupID
-                + "?associations=clientMembers&" + Utils.TENANT_IDENTIFIER;
-        list = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "clientMembers");
-        assertEquals("GROUP MEMBER LIST NOT EMPTY", list, null);
-    }
-
-    public static void verifyGroupDeleted(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedGroupID) {
-        List<String> list = new ArrayList<>();
-        System.out.println("------------------------------CHECK GROUP DELETED------------------------------------\n");
-        final String GROUP_URL = "/fineract-provider/api/v1/groups/?" + Utils.TENANT_IDENTIFIER;
-        list = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "pageItems");
-
-        assertFalse("GROUP NOT DELETED", list.toString().contains("id=" + generatedGroupID.toString()));
-    }
-
-    public static String randomNameGenerator(final String prefix, final int lenOfRandomSuffix) {
-        return Utils.randomStringGenerator(prefix, lenOfRandomSuffix);
-    }
-
-    private static String randomIDGenerator(final String prefix, final int lenOfRandomSuffix) {
-        return Utils.randomStringGenerator(prefix, lenOfRandomSuffix, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java
deleted file mode 100644
index d8b90ad..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.Utils;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSender;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "unused", "rawtypes" })
-public class HolidayHelper {
-
-    private static final String HOLIDAYS_URL = "/fineract-provider/api/v1/holidays";
-    private static final String CREATE_HOLIDAY_URL = HOLIDAYS_URL + "?" + Utils.TENANT_IDENTIFIER;
-
-    private static final String OFFICE_ID = "1";
-
-    private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-
-    public HolidayHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-
-    public static String getCreateHolidayDataAsJSON() {
-        final HashMap<String, Object> map = new HashMap<>();
-        List<HashMap<String, String>> offices = new ArrayList<HashMap<String, String>>();
-        HashMap<String, String> officeMap = new HashMap<>();
-        officeMap.put("officeId", OFFICE_ID);
-        offices.add(officeMap);
-
-        map.put("offices", offices);
-        map.put("locale", "en");
-        map.put("dateFormat", "dd MMMM yyyy");
-        map.put("name", Utils.randomNameGenerator("HOLIDAY_", 5));
-        map.put("fromDate", "01 April 2013");
-        map.put("toDate", "01 April 2013");
-        map.put("repaymentsRescheduledTo", "08 April 2013");
-
-        String HolidayCreateJson = new Gson().toJson(map);
-        System.out.println(HolidayCreateJson);
-        return HolidayCreateJson;
-    }
-    
-    public static String getActivateHolidayDataAsJSON() {
-        final HashMap<String, String> map = new HashMap<>();
-        String activateHoliday = new Gson().toJson(map);
-        System.out.println(activateHoliday);
-        return activateHoliday;
-    }
-
-    public static Integer createHolidays(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_HOLIDAY_URL, getCreateHolidayDataAsJSON(), "resourceId");
-    }
-    
-    public static Integer activateHolidays(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String holidayID) {
-        final String ACTIVATE_HOLIDAY_URL = HOLIDAYS_URL + "/" + holidayID + "?command=activate&" + Utils.TENANT_IDENTIFIER; 
-        return Utils.performServerPost(requestSpec, responseSpec, ACTIVATE_HOLIDAY_URL, getActivateHolidayDataAsJSON(), "resourceId");
-    }
-    
-    public static HashMap getHolidayById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String holidayID) {
-        final String GET_HOLIDAY_BY_ID_URL = HOLIDAYS_URL + "/" + holidayID + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING HOLIDAY BY ID -------------------------");
-        final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_HOLIDAY_BY_ID_URL, "");
-        return response;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java
deleted file mode 100644
index c2ca23f..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class HookHelper {
-	
-	private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-
-    private static final String CREATE_HOOK_URL = "/fineract-provider/api/v1/hooks?" + Utils.TENANT_IDENTIFIER;
-    
-    public HookHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-    
-    public Integer createHook(final String payloadURL) {
-        System.out.println("---------------------------------CREATING A HOOK---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_HOOK_URL, getTestHookAsJson(payloadURL),
-                "resourceId");
-    }
-    
-    public String getTestHookAsJson(final String payloadURL) {
-    	final HashMap<String, Object> map = new HashMap<>();
-    	map.put("name", "Web");
-    	map.put("displayName", Utils.randomNameGenerator("Hook_DisplayName_", 5));
-        map.put("isActive", "true");
-        final HashMap<String, String> config = new HashMap<>();
-        config.put("Content Type", "json");
-        config.put("Payload URL", payloadURL);
-        map.put("config", config);
-        final ArrayList<HashMap<String, String>> events = new ArrayList<>();
-        final HashMap<String, String> createOfficeEvent = new HashMap<>();
-        createOfficeEvent.put("actionName", "CREATE");
-        createOfficeEvent.put("entityName", "OFFICE");
-        events.add(createOfficeEvent);
-        map.put("events", events);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-    
-    public Integer updateHook(final String payloadURL, final Long hookId) {
-        System.out.println("---------------------------------UPDATING HOOK---------------------------------------------");
-        final String UPDATE_HOOK_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerPut(this.requestSpec, this.responseSpec, UPDATE_HOOK_URL, getTestHookAsJson(payloadURL), "resourceId");
-    }
-
-    public Integer deleteHook(final Long hookId) {
-        System.out.println("---------------------------------DELETING HOOK---------------------------------------------");
-        final String DELETE_HOOK_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerDelete(this.requestSpec, this.responseSpec, DELETE_HOOK_URL, "resourceId");
-    }
-    
-    public void verifyHookCreatedOnServer(final Long hookId) {
-        System.out.println("------------------------------CHECK CREATE HOOK DETAILS------------------------------------\n");
-        final String GET_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER;
-        final Integer responseHookId = Utils.performServerGet(this.requestSpec, this.responseSpec, GET_URL, "id");
-        assertEquals(hookId.toString(), responseHookId.toString());
-    }
-    
-    public void verifyUpdateHook(final String updateURL, final Long hookId) {
-        System.out.println("------------------------------CHECK UPDATE HOOK DETAILS------------------------------------\n");
-        final String GET_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER;
-        ArrayList map = Utils.performServerGet(this.requestSpec, this.responseSpec, GET_URL, "config");
-        HashMap<String, String> hash = (HashMap<String, String>) map.get(1);
-        assertEquals(updateURL, hash.get("fieldValue"));
-    }
-    
-    public void verifyDeleteHook(final Long hookId) {
-        System.out.println("------------------------------CHECK DELETE HOOK DETAILS------------------------------------\n");
-        final String GET_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER;
-        ResponseSpecification responseSpec404 = new ResponseSpecBuilder().expectStatusCode(404).build();
-        ArrayList array = Utils.performServerGet(this.requestSpec, responseSpec404, GET_URL, "errors");
-		HashMap<String, String> map = (HashMap<String, String>)array.get(0);
-        assertEquals("error.msg.hook.identifier.not.found",map.get("userMessageGlobalisationCode"));
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ImageHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ImageHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ImageHelper.java
deleted file mode 100644
index c076740..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ImageHelper.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import org.apache.http.HttpHeaders;
-
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class ImageHelper {
-
-    private static final String STAFF_IMAGE_URL = "/fineract-provider/api/v1/staff/";
-    private static final String IMAGES_URI = "/images";
-
-    public static Integer createImageForStaff(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            Integer staffId) {
-        System.out.println("---------------------------------CREATING AN IMAGE FOR STAFF---------------------------------------------");
-        String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerPost(requestSpec, responseSpec, URL, generateImageAsText(), "resourceId");
-    }
-
-    public static Integer updateImageForStaff(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            Integer staffId) {
-        System.out.println("---------------------------------UPDATING AN IMAGE FOR STAFF---------------------------------------------");
-        String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerPut(requestSpec, responseSpec, URL, generateImageAsText(), "resourceId");
-    }
-
-    public static String getStaffImageAsText(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            Integer staffId) {
-        System.out.println("---------------------------------RETRIEVING STAFF IMAGE---------------------------------------------");
-        String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
-        requestSpec.header(HttpHeaders.ACCEPT, "text/plain");
-        return Utils.performGetTextResponse(requestSpec, responseSpec, URL);
-    }
-
-    public static byte[] getStaffImageAsBinary(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            Integer staffId) {
-        System.out.println("---------------------------------RETRIEVING STAFF IMAGE---------------------------------------------");
-        String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
-        requestSpec.header(HttpHeaders.ACCEPT, "application/octet-stream");
-        return Utils.performGetBinaryResponse(requestSpec, responseSpec, URL);
-    }
-
-    public static Integer deleteStaffImage(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, Integer staffId) {
-        System.out.println("---------------------------------RETRIEVING STAFF IMAGE---------------------------------------------");
-        String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerDelete(requestSpec, responseSpec, URL, "resourceId");
-    }
-
-    private static String generateImageAsText() {
-        return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\n"
-                + "bWFnZVJlYWR5ccllPAAAAJ1JREFUeNpi+P//PwMIA4E9EG8E4idQDGLbw+WhiiqA+D8OXAFVAzbp\n"
-                + "DxBvB2JLIGaGYkuoGEjOhhFIHAbij0BdPgxYACMj42ogJQpifwBiXSDeC8JIbt4LxSC5DyxQjTeB\n"
-                + "+BeaYb+Q5EBOAVutCzMJHUNNPADzzDokiYdAfAmJvwLkGeTgWQfyKZICS6hYBTwc0QL8ORSjBDhA\n" + "gAEAOg13B6R/SAgAAAAASUVORK5CYII=";
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java
deleted file mode 100644
index 7e10e9d..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import static org.junit.Assert.assertEquals;
-
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class LoanRescheduleRequestHelper {
-	private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-    
-    private static final String LOAN_RESCHEDULE_REQUEST_URL = "/fineract-provider/api/v1/rescheduleloans";
-    
-    public LoanRescheduleRequestHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-    
-    public Integer createLoanRescheduleRequest(final String requestJSON) {
-    	final String URL = LOAN_RESCHEDULE_REQUEST_URL + "?" + Utils.TENANT_IDENTIFIER; 
-    	return Utils.performServerPost(this.requestSpec, this.responseSpec, URL, requestJSON, "resourceId");
-    }
-    
-    public Integer rejectLoanRescheduleRequest(final Integer requestId, final String requestJSON) {
-    	final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER + "&command=reject";
-    	
-    	return Utils.performServerPost(this.requestSpec, this.responseSpec, URL, requestJSON, "resourceId");
-    }
-    
-    public Integer approveLoanRescheduleRequest(final Integer requestId, final String requestJSON) {
-    	final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER + "&command=approve";
-    	
-    	return Utils.performServerPost(this.requestSpec, this.responseSpec, URL, requestJSON, "resourceId");
-    }
-    
-    public Object getLoanRescheduleRequest(final Integer requestId, final String param) {
-    	final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER;
-    	
-    	return Utils.performServerGet(requestSpec, responseSpec, URL, param);
-    }
-    
-    public void verifyCreationOfLoanRescheduleRequest(final Integer requestId) {
-    	final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER;
-    	
-    	final Integer id = Utils.performServerGet(requestSpec, responseSpec, URL, "id");
-    	assertEquals("ERROR IN CREATING LOAN RESCHEDULE REQUEST", requestId, id);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
deleted file mode 100644
index 1032b24..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import com.google.gson.Gson;
-
-public class OfficeDomain {
-
-	public static class Builder {
-
-		private int id;
-		private String name;
-		private String nameDecorated;
-		private String externalId;
-		private String[] openingDate;
-		private String hierarchy;
-
-		private Builder(final int id, final String name,
-				final String nameDecorated, final String externalId,
-				final String[] openingDate, final String hierarchy) {
-			this.id = id;
-			this.name = name;
-			this.nameDecorated = nameDecorated;
-			this.externalId = externalId;
-			this.openingDate = openingDate;
-			this.hierarchy = hierarchy;
-		}
-
-		public OfficeDomain build() {
-			return new OfficeDomain(this.id, this.name, this.nameDecorated,
-					this.externalId, this.openingDate, this.hierarchy);
-		}
-	}
-
-	private int id;
-	private String name;
-	private String nameDecorated;
-	private String externalId;
-	private String[] openingDate;
-	private String hierarchy;
-
-	OfficeDomain() {
-		super();
-	}
-
-	private OfficeDomain(final int id, final String name,
-			final String nameDecorated, final String externalId,
-			final String[] openingDate, final String hierarchy) {
-		super();
-		this.id = id;
-		this.name = name;
-		this.nameDecorated = nameDecorated;
-		this.externalId = externalId;
-		this.openingDate = openingDate;
-		this.hierarchy = hierarchy;
-	}
-
-	public String toJSON() {
-		return new Gson().toJson(this);
-	}
-
-	public static OfficeDomain fromJSON(final String jsonData) {
-		return new Gson().fromJson(jsonData, OfficeDomain.class);
-	}
-
-	public static Builder create(final int id, final String name,
-			final String nameDecorated, final String externalId,
-			final String[] openingDate, final String hierarchy) {
-		return new Builder(id, name, nameDecorated, externalId, openingDate,
-				hierarchy);
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public String getName() {
-		return this.name;
-	}
-
-	public String getNameDecorated() {
-		return this.nameDecorated;
-	}
-
-	public String getExternalId() {
-		return this.externalId;
-	}
-
-	public String[] getOpeningDate() {
-		return this.openingDate;
-	}
-
-	public String getHierarchy() {
-		return this.hierarchy;
-	}
-
-	@Override
-	public int hashCode() {
-		int hash = 1;
-
-		if (this.id > 0)
-			hash += this.id;
-		if (this.name != null)
-			hash += this.name.hashCode();
-		if (this.nameDecorated != null)
-			hash += this.nameDecorated.hashCode();
-		if (this.externalId != null)
-			hash += this.externalId.hashCode();
-		if (this.openingDate != null)
-			hash += this.openingDate.hashCode();
-		if (this.hierarchy != null)
-			hash += this.hierarchy.hashCode();
-
-		return hash;
-	}
-
-	@Override
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
-		}
-
-		if (!(obj instanceof OfficeDomain))
-			return false;
-
-		OfficeDomain od = (OfficeDomain) obj;
-
-		if (this.id == od.getId() && this.name.equals(od.getName())
-				&& this.nameDecorated.equals(od.getName())
-				&& this.externalId.equals(od.getExternalId())
-				&& this.openingDate.equals(od.getOpeningDate())
-				&& this.hierarchy.equals(od.getHierarchy()))
-			return true;
-
-		return false;
-	}
-}
\ No newline at end of file



[02/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/JournalEntryHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/JournalEntryHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/JournalEntryHelper.java
deleted file mode 100644
index b549763..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/JournalEntryHelper.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.accounting;
-
-import static org.hamcrest.Matchers.equalTo;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.Utils;
-
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings("rawtypes")
-public class JournalEntryHelper {
-
-    private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-
-    public JournalEntryHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-
-    public void checkJournalEntryForExpenseAccount(final Account expenseAccount, final String date, final JournalEntry... accountEntries) {
-        checkJournalEntry(null, expenseAccount, date, accountEntries);
-    }
-
-    public void checkJournalEntryForAssetAccount(final Account assetAccount, final String date, final JournalEntry... accountEntries) {
-        checkJournalEntry(null, assetAccount, date, accountEntries);
-    }
-
-    public void checkJournalEntryForIncomeAccount(final Account incomeAccount, final String date, final JournalEntry... accountEntries) {
-        checkJournalEntry(null, incomeAccount, date, accountEntries);
-    }
-
-    public void checkJournalEntryForLiabilityAccount(final Account liabilityAccount, final String date,
-            final JournalEntry... accountEntries) {
-        checkJournalEntry(null, liabilityAccount, date, accountEntries);
-    }
-
-    public void checkJournalEntryForLiabilityAccount(final Integer officeId, final Account liabilityAccount, final String date,
-            final JournalEntry... accountEntries) {
-        checkJournalEntry(officeId, liabilityAccount, date, accountEntries);
-    }
-
-    public void ensureNoAccountingTransactionsWithTransactionId(final String transactionId) {
-        ArrayList<HashMap> transactions = getJournalEntriesByTransactionId(transactionId);
-        assertTrue("Tranasactions are is not empty", transactions.isEmpty());
-
-    }
-
-    private String getEntryValueFromJournalEntry(final ArrayList<HashMap> entryResponse, final int entryNumber) {
-        final HashMap map = (HashMap) entryResponse.get(entryNumber).get("entryType");
-        return (String) map.get("value");
-    }
-
-    private Float getTransactionAmountFromJournalEntry(final ArrayList<HashMap> entryResponse, final int entryNumber) {
-        return (Float) entryResponse.get(entryNumber).get("amount");
-    }
-
-    private void checkJournalEntry(final Integer officeId, final Account account, final String date, final JournalEntry... accountEntries) {
-        final String url = createURLForGettingAccountEntries(account, date, officeId);
-        final ArrayList<HashMap> response = Utils.performServerGet(this.requestSpec, this.responseSpec, url, "pageItems");
-        for (int i = 0; i < accountEntries.length; i++) {
-            assertThat(getEntryValueFromJournalEntry(response, i), equalTo(accountEntries[i].getTransactionType()));
-            assertThat(getTransactionAmountFromJournalEntry(response, i), equalTo(accountEntries[i].getTransactionAmount()));
-        }
-    }
-
-    private String createURLForGettingAccountEntries(final Account account, final String date, final Integer officeId) {
-        String url = new String("/fineract-provider/api/v1/journalentries?glAccountId=" + account.getAccountID() + "&type="
-                + account.getAccountType() + "&fromDate=" + date + "&toDate=" + date + "&tenantIdentifier=default"
-                + "&orderBy=id&sortOrder=desc&locale=en&dateFormat=dd MMMM yyyy");
-        if (officeId != null) {
-            url = url + "&officeId=" + officeId;
-        }
-        return url;
-    }
-
-    private ArrayList<HashMap> getJournalEntriesByTransactionId(final String transactionId) {
-        final String url = createURLForGettingAccountEntriesByTransactionId(transactionId);
-        final ArrayList<HashMap> response = Utils.performServerGet(this.requestSpec, this.responseSpec, url, "pageItems");
-        return response;
-    }
-
-    private String createURLForGettingAccountEntriesByTransactionId(final String transactionId) {
-        return new String("/fineract-provider/api/v1/journalentries?transactionId=" + transactionId + "&tenantIdentifier=default"
-                + "&orderBy=id&sortOrder=desc&locale=en&dateFormat=dd MMMM yyyy");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/PeriodicAccrualAccountingHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/PeriodicAccrualAccountingHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/PeriodicAccrualAccountingHelper.java
deleted file mode 100755
index 843f8e0..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/PeriodicAccrualAccountingHelper.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.accounting;
-
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.Utils;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class PeriodicAccrualAccountingHelper {
-
-    private static final String PERIODIC_ACCRUAL_URL = "/fineract-provider/api/v1/runaccruals";
-    private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-
-    public PeriodicAccrualAccountingHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-
-    public Object runPeriodicAccrualAccounting(String date) {
-        String json = getRunPeriodicAccrual(date);
-        return Utils.performServerPost(this.requestSpec, this.responseSpec, PERIODIC_ACCRUAL_URL + "?" + Utils.TENANT_IDENTIFIER, json, "");
-    }
-
-    private String getRunPeriodicAccrual(String date) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("dateFormat", "dd MMMM yyyy");
-        map.put("locale", "en_GB");
-        map.put("tillDate", date);
-        return new Gson().toJson(map);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/charges/ChargesHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/charges/ChargesHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/charges/ChargesHelper.java
deleted file mode 100755
index 6b17468..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/charges/ChargesHelper.java
+++ /dev/null
@@ -1,412 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.charges;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.Utils;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class ChargesHelper {
-
-    private static final String CHARGES_URL = "/fineract-provider/api/v1/charges";
-    private static final String CREATE_CHARGES_URL = CHARGES_URL + "?" + Utils.TENANT_IDENTIFIER;
-
-    private static final Integer CHARGE_APPLIES_TO_LOAN = 1;
-    private static final Integer CHARGE_APPLIES_TO_SAVINGS = 2;
-    private static final Integer CHARGE_APPLIES_TO_CLIENT = 3;
-
-    private static final Integer CHARGE_DISBURSEMENT_FEE = 1;
-    private static final Integer CHARGE_SPECIFIED_DUE_DATE = 2;
-    private static final Integer CHARGE_SAVINGS_ACTIVATION_FEE = 3;
-    private static final Integer CHARGE_WITHDRAWAL_FEE = 5;
-    private static final Integer CHARGE_ANNUAL_FEE = 6;
-    private static final Integer CHARGE_MONTHLY_FEE = 7;
-    private static final Integer CHARGE_INSTALLMENT_FEE = 8;
-    private static final Integer CHARGE_OVERDUE_INSTALLMENT_FEE = 9;
-    private static final Integer CHARGE_OVERDRAFT_FEE = 10;
-    private static final Integer WEEKLY_FEE = 11;
-    
-    private static final Integer CHARGE_CLIENT_SPECIFIED_DUE_DATE = 1;
-
-    public static final Integer CHARGE_CALCULATION_TYPE_FLAT = 1;
-    public static final Integer CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT = 2;
-    public static final Integer CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST = 3;
-    public static final Integer CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST = 4;
-
-    private static final Integer CHARGE_PAYMENT_MODE_REGULAR = 0;
-    private static final Integer CHARGE_PAYMENT_MODE_ACCOUNT_TRANSFER = 1;
-
-    private static final Integer CHARGE_FEE_FREQUENCY_DAYS = 0;
-    private static final Integer CHARGE_FEE_FREQUENCY_WEEKS = 1;
-    private static final Integer CHARGE_FEE_FREQUENCY_MONTHS = 2;
-    private static final Integer CHARGE_FEE_FREQUENCY_YEARS = 3;
-
-    private final static boolean active = true;
-    private final static boolean penalty = true;
-    private final static String amount = "100";
-    private final static String currencyCode = "USD";
-    public final static String feeOnMonthDay = "04 March";
-    private final static String monthDayFormat = "dd MMM";
-
-    public static String getSavingsSpecifiedDueDateJSON() {
-        final HashMap<String, Object> map = populateDefaultsForSavings();
-        map.put("chargeTimeType", CHARGE_SPECIFIED_DUE_DATE);
-        map.put("feeInterval", 2);
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-
-    public static String getSavingsActivationFeeJSON() {
-        final HashMap<String, Object> map = populateDefaultsForSavings();
-        map.put("chargeTimeType", CHARGE_SAVINGS_ACTIVATION_FEE);
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-
-    public static String getSavingsWithdrawalFeeJSON() {
-        final HashMap<String, Object> map = populateDefaultsForSavings();
-        map.put("chargeTimeType", CHARGE_WITHDRAWAL_FEE);
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-
-    public static String getSavingsAnnualFeeJSON() {
-        final HashMap<String, Object> map = populateDefaultsForSavings();
-        map.put("feeOnMonthDay", ChargesHelper.feeOnMonthDay);
-        map.put("chargeTimeType", CHARGE_ANNUAL_FEE);
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-
-    public static String getSavingsMonthlyFeeJSON() {
-        final HashMap<String, Object> map = populateDefaultsForSavings();
-        map.put("feeOnMonthDay", ChargesHelper.feeOnMonthDay);
-        map.put("chargeTimeType", CHARGE_MONTHLY_FEE);
-        map.put("feeInterval", 2);
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-    
-    public static String getSavingsWeeklyFeeJSON() {
-        final HashMap<String, Object> map = populateDefaultsForSavings();
-        map.put("chargeTimeType", WEEKLY_FEE);
-        map.put("feeInterval", 1);
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-
-    public static String getSavingsOverdraftFeeJSON() {
-        final HashMap<String, Object> map = populateDefaultsForSavings();
-        map.put("chargeTimeType", CHARGE_OVERDRAFT_FEE);
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-
-    public static HashMap<String, Object> populateDefaultsForSavings() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("active", ChargesHelper.active);
-        map.put("amount", ChargesHelper.amount);
-        map.put("chargeAppliesTo", ChargesHelper.CHARGE_APPLIES_TO_SAVINGS);
-        map.put("chargeCalculationType", ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT);
-        map.put("currencyCode", ChargesHelper.currencyCode);
-        map.put("locale", CommonConstants.locale);
-        map.put("monthDayFormat", ChargesHelper.monthDayFormat);
-        map.put("name", Utils.randomNameGenerator("Charge_Savings_", 6));
-        return map;
-    }
-
-    public static String getLoanDisbursementJSON() {
-        return getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, ChargesHelper.amount);
-    }
-
-    public static String getLoanDisbursementJSON(final Integer chargeCalculationType, final String amount) {
-        return getLoanDisbursementJSON(chargeCalculationType, amount, ChargesHelper.CHARGE_PAYMENT_MODE_REGULAR);
-    }
-
-    public static String getLoanDisbursementAccountTransferJSON(final Integer chargeCalculationType, final String amount) {
-        return getLoanDisbursementJSON(chargeCalculationType, amount, ChargesHelper.CHARGE_PAYMENT_MODE_ACCOUNT_TRANSFER);
-    }
-
-    public static String getLoanDisbursementJSON(final Integer chargeCalculationType, final String amount, final Integer paymentmode) {
-        final HashMap<String, Object> map = populateDefaultsForLoan();
-        map.put("chargeTimeType", CHARGE_DISBURSEMENT_FEE);
-        map.put("chargePaymentMode", paymentmode);
-        map.put("amount", amount);
-        map.put("chargeCalculationType", chargeCalculationType);
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-
-    public static String getLoanSpecifiedDueDateJSON() {
-        return getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, ChargesHelper.amount, ChargesHelper.penalty);
-    }
-
-    public static String getLoanSpecifiedDueDateJSON(final Integer chargeCalculationType, final String amount, boolean penalty) {
-        return getLoanSpecifiedDueDateJSON(chargeCalculationType, amount, penalty, ChargesHelper.CHARGE_PAYMENT_MODE_REGULAR);
-    }
-
-    public static String getLoanSpecifiedDueDateJSON(final Integer chargeCalculationType, final String amount, final boolean penalty,
-            final Integer paymentMode) {
-        final HashMap<String, Object> map = populateDefaultsForLoan();
-        map.put("chargeTimeType", CHARGE_SPECIFIED_DUE_DATE);
-        map.put("chargePaymentMode", paymentMode);
-        map.put("penalty", penalty);
-        map.put("amount", amount);
-        map.put("chargeCalculationType", chargeCalculationType);
-
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-
-    public static String getLoanSpecifiedDueDateWithAccountTransferJSON(final Integer chargeCalculationType, final String amount,
-            boolean penalty) {
-        return getLoanSpecifiedDueDateJSON(chargeCalculationType, amount, penalty, ChargesHelper.CHARGE_PAYMENT_MODE_ACCOUNT_TRANSFER);
-    }
-
-    public static String getLoanSpecifiedDueDateWithAccountTransferJSON() {
-        return getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, ChargesHelper.amount, ChargesHelper.penalty,
-                ChargesHelper.CHARGE_PAYMENT_MODE_ACCOUNT_TRANSFER);
-    }
-
-    public static String getLoanInstallmentJSON(final Integer chargeCalculationType, final String amount, boolean penalty) {
-        return getLoanInstallmentJSON(chargeCalculationType, amount, penalty, ChargesHelper.CHARGE_PAYMENT_MODE_REGULAR);
-    }
-
-    public static String getLoanInstallmentJSON(final Integer chargeCalculationType, final String amount, final boolean penalty,
-            final Integer paymentMode) {
-        final HashMap<String, Object> map = populateDefaultsForLoan();
-        map.put("chargeTimeType", CHARGE_INSTALLMENT_FEE);
-        map.put("chargePaymentMode", paymentMode);
-        map.put("penalty", penalty);
-        map.put("amount", amount);
-        map.put("chargeCalculationType", chargeCalculationType);
-
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-
-    public static String getLoanInstallmentWithAccountTransferJSON(final Integer chargeCalculationType, final String amount, boolean penalty) {
-        return getLoanInstallmentJSON(chargeCalculationType, amount, penalty, ChargesHelper.CHARGE_PAYMENT_MODE_ACCOUNT_TRANSFER);
-    }
-
-    public static String getLoanInstallmentFeeJSON() {
-        return getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, ChargesHelper.amount, ChargesHelper.penalty);
-    }
-
-    public static String getLoanOverdueFeeJSON() {
-        final HashMap<String, Object> map = populateDefaultsForLoan();
-        map.put("penalty", ChargesHelper.penalty);
-        map.put("chargePaymentMode", ChargesHelper.CHARGE_PAYMENT_MODE_REGULAR);
-        map.put("chargeTimeType", CHARGE_OVERDUE_INSTALLMENT_FEE);
-        map.put("feeFrequency", ChargesHelper.CHARGE_FEE_FREQUENCY_MONTHS);
-        map.put("feeOnMonthDay", ChargesHelper.feeOnMonthDay);
-        map.put("feeInterval", 2);
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-    
-    public static String getLoanOverdueFeeJSONWithCalculattionTypePercentage() {
-        final HashMap<String, Object> map = populateDefaultsForLoan();
-        map.put("penalty", ChargesHelper.penalty);
-        map.put("amount", "10");
-        map.put("chargePaymentMode", ChargesHelper.CHARGE_PAYMENT_MODE_REGULAR);
-        map.put("chargeTimeType", CHARGE_OVERDUE_INSTALLMENT_FEE);
-        map.put("chargeCalculationType", ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST);
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println(chargesCreateJson);
-        return chargesCreateJson;
-    }
-
-    public static HashMap<String, Object> populateDefaultsForLoan() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("active", ChargesHelper.active);
-        map.put("amount", ChargesHelper.amount);
-        map.put("chargeAppliesTo", ChargesHelper.CHARGE_APPLIES_TO_LOAN);
-        map.put("chargeCalculationType", ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT);
-        map.put("currencyCode", ChargesHelper.currencyCode);
-        map.put("locale", CommonConstants.locale);
-        map.put("monthDayFormat", ChargesHelper.monthDayFormat);
-        map.put("name", Utils.randomNameGenerator("Charge_Loans_", 6));
-        return map;
-    }
-    
-    public static HashMap<String, Object> populateDefaultsClientCharge() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("active", ChargesHelper.active);
-        map.put("amount", ChargesHelper.amount);
-        map.put("chargeAppliesTo", ChargesHelper.CHARGE_APPLIES_TO_CLIENT);
-        map.put("chargeCalculationType", ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT);
-        map.put("chargeTimeType",ChargesHelper.CHARGE_SPECIFIED_DUE_DATE);
-        map.put("currencyCode", ChargesHelper.currencyCode);
-        map.put("locale", CommonConstants.locale);
-        map.put("monthDayFormat", ChargesHelper.monthDayFormat);
-        map.put("name", Utils.randomNameGenerator("Charge_client_", 8));
-        return map;
-    }
-
-    public static Integer createCharges(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String request) {
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_CHARGES_URL, request, "resourceId");
-    }
-
-    public static ArrayList<HashMap> getCharges(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        return (ArrayList) Utils.performServerGet(requestSpec, responseSpec, CHARGES_URL + "?" + Utils.TENANT_IDENTIFIER, "");
-    }
-
-    public static HashMap getChargeById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer chargeId) {
-        return Utils.performServerGet(requestSpec, responseSpec, CHARGES_URL + "/" + chargeId + "?" + Utils.TENANT_IDENTIFIER, "");
-    }
-
-    public static HashMap getChargeChanges(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer chargeId) {
-        return Utils.performServerGet(requestSpec, responseSpec, CHARGES_URL + "/" + chargeId + "?" + Utils.TENANT_IDENTIFIER,
-                CommonConstants.RESPONSE_CHANGES);
-    }
-
-    public static HashMap updateCharges(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer chargeId, final String request) {
-        return Utils.performServerPut(requestSpec, responseSpec, CHARGES_URL + "/" + chargeId + "?" + Utils.TENANT_IDENTIFIER, request,
-                CommonConstants.RESPONSE_CHANGES);
-    }
-
-    public static Integer deleteCharge(final ResponseSpecification responseSpec, final RequestSpecification requestSpec,
-            final Integer chargeId) {
-        return Utils.performServerDelete(requestSpec, responseSpec, CHARGES_URL + "/" + chargeId + "?" + Utils.TENANT_IDENTIFIER,
-                CommonConstants.RESPONSE_RESOURCE_ID);
-    }
-
-    public static String getModifyChargeJSON() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("amount", "200.0");
-        String json = new Gson().toJson(map);
-        System.out.println(json);
-        return json;
-    }
-
-    public static String getModifyWithdrawalFeeSavingsChargeJSON() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("chargeCalculationType", CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT);
-        String json = new Gson().toJson(map);
-        System.out.println(json);
-        return json;
-    }
-
-    public static String getModifyChargeAsPecentageAmountJSON() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("chargeCalculationType", CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT);
-        map.put("chargePaymentMode", CHARGE_PAYMENT_MODE_ACCOUNT_TRANSFER);
-        String json = new Gson().toJson(map);
-        System.out.println(json);
-        return json;
-    }
-
-    public static String getModifyChargeAsPecentageLoanAmountWithInterestJSON() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("chargeCalculationType", CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST);
-        map.put("chargePaymentMode", CHARGE_PAYMENT_MODE_ACCOUNT_TRANSFER);
-        String json = new Gson().toJson(map);
-        System.out.println(json);
-        return json;
-    }
-
-    public static String getModifyChargeAsPercentageInterestJSON() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("chargeCalculationType", CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST);
-        map.put("chargePaymentMode", CHARGE_PAYMENT_MODE_ACCOUNT_TRANSFER);
-        String json = new Gson().toJson(map);
-        System.out.println(json);
-        return json;
-    }
-
-    public static String getModifyChargeFeeFrequencyAsDaysJSON() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("feeFrequency", ChargesHelper.CHARGE_FEE_FREQUENCY_DAYS);
-        map.put("feeInterval", 2);
-        String json = new Gson().toJson(map);
-        System.out.println(json);
-        return json;
-    }
-
-    public static String getModifyChargeFeeFrequencyAsWeeksJSON() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("feeFrequency", ChargesHelper.CHARGE_FEE_FREQUENCY_WEEKS);
-        map.put("feeInterval", 2);
-        String json = new Gson().toJson(map);
-        System.out.println(json);
-        return json;
-    }
-
-    public static String getModifyChargeFeeFrequencyAsMonthsJSON() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("feeFrequency", ChargesHelper.CHARGE_FEE_FREQUENCY_MONTHS);
-        map.put("feeInterval", 2);
-        String json = new Gson().toJson(map);
-        System.out.println(json);
-        return json;
-    }
-
-    public static String getModifyChargeFeeFrequencyAsYearsJSON() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("feeFrequency", ChargesHelper.CHARGE_FEE_FREQUENCY_YEARS);
-        map.put("feeInterval", 2);
-        String json = new Gson().toJson(map);
-        System.out.println(json);
-        return json;
-    }
-    
-    public static String getChargeSpecifiedDueDateJSON() {
-        final HashMap<String, Object> map = populateDefaultsClientCharge();
-        String chargesCreateJson = new Gson().toJson(map);
-        System.out.println("chargesCreateJson:"+chargesCreateJson);
-        return chargesCreateJson;
-    }
-
-    public static String applyCharge(RequestSpecification requestSpec,ResponseSpecification responseSpec, String chargeId,String json) {
-        return Utils.performServerPost(requestSpec, responseSpec, CHARGES_URL + "/" + chargeId + "?" + Utils.TENANT_IDENTIFIER, json,"status");
-        
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountHelper.java
deleted file mode 100644
index fa48717..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountHelper.java
+++ /dev/null
@@ -1,490 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.fixeddeposit;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.Utils;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "unused", "rawtypes" })
-public class FixedDepositAccountHelper {
-
-    private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-
-    public FixedDepositAccountHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-
-    private static final String FIXED_DEPOSIT_ACCOUNT_URL = "/fineract-provider/api/v1/fixeddepositaccounts";
-    private static final String APPLY_FIXED_DEPOSIT_ACCOUNT_URL = FIXED_DEPOSIT_ACCOUNT_URL + "?" + Utils.TENANT_IDENTIFIER;
-    private static final String APPROVE_FIXED_DEPOSIT_COMMAND = "approve";
-    private static final String UNDO_APPROVAL_FIXED_DEPOSIT_COMMAND = "undoapproval";
-    private static final String REJECT_FIXED_DEPOSIT_COMMAND = "reject";
-    private static final String WITHDRAWN_BY_CLIENT_FIXED_DEPOSIT_COMMAND = "withdrawnByApplicant";
-    private static final String ACTIVATE_FIXED_DEPOSIT_COMMAND = "activate";
-    private static final String CLOSE_FIXED_DEPOSIT_COMMAND = "close";
-    private static final String POST_INTEREST_FIXED_DEPOSIT_COMMAND = "postInterest";
-    private static final String CALCULATE_INTEREST_FIXED_DEPOSIT_COMMAND = "calculateInterest";
-    private static final String CALCULATE_PREMATURE_AMOUNT_COMMAND = "calculatePrematureAmount";
-    private static final String PREMATURE_CLOSE_COMMAND = "prematureClose";
-
-    private static final String LOCALE = "en_GB";
-    private static final String DIGITS_AFTER_DECIMAL = "4";
-    private static final String IN_MULTIPLES_OF = "100";
-    private static final String USD = "USD";
-    public static final String DAYS = "0";
-    private static final String WEEKS = "1";
-    private static final String MONTHS = "2";
-    private static final String YEARS = "3";
-    private static final String DAILY = "1";
-    private static final String MONTHLY = "4";
-    private static final String QUARTERLY = "5";
-    private static final String BI_ANNUALLY = "6";
-    private static final String ANNUALLY = "7";
-    private static final String INTEREST_CALCULATION_USING_DAILY_BALANCE = "1";
-    private static final String INTEREST_CALCULATION_USING_AVERAGE_DAILY_BALANCE = "2";
-    private static final String DAYS_360 = "360";
-    private static final String DAYS_365 = "365";
-    public final static String depositAmount = "100000";
-
-    private String interestCompoundingPeriodType = MONTHLY;
-    private String interestPostingPeriodType = MONTHLY;
-    private String interestCalculationType = INTEREST_CALCULATION_USING_DAILY_BALANCE;
-    private String lockinPeriodFrequency = "1";
-    private String lockingPeriodFrequencyType = MONTHS;
-    private final String minDepositTerm = "6";
-    private final String minDepositTermTypeId = MONTHS;
-    private final String maxDepositTerm = "10";
-    private final String maxDepositTermTypeId = YEARS;
-    private final String inMultiplesOfDepositTerm = "2";
-    private final String inMultiplesOfDepositTermTypeId = MONTHS;
-    private final String preClosurePenalInterest = "2";
-    private String interestCalculationDaysInYearType = DAYS_365;
-    private final boolean preClosurePenalApplicable = true;
-    private final boolean isActiveChart = true;
-    private final String currencyCode = USD;
-
-    private final String depositPeriod = "14";
-    private final String depositPeriodFrequencyId = MONTHS;
-    private String submittedOnDate = "";
-    private String savingsId = null;
-    private boolean transferInterest = false;
-
-    public String build(final String clientId, final String productId, final String validFrom, final String validTo,
-            final String penalInterestType) {
-        final HashMap<String, Object> map = new HashMap<>();
-
-        List<HashMap<String, String>> chartSlabs = new ArrayList<HashMap<String, String>>();
-        HashMap<String, String> chartSlabsMap1 = new HashMap<>();
-        chartSlabsMap1.put("description", "First");
-        chartSlabsMap1.put("periodType", MONTHS);
-        chartSlabsMap1.put("fromPeriod", "1");
-        chartSlabsMap1.put("toPeriod", "6");
-        chartSlabsMap1.put("annualInterestRate", "5");
-        chartSlabsMap1.put("locale", LOCALE);
-        chartSlabs.add(0, chartSlabsMap1);
-
-        HashMap<String, String> chartSlabsMap2 = new HashMap<>();
-        chartSlabsMap2.put("description", "Second");
-        chartSlabsMap2.put("periodType", MONTHS);
-        chartSlabsMap2.put("fromPeriod", "7");
-        chartSlabsMap2.put("toPeriod", "12");
-        chartSlabsMap2.put("annualInterestRate", "6");
-        chartSlabsMap2.put("locale", LOCALE);
-        chartSlabs.add(1, chartSlabsMap2);
-
-        HashMap<String, String> chartSlabsMap3 = new HashMap<>();
-        chartSlabsMap3.put("description", "Third");
-        chartSlabsMap3.put("periodType", MONTHS);
-        chartSlabsMap3.put("fromPeriod", "13");
-        chartSlabsMap3.put("toPeriod", "18");
-        chartSlabsMap3.put("annualInterestRate", "7");
-        chartSlabsMap3.put("locale", LOCALE);
-        chartSlabs.add(2, chartSlabsMap3);
-
-        HashMap<String, String> chartSlabsMap4 = new HashMap<>();
-        chartSlabsMap4.put("description", "Fourth");
-        chartSlabsMap4.put("periodType", MONTHS);
-        chartSlabsMap4.put("fromPeriod", "19");
-        chartSlabsMap4.put("toPeriod", "24");
-        chartSlabsMap4.put("annualInterestRate", "8");
-        chartSlabsMap4.put("locale", LOCALE);
-        chartSlabs.add(3, chartSlabsMap4);
-
-        List<HashMap<String, Object>> charts = new ArrayList<HashMap<String, Object>>();
-        HashMap<String, Object> chartsMap = new HashMap<>();
-        chartsMap.put("fromDate", validFrom);
-        chartsMap.put("endDate", validTo);
-        chartsMap.put("dateFormat", "dd MMMM yyyy");
-        chartsMap.put("locale", LOCALE);
-        chartsMap.put("isActiveChart", this.isActiveChart);
-        chartsMap.put("chartSlabs", chartSlabs);
-        charts.add(chartsMap);
-
-        map.put("charts", charts);
-        map.put("productId", productId);
-        map.put("clientId", clientId);
-        map.put("interestCalculationDaysInYearType", this.interestCalculationDaysInYearType);
-        map.put("locale", LOCALE);
-        map.put("dateFormat", "dd MMMM yyyy");
-        map.put("monthDayFormat", "dd MMM");
-        map.put("interestCalculationType", this.interestCalculationType);
-        map.put("interestCompoundingPeriodType", this.interestCompoundingPeriodType);
-        map.put("interestPostingPeriodType", this.interestPostingPeriodType);
-        map.put("lockinPeriodFrequency", this.lockinPeriodFrequency);
-        map.put("lockinPeriodFrequencyType", this.lockingPeriodFrequencyType);
-        map.put("preClosurePenalApplicable", "true");
-        map.put("minDepositTermTypeId", this.minDepositTermTypeId);
-        map.put("minDepositTerm", this.minDepositTerm);
-        map.put("maxDepositTermTypeId", this.maxDepositTermTypeId);
-        map.put("maxDepositTerm", this.maxDepositTerm);
-        map.put("preClosurePenalApplicable", this.preClosurePenalApplicable);
-        map.put("inMultiplesOfDepositTerm", this.inMultiplesOfDepositTerm);
-        map.put("inMultiplesOfDepositTermTypeId", this.inMultiplesOfDepositTermTypeId);
-        map.put("preClosurePenalInterest", this.preClosurePenalInterest);
-        map.put("preClosurePenalInterestOnTypeId", penalInterestType);
-        map.put("depositAmount", depositAmount);
-        map.put("depositPeriod", this.depositPeriod);
-        map.put("depositPeriodFrequencyId", this.depositPeriodFrequencyId);
-        map.put("submittedOnDate", this.submittedOnDate);
-        map.put("linkAccountId", savingsId);
-        map.put("transferInterestToSavings", transferInterest);
-
-        String fixedDepositAccountJson = new Gson().toJson(map);
-        System.out.println(fixedDepositAccountJson);
-        return fixedDepositAccountJson;
-    }
-
-    public static Integer applyFixedDepositApplication(final String fixedDepositAccountAsJson, final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec) {
-        System.out.println("--------------------- APPLYING FOR FIXED DEPOSIT ACCOUNT ------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, APPLY_FIXED_DEPOSIT_ACCOUNT_URL, fixedDepositAccountAsJson,
-                CommonConstants.RESPONSE_RESOURCE_ID);
-    }
-
-    public static HashMap getFixedDepositAccountById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer accountID) {
-        final String GET_FIXED_DEPOSIT_BY_ID_URL = FIXED_DEPOSIT_ACCOUNT_URL + "/" + accountID + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING FIXED DEPOSIT ACCOUNT BY ID -------------------------");
-        return Utils.performServerGet(requestSpec, responseSpec, GET_FIXED_DEPOSIT_BY_ID_URL, "");
-    }
-
-    public HashMap getFixedDepositSummary(final Integer accountID) {
-        final String URL = FIXED_DEPOSIT_ACCOUNT_URL + "/" + accountID + "?" + Utils.TENANT_IDENTIFIER;
-        final HashMap response = Utils.performServerGet(requestSpec, responseSpec, URL, "summary");
-        return response;
-    }
-
-    public static Float getInterestRate(ArrayList<ArrayList<HashMap>> interestSlabData, Integer depositPeriod) {
-
-        Float annualInterestRate = 0.0f;
-        for (Integer slabIndex = 0; slabIndex < interestSlabData.get(0).size(); slabIndex++) {
-            Integer fromPeriod = (Integer) interestSlabData.get(0).get(slabIndex).get("fromPeriod");
-            Integer toPeriod = (Integer) interestSlabData.get(0).get(slabIndex).get("toPeriod");
-            if (depositPeriod >= fromPeriod && depositPeriod <= toPeriod) {
-                annualInterestRate = (Float) interestSlabData.get(0).get(slabIndex).get("annualInterestRate");
-                break;
-            }
-        }
-
-        return annualInterestRate;
-    }
-
-    public static Float getPrincipalAfterCompoundingInterest(Calendar currentDate, Float principal, Integer depositPeriod,
-            double interestPerDay, Integer compoundingInterval, Integer postingInterval) {
-
-        Float totalInterest = 0.0f;
-        Float interestEarned = 0.0f;
-
-        for (int i = 1; i <= depositPeriod; i++) {
-            Integer daysInMonth = currentDate.getActualMaximum(Calendar.DATE);
-            for (int j = 0; j < daysInMonth; j++) {
-
-                interestEarned = (float) (principal * interestPerDay);
-                totalInterest += interestEarned;
-                if (compoundingInterval == 0) {
-                    principal += interestEarned;
-                }
-            }
-            if ((i % postingInterval) == 0 || i == depositPeriod) {
-                if (compoundingInterval != 0) {
-                    principal += totalInterest;
-                }
-                totalInterest = 0.0f;
-                System.out.println(principal);
-
-            }
-            currentDate.add(Calendar.MONTH, 1);
-            interestEarned = 0.0f;
-        }
-        return principal;
-    }
-
-    public HashMap updateFixedDepositAccount(final String clientID, final String productID, final String accountID, final String validFrom,
-            final String validTo, final String penalInterestType, final String submittedOnDate) {
-
-        final String fixedDepositApplicationJSON = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec) //
-                .withSubmittedOnDate(submittedOnDate) //
-                .build(clientID, productID, validFrom, validTo, penalInterestType);
-
-        return Utils.performServerPut(this.requestSpec, this.responseSpec, FIXED_DEPOSIT_ACCOUNT_URL + "/" + accountID + "?"
-                + Utils.TENANT_IDENTIFIER, fixedDepositApplicationJSON, CommonConstants.RESPONSE_CHANGES);
-    }
-
-    public HashMap updateInterestCalculationConfigForFixedDeposit(final String clientID, final String productID, final String accountID,
-            final String submittedOnDate, final String validFrom, final String validTo, final String numberOfDaysPerYear,
-            final String penalInterestType, final String interestCalculationType, final String interestCompoundingPeriodType,
-            final String interestPostingPeriodType) {
-
-        final String fixedDepositApplicationJSON = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec) //
-                .withSubmittedOnDate(submittedOnDate) //
-                .withNumberOfDaysPerYear(numberOfDaysPerYear) //
-                .withInterestCalculationPeriodType(interestCalculationType) //
-                .withInterestCompoundingPeriodType(interestCompoundingPeriodType) //
-                .withInterestPostingPeriodType(interestPostingPeriodType) //
-                .build(clientID, productID, validFrom, validTo, penalInterestType);
-
-        return Utils.performServerPut(this.requestSpec, this.responseSpec, FIXED_DEPOSIT_ACCOUNT_URL + "/" + accountID + "?"
-                + Utils.TENANT_IDENTIFIER, fixedDepositApplicationJSON, CommonConstants.RESPONSE_CHANGES);
-    }
-
-    public HashMap approveFixedDeposit(final Integer fixedDepositAccountID, final String approvedOnDate) {
-        System.out.println("--------------------------------- APPROVING FIXED DEPOSIT APPLICATION ------------------------------------");
-        return performFixedDepositApplicationActions(createFixedDepositOperationURL(APPROVE_FIXED_DEPOSIT_COMMAND, fixedDepositAccountID),
-                getApproveFixedDepositAccountAsJSON(approvedOnDate));
-    }
-
-    public HashMap undoApproval(final Integer fixedDepositAccountID) {
-        System.out.println("--------------------------------- UNDO APPROVING FIXED DEPOSIT APPLICATION -------------------------------");
-        final String undoBodyJson = "{'note':'UNDO APPROVAL'}";
-        return performFixedDepositApplicationActions(
-                createFixedDepositOperationURL(UNDO_APPROVAL_FIXED_DEPOSIT_COMMAND, fixedDepositAccountID), undoBodyJson);
-    }
-
-    public HashMap rejectApplication(final Integer fixedDepositAccountID, final String rejectedOnDate) {
-        System.out.println("--------------------------------- REJECT FIXED DEPOSIT APPLICATION -------------------------------");
-        return performFixedDepositApplicationActions(createFixedDepositOperationURL(REJECT_FIXED_DEPOSIT_COMMAND, fixedDepositAccountID),
-                getRejectedFixedDepositAsJSON(rejectedOnDate));
-    }
-
-    public HashMap withdrawApplication(final Integer fixedDepositAccountID, final String withdrawApplicationOnDate) {
-        System.out.println("--------------------------------- Withdraw FIXED DEPOSIT APPLICATION -------------------------------");
-        return performFixedDepositApplicationActions(
-                createFixedDepositOperationURL(WITHDRAWN_BY_CLIENT_FIXED_DEPOSIT_COMMAND, fixedDepositAccountID),
-                getWithdrawnFixedDepositAccountAsJSON(withdrawApplicationOnDate));
-    }
-
-    public HashMap activateFixedDeposit(final Integer fixedDepositAccountID, final String activationDate) {
-        System.out.println("---------------------------------- ACTIVATING FIXED DEPOSIT APPLICATION ----------------------------------");
-        return performFixedDepositApplicationActions(createFixedDepositOperationURL(ACTIVATE_FIXED_DEPOSIT_COMMAND, fixedDepositAccountID),
-                getActivatedFixedDepositAccountAsJSON(activationDate));
-    }
-
-    public Object deleteFixedDepositApplication(final Integer fixedDepositAccountID, final String jsonAttributeToGetBack) {
-        System.out.println("---------------------------------- DELETE FIXED DEPOSIT APPLICATION ----------------------------------");
-        return Utils.performServerDelete(this.requestSpec, this.responseSpec, FIXED_DEPOSIT_ACCOUNT_URL + "/" + fixedDepositAccountID + "?"
-                + Utils.TENANT_IDENTIFIER, jsonAttributeToGetBack);
-
-    }
-
-    public Integer calculateInterestForFixedDeposit(final Integer fixedDepositAccountId) {
-        System.out.println("--------------------------------- CALCULATING INTEREST FOR FIXED DEPOSIT --------------------------------");
-        return (Integer) performFixedDepositActions(
-                createFixedDepositCalculateInterestURL(CALCULATE_INTEREST_FIXED_DEPOSIT_COMMAND, fixedDepositAccountId),
-                getCalculatedInterestForFixedDepositApplicationAsJSON(), CommonConstants.RESPONSE_RESOURCE_ID);
-    }
-
-    public Integer postInterestForFixedDeposit(final Integer fixedDepositAccountId) {
-        System.out.println("--------------------------------- POST INTEREST FOR FIXED DEPOSIT --------------------------------");
-        return (Integer) performFixedDepositActions(
-                createFixedDepositCalculateInterestURL(POST_INTEREST_FIXED_DEPOSIT_COMMAND, fixedDepositAccountId),
-                getCalculatedInterestForFixedDepositApplicationAsJSON(), CommonConstants.RESPONSE_RESOURCE_ID);
-    }
-
-    public HashMap calculatePrematureAmountForFixedDeposit(final Integer fixedDepositAccountId, final String closedOnDate) {
-        System.out.println("--------------------- CALCULATING PREMATURE AMOUNT FOR FIXED DEPOSIT ----------------------------");
-        return (HashMap) performFixedDepositActions(
-                createFixedDepositCalculateInterestURL(CALCULATE_PREMATURE_AMOUNT_COMMAND, fixedDepositAccountId),
-                getCalculatedPrematureAmountForFixedDepositAccountAsJSON(closedOnDate), "");
-    }
-
-    public Object prematureCloseForFixedDeposit(final Integer fixedDepositAccountId, final String closedOnDate, final String closureType,
-            final Integer toSavingsId, final String jsonAttributeToGetBack) {
-        System.out.println("--------------------- PREMATURE CLOSE FOR FIXED DEPOSIT ----------------------------");
-        return performFixedDepositActions(createFixedDepositCalculateInterestURL(PREMATURE_CLOSE_COMMAND, fixedDepositAccountId),
-                getPrematureCloseForFixedDepositAccountAsJSON(closedOnDate, closureType, toSavingsId), jsonAttributeToGetBack);
-    }
-
-    private String getApproveFixedDepositAccountAsJSON(final String approvedOnDate) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("dateFormat", CommonConstants.dateFormat);
-        map.put("approvedOnDate", approvedOnDate);
-        map.put("note", "Approval NOTE");
-        String fixedDepositAccountApproveJson = new Gson().toJson(map);
-        System.out.println(fixedDepositAccountApproveJson);
-        return fixedDepositAccountApproveJson;
-    }
-
-    private String getRejectedFixedDepositAsJSON(final String rejectedOnDate) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("dateFormat", CommonConstants.dateFormat);
-        map.put("rejectedOnDate", rejectedOnDate);
-        map.put("note", "Rejected NOTE");
-        String fixedDepositAccountJson = new Gson().toJson(map);
-        System.out.println(fixedDepositAccountJson);
-        return fixedDepositAccountJson;
-    }
-
-    private String getWithdrawnFixedDepositAccountAsJSON(final String withdrawnApplicationOnDate) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("dateFormat", CommonConstants.dateFormat);
-        map.put("withdrawnOnDate", withdrawnApplicationOnDate);
-        map.put("note", "Withdraw NOTE");
-        String fixedDepositAccountJson = new Gson().toJson(map);
-        System.out.println(fixedDepositAccountJson);
-        return fixedDepositAccountJson;
-    }
-
-    private String getActivatedFixedDepositAccountAsJSON(final String activationDate) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("dateFormat", CommonConstants.dateFormat);
-        map.put("activatedOnDate", activationDate);
-        String fixedDepositAccountActivateJson = new Gson().toJson(map);
-        System.out.println(fixedDepositAccountActivateJson);
-        return fixedDepositAccountActivateJson;
-    }
-
-    private String getCalculatedInterestForFixedDepositApplicationAsJSON() {
-        final HashMap<String, String> map = new HashMap<>();
-        String fixedDepositAccountCalculatedInterestJson = new Gson().toJson(map);
-        System.out.println(fixedDepositAccountCalculatedInterestJson);
-        return fixedDepositAccountCalculatedInterestJson;
-    }
-
-    private String getCalculatedPrematureAmountForFixedDepositAccountAsJSON(final String closedOnDate) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("dateFormat", CommonConstants.dateFormat);
-        map.put("closedOnDate", closedOnDate);
-        String fixedDepositAccountPrematureClosureJson = new Gson().toJson(map);
-        System.out.println(fixedDepositAccountPrematureClosureJson);
-        return fixedDepositAccountPrematureClosureJson;
-    }
-
-    private String getPrematureCloseForFixedDepositAccountAsJSON(final String closedOnDate, final String closureType,
-            final Integer toSavingsId) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("locale", CommonConstants.locale);
-        map.put("dateFormat", CommonConstants.dateFormat);
-        map.put("closedOnDate", closedOnDate);
-        map.put("onAccountClosureId", closureType);
-        if (toSavingsId != null) {
-            map.put("toSavingsAccountId", toSavingsId);
-            map.put("transferDescription", "Transferring To Savings Account");
-        }
-        String fixedDepositAccountPrematureCloseJson = new Gson().toJson(map);
-        System.out.println(fixedDepositAccountPrematureCloseJson);
-        return fixedDepositAccountPrematureCloseJson;
-    }
-
-    private String createFixedDepositOperationURL(final String command, final Integer fixedDepositAccountID) {
-        return FIXED_DEPOSIT_ACCOUNT_URL + "/" + fixedDepositAccountID + "?command=" + command + "&" + Utils.TENANT_IDENTIFIER;
-    }
-
-    private Object performFixedDepositActions(final String postURLForFixedDeposit, final String jsonToBeSent,
-            final String jsonAttributeToGetBack) {
-        return Utils.performServerPost(this.requestSpec, this.responseSpec, postURLForFixedDeposit, jsonToBeSent, jsonAttributeToGetBack);
-    }
-
-    private HashMap performFixedDepositApplicationActions(final String postURLForFixedDepositAction, final String jsonToBeSent) {
-        HashMap status = null;
-        final HashMap response = Utils.performServerPost(this.requestSpec, this.responseSpec, postURLForFixedDepositAction, jsonToBeSent,
-                CommonConstants.RESPONSE_CHANGES);
-        if (response != null) {
-            status = (HashMap) response.get("status");
-        }
-        return status;
-    }
-
-    private String createFixedDepositCalculateInterestURL(final String command, final Integer fixedDepositAccountID) {
-        return FIXED_DEPOSIT_ACCOUNT_URL + "/" + fixedDepositAccountID + "?command=" + command + "&" + Utils.TENANT_IDENTIFIER;
-    }
-
-    public static ArrayList retrieveAllFixedDepositAccounts(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        System.out.println("-------------------- RETRIEVING ALL FIXED DEPOSIT ACCOUNTS ---------------------");
-        final ArrayList response = Utils.performServerGet(requestSpec, responseSpec, FIXED_DEPOSIT_ACCOUNT_URL + "?"
-                + Utils.TENANT_IDENTIFIER, "");
-        return response;
-    }
-
-    public FixedDepositAccountHelper withSubmittedOnDate(final String fixedDepositApplicationSubmittedDate) {
-        this.submittedOnDate = fixedDepositApplicationSubmittedDate;
-        return this;
-    }
-
-    public FixedDepositAccountHelper withNumberOfDaysPerYear(final String numberOfDaysPerYearTypeId) {
-        this.interestCalculationDaysInYearType = numberOfDaysPerYearTypeId;
-        return this;
-    }
-
-    public FixedDepositAccountHelper withInterestCalculationPeriodType(final String interestCalculationTypeId) {
-        this.interestCalculationType = interestCalculationTypeId;
-        return this;
-    }
-
-    public FixedDepositAccountHelper withInterestCompoundingPeriodType(final String interestCompoundingPeriodTypeId) {
-        this.interestCompoundingPeriodType = interestCompoundingPeriodTypeId;
-        return this;
-    }
-
-    public FixedDepositAccountHelper withInterestPostingPeriodType(final String interestPostingPeriodTypeId) {
-        this.interestPostingPeriodType = interestPostingPeriodTypeId;
-        return this;
-    }
-
-    public FixedDepositAccountHelper withSavings(final String savingsId) {
-        this.savingsId = savingsId;
-        return this;
-    }
-
-    public FixedDepositAccountHelper transferInterest(final boolean transferInterest) {
-        this.transferInterest = transferInterest;
-        return this;
-    }
-
-    public FixedDepositAccountHelper withLockinPeriodFrequency(final String lockingPeriodFrequencyType, final String lockinPeriodFrequency) {
-        this.lockingPeriodFrequencyType = lockingPeriodFrequencyType;
-        this.lockinPeriodFrequency = lockinPeriodFrequency;
-        return this;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountStatusChecker.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountStatusChecker.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountStatusChecker.java
deleted file mode 100644
index fca5cec..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositAccountStatusChecker.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.fixeddeposit;
-
-import static org.junit.Assert.assertTrue;
-
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.Utils;
-import org.junit.Assert;
-
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings("rawtypes")
-public class FixedDepositAccountStatusChecker {
-
-    private static final String FIXED_DEPOSIT_ACCOUNT_URL = "/fineract-provider/api/v1/fixeddepositaccounts";
-
-    public static void verifyFixedDepositIsApproved(final HashMap fixedDepositStatusHashMap) {
-        System.out.println("-------------------- VERIFYING FIXED DEPOSIT APPLICATION IS APPROVED --------------------");
-        assertTrue("Error in Approving Fixed deposit application", getStatus(fixedDepositStatusHashMap, "approved"));
-        System.out.println(fixedDepositStatusHashMap);
-    }
-
-    public static void verifyFixedDepositIsPending(final HashMap fixedDepositStatusHashMap) {
-        System.out.println("-------------------- VERIFYING FIXED DEPOSIT APPLICATION IS PENDING --------------------");
-        assertTrue("FIXED DEPOSIT ACCOUNT IS NOT IN PENDING STATE", getStatus(fixedDepositStatusHashMap, "submittedAndPendingApproval"));
-        System.out.println(fixedDepositStatusHashMap);
-    }
-
-    public static void verifyFixedDepositIsActive(final HashMap fixedDepositStatusHashMap) {
-        System.out.println("----------------- VERIFYING FIXED DEPOSIT APPLICATION IS ACTIVE -----------------");
-        assertTrue("ERROR IN ACTIVATING THE FIXED DEPOSIT APPLICATION", getStatus(fixedDepositStatusHashMap, "active"));
-        System.out.println(fixedDepositStatusHashMap);
-    }
-
-    public static void verifyFixedDepositIsRejected(final HashMap fixedDepositStatusHashMap) {
-        System.out.println("-------------- VERIFYING FIXED DEPOSIT APPLICATION IS REJECTED ----------------");
-        assertTrue("ERROR IN REJECTING THE FIXED DEPOSIT APPLICATION", getStatus(fixedDepositStatusHashMap, "rejected"));
-        System.out.println(fixedDepositStatusHashMap);
-    }
-
-    public static void verifyFixedDepositIsWithdrawn(final HashMap fixedDepositStatusHashMap) {
-        System.out.println("---------------- VERIFYING FIXED DEPOSIT APPLICATION IS WITHDRAWN ----------------");
-        assertTrue("ERROR IN WITHDRAW  THE FIXED DEPOSIT APPLICATION", getStatus(fixedDepositStatusHashMap, "withdrawnByApplicant"));
-        System.out.println(fixedDepositStatusHashMap);
-    }
-
-    public static void verifyFixedDepositAccountIsClosed(final HashMap fixedDepositStatusHashMap) {
-        System.out.println("--------------------- VERIFYING FIXED DEPOSIT APPLICATION IS CLOSED ---------------------");
-        assertTrue("ERROR IN CLOSING THE FIXED DEPOSIT APPLICATION", getStatus(fixedDepositStatusHashMap, "closed"));
-        System.out.println(fixedDepositStatusHashMap);
-    }
-
-    public static void verifyFixedDepositAccountIsNotActive(final HashMap fixedDepositStatusHashMap) {
-        System.out.println("------------------ VERIFYING FIXED DEPOSIT APPLICATION IS INACTIVE --------------------");
-        Assert.assertFalse(getStatus(fixedDepositStatusHashMap, "active"));
-        System.out.println(fixedDepositStatusHashMap);
-    }
-
-    public static HashMap getStatusOfFixedDepositAccount(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String fixedDepositAccountID) {
-        final String GET_STATUS_OF_FIXED_DEPOSIT_ACCOUNT_URL = FIXED_DEPOSIT_ACCOUNT_URL + "/" + fixedDepositAccountID + "?"
-                + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerGet(requestSpec, responseSpec, GET_STATUS_OF_FIXED_DEPOSIT_ACCOUNT_URL, "status");
-    }
-
-    public static void verifyFixedDepositAccountIsPrematureClosed(HashMap fixedDepositStatusHashMap) {
-        System.out.println("--------------------- VERIFYING FIXED DEPOSIT APPLICATION IS CLOSED ---------------------");
-        assertTrue("ERROR IN PREMATURELY CLOSING THE FIXED DEPOSIT ACCOUNT", getStatus(fixedDepositStatusHashMap, "prematureClosed"));
-        System.out.println(fixedDepositStatusHashMap);
-    }
-
-    private static boolean getStatus(final HashMap fixedDepositStatusMap, final String fixedDepositStatusString) {
-        return (Boolean) fixedDepositStatusMap.get(fixedDepositStatusString);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositProductHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositProductHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositProductHelper.java
deleted file mode 100644
index 2703340..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/fixeddeposit/FixedDepositProductHelper.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.fixeddeposit;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.accounting.Account;
-import org.apache.fineract.integrationtests.common.accounting.Account.AccountType;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "unused", "rawtypes" })
-public class FixedDepositProductHelper {
-
-    private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-
-    public FixedDepositProductHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-
-    private static final String FIXED_DEPOSIT_PRODUCT_URL = "/fineract-provider/api/v1/fixeddepositproducts";
-    private static final String INTEREST_CHART_URL = "/fineract-provider/api/v1/interestratecharts";
-    private static final String CREATE_FIXED_DEPOSIT_PRODUCT_URL = FIXED_DEPOSIT_PRODUCT_URL + "?" + Utils.TENANT_IDENTIFIER;
-
-    private static final String LOCALE = "en_GB";
-    private static final String DIGITS_AFTER_DECIMAL = "4";
-    private static final String IN_MULTIPLES_OF = "100";
-    private static final String USD = "USD";
-    private static final String DAYS = "0";
-    private static final String WEEKS = "1";
-    private static final String MONTHS = "2";
-    private static final String YEARS = "3";
-    private static final String DAILY = "1";
-    private static final String MONTHLY = "4";
-    private static final String QUARTERLY = "5";
-    private static final String BI_ANNUALLY = "6";
-    private static final String ANNUALLY = "7";
-    private static final String INTEREST_CALCULATION_USING_DAILY_BALANCE = "1";
-    private static final String INTEREST_CALCULATION_USING_AVERAGE_DAILY_BALANCE = "2";
-    private static final String DAYS_360 = "360";
-    private static final String DAYS_365 = "365";
-    private static final String NONE = "1";
-    private static final String CASH_BASED = "2";
-    private static final String ACCRUAL_PERIODIC = "3";
-    private static final String ACCRUAL_UPFRONT = "4";
-    private static final String WHOLE_TERM = "1";
-    private static final String TILL_PREMATURE_WITHDRAWAL = "2";
-
-    private String name = Utils.randomNameGenerator("FIXED_DEPOSIT_PRODUCT_", 6);
-    private String shortName = Utils.randomNameGenerator("", 4);
-    private String description = Utils.randomNameGenerator("", 20);
-    private String interestCompoundingPeriodType = MONTHLY;
-    private String interestPostingPeriodType = MONTHLY;
-    private String interestCalculationType = INTEREST_CALCULATION_USING_DAILY_BALANCE;
-    private String accountingRule = NONE;
-    private String lockinPeriodFrequency = "1";
-    private String lockingPeriodFrequencyType = MONTHS;
-    private String minDepositTerm = "6";
-    private String minDepositTermTypeId = MONTHS;
-    private String maxDepositTerm = "10";
-    private String maxDepositTermTypeId = YEARS;
-    private String inMultiplesOfDepositTerm = "2";
-    private final String depositAmount = "100000";
-    private String inMultiplesOfDepositTermTypeId = MONTHS;
-    private String preClosurePenalInterest = "2";
-    private String preClosurePenalInterestOnTypeId = WHOLE_TERM;
-    private final boolean preClosurePenalApplicable = true;
-    private final String currencyCode = USD;
-    private final String interestCalculationDaysInYearType = DAYS_365;
-    private Account[] accountList = null;
-
-    public String build(final String validFrom, final String validTo) {
-        final HashMap<String, Object> map = new HashMap<>();
-
-        List<HashMap<String, String>> chartSlabs = new ArrayList<HashMap<String, String>>();
-        HashMap<String, String> chartSlabsMap1 = new HashMap<>();
-        chartSlabsMap1.put("description", "First");
-        chartSlabsMap1.put("periodType", MONTHS);
-        chartSlabsMap1.put("fromPeriod", "1");
-        chartSlabsMap1.put("toPeriod", "6");
-        chartSlabsMap1.put("annualInterestRate", "5");
-        chartSlabsMap1.put("locale", LOCALE);
-        chartSlabs.add(0, chartSlabsMap1);
-
-        HashMap<String, String> chartSlabsMap2 = new HashMap<>();
-        chartSlabsMap2.put("description", "Second");
-        chartSlabsMap2.put("periodType", MONTHS);
-        chartSlabsMap2.put("fromPeriod", "7");
-        chartSlabsMap2.put("toPeriod", "12");
-        chartSlabsMap2.put("annualInterestRate", "6");
-        chartSlabsMap2.put("locale", LOCALE);
-        chartSlabs.add(1, chartSlabsMap2);
-
-        HashMap<String, String> chartSlabsMap3 = new HashMap<>();
-        chartSlabsMap3.put("description", "Third");
-        chartSlabsMap3.put("periodType", MONTHS);
-        chartSlabsMap3.put("fromPeriod", "13");
-        chartSlabsMap3.put("toPeriod", "18");
-        chartSlabsMap3.put("annualInterestRate", "7");
-        chartSlabsMap3.put("locale", LOCALE);
-        chartSlabs.add(2, chartSlabsMap3);
-
-        HashMap<String, String> chartSlabsMap4 = new HashMap<>();
-        chartSlabsMap4.put("description", "Fourth");
-        chartSlabsMap4.put("periodType", MONTHS);
-        chartSlabsMap4.put("fromPeriod", "19");
-        chartSlabsMap4.put("toPeriod", "24");
-        chartSlabsMap4.put("annualInterestRate", "8");
-        chartSlabsMap4.put("locale", LOCALE);
-        chartSlabs.add(3, chartSlabsMap4);
-
-        List<HashMap<String, Object>> charts = new ArrayList<HashMap<String, Object>>();
-        HashMap<String, Object> chartsMap = new HashMap<>();
-        chartsMap.put("fromDate", validFrom);
-        chartsMap.put("endDate", validTo);
-        chartsMap.put("dateFormat", "dd MMMM yyyy");
-        chartsMap.put("locale", LOCALE);
-        chartsMap.put("chartSlabs", chartSlabs);
-        charts.add(chartsMap);
-
-        map.put("charts", charts);
-        map.put("name", this.name);
-        map.put("shortName", this.shortName);
-        map.put("description", this.description);
-        map.put("currencyCode", this.currencyCode);
-        map.put("interestCalculationDaysInYearType", this.interestCalculationDaysInYearType);
-        map.put("locale", LOCALE);
-        map.put("digitsAfterDecimal", DIGITS_AFTER_DECIMAL);
-        map.put("inMultiplesOf", IN_MULTIPLES_OF);
-        map.put("interestCalculationType", this.interestCalculationType);
-        map.put("interestCompoundingPeriodType", this.interestCompoundingPeriodType);
-        map.put("interestPostingPeriodType", this.interestPostingPeriodType);
-        map.put("accountingRule", this.accountingRule);
-        map.put("lockinPeriodFrequency", this.lockinPeriodFrequency);
-        map.put("lockinPeriodFrequencyType", this.lockingPeriodFrequencyType);
-        map.put("preClosurePenalApplicable", "true");
-        map.put("minDepositTermTypeId", this.minDepositTermTypeId);
-        map.put("minDepositTerm", this.minDepositTerm);
-        map.put("maxDepositTermTypeId", this.maxDepositTermTypeId);
-        map.put("maxDepositTerm", this.maxDepositTerm);
-        map.put("depositAmount", this.depositAmount);
-        map.put("preClosurePenalApplicable", this.preClosurePenalApplicable);
-        map.put("inMultiplesOfDepositTerm", this.inMultiplesOfDepositTerm);
-        map.put("inMultiplesOfDepositTermTypeId", this.inMultiplesOfDepositTermTypeId);
-        map.put("preClosurePenalInterest", this.preClosurePenalInterest);
-        map.put("preClosurePenalInterestOnTypeId", this.preClosurePenalInterestOnTypeId);
-
-        if (this.accountingRule.equals(CASH_BASED)) {
-            map.putAll(getAccountMappingForCashBased());
-        }
-
-        String FixedDepositProductCreateJson = new Gson().toJson(map);
-        System.out.println(FixedDepositProductCreateJson);
-        return FixedDepositProductCreateJson;
-    }
-
-    public FixedDepositProductHelper withAccountingRuleAsNone() {
-        this.accountingRule = NONE;
-        return this;
-    }
-
-    public FixedDepositProductHelper withAccountingRuleAsCashBased(final Account[] account_list) {
-        this.accountingRule = CASH_BASED;
-        this.accountList = account_list;
-        return this;
-    }
-
-    private Map<String, String> getAccountMappingForCashBased() {
-        final Map<String, String> map = new HashMap<>();
-        if (accountList != null) {
-            for (int i = 0; i < this.accountList.length; i++) {
-                if (this.accountList[i].getAccountType().equals(Account.AccountType.ASSET)) {
-                    final String ID = this.accountList[i].getAccountID().toString();
-                    map.put("savingsReferenceAccountId", ID);
-                }
-                if (this.accountList[i].getAccountType().equals(Account.AccountType.LIABILITY)) {
-                    final String ID = this.accountList[i].getAccountID().toString();
-                    map.put("savingsControlAccountId", ID);
-                    map.put("transfersInSuspenseAccountId", ID);
-                }
-                if (this.accountList[i].getAccountType().equals(Account.AccountType.EXPENSE)) {
-                    final String ID = this.accountList[i].getAccountID().toString();
-                    map.put("interestOnSavingsAccountId", ID);
-                }
-                if (this.accountList[i].getAccountType().equals(Account.AccountType.INCOME)) {
-                    final String ID = this.accountList[i].getAccountID().toString();
-                    map.put("incomeFromFeeAccountId", ID);
-                    map.put("incomeFromPenaltyAccountId", ID);
-                }
-            }
-        }
-        return map;
-    }
-
-    public static Integer createFixedDepositProduct(final String fixedDepositProductCreateJson, final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec) {
-        System.out.println("--------------------- CREATING FIXED DEPOSIT PRODUCT ------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_FIXED_DEPOSIT_PRODUCT_URL, fixedDepositProductCreateJson,
-                CommonConstants.RESPONSE_RESOURCE_ID);
-    }
-
-    public static ArrayList retrieveAllFixedDepositProducts(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        System.out.println("-------------------- RETRIEVING ALL FIXED DEPOSIT PRODUCTS ---------------------");
-        final ArrayList response = Utils.performServerGet(requestSpec, responseSpec, FIXED_DEPOSIT_PRODUCT_URL + "?"
-                + Utils.TENANT_IDENTIFIER, "");
-        return response;
-    }
-
-    public static HashMap retrieveFixedDepositProductById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String productId) {
-        System.out.println("------------------------ RETRIEVING FIXED DEPOSIT PRODUCT BY ID ------------------------");
-        final String GET_FD_PRODUCT_BY_ID_URL = FIXED_DEPOSIT_PRODUCT_URL + "/" + productId + "?" + Utils.TENANT_IDENTIFIER;
-        final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_FD_PRODUCT_BY_ID_URL, "");
-        return response;
-    }
-
-    public static ArrayList getInterestRateChartSlabsByProductId(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final Integer productId) {
-        System.out.println("-------------------- RETRIEVE INTEREST CHART BY PRODUCT ID ---------------------");
-        final ArrayList response = Utils.performServerGet(requestSpec, responseSpec, INTEREST_CHART_URL + "?productId=" + productId,
-                "chartSlabs");
-        return response;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsHelper.java
deleted file mode 100644
index eed6ae5..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsHelper.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.funds;
-
-import com.google.gson.Gson;
-
-public class FundsHelper {
-
-    public static class Builder {
-
-        private String name;
-        private String externalId;
-
-        private Builder(final String name) {
-            this.name = name;
-        }
-
-        public Builder externalId(final String externalId) {
-            this.externalId = externalId;
-            return this;
-        }
-
-        public FundsHelper build() {
-            return new FundsHelper(this.name, this.externalId);
-        }
-
-    }
-
-    private String name;
-    private String externalId;
-    private Long resourceId;
-
-    FundsHelper() {
-        super();
-    }
-
-    private FundsHelper(final String name,
-                        final String externalId) {
-        super();
-        this.name = name;
-        this.externalId = externalId;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public String getExternalId() {
-        return this.externalId;
-    }
-
-    public Long getResourceId() {
-        return this.resourceId;
-    }
-
-    public String toJSON() {
-        return new Gson().toJson(this);
-    }
-
-    public static FundsHelper fromJSON(final String jsonData) {
-        return new Gson().fromJson(jsonData, FundsHelper.class);
-    }
-
-    public static Builder create(final String name) {
-        return new Builder(name);
-    }
-
-    @Override
-    public int hashCode() {
-        if (this.name != null) {
-            return this.name.hashCode();
-        }
-        return super.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o == this) {
-            return true;
-        }
-
-        if (!(o instanceof FundsHelper)) {
-            return false;
-        }
-
-        FundsHelper fh = (FundsHelper)o;
-
-        if (this.name.equals(fh.name)) {
-            return true;
-        }
-
-        return false;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsResourceHandler.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsResourceHandler.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsResourceHandler.java
deleted file mode 100644
index 5d605fc..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsResourceHandler.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.funds;
-
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-import org.apache.fineract.integrationtests.common.Utils;
-
-import java.util.HashMap;
-import java.util.List;
-
-public class FundsResourceHandler {
-
-    private static final String FUNDS_URL = "/fineract-provider/api/v1/funds";
-    private static final String CREATE_FUNDS_URL = FUNDS_URL + "?" + Utils.TENANT_IDENTIFIER;
-
-    public static Integer createFund(final String fundJSON,
-                                     final RequestSpecification requestSpec,
-                                     final ResponseSpecification responseSpec) {
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_FUNDS_URL, fundJSON, "resourceId");
-    }
-
-    public static List<FundsHelper> retrieveAllFunds(final RequestSpecification requestSpec,
-                                                                 final ResponseSpecification responseSpec) {
-        final String URL = FUNDS_URL + "?" + Utils.TENANT_IDENTIFIER;
-        List<HashMap<String, Object>> list = Utils.performServerGet(requestSpec, responseSpec, URL, "");
-        final String jsonData = new Gson().toJson(list);
-        return new Gson().fromJson(jsonData, new TypeToken<List<FundsHelper>>(){}.getType());
-    }
-
-    public static String retrieveFund(final Long fundID,
-                                      final RequestSpecification requestSpec,
-                                      final ResponseSpecification responseSpec) {
-        final String URL = FUNDS_URL + "/" + fundID + "?" + Utils.TENANT_IDENTIFIER;
-        final HashMap response = Utils.performServerGet(requestSpec, responseSpec, URL, "");
-        return new Gson().toJson(response);
-    }
-
-    public static FundsHelper updateFund(final Long fundID,
-                                         final String newName,
-                                         final String newExternalId,
-                                         final RequestSpecification requestSpec,
-                                         final ResponseSpecification responseSpec) {
-        FundsHelper fh = FundsHelper.create(newName).externalId(newExternalId).build();
-        String updateJSON = new Gson().toJson(fh);
-
-        final String URL = FUNDS_URL + "/" + fundID + "?" + Utils.TENANT_IDENTIFIER;
-        final HashMap<String, String> response = Utils.performServerPut(requestSpec, responseSpec, URL, updateJSON, "changes");
-        final String jsonData = new Gson().toJson(response);
-        return new Gson().fromJson(jsonData, FundsHelper.class);
-    }
-
-}


[03/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeHelper.java
deleted file mode 100755
index d73c4c6..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeHelper.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.HashMap;
-
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class OfficeHelper {
-
-	private static final String OFFICE_URL = "/fineract-provider/api/v1/offices";
-	private final RequestSpecification requestSpec;
-	private final ResponseSpecification responseSpec;
-
-	public OfficeHelper(final RequestSpecification requestSpec,
-			final ResponseSpecification responseSpec) {
-		this.requestSpec = requestSpec;
-		this.responseSpec = responseSpec;
-	}
-
-	public OfficeDomain retrieveOfficeByID(int id) {
-		final String json = new Gson().toJson(Utils.performServerGet(
-				requestSpec, responseSpec, OFFICE_URL + "/" + id + "?"
-						+ Utils.TENANT_IDENTIFIER, ""));
-		return new Gson().fromJson(json, new TypeToken<OfficeDomain>() {
-		}.getType());
-	}
-
-	public Integer createOffice(final String openingDate) {
-		String json = getAsJSON(openingDate);
-		return Utils.performServerPost(this.requestSpec, this.responseSpec,
-				OFFICE_URL + "?" + Utils.TENANT_IDENTIFIER, json,
-				CommonConstants.RESPONSE_RESOURCE_ID);
-	}
-
-	public Integer updateOffice(int id, String name, String openingDate) {
-		final HashMap map = new HashMap<>();
-		map.put("name", name);
-		map.put("dateFormat", "dd MMMM yyyy");
-		map.put("locale", "en");
-		map.put("openingDate", openingDate);
-
-		System.out.println("map : " + map);
-
-		return Utils.performServerPut(requestSpec, responseSpec, OFFICE_URL
-				+ "/" + id + "?" + Utils.TENANT_IDENTIFIER,
-				new Gson().toJson(map), "resourceId");
-	}
-
-	public static String getAsJSON(final String openingDate) {
-		final HashMap<String, String> map = new HashMap<>();
-		map.put("parentId", "1");
-		map.put("name", Utils.randomNameGenerator("Office_", 4));
-		map.put("dateFormat", "dd MMMM yyyy");
-		map.put("locale", "en");
-		map.put("openingDate", openingDate);
-		System.out.println("map : " + map);
-		return new Gson().toJson(map);
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PasswordPreferencesHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PasswordPreferencesHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PasswordPreferencesHelper.java
deleted file mode 100644
index 52b8c5a..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PasswordPreferencesHelper.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.HashMap;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class PasswordPreferencesHelper {
-
-    private static final String PASSWORD_PREFERENCES_URL = "/fineract-provider/api/v1/passwordpreferences";
-
-    public static Object updatePasswordPreferences(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, 
-            String validationPolicyId) {
-        final String UPDATE_PASSWORD_PREFERENCES_URL = PASSWORD_PREFERENCES_URL + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------UPDATE PASSWORD PREFERENCE---------------------------------------------");
-        return Utils.performServerPut(requestSpec, responseSpec, UPDATE_PASSWORD_PREFERENCES_URL, updatePreferencesAsJson(validationPolicyId), "");
-    }
-
-    public static Object updateWithInvalidValidationPolicyId(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec,String invalidValidationPolicyId, String jsonAttributeToGetback) {
-        final String UPDATE_PASSWORD_PREFERENCES_URL = PASSWORD_PREFERENCES_URL + "?" + Utils.TENANT_IDENTIFIER;
-        System.out
-                .println("---------------------------------UPDATE PASSWORD PREFERENCES WITH INVALID ID-----------------------------------------");
-        return Utils.performServerPut(requestSpec, responseSpec, UPDATE_PASSWORD_PREFERENCES_URL, updatePreferencesWithInvalidId(invalidValidationPolicyId),
-                jsonAttributeToGetback);
-    }
-
-    public static String updatePreferencesAsJson(String validationPolicyId) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("validationPolicyId", validationPolicyId);
-        return new Gson().toJson(map);
-    }
-
-    public static String updatePreferencesWithInvalidId(String invalidValidationPolicyId) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("validationPolicyId", invalidValidationPolicyId);
-        return new Gson().toJson(map);
-    }
-
-
-    public static int getActivePasswordPreference(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        return Utils.performServerGet(requestSpec, responseSpec, PASSWORD_PREFERENCES_URL + "?" + Utils.TENANT_IDENTIFIER, "id");
-    }
-
-    public static HashMap<String, Object> getAllPreferences(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-
-        return Utils.performServerGet(requestSpec, responseSpec, PASSWORD_PREFERENCES_URL + "/template" + "?" + Utils.TENANT_IDENTIFIER, "");
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeDomain.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeDomain.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeDomain.java
deleted file mode 100644
index 7437ec8..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeDomain.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-public class PaymentTypeDomain {
-
-    private Integer id;
-    private String name;
-    private String description;
-    private Boolean isCashPayment;
-    private Integer position;
-
-    private PaymentTypeDomain(final Integer id, final String name, final String description, final Boolean isCashPayment,
-            final Integer position) {
-        this.id = id;
-        this.name = name;
-        this.description = description;
-        this.isCashPayment = isCashPayment;
-        this.position = position;
-
-    }
-
-    public Integer getId() {
-        return this.id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getDescription() {
-        return this.description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public Boolean getIsCashPayment() {
-        return this.isCashPayment;
-    }
-
-    public void setIsCashPayment(Boolean isCashPayment) {
-        this.isCashPayment = isCashPayment;
-    }
-
-    public Integer getPosition() {
-        return this.position;
-    }
-
-    public void setPosition(Integer position) {
-        this.position = position;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java
deleted file mode 100644
index 50dcad6..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeHelper.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.HashMap;
-
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class PaymentTypeHelper {
-
-    private static final String CREATE_PAYMENTTYPE_URL = "/fineract-provider/api/v1/paymenttypes?" + Utils.TENANT_IDENTIFIER;
-    private static final String PAYMENTTYPE_URL = "/fineract-provider/api/v1/paymenttypes";
-
-    public static Integer createPaymentType(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String name, final String description, final Boolean isCashPayment, final Integer position) {
-        System.out.println("---------------------------------CREATING A PAYMENT TYPE---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_PAYMENTTYPE_URL,
-                getJsonToCreatePaymentType(name, description, isCashPayment, position), "resourceId");
-    }
-
-    public static String getJsonToCreatePaymentType(final String name, final String description, final Boolean isCashPayment,
-            final Integer position) {
-        HashMap hm = new HashMap();
-        hm.put("name", name);
-        if (description != null) hm.put("description", description);
-        hm.put("isCashPayment", isCashPayment);
-        if (position != null) hm.put("position", position);
-
-        System.out.println("------------------------CREATING PAYMENT TYPE-------------------------" + hm);
-        return new Gson().toJson(hm);
-    }
-
-    public static void verifyPaymentTypeCreatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedPaymentTypeID) {
-        System.out.println("------------------------------CHECK PAYMENT DETAILS------------------------------------\n");
-        final String GET_PAYMENTTYPE_URL = PAYMENTTYPE_URL + "/" + generatedPaymentTypeID + "?" + Utils.TENANT_IDENTIFIER;
-        final Integer responsePaymentTypeID = Utils.performServerGet(requestSpec, responseSpec, GET_PAYMENTTYPE_URL, "id");
-        assertEquals("ERROR IN CREATING THE PAYMENT TYPE", generatedPaymentTypeID, responsePaymentTypeID);
-    }
-
-    public static PaymentTypeDomain retrieveById(RequestSpecification requestSpec, ResponseSpecification responseSpec,
-            final Integer paymentTypeId) {
-        final String GET_PAYMENTTYPE_URL = PAYMENTTYPE_URL + "/" + paymentTypeId + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------GET PAYMENT TYPE---------------------------------------------");
-        final String jsonData = new Gson().toJson(Utils.performServerGet(requestSpec, responseSpec, GET_PAYMENTTYPE_URL, ""));
-        return new Gson().fromJson(jsonData, new TypeToken<PaymentTypeDomain>() {}.getType());
-
-    }
-
-    public static HashMap<String, String> updatePaymentType(final int id, HashMap request, final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec) {
-        final String UPDATE_PAYMENTTYPE_URL = PAYMENTTYPE_URL + "/" + id + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------UPDATE PAYMENT TYPE " + id + "---------------------------------------------");
-        HashMap<String, String> hash = Utils.performServerPut(requestSpec, responseSpec, UPDATE_PAYMENTTYPE_URL,
-                new Gson().toJson(request), "changes");
-        return hash;
-    }
-
-    public static Integer deletePaymentType(final int id, final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        final String DELETE_PAYMENTTYPE_URL = PAYMENTTYPE_URL + "/" + id + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------DELETING PAYMENT TYPE " + id + "--------------------------------------------");
-        return Utils.performServerDelete(requestSpec, responseSpec, DELETE_PAYMENTTYPE_URL, "resourceId");
-    }
-
-    public static String randomNameGenerator(final String prefix, final int lenOfRandomSuffix) {
-        return Utils.randomStringGenerator(prefix, lenOfRandomSuffix);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ProvisioningIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ProvisioningIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ProvisioningIntegrationTest.java
deleted file mode 100644
index 107bece..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ProvisioningIntegrationTest.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.fineract.integrationtests.common.accounting.Account;
-import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.apache.fineract.integrationtests.common.provisioning.ProvisioningHelper;
-import org.apache.fineract.integrationtests.common.provisioning.ProvisioningTransactionHelper;
-import org.junit.Assert;
-import org.junit.Assume;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class ProvisioningIntegrationTest {
-
-    private static final String NONE = "1";
-    private final static int LOANPRODUCTS_SIZE = 10;
-
-    private RequestSpecification requestSpec;
-    private ResponseSpecification responseSpec;
-    private AccountHelper accountHelper;
-    private LoanTransactionHelper loanTransactionHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        Assume.assumeTrue(!isAlreadyProvisioningEntriesCreated());
-    }
-
-    @Test
-    public void testCreateProvisioningCriteria() {
-        ProvisioningTransactionHelper transactionHelper = new ProvisioningTransactionHelper(requestSpec, responseSpec);
-        ArrayList<Integer> loanProducts = new ArrayList<>(LOANPRODUCTS_SIZE);
-        List<Integer> loans = new ArrayList<>();
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        for (int i = 0; i < LOANPRODUCTS_SIZE; i++) {
-            final Integer loanProductID = createLoanProduct(false, NONE);
-            loanProducts.add(loanProductID);
-            Assert.assertNotNull(loanProductID);
-            final Integer loanID = applyForLoanApplication(clientID, loanProductID, null, null, "1,00,000.00");
-            HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-            LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-            loanStatusHashMap = this.loanTransactionHelper.approveLoan("20 September 2011", loanID);
-            LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-            LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-            System.out.println("-------------------------------DISBURSE LOAN-------------------------------------------");
-            loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
-            LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-            loans.add(loanID);
-            Assert.assertNotNull(loanID);
-        }
-
-        ArrayList categories = transactionHelper.retrieveAllProvisioningCategories();
-        Assert.assertTrue(categories.size() > 0) ;
-        Account liability = accountHelper.createLiabilityAccount() ;
-        Account expense = accountHelper.createExpenseAccount() ;
-        Map requestCriteria = ProvisioningHelper.createProvisioingCriteriaJson(loanProducts, categories, liability, expense);
-        String provisioningCriteriaCreateJson = new Gson().toJson(requestCriteria);
-        Integer criteriaId = transactionHelper.createProvisioningCriteria(provisioningCriteriaCreateJson);
-        Assert.assertNotNull(criteriaId);
-
-        Map newCriteria = transactionHelper.retrieveProvisioningCriteria(criteriaId) ;
-        validateProvisioningCriteria(requestCriteria, newCriteria) ;
-        
-        ArrayList definitions = (ArrayList)newCriteria.get("definitions") ;
-        for(int i = 0 ; i < definitions.size(); i++) {
-            Map criteriadefinition = (Map) definitions.get(i) ;
-            criteriadefinition.put("provisioningPercentage", new Float(20.0)) ;
-        }
-        newCriteria.put("locale", "en");
-        String updateCriteriaString = new Gson().toJson(newCriteria) ;
-        Integer criteriaId1 = transactionHelper.updateProvisioningCriteria(criteriaId, updateCriteriaString) ;
-        Map updatedCriteria = transactionHelper.retrieveProvisioningCriteria(criteriaId1) ;
-        validateProvisioningCriteria(newCriteria, updatedCriteria) ;
-        
-        transactionHelper.deleteProvisioningCriteria(criteriaId1) ;
- 
-        categories = transactionHelper.retrieveAllProvisioningCategories();
-        liability = accountHelper.createLiabilityAccount() ;
-        expense = accountHelper.createExpenseAccount() ;
-        requestCriteria = ProvisioningHelper.createProvisioingCriteriaJson(loanProducts, categories, liability, expense);
-        provisioningCriteriaCreateJson = new Gson().toJson(requestCriteria);
-        criteriaId = transactionHelper.createProvisioningCriteria(provisioningCriteriaCreateJson);
-        Assert.assertNotNull(criteriaId);
-
-        String provisioningEntryJson = ProvisioningHelper.createProvisioningEntryJson();
-        Integer provisioningEntryId = transactionHelper.createProvisioningEntries(provisioningEntryJson);
-        Assert.assertNotNull(provisioningEntryId);
-        
-        transactionHelper.updateProvisioningEntry("recreateprovisioningentry", provisioningEntryId, "") ;
-        transactionHelper.updateProvisioningEntry("createjournalentry", provisioningEntryId, "") ;
-        Map entry = transactionHelper.retrieveProvisioningEntry(provisioningEntryId) ;
-        Assert.assertTrue((Boolean)entry.get("journalEntry")) ;
-        Map provisioningEntry = transactionHelper.retrieveProvisioningEntries(provisioningEntryId) ;
-        Assert.assertTrue(((ArrayList)provisioningEntry.get("pageItems")).size() > 0) ;
-    }
-
-    private void validateProvisioningCriteria(Map requestCriteria, Map newCriteria) {
-        
-        //criteria name validation
-        String requestCriteriaName = (String)requestCriteria.get("criteriaName") ;
-        String criteriaName = (String)newCriteria.get("criteriaName") ;
-        Assert.assertEquals(criteriaName, requestCriteriaName) ;
-        
-        //loan products validation
-        ArrayList requestProducts = (ArrayList)requestCriteria.get("loanProducts") ;
-        ArrayList products = (ArrayList)newCriteria.get("loanProducts") ;
-        Assert.assertEquals(products.size(), requestProducts.size()) ;
-        
-        ArrayList requestedDefinitions = (ArrayList)requestCriteria.get("definitions") ;
-        ArrayList newdefintions = (ArrayList) newCriteria.get("definitions") ;
-        Assert.assertEquals(newdefintions.size(), requestedDefinitions.size()) ;
-        for(int i = 0 ; i < newdefintions.size() ; i++) {
-            Map requestedMap = (Map)requestedDefinitions.get(i) ;
-            Map newMap = (Map)newdefintions.get(i) ;
-            checkProperty("categoryId", requestedMap, newMap) ;
-            checkProperty("categoryName", requestedMap, newMap) ;
-            checkProperty("minAge", requestedMap, newMap) ;
-            checkProperty("maxAge", requestedMap, newMap) ;
-            checkProperty("provisioningPercentage", requestedMap, newMap) ;
-            checkProperty("liabilityAccount", requestedMap, newMap) ;
-            checkProperty("expenseAccount", requestedMap, newMap) ;
-        }
-    }
-    
-    private void checkProperty(String propertyName, Map requestMap, Map newMap) {
-        Object requested = requestMap.get(propertyName) ;
-        Object modified = newMap.get(propertyName) ;
-        Assert.assertEquals(requested, modified) ;
-    }
-    
-    private Integer createLoanProduct(final boolean multiDisburseLoan, final String accountingRule, final Account... accounts) {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        LoanProductTestBuilder builder = new LoanProductTestBuilder() //
-                .withPrincipal("1,00,000.00") //
-                .withNumberOfRepayments("4") //
-                .withRepaymentAfterEvery("1") //
-                .withRepaymentTypeAsMonth() //
-                .withinterestRatePerPeriod("1") //
-                .withInterestRateFrequencyTypeAsMonths() //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withTranches(multiDisburseLoan) //
-                .withAccounting(accountingRule, accounts);
-        if (multiDisburseLoan) {
-            builder = builder.withInterestCalculationPeriodTypeAsRepaymentPeriod(true);
-        }
-        final String loanProductJSON = builder.build(null);
-        
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID, List<HashMap> charges,
-            final String savingsId, String principal) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal(principal) //
-                .withLoanTermFrequency("4") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("4") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withExpectedDisbursementDate("20 September 2011") //
-                .withSubmittedOnDate("20 September 2011") //
-                .withCharges(charges).build(clientID.toString(), loanProductID.toString(), savingsId);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-    
-    private boolean isAlreadyProvisioningEntriesCreated() {
-        ProvisioningTransactionHelper transactionHelper = new ProvisioningTransactionHelper(requestSpec, responseSpec);
-        Map entries = transactionHelper.retrieveAllProvisioningEntries() ;
-        ArrayList<Map> pageItems = (ArrayList)entries.get("pageItems") ;
-        boolean provisioningetryAlreadyCreated = false ;
-        if(pageItems != null) {
-            for(Map item: pageItems) {
-                String date = (String)item.get("createdDate") ;
-                DateFormat formatter = new SimpleDateFormat("MMM dd, yyyy");
-                try {
-                    Date date1 = formatter.parse(date) ;
-                    DateFormat simple = new SimpleDateFormat("dd MMMM yyyy");
-                    String formattedString = simple.format(Utils.getLocalDateOfTenant().toDate());
-                    Date currentDate = simple.parse(formattedString) ;
-                    if(date1.getTime() == currentDate.getTime()) {
-                        provisioningetryAlreadyCreated = true ;
-                        break ;
-                    }
-                } catch (ParseException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-        return provisioningetryAlreadyCreated ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SchedulerJobHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SchedulerJobHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SchedulerJobHelper.java
deleted file mode 100644
index 882e14d..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SchedulerJobHelper.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.junit.Assert;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class SchedulerJobHelper {
-
-    private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-
-    public SchedulerJobHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-
-    public static ArrayList getAllSchedulerJobs(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        final String GET_ALL_SCHEDULER_JOBS_URL = "/fineract-provider/api/v1/jobs?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING ALL SCHEDULER JOBS -------------------------");
-        final ArrayList response = Utils.performServerGet(requestSpec, responseSpec, GET_ALL_SCHEDULER_JOBS_URL, "");
-        return response;
-    }
-
-    public static HashMap getSchedulerJobById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String jobId) {
-        final String GET_SCHEDULER_JOB_BY_ID_URL = "/fineract-provider/api/v1/jobs/" + jobId + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING SCHEDULER JOB BY ID -------------------------");
-        final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_SCHEDULER_JOB_BY_ID_URL, "");
-        return response;
-    }
-
-    public static HashMap getSchedulerStatus(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        final String GET_SCHEDULER_STATUS_URL = "/fineract-provider/api/v1/scheduler?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING SCHEDULER STATUS -------------------------");
-        final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_SCHEDULER_STATUS_URL, "");
-        return response;
-    }
-
-    public static void updateSchedulerStatus(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String command) {
-        final String UPDATE_SCHEDULER_STATUS_URL = "/fineract-provider/api/v1/scheduler?command=" + command + "&" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ UPDATING SCHEDULER STATUS -------------------------");
-        Utils.performServerPost(requestSpec, responseSpec, UPDATE_SCHEDULER_STATUS_URL, runSchedulerJobAsJSON(), null);
-    }
-
-    public static HashMap updateSchedulerJob(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String jobId, final String active) {
-        final String UPDATE_SCHEDULER_JOB_URL = "/fineract-provider/api/v1/jobs/" + jobId + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ UPDATING SCHEDULER JOB -------------------------");
-        final HashMap response = Utils.performServerPut(requestSpec, responseSpec, UPDATE_SCHEDULER_JOB_URL,
-                updateSchedulerJobAsJSON(active), "changes");
-        return response;
-    }
-
-    public static String updateSchedulerJobAsJSON(final String active) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("active", active);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static ArrayList getSchedulerJobHistory(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String jobId) {
-        final String GET_SCHEDULER_STATUS_URL = "/fineract-provider/api/v1/jobs/" + jobId + "/runhistory?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING SCHEDULER JOB HISTORY -------------------------");
-        final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_SCHEDULER_STATUS_URL, "");
-        return (ArrayList) response.get("pageItems");
-    }
-
-    public static void runSchedulerJob(final RequestSpecification requestSpec, final String jobId) {
-        final ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(202).build();
-        final String RUN_SCHEDULER_JOB_URL = "/fineract-provider/api/v1/jobs/" + jobId + "?command=executeJob&" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RUN SCHEDULER JOB -------------------------");
-        Utils.performServerPost(requestSpec, responseSpec, RUN_SCHEDULER_JOB_URL, runSchedulerJobAsJSON(), null);
-    }
-
-    public static String runSchedulerJobAsJSON() {
-        final HashMap<String, String> map = new HashMap<>();
-        String runSchedulerJob = new Gson().toJson(map);
-        System.out.println(runSchedulerJob);
-        return runSchedulerJob;
-    }
-
-    public void executeJob(String JobName) throws InterruptedException {
-        ArrayList<HashMap> allSchedulerJobsData = getAllSchedulerJobs(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(allSchedulerJobsData);
-
-        for (Integer jobIndex = 0; jobIndex < allSchedulerJobsData.size(); jobIndex++) {
-            if (allSchedulerJobsData.get(jobIndex).get("displayName").equals(JobName)) {
-                Integer jobId = (Integer) allSchedulerJobsData.get(jobIndex).get("jobId");
-
-                // Executing Scheduler Job
-                runSchedulerJob(this.requestSpec, jobId.toString());
-
-                // Retrieving Scheduler Job by ID
-                HashMap schedulerJob = getSchedulerJobById(this.requestSpec, this.responseSpec, jobId.toString());
-                Assert.assertNotNull(schedulerJob);
-
-                // Waiting for Job to complete
-                while ((Boolean) schedulerJob.get("currentlyRunning") == true) {
-                    Thread.sleep(15000);
-                    schedulerJob = getSchedulerJobById(this.requestSpec, this.responseSpec, jobId.toString());
-                    Assert.assertNotNull(schedulerJob);
-                    System.out.println("Job is Still Running");
-                }
-
-                ArrayList<HashMap> jobHistoryData = getSchedulerJobHistory(this.requestSpec, this.responseSpec, jobId.toString());
-
-                // print error associated with recent job failure (if any)
-                System.out.println("Job run error message (printed only if the job fails: "
-                        + jobHistoryData.get(jobHistoryData.size() - 1).get("jobRunErrorMessage"));
-                System.out.println("Job failure error log (printed only if the job fails: "
-                        + jobHistoryData.get(jobHistoryData.size() - 1).get("jobRunErrorLog"));
-
-                // Verifying the Status of the Recently executed Scheduler Job
-                Assert.assertEquals("Verifying Last Scheduler Job Status", "success",
-                        jobHistoryData.get(jobHistoryData.size() - 1).get("status"));
-
-                break;
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/StandingInstructionsHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/StandingInstructionsHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/StandingInstructionsHelper.java
deleted file mode 100644
index bf44576..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/StandingInstructionsHelper.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.Utils;
-
-import ch.qos.logback.classic.pattern.Util;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "unused", "rawtypes", "unchecked" })
-public class StandingInstructionsHelper {
-
-    private static final String STANDING_INSTRUCTIONS_URL = "/fineract-provider/api/v1/standinginstructions";
-    private static final String STANDING_INSTRUCTIONS_RUNHISTORY_URL = "/fineract-provider/api/v1/standinginstructionrunhistory";
-    private static final String LOCALE = "en_GB";
-    private static final String OFFICE_ID = "1";
-    private static final String INSTRUCTION_TYPE_FIXED = "1";
-    private static final String INSTRUCTION_TYPE_DUES = "2";
-    private static final String PRIORITY_URGENT = "1";
-    private static final String PRIORITY_HIGH = "2";
-    private static final String PRIORITY_MEDIUM = "3";
-    private static final String PRIORITY_LOW = "4";
-    private static final String RECURRENCE_FREQUENCY_DAYS = "0";
-    private static final String RECURRENCE_FREQUENCY_WEEKS = "1";
-    private static final String RECURRENCE_FREQUENCY_MONTHS = "2";
-    private static final String RECURRENCE_FREQUENCY_YEARS = "3";
-    private static final String RECURRENCE_TYPE_PERIODIC = "1";
-    private static final String RECURRENCE_TYPE_AS_PER_DUES = "2";
-    private static final String STATUS_ACTIVE = "1";
-    private static final String STATUS_DISABLED = "2";
-    private static final String TRANSFER_TYPE_ACCOUNT_TRANSFER = "1";
-    private static final String TRANSFER_TYPE_LOAN_REPAYMENT = "2";
-    private static final String ACCOUNT_TRANSFER_DATE = "01 March 2013";
-
-    private String transferDate = "";
-    private String officeId = OFFICE_ID;
-
-    private RequestSpecification requestSpec;
-    private ResponseSpecification responseSpec;
-
-    public StandingInstructionsHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-
-    public String build(final String clientId, final String fromAccountId, final String toAccountId, final String fromAccountType,
-            final String toAccountType, final String validFrom, final String validTo, final String monthDay) {
-
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("name", Utils.randomNameGenerator("STANDING_INSTRUCTION_", 5));
-        map.put("dateFormat", "dd MMMM yyyy");
-        map.put("monthDayFormat", "dd MMMM");
-        map.put("locale", LOCALE);
-        map.put("fromClientId", clientId);
-        map.put("fromAccountId", fromAccountId);
-        map.put("fromAccountType", fromAccountType);
-        map.put("fromOfficeId", this.officeId);
-        map.put("toClientId", clientId);
-        map.put("toAccountId", toAccountId);
-        map.put("toAccountType", toAccountType);
-        map.put("toOfficeId", this.officeId);
-        map.put("amount", "500");
-        map.put("transferType", TRANSFER_TYPE_ACCOUNT_TRANSFER);
-        map.put("priority", PRIORITY_URGENT);
-        map.put("status", STATUS_ACTIVE);
-        map.put("instructionType", INSTRUCTION_TYPE_FIXED);
-        map.put("validFrom", validFrom);
-        map.put("validTill", validTo);
-        map.put("recurrenceType", RECURRENCE_TYPE_PERIODIC);
-        map.put("recurrenceInterval", "1");
-        map.put("recurrenceFrequency", RECURRENCE_FREQUENCY_WEEKS);
-        map.put("recurrenceOnMonthDay", monthDay);
-        String savingsApplicationJSON = new Gson().toJson(map);
-        System.out.println(savingsApplicationJSON);
-        return savingsApplicationJSON;
-    }
-
-    public Integer createStandingInstruction(final String clientId, final String fromAccountId, final String toAccountId,
-            final String fromAccountType, final String toAccountType, final String validFrom, final String validTo, final String monthDay) {
-        System.out.println("-------------------------------- CREATE STANDING INSTRUCTIONS --------------------------------");
-        final String standingInstructionAsJSON = new StandingInstructionsHelper(this.requestSpec, this.responseSpec) //
-                .build(clientId.toString(), fromAccountId.toString(), toAccountId.toString(), fromAccountType, toAccountType, validFrom,
-                        validTo, monthDay);
-        return Utils.performServerPost(this.requestSpec, this.responseSpec, STANDING_INSTRUCTIONS_URL + "?" + Utils.TENANT_IDENTIFIER,
-                standingInstructionAsJSON, "resourceId");
-    }
-
-    public HashMap getStandingInstructionById(final String standingInstructionId) {
-
-        System.out.println("----------------------------- RETRIEVING STANDING INSTRUCTION BY ID---------------------------");
-        final String GET_STANDING_INSTRUCTION_BY_ID_URL = STANDING_INSTRUCTIONS_URL + "/" + standingInstructionId + "?"
-                + Utils.TENANT_IDENTIFIER;
-        final HashMap response = Utils.performServerGet(this.requestSpec, this.responseSpec, GET_STANDING_INSTRUCTION_BY_ID_URL, "");
-        return response;
-    }
-
-    public List<HashMap> getStandingInstructionHistory(Integer fromSavingsId, Integer fromAccountType, Integer fromClientId, Integer transferType) {
-        final String STANDING_INSTRUCTIONS_HISTORY_URL = STANDING_INSTRUCTIONS_RUNHISTORY_URL + "?" + Utils.TENANT_IDENTIFIER
-                + "&fromSavingsId=" + fromSavingsId + "&fromAccountType=" + fromAccountType + "&clientId=" + fromClientId
-                + "&transferType=" + transferType;
-        System.out.println("STANDING_INSTRUCTIONS_HISTORY_URL="+STANDING_INSTRUCTIONS_HISTORY_URL);
-        final List<HashMap> response = (List<HashMap>) Utils.performServerGet(this.requestSpec, this.responseSpec,
-                STANDING_INSTRUCTIONS_HISTORY_URL, "pageItems");
-        return response;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SurveyHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SurveyHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SurveyHelper.java
deleted file mode 100644
index 2fb2b09..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SurveyHelper.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-import java.util.HashMap;
-
-import static org.junit.Assert.assertEquals;
-
-public class SurveyHelper {
-
-    private static final String FULFIL_SURVEY_URL = "/fineract-provider/api/v1/survey/ppi_kenya_2009/clientId?" + Utils.TENANT_IDENTIFIER;
-
-    public static Integer fulfilSurvey(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        return fulfilSurvey(requestSpec, responseSpec, "04 March 2011");
-    }
-
-    public static Integer fulfilSurvey(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String activationDate) {
-        System.out.println("---------------------------------FULFIL PPI ---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec,FULFIL_SURVEY_URL, getTestPPIAsJSON(), "clientId");
-    }
-
-    public static String getTestPPIAsJSON() {
-        final HashMap<String, String> map = new HashMap<>();
-
-        map.put("date", "2014-05-19 00:00:00");
-        map.put("ppi_household_members_cd_q1_householdmembers","107");
-        map.put("ppi_highestschool_cd_q2_highestschool","112");
-        map.put("ppi_businessoccupation_cd_q3_businessoccupation","116");
-        map.put("dateFormat", "dd MMMM yyyy");
-        map.put("locale", "en");
-        map.put("ppi_habitablerooms_cd_q4_habitablerooms", "120");
-
-        map.put("ppi_floortype_cd_q5_floortype", "124");
-        map.put("ppi_lightingsource_cd_q6_lightingsource", "126");
-        map.put("ppi_irons_cd_q7_irons", "128");
-        map.put("ppi_mosquitonets_cd_q8_mosquitonets", "132");
-        map.put("ppi_towels_cd_q9_towels", "134");
-        map.put("ppi_fryingpans_cd_q10_fryingpans", "138");
-
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static void verifySurveyCreatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedClientID) {
-        System.out.println("------------------------------CHECK CLIENT DETAILS------------------------------------\n");
-        final String SURVEY_URL = "/fineract-provider/api/v1/Survey/ppi_kenya_2009/clientid/entryId" + generatedClientID + "?" + Utils.TENANT_IDENTIFIER;
-        final Integer responseClientID = Utils.performServerGet(requestSpec, responseSpec, SURVEY_URL, "id");
-        assertEquals("ERROR IN CREATING THE CLIENT", generatedClientID, responseClientID);
-    }
-
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/Utils.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/Utils.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/Utils.java
deleted file mode 100644
index 3d173c3..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/Utils.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import static com.jayway.restassured.RestAssured.given;
-import static com.jayway.restassured.path.json.JsonPath.from;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Locale;
-import java.util.Random;
-import java.util.TimeZone;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.http.conn.HttpHostConnectException;
-import org.joda.time.DateTimeZone;
-import org.joda.time.LocalDate;
-
-import com.jayway.restassured.RestAssured;
-import com.jayway.restassured.path.json.JsonPath;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Util for RestAssured tests. This class here in src/integrationTest is
- * copy/pasted to src/test; please keep them in sync.
- */
-@SuppressWarnings("unchecked")
-public class Utils {
-
-    public static final String TENANT_IDENTIFIER = "tenantIdentifier=default";
-
-    public static final String TENANT_TIME_ZONE = "Asia/Kolkata";
-
-    private static final String LOGIN_URL = "/fineract-provider/api/v1/authentication?username=mifos&password=password&" + TENANT_IDENTIFIER;
-
-    public static void initializeRESTAssured() {
-        RestAssured.baseURI = "https://localhost";
-        RestAssured.port = 8443;
-        RestAssured.keystore("src/main/resources/keystore.jks", "openmf");
-    }
-
-    public static String loginIntoServerAndGetBase64EncodedAuthenticationKey() {
-        try {
-            System.out.println("-----------------------------------LOGIN-----------------------------------------");
-            final String json = RestAssured.post(LOGIN_URL).asString();
-            assertThat("Failed to login into fineract platform", StringUtils.isBlank(json), is(false));
-            return JsonPath.with(json).get("base64EncodedAuthenticationKey");
-        } catch (final Exception e) {
-            if (e instanceof HttpHostConnectException) {
-                final HttpHostConnectException hh = (HttpHostConnectException) e;
-                fail("Failed to connect to fineract platform:" + hh.getMessage());
-            }
-
-            throw new RuntimeException(e);
-        }
-    }
-
-    public static <T> T performServerGet(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String getURL, final String jsonAttributeToGetBack) {
-        final String json = given().spec(requestSpec).expect().spec(responseSpec).log().ifError().when().get(getURL).andReturn().asString();
-        if (jsonAttributeToGetBack == null) { return (T) json; }
-        return (T) from(json).get(jsonAttributeToGetBack);
-    }
-
-    public static String performGetTextResponse(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-                                                final String getURL){
-        return given().spec(requestSpec).expect().spec(responseSpec).log().ifError().when().get(getURL).andReturn().asString();
-    }
-
-    public static byte[] performGetBinaryResponse(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-                                                final String getURL){
-        return given().spec(requestSpec).expect().spec(responseSpec).log().ifError().when().get(getURL).andReturn().asByteArray();
-    }
-
-    public static <T> T performServerPost(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String postURL, final String jsonBodyToSend, final String jsonAttributeToGetBack) {
-        final String json = given().spec(requestSpec).body(jsonBodyToSend).expect().spec(responseSpec).log().ifError().when().post(postURL)
-                .andReturn().asString();
-        if (jsonAttributeToGetBack == null) { return (T) json; }
-        return (T) from(json).get(jsonAttributeToGetBack);
-    }
-
-    public static <T> T performServerPut(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String putURL, final String jsonBodyToSend, final String jsonAttributeToGetBack) {
-        final String json = given().spec(requestSpec).body(jsonBodyToSend).expect().spec(responseSpec).log().ifError().when().put(putURL)
-                .andReturn().asString();
-        return (T) from(json).get(jsonAttributeToGetBack);
-    }
-
-    public static <T> T performServerDelete(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String deleteURL, final String jsonAttributeToGetBack) {
-        final String json = given().spec(requestSpec).expect().spec(responseSpec).log().ifError().when().delete(deleteURL).andReturn()
-                .asString();
-        return (T) from(json).get(jsonAttributeToGetBack);
-    }
-
-    public static String convertDateToURLFormat(final String dateToBeConvert) {
-        final SimpleDateFormat oldFormat = new SimpleDateFormat("dd MMMMMM yyyy", Locale.US);
-        final SimpleDateFormat newFormat = new SimpleDateFormat("yyyy-MM-dd");
-        String reformattedStr = "";
-        try {
-            reformattedStr = newFormat.format(oldFormat.parse(dateToBeConvert));
-        } catch (final ParseException e) {
-            e.printStackTrace();
-        }
-        return reformattedStr;
-    }
-
-    public static String randomStringGenerator(final String prefix, final int len, final String sourceSetString) {
-        final int lengthOfSource = sourceSetString.length();
-        final Random rnd = new Random();
-        final StringBuilder sb = new StringBuilder(len);
-        for (int i = 0; i < len; i++) {
-            sb.append((sourceSetString).charAt(rnd.nextInt(lengthOfSource)));
-        }
-        return (prefix + (sb.toString()));
-    }
-
-    public static String randomStringGenerator(final String prefix, final int len) {
-        return randomStringGenerator(prefix, len, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-    }
-
-    public static String randomNameGenerator(final String prefix, final int lenOfRandomSuffix) {
-        return randomStringGenerator(prefix, lenOfRandomSuffix);
-    }
-
-    public static String convertDateToURLFormat(final Calendar dateToBeConvert) {
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMMMM yyyy");
-        dateFormat.setTimeZone(Utils.getTimeZoneOfTenant());
-        return dateFormat.format(dateToBeConvert.getTime());
-    }
-
-    public static LocalDate getLocalDateOfTenant() {
-        LocalDate today = new LocalDate();
-        final DateTimeZone zone = DateTimeZone.forID(TENANT_TIME_ZONE);
-        if (zone != null) {
-            today = new LocalDate(zone);
-        }
-        return today;
-    }
-
-    public static TimeZone getTimeZoneOfTenant() {
-        return TimeZone.getTimeZone(TENANT_TIME_ZONE);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/WorkingDaysHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/WorkingDaysHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/WorkingDaysHelper.java
deleted file mode 100755
index 8d5f808..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/WorkingDaysHelper.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.HashMap;
-import java.util.Random;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class WorkingDaysHelper {
-
-    private static final String WORKINGDAYS_URL = "/fineract-provider/api/v1/workingdays";
-
-    public static Object updateWorkingDays(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        final String UPDATE_WORKINGDAYS_URL = WORKINGDAYS_URL + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------UPDATE WORKINGDAY---------------------------------------------");
-        return Utils.performServerPut(requestSpec, responseSpec, UPDATE_WORKINGDAYS_URL, updateWorkingDaysAsJson(), "");
-    }
-
-    public static Object updateWorkingDaysWithWrongRecurrence(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, String jsonAttributeToGetback) {
-        final String UPDATE_WORKINGDAYS_URL = WORKINGDAYS_URL + "?" + Utils.TENANT_IDENTIFIER;
-        System.out
-                .println("---------------------------------UPDATE WORKINGDAY WITH WRONG RECURRENCE-----------------------------------------");
-        return Utils.performServerPut(requestSpec, responseSpec, UPDATE_WORKINGDAYS_URL, updateWorkingDayWithWrongRecur(),
-                jsonAttributeToGetback);
-    }
-
-    public static String updateWorkingDaysAsJson() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("recurrence", "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR,SA,SU");
-        map.put("locale", "en");
-        map.put("repaymentRescheduleType", randomInt(1, 4));
-        map.put("extendTermForDailyRepayments", false);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static String updateWorkingDayWithWrongRecur() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("recurrence", "FREQ=WEEKLY;INTERVAL=1;BYDAY=MP,TI,TE,TH");
-        map.put("locale", "en");
-        map.put("repaymentRescheduleType", randomInt(1, 4));
-        map.put("extendTermForDailyRepayments", false);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static int randomInt(int low, int high) {
-        int i = new Random().nextInt(high) + low;
-        return i;
-    }
-
-    public static int workingDaysId(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        HashMap<String, Object> workingDays = getAllWorkingDays(requestSpec, responseSpec);
-        return (int) workingDays.get("id");
-    }
-
-    public static HashMap<String, Object> getAllWorkingDays(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-
-        return Utils.performServerGet(requestSpec, responseSpec, WORKINGDAYS_URL + "?" + Utils.TENANT_IDENTIFIER, "");
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/Account.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/Account.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/Account.java
deleted file mode 100644
index 2cb9de0..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/Account.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.accounting;
-
-public class Account {
-
-    public enum AccountType {
-        ASSET("1"), INCOME("4"), EXPENSE("5"), LIABILITY("2"), EQUITY("3");
-
-        private final String accountValue;
-
-        AccountType(final String accountValue) {
-            this.accountValue = accountValue;
-        }
-
-        @Override
-        public String toString() {
-            return this.accountValue;
-        }
-    }
-
-    private final AccountType accountType;
-    private final Integer accountID;
-
-    public Account(final Integer accountID, final AccountType accountType) {
-        this.accountID = accountID;
-        this.accountType = accountType;
-    }
-
-    public AccountType getAccountType() {
-        return this.accountType;
-    }
-
-    public Integer getAccountID() {
-        return this.accountID;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/AccountHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/AccountHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/AccountHelper.java
deleted file mode 100644
index 3362857..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/AccountHelper.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.accounting;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.Utils;
-
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings("rawtypes")
-public class AccountHelper {
-
-    private final String CREATE_GL_ACCOUNT_URL = "/fineract-provider/api/v1/glaccounts?" + Utils.TENANT_IDENTIFIER;
-    private final String GL_ACCOUNT_ID_RESPONSE = "resourceId";
-
-    private final RequestSpecification requestSpec;
-    private final ResponseSpecification responseSpec;
-
-    public AccountHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        this.requestSpec = requestSpec;
-        this.responseSpec = responseSpec;
-    }
-
-    public Account createAssetAccount() {
-        final String assetAccountJSON = new GLAccountBuilder().withAccountTypeAsAsset().build();
-        final Integer accountID = Utils.performServerPost(this.requestSpec, this.responseSpec, this.CREATE_GL_ACCOUNT_URL,
-                assetAccountJSON, this.GL_ACCOUNT_ID_RESPONSE);
-        return new Account(accountID, Account.AccountType.ASSET);
-    }
-
-    public Account createIncomeAccount() {
-        final String assetAccountJSON = new GLAccountBuilder().withAccountTypeAsIncome().build();
-        final Integer accountID = Utils.performServerPost(this.requestSpec, this.responseSpec, this.CREATE_GL_ACCOUNT_URL,
-                assetAccountJSON, this.GL_ACCOUNT_ID_RESPONSE);
-        return new Account(accountID, Account.AccountType.INCOME);
-    }
-
-    public Account createExpenseAccount() {
-        final String assetAccountJSON = new GLAccountBuilder().withAccountTypeAsExpense().build();
-        final Integer accountID = Utils.performServerPost(this.requestSpec, this.responseSpec, this.CREATE_GL_ACCOUNT_URL,
-                assetAccountJSON, this.GL_ACCOUNT_ID_RESPONSE);
-        return new Account(accountID, Account.AccountType.EXPENSE);
-    }
-
-    public Account createLiabilityAccount() {
-        final String liabilityAccountJSON = new GLAccountBuilder().withAccountTypeAsLiability().build();
-        final Integer accountID = Utils.performServerPost(this.requestSpec, this.responseSpec, this.CREATE_GL_ACCOUNT_URL,
-                liabilityAccountJSON, this.GL_ACCOUNT_ID_RESPONSE);
-        return new Account(accountID, Account.AccountType.LIABILITY);
-    }
-    
-    public ArrayList getAccountingWithRunningBalances() {
-        final String GET_RUNNING_BALANCE_URL = "/fineract-provider/api/v1/glaccounts?fetchRunningBalance=true";
-        final ArrayList<HashMap> accountRunningBalance = Utils.performServerGet(this.requestSpec, this.responseSpec, GET_RUNNING_BALANCE_URL, "");
-        return accountRunningBalance;
-    }
-    
-    public HashMap getAccountingWithRunningBalanceById(final String accountId) {
-        final String GET_RUNNING_BALANCE_URL = "/fineract-provider/api/v1/glaccounts/" + accountId + "?fetchRunningBalance=true";
-        final HashMap accountRunningBalance = Utils.performServerGet(this.requestSpec, this.responseSpec, GET_RUNNING_BALANCE_URL, "");
-        return accountRunningBalance;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/FinancialActivityAccountHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/FinancialActivityAccountHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/FinancialActivityAccountHelper.java
deleted file mode 100755
index ae20cda..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/FinancialActivityAccountHelper.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.accounting;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.Utils;
-
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings("rawtypes")
-public class FinancialActivityAccountHelper {
-
-    private static final String FINANCIAL_ACTIVITY_ACCOUNT_MAPPING_URL = "/fineract-provider/api/v1/financialactivityaccounts";
-    private final RequestSpecification requestSpec;
-
-    public FinancialActivityAccountHelper(final RequestSpecification requestSpec) {
-        this.requestSpec = requestSpec;
-    }
-
-    public Object createFinancialActivityAccount(Integer financialActivityId, Integer glAccountId,
-            final ResponseSpecification responseSpecification, String jsonBack) {
-        String json = FinancialActivityAccountsMappingBuilder.build(financialActivityId, glAccountId);
-        return Utils.performServerPost(this.requestSpec, responseSpecification, FINANCIAL_ACTIVITY_ACCOUNT_MAPPING_URL + "?"
-                + Utils.TENANT_IDENTIFIER, json, jsonBack);
-    }
-
-    public Object updateFinancialActivityAccount(Integer financialActivityAccountId, Integer financialActivityId, Integer glAccountId,
-            final ResponseSpecification responseSpecification, String jsonBack) {
-        String json = FinancialActivityAccountsMappingBuilder.build(financialActivityId, glAccountId);
-        return Utils.performServerPut(this.requestSpec, responseSpecification, FINANCIAL_ACTIVITY_ACCOUNT_MAPPING_URL + "/"
-                + financialActivityAccountId + "?" + Utils.TENANT_IDENTIFIER, json, jsonBack);
-    }
-
-    public HashMap getFinancialActivityAccount(final Integer financialActivityAccountId, final ResponseSpecification responseSpecification) {
-        final String url = FINANCIAL_ACTIVITY_ACCOUNT_MAPPING_URL + "/" + financialActivityAccountId + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerGet(requestSpec, responseSpecification, url, "");
-    }
-
-    public List<HashMap> getAllFinancialActivityAccounts(final ResponseSpecification responseSpecification) {
-        final String url = FINANCIAL_ACTIVITY_ACCOUNT_MAPPING_URL + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerGet(this.requestSpec, responseSpecification, url, "");
-    }
-
-    public Integer deleteFinancialActivityAccount(final Integer financialActivityAccountId,
-            final ResponseSpecification responseSpecification, String jsonBack) {
-        final String url = FINANCIAL_ACTIVITY_ACCOUNT_MAPPING_URL + "/" + financialActivityAccountId + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerDelete(this.requestSpec, responseSpecification, url, jsonBack);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/FinancialActivityAccountsMappingBuilder.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/FinancialActivityAccountsMappingBuilder.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/FinancialActivityAccountsMappingBuilder.java
deleted file mode 100755
index 2436330..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/FinancialActivityAccountsMappingBuilder.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.accounting;
-
-import java.util.HashMap;
-
-import com.google.gson.Gson;
-
-public class FinancialActivityAccountsMappingBuilder {
-
-    public static String build(Integer financialActivityId, Integer glAccountId) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("financialActivityId", financialActivityId);
-        map.put("glAccountId", glAccountId);
-        return new Gson().toJson(map);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/GLAccountBuilder.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/GLAccountBuilder.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/GLAccountBuilder.java
deleted file mode 100644
index 502e0d1..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/GLAccountBuilder.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.accounting;
-
-import java.util.Calendar;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.Utils;
-
-import com.google.gson.Gson;
-
-public class GLAccountBuilder {
-
-    public static final String ASSET_ACCOUNT = "1";
-    public static final String LIABILITY_ACCOUNT = "2";
-    public static final String EQUITY_ACCOUNT = "3";
-    public static final String INCOME_ACCOUNT = "4";
-    public static final String EXPENSE_ACCOUNT = "5";
-
-    private static final String ACCOUNT_USAGE_DETAIL = "1";
-    private static final String ACCOUNT_USAGE_HEADER = "2";
-    private static final String MANUAL_ENTRIES_ALLOW = "true";
-    private static final String MANUAL_ENTRIES_NOT_ALLOW = "false";
-
-    private static String name = Utils.randomStringGenerator("ACCOUNT_NAME_", 5);
-
-    private static String GLCode = "";
-    private static String accountType = "";
-    private static String accountUsage = ACCOUNT_USAGE_DETAIL;
-    private static String manualEntriesAllowed = MANUAL_ENTRIES_ALLOW;
-    private static String description = "DEFAULT_DESCRIPTION";
-
-    public String build() {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("name", GLAccountBuilder.name);
-        map.put("glCode", GLAccountBuilder.GLCode);
-        map.put("manualEntriesAllowed", GLAccountBuilder.manualEntriesAllowed);
-        map.put("type", GLAccountBuilder.accountType);
-        map.put("usage", GLAccountBuilder.accountUsage);
-        map.put("description", GLAccountBuilder.description);
-        return new Gson().toJson(map);
-    }
-
-    public GLAccountBuilder withAccountTypeAsAsset() {
-        GLAccountBuilder.accountType = ASSET_ACCOUNT;
-        GLAccountBuilder.GLCode = Utils.randomStringGenerator("ASSET_", 2);
-        GLAccountBuilder.GLCode += Calendar.getInstance().getTimeInMillis() + ""; // Added
-        // unique
-        // timestamp
-        // for
-        // avoiding
-        // random
-        // collisions
-        return this;
-    }
-
-    public GLAccountBuilder withAccountTypeAsLiability() {
-        GLAccountBuilder.accountType = LIABILITY_ACCOUNT;
-        GLAccountBuilder.GLCode = Utils.randomStringGenerator("LIABILITY_", 2);
-        GLAccountBuilder.GLCode += Calendar.getInstance().getTimeInMillis() + "";
-        return this;
-    }
-
-    public GLAccountBuilder withAccountTypeAsAsEquity() {
-        GLAccountBuilder.accountType = EQUITY_ACCOUNT;
-        GLAccountBuilder.GLCode = Utils.randomStringGenerator("EQUITY_", 2);
-        GLAccountBuilder.GLCode += Calendar.getInstance().getTimeInMillis() + "";
-        return this;
-    }
-
-    public GLAccountBuilder withAccountTypeAsIncome() {
-        GLAccountBuilder.accountType = INCOME_ACCOUNT;
-        GLAccountBuilder.GLCode = Utils.randomStringGenerator("INCOME_", 2);
-        GLAccountBuilder.GLCode += Calendar.getInstance().getTimeInMillis() + "";
-        return this;
-    }
-
-    public GLAccountBuilder withAccountTypeAsExpense() {
-        GLAccountBuilder.accountType = EXPENSE_ACCOUNT;
-        GLAccountBuilder.GLCode = Utils.randomStringGenerator("EXPENSE_", 2);
-        GLAccountBuilder.GLCode += Calendar.getInstance().getTimeInMillis() + "";
-        return this;
-    }
-
-    public GLAccountBuilder withAccountUsageAsHeader() {
-        GLAccountBuilder.accountUsage = ACCOUNT_USAGE_HEADER;
-        return this;
-    }
-
-    public GLAccountBuilder withMaualEntriesNotAllowed() {
-        GLAccountBuilder.manualEntriesAllowed = MANUAL_ENTRIES_NOT_ALLOW;
-        return this;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/JournalEntry.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/JournalEntry.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/JournalEntry.java
deleted file mode 100644
index bbfd8fd..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/JournalEntry.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common.accounting;
-
-public class JournalEntry {
-
-    public enum TransactionType {
-        CREDIT("CREDIT"), DEBIT("DEBIT");
-
-        private TransactionType(final String type) {
-            this.type = type;
-        }
-
-        private final String type;
-
-        @Override
-        public String toString() {
-            return this.type;
-        }
-    }
-
-    private final Float transactionAmount;
-    private final TransactionType transactionType;
-    private final Integer officeId;
-
-    public JournalEntry(final float transactionAmount, final TransactionType type) {
-        this.transactionAmount = transactionAmount;
-        this.transactionType = type;
-        this.officeId = null;
-    }
-
-    public Float getTransactionAmount() {
-        return this.transactionAmount;
-    }
-
-    public String getTransactionType() {
-        return this.transactionType.toString();
-    }
-
-}


[35/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/jszip.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/jszip.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/jszip.js
deleted file mode 100644
index 0378189..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/jszip.js
+++ /dev/null
@@ -1,1425 +0,0 @@
-/**
-
-JSZip - A Javascript class for generating and reading zip files
-<http://stuartk.com/jszip>
-
-(c) 2009-2012 Stuart Knightley <stuart [at] stuartk.com>
-Dual licenced under the MIT license or GPLv3. See LICENSE.markdown.
-
-Usage:
-   zip = new JSZip();
-   zip.file("hello.txt", "Hello, World!").file("tempfile", "nothing");
-   zip.folder("images").file("smile.gif", base64Data, {base64: true});
-   zip.file("Xmas.txt", "Ho ho ho !", {date : new Date("December 25, 2007 00:00:01")});
-   zip.remove("tempfile");
-
-   base64zip = zip.generate();
-
-**/
-"use strict";
-
-/**
- * Representation a of zip file in js
- * @constructor
- * @param {String=|ArrayBuffer=|Uint8Array=|Buffer=} data the data to load, if any (optional).
- * @param {Object=} options the options for creating this objects (optional).
- */
-var JSZip = function(data, options) {
-   // object containing the files :
-   // {
-   //   "folder/" : {...},
-   //   "folder/data.txt" : {...}
-   // }
-   this.files = {};
-
-   // Where we are in the hierarchy
-   this.root = "";
-
-   if (data) {
-      this.load(data, options);
-   }
-};
-
-JSZip.signature = {
-   LOCAL_FILE_HEADER : "\x50\x4b\x03\x04",
-   CENTRAL_FILE_HEADER : "\x50\x4b\x01\x02",
-   CENTRAL_DIRECTORY_END : "\x50\x4b\x05\x06",
-   ZIP64_CENTRAL_DIRECTORY_LOCATOR : "\x50\x4b\x06\x07",
-   ZIP64_CENTRAL_DIRECTORY_END : "\x50\x4b\x06\x06",
-   DATA_DESCRIPTOR : "\x50\x4b\x07\x08"
-};
-
-// Default properties for a new file
-JSZip.defaults = {
-   base64: false,
-   binary: false,
-   dir: false,
-   date: null,
-   compression: null
-};
-
-
-JSZip.prototype = (function () {
-
-   /**
-    * Returns the raw data of a ZipObject, decompress the content if necessary.
-    * @param {ZipObject} file the file to use.
-    * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
-    */
-   var getRawData = function (file) {
-      if (file._data instanceof JSZip.CompressedObject) {
-         file._data = file._data.getContent();
-         file.options.binary = true;
-         file.options.base64 = false;
-
-         if (JSZip.utils.getTypeOf(file._data) === "uint8array") {
-            var copy = file._data;
-            // when reading an arraybuffer, the CompressedObject mechanism will keep it and subarray() a Uint8Array.
-            // if we request a file in the same format, we might get the same Uint8Array or its ArrayBuffer (the original zip file).
-            file._data = new Uint8Array(copy.length);
-            // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
-            if (copy.length !== 0) {
-               file._data.set(copy, 0);
-            }
-         }
-      }
-      return file._data;
-   };
-
-   /**
-    * Returns the data of a ZipObject in a binary form. If the content is an unicode string, encode it.
-    * @param {ZipObject} file the file to use.
-    * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
-    */
-   var getBinaryData = function (file) {
-      var result = getRawData(file), type = JSZip.utils.getTypeOf(result);
-      if (type === "string") {
-         if (!file.options.binary) {
-            // unicode text !
-            // unicode string => binary string is a painful process, check if we can avoid it.
-            if (JSZip.support.uint8array && typeof TextEncoder === "function") {
-               return TextEncoder("utf-8").encode(result);
-            }
-            if (JSZip.support.nodebuffer) {
-               return new Buffer(result, "utf-8");
-            }
-         }
-         return file.asBinary();
-      }
-      return result;
-   }
-
-   /**
-    * Transform this._data into a string.
-    * @param {function} filter a function String -> String, applied if not null on the result.
-    * @return {String} the string representing this._data.
-    */
-   var dataToString = function (asUTF8) {
-      var result = getRawData(this);
-      if (result === null || typeof result === "undefined") {
-         return "";
-      }
-      // if the data is a base64 string, we decode it before checking the encoding !
-      if (this.options.base64) {
-         result = JSZip.base64.decode(result);
-      }
-      if (asUTF8 && this.options.binary) {
-         // JSZip.prototype.utf8decode supports arrays as input
-         // skip to array => string step, utf8decode will do it.
-         result = JSZip.prototype.utf8decode(result);
-      } else {
-         // no utf8 transformation, do the array => string step.
-         result = JSZip.utils.transformTo("string", result);
-      }
-
-      if (!asUTF8 && !this.options.binary) {
-         result = JSZip.prototype.utf8encode(result);
-      }
-      return result;
-   };
-   /**
-    * A simple object representing a file in the zip file.
-    * @constructor
-    * @param {string} name the name of the file
-    * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data
-    * @param {Object} options the options of the file
-    */
-   var ZipObject = function (name, data, options) {
-      this.name = name;
-      this._data = data;
-      this.options = options;
-   };
-
-   ZipObject.prototype = {
-      /**
-       * Return the content as UTF8 string.
-       * @return {string} the UTF8 string.
-       */
-      asText : function () {
-         return dataToString.call(this, true);
-      },
-      /**
-       * Returns the binary content.
-       * @return {string} the content as binary.
-       */
-      asBinary : function () {
-         return dataToString.call(this, false);
-      },
-      /**
-       * Returns the content as a nodejs Buffer.
-       * @return {Buffer} the content as a Buffer.
-       */
-      asNodeBuffer : function () {
-         var result = getBinaryData(this);
-         return JSZip.utils.transformTo("nodebuffer", result);
-      },
-      /**
-       * Returns the content as an Uint8Array.
-       * @return {Uint8Array} the content as an Uint8Array.
-       */
-      asUint8Array : function () {
-         var result = getBinaryData(this);
-         return JSZip.utils.transformTo("uint8array", result);
-      },
-      /**
-       * Returns the content as an ArrayBuffer.
-       * @return {ArrayBuffer} the content as an ArrayBufer.
-       */
-      asArrayBuffer : function () {
-         return this.asUint8Array().buffer;
-      }
-   };
-
-   /**
-    * Transform an integer into a string in hexadecimal.
-    * @private
-    * @param {number} dec the number to convert.
-    * @param {number} bytes the number of bytes to generate.
-    * @returns {string} the result.
-    */
-   var decToHex = function(dec, bytes) {
-      var hex = "", i;
-      for(i = 0; i < bytes; i++) {
-         hex += String.fromCharCode(dec&0xff);
-         dec=dec>>>8;
-      }
-      return hex;
-   };
-
-   /**
-    * Merge the objects passed as parameters into a new one.
-    * @private
-    * @param {...Object} var_args All objects to merge.
-    * @return {Object} a new object with the data of the others.
-    */
-   var extend = function () {
-      var result = {}, i, attr;
-      for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers
-         for (attr in arguments[i]) {
-            if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") {
-               result[attr] = arguments[i][attr];
-            }
-         }
-      }
-      return result;
-   };
-
-   /**
-    * Transforms the (incomplete) options from the user into the complete
-    * set of options to create a file.
-    * @private
-    * @param {Object} o the options from the user.
-    * @return {Object} the complete set of options.
-    */
-   var prepareFileAttrs = function (o) {
-      o = o || {};
-      if (o.base64 === true && o.binary == null) {
-         o.binary = true;
-      }
-      o = extend(o, JSZip.defaults);
-      o.date = o.date || new Date();
-      if (o.compression !== null) o.compression = o.compression.toUpperCase();
-
-      return o;
-   };
-
-   /**
-    * Add a file in the current folder.
-    * @private
-    * @param {string} name the name of the file
-    * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file
-    * @param {Object} o the options of the file
-    * @return {Object} the new file.
-    */
-   var fileAdd = function (name, data, o) {
-      // be sure sub folders exist
-      var parent = parentFolder(name), dataType = JSZip.utils.getTypeOf(data);
-      if (parent) {
-         folderAdd.call(this, parent);
-      }
-
-      o = prepareFileAttrs(o);
-
-      if (o.dir || data === null || typeof data === "undefined") {
-         o.base64 = false;
-         o.binary = false;
-         data = null;
-      } else if (dataType === "string") {
-         if (o.binary && !o.base64) {
-            // optimizedBinaryString == true means that the file has already been filtered with a 0xFF mask
-            if (o.optimizedBinaryString !== true) {
-               // this is a string, not in a base64 format.
-               // Be sure that this is a correct "binary string"
-               data = JSZip.utils.string2binary(data);
-            }
-         }
-      } else { // arraybuffer, uint8array, ...
-         o.base64 = false;
-         o.binary = true;
-
-         if (!dataType && !(data instanceof JSZip.CompressedObject)) {
-            throw new Error("The data of '" + name + "' is in an unsupported format !");
-         }
-
-         // special case : it's way easier to work with Uint8Array than with ArrayBuffer
-         if (dataType === "arraybuffer") {
-            data = JSZip.utils.transformTo("uint8array", data);
-         }
-      }
-
-      return this.files[name] = new ZipObject(name, data, o);
-   };
-
-
-   /**
-    * Find the parent folder of the path.
-    * @private
-    * @param {string} path the path to use
-    * @return {string} the parent folder, or ""
-    */
-   var parentFolder = function (path) {
-      if (path.slice(-1) == '/') {
-         path = path.substring(0, path.length - 1);
-      }
-      var lastSlash = path.lastIndexOf('/');
-      return (lastSlash > 0) ? path.substring(0, lastSlash) : "";
-   };
-
-   /**
-    * Add a (sub) folder in the current folder.
-    * @private
-    * @param {string} name the folder's name
-    * @return {Object} the new folder.
-    */
-   var folderAdd = function (name) {
-      // Check the name ends with a /
-      if (name.slice(-1) != "/") {
-         name += "/"; // IE doesn't like substr(-1)
-      }
-
-      // Does this folder already exist?
-      if (!this.files[name]) {
-         fileAdd.call(this, name, null, {dir:true});
-      }
-      return this.files[name];
-   };
-
-   /**
-    * Generate a JSZip.CompressedObject for a given zipOject.
-    * @param {ZipObject} file the object to read.
-    * @param {JSZip.compression} compression the compression to use.
-    * @return {JSZip.CompressedObject} the compressed result.
-    */
-   var generateCompressedObjectFrom = function (file, compression) {
-      var result = new JSZip.CompressedObject(), content;
-
-      // the data has not been decompressed, we might reuse things !
-      if (file._data instanceof JSZip.CompressedObject) {
-         result.uncompressedSize = file._data.uncompressedSize;
-         result.crc32 = file._data.crc32;
-
-         if (result.uncompressedSize === 0 || file.options.dir) {
-            compression = JSZip.compressions['STORE'];
-            result.compressedContent = "";
-            result.crc32 = 0;
-         } else if (file._data.compressionMethod === compression.magic) {
-            result.compressedContent = file._data.getCompressedContent();
-         } else {
-            content = file._data.getContent()
-            // need to decompress / recompress
-            result.compressedContent = compression.compress(JSZip.utils.transformTo(compression.compressInputType, content));
-         }
-      } else {
-         // have uncompressed data
-         content = getBinaryData(file);
-         if (!content || content.length === 0 || file.options.dir) {
-            compression = JSZip.compressions['STORE'];
-            content = "";
-         }
-         result.uncompressedSize = content.length;
-         result.crc32 = this.crc32(content);
-         result.compressedContent = compression.compress(JSZip.utils.transformTo(compression.compressInputType, content));
-      }
-
-      result.compressedSize = result.compressedContent.length;
-      result.compressionMethod = compression.magic;
-
-      return result;
-   };
-
-   /**
-    * Generate the various parts used in the construction of the final zip file.
-    * @param {string} name the file name.
-    * @param {ZipObject} file the file content.
-    * @param {JSZip.CompressedObject} compressedObject the compressed object.
-    * @param {number} offset the current offset from the start of the zip file.
-    * @return {object} the zip parts.
-    */
-   var generateZipParts = function(name, file, compressedObject, offset) {
-      var data = compressedObject.compressedContent,
-          utfEncodedFileName = this.utf8encode(file.name),
-          useUTF8 = utfEncodedFileName !== file.name,
-          o       = file.options,
-          dosTime,
-          dosDate;
-
-      // date
-      // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html
-      // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html
-      // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html
-
-      dosTime = o.date.getHours();
-      dosTime = dosTime << 6;
-      dosTime = dosTime | o.date.getMinutes();
-      dosTime = dosTime << 5;
-      dosTime = dosTime | o.date.getSeconds() / 2;
-
-      dosDate = o.date.getFullYear() - 1980;
-      dosDate = dosDate << 4;
-      dosDate = dosDate | (o.date.getMonth() + 1);
-      dosDate = dosDate << 5;
-      dosDate = dosDate | o.date.getDate();
-
-
-      var header = "";
-
-      // version needed to extract
-      header += "\x0A\x00";
-      // general purpose bit flag
-      // set bit 11 if utf8
-      header += useUTF8 ? "\x00\x08" : "\x00\x00";
-      // compression method
-      header += compressedObject.compressionMethod;
-      // last mod file time
-      header += decToHex(dosTime, 2);
-      // last mod file date
-      header += decToHex(dosDate, 2);
-      // crc-32
-      header += decToHex(compressedObject.crc32, 4);
-      // compressed size
-      header += decToHex(compressedObject.compressedSize, 4);
-      // uncompressed size
-      header += decToHex(compressedObject.uncompressedSize, 4);
-      // file name length
-      header += decToHex(utfEncodedFileName.length, 2);
-      // extra field length
-      header += "\x00\x00";
-
-
-      var fileRecord = JSZip.signature.LOCAL_FILE_HEADER + header + utfEncodedFileName;
-
-      var dirRecord = JSZip.signature.CENTRAL_FILE_HEADER +
-      // version made by (00: DOS)
-      "\x14\x00" +
-      // file header (common to file and central directory)
-      header +
-      // file comment length
-      "\x00\x00" +
-      // disk number start
-      "\x00\x00" +
-      // internal file attributes TODO
-      "\x00\x00" +
-      // external file attributes
-      (file.options.dir===true?"\x10\x00\x00\x00":"\x00\x00\x00\x00")+
-      // relative offset of local header
-      decToHex(offset, 4) +
-      // file name
-      utfEncodedFileName;
-
-
-      return {
-         fileRecord : fileRecord,
-         dirRecord : dirRecord,
-         compressedObject : compressedObject
-      };
-   };
-
-   /**
-    * An object to write any content to a string.
-    * @constructor
-    */
-   var StringWriter = function () {
-      this.data = [];
-   };
-   StringWriter.prototype = {
-      /**
-       * Append any content to the current string.
-       * @param {Object} input the content to add.
-       */
-      append : function (input) {
-         input = JSZip.utils.transformTo("string", input);
-         this.data.push(input);
-      },
-      /**
-       * Finalize the construction an return the result.
-       * @return {string} the generated string.
-       */
-      finalize : function () {
-         return this.data.join("");
-      }
-   };
-   /**
-    * An object to write any content to an Uint8Array.
-    * @constructor
-    * @param {number} length The length of the array.
-    */
-   var Uint8ArrayWriter = function (length) {
-      this.data = new Uint8Array(length);
-      this.index = 0;
-   };
-   Uint8ArrayWriter.prototype = {
-      /**
-       * Append any content to the current array.
-       * @param {Object} input the content to add.
-       */
-      append : function (input) {
-         if (input.length !== 0) {
-            // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
-            input = JSZip.utils.transformTo("uint8array", input);
-            this.data.set(input, this.index);
-            this.index += input.length;
-         }
-      },
-      /**
-       * Finalize the construction an return the result.
-       * @return {Uint8Array} the generated array.
-       */
-      finalize : function () {
-         return this.data;
-      }
-   };
-
-   // return the actual prototype of JSZip
-   return {
-      /**
-       * Read an existing zip and merge the data in the current JSZip object.
-       * The implementation is in jszip-load.js, don't forget to include it.
-       * @param {String|ArrayBuffer|Uint8Array|Buffer} stream  The stream to load
-       * @param {Object} options Options for loading the stream.
-       *  options.base64 : is the stream in base64 ? default : false
-       * @return {JSZip} the current JSZip object
-       */
-      load : function (stream, options) {
-         throw new Error("Load method is not defined. Is the file jszip-load.js included ?");
-      },
-
-      /**
-       * Filter nested files/folders with the specified function.
-       * @param {Function} search the predicate to use :
-       * function (relativePath, file) {...}
-       * It takes 2 arguments : the relative path and the file.
-       * @return {Array} An array of matching elements.
-       */
-      filter : function (search) {
-         var result = [], filename, relativePath, file, fileClone;
-         for (filename in this.files) {
-            if ( !this.files.hasOwnProperty(filename) ) { continue; }
-            file = this.files[filename];
-            // return a new object, don't let the user mess with our internal objects :)
-            fileClone = new ZipObject(file.name, file._data, extend(file.options));
-            relativePath = filename.slice(this.root.length, filename.length);
-            if (filename.slice(0, this.root.length) === this.root && // the file is in the current root
-                search(relativePath, fileClone)) { // and the file matches the function
-               result.push(fileClone);
-            }
-         }
-         return result;
-      },
-
-      /**
-       * Add a file to the zip file, or search a file.
-       * @param   {string|RegExp} name The name of the file to add (if data is defined),
-       * the name of the file to find (if no data) or a regex to match files.
-       * @param   {String|ArrayBuffer|Uint8Array|Buffer} data  The file data, either raw or base64 encoded
-       * @param   {Object} o     File options
-       * @return  {JSZip|Object|Array} this JSZip object (when adding a file),
-       * a file (when searching by string) or an array of files (when searching by regex).
-       */
-      file : function(name, data, o) {
-         if (arguments.length === 1) {
-            if (name instanceof RegExp) {
-               var regexp = name;
-               return this.filter(function(relativePath, file) {
-                  return !file.options.dir && regexp.test(relativePath);
-               });
-            } else { // text
-               return this.filter(function (relativePath, file) {
-                  return !file.options.dir && relativePath === name;
-               })[0]||null;
-            }
-         } else { // more than one argument : we have data !
-            name = this.root+name;
-            fileAdd.call(this, name, data, o);
-         }
-         return this;
-      },
-
-      /**
-       * Add a directory to the zip file, or search.
-       * @param   {String|RegExp} arg The name of the directory to add, or a regex to search folders.
-       * @return  {JSZip} an object with the new directory as the root, or an array containing matching folders.
-       */
-      folder : function(arg) {
-         if (!arg) {
-            return this;
-         }
-
-         if (arg instanceof RegExp) {
-            return this.filter(function(relativePath, file) {
-               return file.options.dir && arg.test(relativePath);
-            });
-         }
-
-         // else, name is a new folder
-         var name = this.root + arg;
-         var newFolder = folderAdd.call(this, name);
-
-         // Allow chaining by returning a new object with this folder as the root
-         var ret = this.clone();
-         ret.root = newFolder.name;
-         return ret;
-      },
-
-      /**
-       * Delete a file, or a directory and all sub-files, from the zip
-       * @param {string} name the name of the file to delete
-       * @return {JSZip} this JSZip object
-       */
-      remove : function(name) {
-         name = this.root + name;
-         var file = this.files[name];
-         if (!file) {
-            // Look for any folders
-            if (name.slice(-1) != "/") {
-               name += "/";
-            }
-            file = this.files[name];
-         }
-
-         if (file) {
-            if (!file.options.dir) {
-               // file
-               delete this.files[name];
-            } else {
-               // folder
-               var kids = this.filter(function (relativePath, file) {
-                  return file.name.slice(0, name.length) === name;
-               });
-               for (var i = 0; i < kids.length; i++) {
-                  delete this.files[kids[i].name];
-               }
-            }
-         }
-
-         return this;
-      },
-
-      /**
-       * Generate the complete zip file
-       * @param {Object} options the options to generate the zip file :
-       * - base64, (deprecated, use type instead) true to generate base64.
-       * - compression, "STORE" by default.
-       * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
-       * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file
-       */
-      generate : function(options) {
-         options = extend(options || {}, {
-            base64 : true,
-            compression : "STORE",
-            type : "base64"
-         });
-
-         JSZip.utils.checkSupport(options.type);
-
-         var zipData = [], localDirLength = 0, centralDirLength = 0, writer, i;
-
-
-         // first, generate all the zip parts.
-         for (var name in this.files) {
-            if ( !this.files.hasOwnProperty(name) ) { continue; }
-            var file = this.files[name];
-
-            var compressionName = file.compression || options.compression.toUpperCase();
-            var compression = JSZip.compressions[compressionName];
-            if (!compression) {
-               throw new Error(compressionName + " is not a valid compression method !");
-            }
-
-            var compressedObject = generateCompressedObjectFrom.call(this, file, compression);
-
-            var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength);
-            localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize;
-            centralDirLength += zipPart.dirRecord.length;
-            zipData.push(zipPart);
-         }
-
-         var dirEnd = "";
-
-         // end of central dir signature
-         dirEnd = JSZip.signature.CENTRAL_DIRECTORY_END +
-         // number of this disk
-         "\x00\x00" +
-         // number of the disk with the start of the central directory
-         "\x00\x00" +
-         // total number of entries in the central directory on this disk
-         decToHex(zipData.length, 2) +
-         // total number of entries in the central directory
-         decToHex(zipData.length, 2) +
-         // size of the central directory   4 bytes
-         decToHex(centralDirLength, 4) +
-         // offset of start of central directory with respect to the starting disk number
-         decToHex(localDirLength, 4) +
-         // .ZIP file comment length
-         "\x00\x00";
-
-
-         // we have all the parts (and the total length)
-         // time to create a writer !
-         switch(options.type.toLowerCase()) {
-            case "uint8array" :
-            case "arraybuffer" :
-            case "blob" :
-            case "nodebuffer" :
-               writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);
-               break;
-            case "base64" :
-            default : // case "string" :
-               writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);
-               break;
-         }
-
-         for (i = 0; i < zipData.length; i++) {
-            writer.append(zipData[i].fileRecord);
-            writer.append(zipData[i].compressedObject.compressedContent);
-         }
-         for (i = 0; i < zipData.length; i++) {
-            writer.append(zipData[i].dirRecord);
-         }
-
-         writer.append(dirEnd);
-
-         var zip = writer.finalize();
-
-
-
-         switch(options.type.toLowerCase()) {
-            // case "zip is an Uint8Array"
-            case "uint8array" :
-            case "arraybuffer" :
-            case "nodebuffer" :
-               return JSZip.utils.transformTo(options.type.toLowerCase(), zip);
-            case "blob" :
-               return JSZip.utils.arrayBuffer2Blob(JSZip.utils.transformTo("arraybuffer", zip));
-
-            // case "zip is a string"
-            case "base64" :
-               return (options.base64) ? JSZip.base64.encode(zip) : zip;
-            default : // case "string" :
-               return zip;
-         }
-      },
-
-      /**
-       *
-       *  Javascript crc32
-       *  http://www.webtoolkit.info/
-       *
-       */
-      crc32 : function crc32(input, crc) {
-         if (typeof input === "undefined" || !input.length) {
-            return 0;
-         }
-
-         var isArray = JSZip.utils.getTypeOf(input) !== "string";
-
-         var table = [
-            0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
-            0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
-            0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
-            0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
-            0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
-            0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
-            0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
-            0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
-            0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
-            0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
-            0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
-            0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
-            0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
-            0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
-            0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
-            0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
-            0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
-            0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
-            0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
-            0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
-            0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
-            0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
-            0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
-            0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
-            0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
-            0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
-            0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
-            0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
-            0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
-            0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
-            0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
-            0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
-            0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
-            0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
-            0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
-            0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
-            0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
-            0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
-            0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
-            0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
-            0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
-            0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
-            0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
-            0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
-            0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
-            0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
-            0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
-            0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
-            0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
-            0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
-            0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
-            0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
-            0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
-            0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
-            0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
-            0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
-            0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
-            0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
-            0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
-            0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
-            0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
-            0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
-            0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
-            0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
-         ];
-
-         if (typeof(crc) == "undefined") { crc = 0; }
-         var x = 0;
-         var y = 0;
-         var byte = 0;
-
-         crc = crc ^ (-1);
-         for( var i = 0, iTop = input.length; i < iTop; i++ ) {
-            byte = isArray ? input[i] : input.charCodeAt(i);
-            y = ( crc ^ byte ) & 0xFF;
-            x = table[y];
-            crc = ( crc >>> 8 ) ^ x;
-         }
-
-         return crc ^ (-1);
-      },
-
-      // Inspired by http://my.opera.com/GreyWyvern/blog/show.dml/1725165
-      clone : function() {
-         var newObj = new JSZip();
-         for (var i in this) {
-            if (typeof this[i] !== "function") {
-               newObj[i] = this[i];
-            }
-         }
-         return newObj;
-      },
-
-
-      /**
-       * http://www.webtoolkit.info/javascript-utf8.html
-       */
-      utf8encode : function (string) {
-         // TextEncoder + Uint8Array to binary string is faster than checking every bytes on long strings.
-         // http://jsperf.com/utf8encode-vs-textencoder
-         // On short strings (file names for example), the TextEncoder API is (currently) slower.
-         if (JSZip.support.uint8array && typeof TextEncoder === "function") {
-            var u8 = TextEncoder("utf-8").encode(string);
-            return JSZip.utils.transformTo("string", u8);
-         }
-         if (JSZip.support.nodebuffer) {
-            return JSZip.utils.transformTo("string", new Buffer(string, "utf-8"));
-         }
-
-         // array.join may be slower than string concatenation but generates less objects (less time spent garbage collecting).
-         // See also http://jsperf.com/array-direct-assignment-vs-push/31
-         var result = [], resIndex = 0;
-
-         for (var n = 0; n < string.length; n++) {
-
-            var c = string.charCodeAt(n);
-
-            if (c < 128) {
-               result[resIndex++] = String.fromCharCode(c);
-            } else if ((c > 127) && (c < 2048)) {
-               result[resIndex++] = String.fromCharCode((c >> 6) | 192);
-               result[resIndex++] = String.fromCharCode((c & 63) | 128);
-            } else {
-               result[resIndex++] = String.fromCharCode((c >> 12) | 224);
-               result[resIndex++] = String.fromCharCode(((c >> 6) & 63) | 128);
-               result[resIndex++] = String.fromCharCode((c & 63) | 128);
-            }
-
-         }
-
-         return result.join("");
-      },
-
-      /**
-       * http://www.webtoolkit.info/javascript-utf8.html
-       */
-      utf8decode : function (input) {
-         var result = [], resIndex = 0;
-         var type = JSZip.utils.getTypeOf(input);
-         var isArray = type !== "string";
-         var i = 0;
-         var c = 0, c1 = 0, c2 = 0, c3 = 0;
-
-         // check if we can use the TextDecoder API
-         // see http://encoding.spec.whatwg.org/#api
-         if (JSZip.support.uint8array && typeof TextDecoder === "function") {
-            return TextDecoder("utf-8").decode(
-               JSZip.utils.transformTo("uint8array", input)
-            );
-         }
-         if (JSZip.support.nodebuffer) {
-            return JSZip.utils.transformTo("nodebuffer", input).toString("utf-8");
-         }
-
-         while ( i < input.length ) {
-
-            c = isArray ? input[i] : input.charCodeAt(i);
-
-            if (c < 128) {
-               result[resIndex++] = String.fromCharCode(c);
-               i++;
-            } else if ((c > 191) && (c < 224)) {
-               c2 = isArray ? input[i+1] : input.charCodeAt(i+1);
-               result[resIndex++] = String.fromCharCode(((c & 31) << 6) | (c2 & 63));
-               i += 2;
-            } else {
-               c2 = isArray ? input[i+1] : input.charCodeAt(i+1);
-               c3 = isArray ? input[i+2] : input.charCodeAt(i+2);
-               result[resIndex++] = String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
-               i += 3;
-            }
-
-         }
-
-         return result.join("");
-      }
-   };
-}());
-
-/*
- * Compression methods
- * This object is filled in as follow :
- * name : {
- *    magic // the 2 bytes indentifying the compression method
- *    compress // function, take the uncompressed content and return it compressed.
- *    uncompress // function, take the compressed content and return it uncompressed.
- *    compressInputType // string, the type accepted by the compress method. null to accept everything.
- *    uncompressInputType // string, the type accepted by the uncompress method. null to accept everything.
- * }
- *
- * STORE is the default compression method, so it's included in this file.
- * Other methods should go to separated files : the user wants modularity.
- */
-JSZip.compressions = {
-   "STORE" : {
-      magic : "\x00\x00",
-      compress : function (content) {
-         return content; // no compression
-      },
-      uncompress : function (content) {
-         return content; // no compression
-      },
-      compressInputType : null,
-      uncompressInputType : null
-   }
-};
-
-/*
- * List features that require a modern browser, and if the current browser support them.
- */
-JSZip.support = {
-   // contains true if JSZip can read/generate ArrayBuffer, false otherwise.
-   arraybuffer : (function(){
-      return typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
-   })(),
-   // contains true if JSZip can read/generate nodejs Buffer, false otherwise.
-   nodebuffer : (function(){
-      return typeof Buffer !== "undefined";
-   })(),
-   // contains true if JSZip can read/generate Uint8Array, false otherwise.
-   uint8array : (function(){
-      return typeof Uint8Array !== "undefined";
-   })(),
-   // contains true if JSZip can read/generate Blob, false otherwise.
-   blob : (function(){
-      // the spec started with BlobBuilder then replaced it with a construtor for Blob.
-      // Result : we have browsers that :
-      // * know the BlobBuilder (but with prefix)
-      // * know the Blob constructor
-      // * know about Blob but not about how to build them
-      // About the "=== 0" test : if given the wrong type, it may be converted to a string.
-      // Instead of an empty content, we will get "[object Uint8Array]" for example.
-      if (typeof ArrayBuffer === "undefined") {
-         return false;
-      }
-      var buffer = new ArrayBuffer(0);
-      try {
-         return new Blob([buffer], { type: "application/zip" }).size === 0;
-      }
-      catch(e) {}
-
-      try {
-         var builder = new (window.BlobBuilder || window.WebKitBlobBuilder ||
-                            window.MozBlobBuilder || window.MSBlobBuilder)();
-         builder.append(buffer);
-         return builder.getBlob('application/zip').size === 0;
-      }
-      catch(e) {}
-
-      return false;
-   })()
-};
-
-(function () {
-   JSZip.utils = {
-      /**
-       * Convert a string to a "binary string" : a string containing only char codes between 0 and 255.
-       * @param {string} str the string to transform.
-       * @return {String} the binary string.
-       */
-      string2binary : function (str) {
-         var result = "";
-         for (var i = 0; i < str.length; i++) {
-            result += String.fromCharCode(str.charCodeAt(i) & 0xff);
-         }
-         return result;
-      },
-      /**
-       * Create a Uint8Array from the string.
-       * @param {string} str the string to transform.
-       * @return {Uint8Array} the typed array.
-       * @throws {Error} an Error if the browser doesn't support the requested feature.
-       * @deprecated : use JSZip.utils.transformTo instead.
-       */
-      string2Uint8Array : function (str) {
-         return JSZip.utils.transformTo("uint8array", str);
-      },
-
-      /**
-       * Create a string from the Uint8Array.
-       * @param {Uint8Array} array the array to transform.
-       * @return {string} the string.
-       * @throws {Error} an Error if the browser doesn't support the requested feature.
-       * @deprecated : use JSZip.utils.transformTo instead.
-       */
-      uint8Array2String : function (array) {
-         return JSZip.utils.transformTo("string", array);
-      },
-      /**
-       * Create a blob from the given ArrayBuffer.
-       * @param {ArrayBuffer} buffer the buffer to transform.
-       * @return {Blob} the result.
-       * @throws {Error} an Error if the browser doesn't support the requested feature.
-       */
-      arrayBuffer2Blob : function (buffer) {
-         JSZip.utils.checkSupport("blob");
-
-         try {
-            // Blob constructor
-            return new Blob([buffer], { type: "application/zip" });
-         }
-         catch(e) {}
-
-         try {
-            // deprecated, browser only, old way
-            var builder = new (window.BlobBuilder || window.WebKitBlobBuilder ||
-                               window.MozBlobBuilder || window.MSBlobBuilder)();
-            builder.append(buffer);
-            return builder.getBlob('application/zip');
-         }
-         catch(e) {}
-
-         // well, fuck ?!
-         throw new Error("Bug : can't construct the Blob.");
-      },
-      /**
-       * Create a blob from the given string.
-       * @param {string} str the string to transform.
-       * @return {Blob} the result.
-       * @throws {Error} an Error if the browser doesn't support the requested feature.
-       */
-      string2Blob : function (str) {
-         var buffer = JSZip.utils.transformTo("arraybuffer", str);
-         return JSZip.utils.arrayBuffer2Blob(buffer);
-      }
-   };
-
-   /**
-    * The identity function.
-    * @param {Object} input the input.
-    * @return {Object} the same input.
-    */
-   function identity(input) {
-      return input;
-   };
-
-   /**
-    * Fill in an array with a string.
-    * @param {String} str the string to use.
-    * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).
-    * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.
-    */
-   function stringToArrayLike(str, array) {
-      for (var i = 0; i < str.length; ++i) {
-         array[i] = str.charCodeAt(i) & 0xFF;
-      }
-      return array;
-   };
-
-   /**
-    * Transform an array-like object to a string.
-    * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
-    * @return {String} the result.
-    */
-   function arrayLikeToString(array) {
-      // Performances notes :
-      // --------------------
-      // String.fromCharCode.apply(null, array) is the fastest, see
-      // see http://jsperf.com/converting-a-uint8array-to-a-string/2
-      // but the stack is limited (and we can get huge arrays !).
-      //
-      // result += String.fromCharCode(array[i]); generate too many strings !
-      //
-      // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2
-      var chunk = 65536;
-      var result = [], len = array.length, type = JSZip.utils.getTypeOf(array), k = 0;
-
-      while (k < len && chunk > 1) {
-         try {
-            if (type === "array" || type === "nodebuffer") {
-               result.push(String.fromCharCode.apply(null, array.slice(k, Math.max(k + chunk, len))));
-            } else {
-               result.push(String.fromCharCode.apply(null, array.subarray(k, k + chunk)));
-            }
-            k += chunk;
-         } catch (e) {
-            chunk = Math.floor(chunk / 2);
-         }
-      }
-      return result.join("");
-   };
-
-   /**
-    * Copy the data from an array-like to an other array-like.
-    * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.
-    * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.
-    * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.
-    */
-   function arrayLikeToArrayLike(arrayFrom, arrayTo) {
-      for(var i = 0; i < arrayFrom.length; i++) {
-         arrayTo[i] = arrayFrom[i];
-      }
-      return arrayTo;
-   };
-
-   // a matrix containing functions to transform everything into everything.
-   var transform = {};
-
-   // string to ?
-   transform["string"] = {
-      "string" : identity,
-      "array" : function (input) {
-         return stringToArrayLike(input, new Array(input.length));
-      },
-      "arraybuffer" : function (input) {
-         return transform["string"]["uint8array"](input).buffer;
-      },
-      "uint8array" : function (input) {
-         return stringToArrayLike(input, new Uint8Array(input.length));
-      },
-      "nodebuffer" : function (input) {
-         return stringToArrayLike(input, new Buffer(input.length));
-      }
-   };
-
-   // array to ?
-   transform["array"] = {
-      "string" : arrayLikeToString,
-      "array" : identity,
-      "arraybuffer" : function (input) {
-         return (new Uint8Array(input)).buffer;
-      },
-      "uint8array" : function (input) {
-         return new Uint8Array(input);
-      },
-      "nodebuffer" : function (input) {
-         return new Buffer(input);
-      }
-   };
-
-   // arraybuffer to ?
-   transform["arraybuffer"] = {
-      "string" : function (input) {
-         return arrayLikeToString(new Uint8Array(input));
-      },
-      "array" : function (input) {
-         return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
-      },
-      "arraybuffer" : identity,
-      "uint8array" : function (input) {
-         return new Uint8Array(input);
-      },
-      "nodebuffer" : function (input) {
-         return new Buffer(new Uint8Array(input));
-      }
-   };
-
-   // uint8array to ?
-   transform["uint8array"] = {
-      "string" : arrayLikeToString,
-      "array" : function (input) {
-         return arrayLikeToArrayLike(input, new Array(input.length));
-      },
-      "arraybuffer" : function (input) {
-         return input.buffer;
-      },
-      "uint8array" : identity,
-      "nodebuffer" : function(input) {
-         return new Buffer(input);
-      }
-   };
-
-   // nodebuffer to ?
-   transform["nodebuffer"] = {
-      "string" : arrayLikeToString,
-      "array" : function (input) {
-         return arrayLikeToArrayLike(input, new Array(input.length));
-      },
-      "arraybuffer" : function (input) {
-         return transform["nodebuffer"]["uint8array"](input).buffer;
-      },
-      "uint8array" : function (input) {
-         return arrayLikeToArrayLike(input, new Uint8Array(input.length));
-      },
-      "nodebuffer" : identity
-   };
-
-   /**
-    * Transform an input into any type.
-    * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.
-    * If no output type is specified, the unmodified input will be returned.
-    * @param {String} outputType the output type.
-    * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.
-    * @throws {Error} an Error if the browser doesn't support the requested output type.
-    */
-   JSZip.utils.transformTo = function (outputType, input) {
-      if (!input) {
-         // undefined, null, etc
-         // an empty string won't harm.
-         input = "";
-      }
-      if (!outputType) {
-         return input;
-      }
-      JSZip.utils.checkSupport(outputType);
-      var inputType = JSZip.utils.getTypeOf(input);
-      var result = transform[inputType][outputType](input);
-      return result;
-   };
-
-   /**
-    * Return the type of the input.
-    * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.
-    * @param {Object} input the input to identify.
-    * @return {String} the (lowercase) type of the input.
-    */
-   JSZip.utils.getTypeOf = function (input) {
-      if (typeof input === "string") {
-         return "string";
-      }
-      if (input instanceof Array) {
-         return "array";
-      }
-      if (JSZip.support.nodebuffer && Buffer.isBuffer(input)) {
-         return "nodebuffer";
-      }
-      if (JSZip.support.uint8array && input instanceof Uint8Array) {
-         return "uint8array";
-      }
-      if (JSZip.support.arraybuffer && input instanceof ArrayBuffer) {
-         return "arraybuffer";
-      }
-   };
-
-   /**
-    * Throw an exception if the type is not supported.
-    * @param {String} type the type to check.
-    * @throws {Error} an Error if the browser doesn't support the requested type.
-    */
-   JSZip.utils.checkSupport = function (type) {
-      var supported = true;
-      switch (type.toLowerCase()) {
-         case "uint8array":
-            supported = JSZip.support.uint8array;
-         break;
-         case "arraybuffer":
-            supported = JSZip.support.arraybuffer;
-         break;
-         case "nodebuffer":
-            supported = JSZip.support.nodebuffer;
-         break;
-         case "blob":
-            supported = JSZip.support.blob;
-         break;
-      }
-      if (!supported) {
-         throw new Error(type + " is not supported by this browser");
-      }
-   };
-
-
-})();
-
-(function (){
-   /**
-    * Represents an entry in the zip.
-    * The content may or may not be compressed.
-    * @constructor
-    */
-   JSZip.CompressedObject = function () {
-         this.compressedSize = 0;
-         this.uncompressedSize = 0;
-         this.crc32 = 0;
-         this.compressionMethod = null;
-         this.compressedContent = null;
-   };
-
-   JSZip.CompressedObject.prototype = {
-      /**
-       * Return the decompressed content in an unspecified format.
-       * The format will depend on the decompressor.
-       * @return {Object} the decompressed content.
-       */
-      getContent : function () {
-         return null; // see implementation
-      },
-      /**
-       * Return the compressed content in an unspecified format.
-       * The format will depend on the compressed conten source.
-       * @return {Object} the compressed content.
-       */
-      getCompressedContent : function () {
-         return null; // see implementation
-      }
-   };
-})();
-
-/**
- *
- *  Base64 encode / decode
- *  http://www.webtoolkit.info/
- *
- *  Hacked so that it doesn't utf8 en/decode everything
- **/
-JSZip.base64 = (function() {
-   // private property
-   var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
-
-   return {
-      // public method for encoding
-      encode : function(input, utf8) {
-         var output = "";
-         var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
-         var i = 0;
-
-         while (i < input.length) {
-
-            chr1 = input.charCodeAt(i++);
-            chr2 = input.charCodeAt(i++);
-            chr3 = input.charCodeAt(i++);
-
-            enc1 = chr1 >> 2;
-            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
-            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
-            enc4 = chr3 & 63;
-
-            if (isNaN(chr2)) {
-               enc3 = enc4 = 64;
-            } else if (isNaN(chr3)) {
-               enc4 = 64;
-            }
-
-            output = output +
-               _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
-               _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
-
-         }
-
-         return output;
-      },
-
-      // public method for decoding
-      decode : function(input, utf8) {
-         var output = "";
-         var chr1, chr2, chr3;
-         var enc1, enc2, enc3, enc4;
-         var i = 0;
-
-         input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
-
-         while (i < input.length) {
-
-            enc1 = _keyStr.indexOf(input.charAt(i++));
-            enc2 = _keyStr.indexOf(input.charAt(i++));
-            enc3 = _keyStr.indexOf(input.charAt(i++));
-            enc4 = _keyStr.indexOf(input.charAt(i++));
-
-            chr1 = (enc1 << 2) | (enc2 >> 4);
-            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
-            chr3 = ((enc3 & 3) << 6) | enc4;
-
-            output = output + String.fromCharCode(chr1);
-
-            if (enc3 != 64) {
-               output = output + String.fromCharCode(chr2);
-            }
-            if (enc4 != 64) {
-               output = output + String.fromCharCode(chr3);
-            }
-
-         }
-
-         return output;
-
-      }
-   };
-}());
-
-// enforcing Stuk's coding style
-// vim: set shiftwidth=3 softtabstop=3:
\ No newline at end of file


[38/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/holder.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/holder.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/holder.js
deleted file mode 100644
index f717054..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/holder.js
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
-
-Holder - 2.0 - client side image placeholders
-(c) 2012-2013 Ivan Malopinsky / http://imsky.co
-
-Provided under the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0
-Commercial use requires attribution.
-
-*/
-
-var Holder = Holder || {};
-(function (app, win) {
-
-var preempted = false,
-fallback = false,
-canvas = document.createElement('canvas');
-
-//getElementsByClassName polyfill
-document.getElementsByClassName||(document.getElementsByClassName=function(e){var t=document,n,r,i,s=[];if(t.querySelectorAll)return t.querySelectorAll("."+e);if(t.evaluate){r=".//*[contains(concat(' ', @class, ' '), ' "+e+" ')]",n=t.evaluate(r,t,null,0,null);while(i=n.iterateNext())s.push(i)}else{n=t.getElementsByTagName("*"),r=new RegExp("(^|\\s)"+e+"(\\s|$)");for(i=0;i<n.length;i++)r.test(n[i].className)&&s.push(n[i])}return s})
-
-//getComputedStyle polyfill
-window.getComputedStyle||(window.getComputedStyle=function(e,t){return this.el=e,this.getPropertyValue=function(t){var n=/(\-([a-z]){1})/g;return t=="float"&&(t="styleFloat"),n.test(t)&&(t=t.replace(n,function(){return arguments[2].toUpperCase()})),e.currentStyle[t]?e.currentStyle[t]:null},this})
-
-//http://javascript.nwbox.com/ContentLoaded by Diego Perini with modifications
-function contentLoaded(n,t){var l="complete",s="readystatechange",u=!1,h=u,c=!0,i=n.document,a=i.documentElement,e=i.addEventListener?"addEventListener":"attachEvent",v=i.addEventListener?"removeEventListener":"detachEvent",f=i.addEventListener?"":"on",r=function(e){(e.type!=s||i.readyState==l)&&((e.type=="load"?n:i)[v](f+e.type,r,u),!h&&(h=!0)&&t.call(n,null))},o=function(){try{a.doScroll("left")}catch(n){setTimeout(o,50);return}r("poll")};if(i.readyState==l)t.call(n,"lazy");else{if(i.createEventObject&&a.doScroll){try{c=!n.frameElement}catch(y){}c&&o()}i[e](f+"DOMContentLoaded",r,u),i[e](f+s,r,u),n[e](f+"load",r,u)}};
-
-//https://gist.github.com/991057 by Jed Schmidt with modifications
-function selector(a){
-	a=a.match(/^(\W)?(.*)/);var b=document["getElement"+(a[1]?a[1]=="#"?"ById":"sByClassName":"sByTagName")](a[2]);
-	var ret=[];	b!=null&&(b.length?ret=b:b.length==0?ret=b:ret=[b]);	return ret;
-}
-
-//shallow object property extend
-function extend(a,b){var c={};for(var d in a)c[d]=a[d];for(var e in b)c[e]=b[e];return c}
-
-//hasOwnProperty polyfill
-if (!Object.prototype.hasOwnProperty)
-	Object.prototype.hasOwnProperty = function(prop) {
-		var proto = this.__proto__ || this.constructor.prototype;
-		return (prop in this) && (!(prop in proto) || proto[prop] !== this[prop]);
-	}
-
-function text_size(width, height, template) {
-	height = parseInt(height,10);
-	width = parseInt(width,10);
-	var bigSide = Math.max(height, width)
-	var smallSide = Math.min(height, width)
-	var scale = 1 / 12;
-	var newHeight = Math.min(smallSide * 0.75, 0.75 * bigSide * scale);
-	return {
-		height: Math.round(Math.max(template.size, newHeight))
-	}
-}
-
-function draw(ctx, dimensions, template, ratio) {
-	var ts = text_size(dimensions.width, dimensions.height, template);
-	var text_height = ts.height;
-	var width = dimensions.width * ratio,
-		height = dimensions.height * ratio;
-	var font = template.font ? template.font : "sans-serif";
-	canvas.width = width;
-	canvas.height = height;
-	ctx.textAlign = "center";
-	ctx.textBaseline = "middle";
-	ctx.fillStyle = template.background;
-	ctx.fillRect(0, 0, width, height);
-	ctx.fillStyle = template.foreground;
-	ctx.font = "bold " + text_height + "px " + font;
-	var text = template.text ? template.text : (Math.floor(dimensions.width) + "x" + Math.floor(dimensions.height));
-	var text_width = ctx.measureText(text).width;
-	if (text_width / width >= 0.75) {
-		text_height = Math.floor(text_height * 0.75 * (width/text_width));
-	}
-	//Resetting font size if necessary
-	ctx.font = "bold " + (text_height * ratio) + "px " + font;
-	ctx.fillText(text, (width / 2), (height / 2), width);
-	return canvas.toDataURL("image/png");
-}
-
-function render(mode, el, holder, src) {
-	var dimensions = holder.dimensions,
-		theme = holder.theme,
-		text = holder.text ? decodeURIComponent(holder.text) : holder.text;
-	var dimensions_caption = dimensions.width + "x" + dimensions.height;
-	theme = (text ? extend(theme, {
-		text: text
-	}) : theme);
-	theme = (holder.font ? extend(theme, {
-		font: holder.font
-	}) : theme);
-	if (mode == "image") {
-		el.setAttribute("data-src", src);
-		el.setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption);
-		if (fallback || !holder.auto) {
-			el.style.width = dimensions.width + "px";
-			el.style.height = dimensions.height + "px";
-		}
-		if (fallback) {
-			el.style.backgroundColor = theme.background;
-		} else {
-			el.setAttribute("src", draw(ctx, dimensions, theme, ratio));
-		}
-	} else if (mode == "background") {
-		if (!fallback) {
-			el.style.backgroundImage = "url(" + draw(ctx, dimensions, theme, ratio) + ")";
-			el.style.backgroundSize = dimensions.width + "px " + dimensions.height + "px";
-		}
-	} else if (mode == "fluid") {
-		el.setAttribute("data-src", src);
-		el.setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption);
-		if (dimensions.height.substr(-1) == "%") {
-			el.style.height = dimensions.height
-		} else {
-			el.style.height = dimensions.height + "px"
-		}
-		if (dimensions.width.substr(-1) == "%") {
-			el.style.width = dimensions.width
-		} else {
-			el.style.width = dimensions.width + "px"
-		}
-		if (el.style.display == "inline" || el.style.display == "") {
-			el.style.display = "block";
-		}
-		if (fallback) {
-			el.style.backgroundColor = theme.background;
-		} else {
-			el.holderData = holder;
-			fluid_images.push(el);
-			fluid_update(el);
-		}
-	}
-};
-
-function fluid_update(element) {
-	var images;
-	if (element.nodeType == null) {
-		images = fluid_images;
-	} else {
-		images = [element]
-	}
-	for (i in images) {
-		var el = images[i]
-		if (el.holderData) {
-			var holder = el.holderData;
-			el.setAttribute("src", draw(ctx, {
-				height: el.clientHeight,
-				width: el.clientWidth
-			}, holder.theme, ratio));
-		}
-	}
-}
-
-function parse_flags(flags, options) {
-
-	var ret = {
-		theme: settings.themes.gray
-	}, render = false;
-
-	for (sl = flags.length, j = 0; j < sl; j++) {
-		var flag = flags[j];
-		if (app.flags.dimensions.match(flag)) {
-			render = true;
-			ret.dimensions = app.flags.dimensions.output(flag);
-		} else if (app.flags.fluid.match(flag)) {
-			render = true;
-			ret.dimensions = app.flags.fluid.output(flag);
-			ret.fluid = true;
-		} else if (app.flags.colors.match(flag)) {
-			ret.theme = app.flags.colors.output(flag);
-		} else if (options.themes[flag]) {
-			//If a theme is specified, it will override custom colors
-			ret.theme = options.themes[flag];
-		} else if (app.flags.text.match(flag)) {
-			ret.text = app.flags.text.output(flag);
-		} else if (app.flags.font.match(flag)) {
-			ret.font = app.flags.font.output(flag);
-		} else if (app.flags.auto.match(flag)) {
-			ret.auto = true;
-		}
-	}
-
-	return render ? ret : false;
-
-};
-
-
-
-if (!canvas.getContext) {
-	fallback = true;
-} else {
-	if (canvas.toDataURL("image/png")
-		.indexOf("data:image/png") < 0) {
-		//Android doesn't support data URI
-		fallback = true;
-	} else {
-		var ctx = canvas.getContext("2d");
-	}
-}
-
-var dpr = 1, bsr = 1;
-	
-if(!fallback){
-    dpr = window.devicePixelRatio || 1,
-    bsr = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;
-}
-
-var ratio = dpr / bsr;
-
-var fluid_images = [];
-
-var settings = {
-	domain: "holder.js",
-	images: "img",
-	bgnodes: ".holderjs",
-	themes: {
-		"gray": {
-			background: "#eee",
-			foreground: "#aaa",
-			size: 12
-		},
-		"social": {
-			background: "#3a5a97",
-			foreground: "#fff",
-			size: 12
-		},
-		"industrial": {
-			background: "#434A52",
-			foreground: "#C2F200",
-			size: 12
-		}
-	},
-	stylesheet: ".holderjs-fluid {font-size:16px;font-weight:bold;text-align:center;font-family:sans-serif;margin:0}"
-};
-
-
-app.flags = {
-	dimensions: {
-		regex: /^(\d+)x(\d+)$/,
-		output: function (val) {
-			var exec = this.regex.exec(val);
-			return {
-				width: +exec[1],
-				height: +exec[2]
-			}
-		}
-	},
-	fluid: {
-		regex: /^([0-9%]+)x([0-9%]+)$/,
-		output: function (val) {
-			var exec = this.regex.exec(val);
-			return {
-				width: exec[1],
-				height: exec[2]
-			}
-		}
-	},
-	colors: {
-		regex: /#([0-9a-f]{3,})\:#([0-9a-f]{3,})/i,
-		output: function (val) {
-			var exec = this.regex.exec(val);
-			return {
-				size: settings.themes.gray.size,
-				foreground: "#" + exec[2],
-				background: "#" + exec[1]
-			}
-		}
-	},
-	text: {
-		regex: /text\:(.*)/,
-		output: function (val) {
-			return this.regex.exec(val)[1];
-		}
-	},
-	font: {
-		regex: /font\:(.*)/,
-		output: function (val) {
-			return this.regex.exec(val)[1];
-		}
-	},
-	auto: {
-		regex: /^auto$/
-	}
-}
-
-for (var flag in app.flags) {
-	if (!app.flags.hasOwnProperty(flag)) continue;
-	app.flags[flag].match = function (val) {
-		return val.match(this.regex)
-	}
-}
-
-app.add_theme = function (name, theme) {
-	name != null && theme != null && (settings.themes[name] = theme);
-	return app;
-};
-
-app.add_image = function (src, el) {
-	var node = selector(el);
-	if (node.length) {
-		for (var i = 0, l = node.length; i < l; i++) {
-			var img = document.createElement("img")
-			img.setAttribute("data-src", src);
-			node[i].appendChild(img);
-		}
-	}
-	return app;
-};
-
-app.run = function (o) {
-	var options = extend(settings, o),
-	    images = [], imageNodes = [], bgnodes = [];
-	    
-	if(typeof(options.images) == "string"){
-	    imageNodes = selector(options.images);
-	}
-	else if (window.NodeList && options.images instanceof window.NodeList) {
-		imageNodes = options.images;
-	} else if (window.Node && options.images instanceof window.Node) {
-		imageNodes = [options.images];
-	}
-
-	if(typeof(options.bgnodes) == "string"){
-	    bgnodes = selector(options.bgnodes);
-	} else if (window.NodeList && options.elements instanceof window.NodeList) {
-		bgnodes = options.bgnodes;
-	} else if (window.Node && options.bgnodes instanceof window.Node) {
-		bgnodes = [options.bgnodes];
-	}
-
-	preempted = true;
-
-	for (i = 0, l = imageNodes.length; i < l; i++) images.push(imageNodes[i]);
-
-	var holdercss = document.getElementById("holderjs-style");
-	if (!holdercss) {
-		holdercss = document.createElement("style");
-		holdercss.setAttribute("id", "holderjs-style");
-		holdercss.type = "text/css";
-		document.getElementsByTagName("head")[0].appendChild(holdercss);
-	}
-	
-	if (!options.nocss) {
-	    if (holdercss.styleSheet) {
-		    holdercss.styleSheet.cssText += options.stylesheet;
-	    } else {
-		    holdercss.appendChild(document.createTextNode(options.stylesheet));
-	    }
-	}
-
-	var cssregex = new RegExp(options.domain + "\/(.*?)\"?\\)");
-
-	for (var l = bgnodes.length, i = 0; i < l; i++) {
-		var src = window.getComputedStyle(bgnodes[i], null)
-			.getPropertyValue("background-image");
-		var flags = src.match(cssregex);
-		var bgsrc = bgnodes[i].getAttribute("data-background-src");
-
-		if (flags) {
-			var holder = parse_flags(flags[1].split("/"), options);
-			if (holder) {
-				render("background", bgnodes[i], holder, src);
-			}
-		}
-		else if(bgsrc != null){
-		    var holder = parse_flags(bgsrc.substr(bgsrc.lastIndexOf(options.domain) + options.domain.length + 1)
-				.split("/"), options);
-		    if(holder){
-			render("background", bgnodes[i], holder, src);
-		    }
-		}
-	}
-
-	for (l = images.length, i = 0; i < l; i++) {
-	    
-		var attr_src = attr_data_src = src = null;
-		
-		try{
-		    attr_src = images[i].getAttribute("src");
-		    attr_datasrc = images[i].getAttribute("data-src");
-		}catch(e){}
-				
-		if (attr_datasrc == null && !! attr_src && attr_src.indexOf(options.domain) >= 0) {
-			src = attr_src;
-		} else if ( !! attr_datasrc && attr_datasrc.indexOf(options.domain) >= 0) {
-			src = attr_datasrc;
-		}
-		
-		if (src) {
-			var holder = parse_flags(src.substr(src.lastIndexOf(options.domain) + options.domain.length + 1)
-				.split("/"), options);
-			if (holder) {
-				if (holder.fluid) {
-					render("fluid", images[i], holder, src)
-				} else {
-					render("image", images[i], holder, src);
-				}
-			}
-		}
-	}
-	return app;
-};
-
-contentLoaded(win, function () {
-	if (window.addEventListener) {
-		window.addEventListener("resize", fluid_update, false);
-		window.addEventListener("orientationchange", fluid_update, false);
-	} else {
-		window.attachEvent("onresize", fluid_update)
-	}
-	preempted || app.run();
-});
-
-if (typeof define === "function" && define.amd) {
-	define("Holder", [], function () {
-		return app;
-	});
-}
-
-})(Holder, window);

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/html5shiv.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/html5shiv.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/html5shiv.js
deleted file mode 100644
index 784f221..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/html5shiv.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
-*/
-(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
-a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
-c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
-"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",version:"3.6.2pre",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
-for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);


[31/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/bootstrap.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/bootstrap.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/bootstrap.js
deleted file mode 100644
index 2c64257..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/bootstrap.js
+++ /dev/null
@@ -1,1999 +0,0 @@
-/**
-* bootstrap.js v3.0.0 by @fat and @mdo
-* Copyright 2013 Twitter Inc.
-* http://www.apache.org/licenses/LICENSE-2.0
-*/
-if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
-
-/* ========================================================================
- * Bootstrap: transition.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#transitions
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
-  // ============================================================
-
-  function transitionEnd() {
-    var el = document.createElement('bootstrap')
-
-    var transEndEventNames = {
-      'WebkitTransition' : 'webkitTransitionEnd'
-    , 'MozTransition'    : 'transitionend'
-    , 'OTransition'      : 'oTransitionEnd otransitionend'
-    , 'transition'       : 'transitionend'
-    }
-
-    for (var name in transEndEventNames) {
-      if (el.style[name] !== undefined) {
-        return { end: transEndEventNames[name] }
-      }
-    }
-  }
-
-  // http://blog.alexmaccaw.com/css-transitions
-  $.fn.emulateTransitionEnd = function (duration) {
-    var called = false, $el = this
-    $(this).one($.support.transition.end, function () { called = true })
-    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
-    setTimeout(callback, duration)
-    return this
-  }
-
-  $(function () {
-    $.support.transition = transitionEnd()
-  })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: alert.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#alerts
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // ALERT CLASS DEFINITION
-  // ======================
-
-  var dismiss = '[data-dismiss="alert"]'
-  var Alert   = function (el) {
-    $(el).on('click', dismiss, this.close)
-  }
-
-  Alert.prototype.close = function (e) {
-    var $this    = $(this)
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    var $parent = $(selector)
-
-    if (e) e.preventDefault()
-
-    if (!$parent.length) {
-      $parent = $this.hasClass('alert') ? $this : $this.parent()
-    }
-
-    $parent.trigger(e = $.Event('close.bs.alert'))
-
-    if (e.isDefaultPrevented()) return
-
-    $parent.removeClass('in')
-
-    function removeElement() {
-      $parent.trigger('closed.bs.alert').remove()
-    }
-
-    $.support.transition && $parent.hasClass('fade') ?
-      $parent
-        .one($.support.transition.end, removeElement)
-        .emulateTransitionEnd(150) :
-      removeElement()
-  }
-
-
-  // ALERT PLUGIN DEFINITION
-  // =======================
-
-  var old = $.fn.alert
-
-  $.fn.alert = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.alert')
-
-      if (!data) $this.data('bs.alert', (data = new Alert(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  $.fn.alert.Constructor = Alert
-
-
-  // ALERT NO CONFLICT
-  // =================
-
-  $.fn.alert.noConflict = function () {
-    $.fn.alert = old
-    return this
-  }
-
-
-  // ALERT DATA-API
-  // ==============
-
-  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: button.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#buttons
- * ========================================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // BUTTON PUBLIC CLASS DEFINITION
-  // ==============================
-
-  var Button = function (element, options) {
-    this.$element = $(element)
-    this.options  = $.extend({}, Button.DEFAULTS, options)
-  }
-
-  Button.DEFAULTS = {
-    loadingText: 'loading...'
-  }
-
-  Button.prototype.setState = function (state) {
-    var d    = 'disabled'
-    var $el  = this.$element
-    var val  = $el.is('input') ? 'val' : 'html'
-    var data = $el.data()
-
-    state = state + 'Text'
-
-    if (!data.resetText) $el.data('resetText', $el[val]())
-
-    $el[val](data[state] || this.options[state])
-
-    // push to event loop to allow forms to submit
-    setTimeout(function () {
-      state == 'loadingText' ?
-        $el.addClass(d).attr(d, d) :
-        $el.removeClass(d).removeAttr(d);
-    }, 0)
-  }
-
-  Button.prototype.toggle = function () {
-    var $parent = this.$element.closest('[data-toggle="buttons"]')
-
-    if ($parent.length) {
-      var $input = this.$element.find('input')
-        .prop('checked', !this.$element.hasClass('active'))
-        .trigger('change')
-      if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active')
-    }
-
-    this.$element.toggleClass('active')
-  }
-
-
-  // BUTTON PLUGIN DEFINITION
-  // ========================
-
-  var old = $.fn.button
-
-  $.fn.button = function (option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.button')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.button', (data = new Button(this, options)))
-
-      if (option == 'toggle') data.toggle()
-      else if (option) data.setState(option)
-    })
-  }
-
-  $.fn.button.Constructor = Button
-
-
-  // BUTTON NO CONFLICT
-  // ==================
-
-  $.fn.button.noConflict = function () {
-    $.fn.button = old
-    return this
-  }
-
-
-  // BUTTON DATA-API
-  // ===============
-
-  $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
-    var $btn = $(e.target)
-    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
-    $btn.button('toggle')
-    e.preventDefault()
-  })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: carousel.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#carousel
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // CAROUSEL CLASS DEFINITION
-  // =========================
-
-  var Carousel = function (element, options) {
-    this.$element    = $(element)
-    this.$indicators = this.$element.find('.carousel-indicators')
-    this.options     = options
-    this.paused      =
-    this.sliding     =
-    this.interval    =
-    this.$active     =
-    this.$items      = null
-
-    this.options.pause == 'hover' && this.$element
-      .on('mouseenter', $.proxy(this.pause, this))
-      .on('mouseleave', $.proxy(this.cycle, this))
-  }
-
-  Carousel.DEFAULTS = {
-    interval: 5000
-  , pause: 'hover'
-  , wrap: true
-  }
-
-  Carousel.prototype.cycle =  function (e) {
-    e || (this.paused = false)
-
-    this.interval && clearInterval(this.interval)
-
-    this.options.interval
-      && !this.paused
-      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-
-    return this
-  }
-
-  Carousel.prototype.getActiveIndex = function () {
-    this.$active = this.$element.find('.item.active')
-    this.$items  = this.$active.parent().children()
-
-    return this.$items.index(this.$active)
-  }
-
-  Carousel.prototype.to = function (pos) {
-    var that        = this
-    var activeIndex = this.getActiveIndex()
-
-    if (pos > (this.$items.length - 1) || pos < 0) return
-
-    if (this.sliding)       return this.$element.one('slid', function () { that.to(pos) })
-    if (activeIndex == pos) return this.pause().cycle()
-
-    return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
-  }
-
-  Carousel.prototype.pause = function (e) {
-    e || (this.paused = true)
-
-    if (this.$element.find('.next, .prev').length && $.support.transition.end) {
-      this.$element.trigger($.support.transition.end)
-      this.cycle(true)
-    }
-
-    this.interval = clearInterval(this.interval)
-
-    return this
-  }
-
-  Carousel.prototype.next = function () {
-    if (this.sliding) return
-    return this.slide('next')
-  }
-
-  Carousel.prototype.prev = function () {
-    if (this.sliding) return
-    return this.slide('prev')
-  }
-
-  Carousel.prototype.slide = function (type, next) {
-    var $active   = this.$element.find('.item.active')
-    var $next     = next || $active[type]()
-    var isCycling = this.interval
-    var direction = type == 'next' ? 'left' : 'right'
-    var fallback  = type == 'next' ? 'first' : 'last'
-    var that      = this
-
-    if (!$next.length) {
-      if (!this.options.wrap) return
-      $next = this.$element.find('.item')[fallback]()
-    }
-
-    this.sliding = true
-
-    isCycling && this.pause()
-
-    var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
-
-    if ($next.hasClass('active')) return
-
-    if (this.$indicators.length) {
-      this.$indicators.find('.active').removeClass('active')
-      this.$element.one('slid', function () {
-        var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
-        $nextIndicator && $nextIndicator.addClass('active')
-      })
-    }
-
-    if ($.support.transition && this.$element.hasClass('slide')) {
-      this.$element.trigger(e)
-      if (e.isDefaultPrevented()) return
-      $next.addClass(type)
-      $next[0].offsetWidth // force reflow
-      $active.addClass(direction)
-      $next.addClass(direction)
-      $active
-        .one($.support.transition.end, function () {
-          $next.removeClass([type, direction].join(' ')).addClass('active')
-          $active.removeClass(['active', direction].join(' '))
-          that.sliding = false
-          setTimeout(function () { that.$element.trigger('slid') }, 0)
-        })
-        .emulateTransitionEnd(600)
-    } else {
-      this.$element.trigger(e)
-      if (e.isDefaultPrevented()) return
-      $active.removeClass('active')
-      $next.addClass('active')
-      this.sliding = false
-      this.$element.trigger('slid')
-    }
-
-    isCycling && this.cycle()
-
-    return this
-  }
-
-
-  // CAROUSEL PLUGIN DEFINITION
-  // ==========================
-
-  var old = $.fn.carousel
-
-  $.fn.carousel = function (option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.carousel')
-      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
-      var action  = typeof option == 'string' ? option : options.slide
-
-      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
-      if (typeof option == 'number') data.to(option)
-      else if (action) data[action]()
-      else if (options.interval) data.pause().cycle()
-    })
-  }
-
-  $.fn.carousel.Constructor = Carousel
-
-
-  // CAROUSEL NO CONFLICT
-  // ====================
-
-  $.fn.carousel.noConflict = function () {
-    $.fn.carousel = old
-    return this
-  }
-
-
-  // CAROUSEL DATA-API
-  // =================
-
-  $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
-    var $this   = $(this), href
-    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
-    var options = $.extend({}, $target.data(), $this.data())
-    var slideIndex = $this.attr('data-slide-to')
-    if (slideIndex) options.interval = false
-
-    $target.carousel(options)
-
-    if (slideIndex = $this.attr('data-slide-to')) {
-      $target.data('bs.carousel').to(slideIndex)
-    }
-
-    e.preventDefault()
-  })
-
-  $(window).on('load', function () {
-    $('[data-ride="carousel"]').each(function () {
-      var $carousel = $(this)
-      $carousel.carousel($carousel.data())
-    })
-  })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: collapse.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#collapse
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // COLLAPSE PUBLIC CLASS DEFINITION
-  // ================================
-
-  var Collapse = function (element, options) {
-    this.$element      = $(element)
-    this.options       = $.extend({}, Collapse.DEFAULTS, options)
-    this.transitioning = null
-
-    if (this.options.parent) this.$parent = $(this.options.parent)
-    if (this.options.toggle) this.toggle()
-  }
-
-  Collapse.DEFAULTS = {
-    toggle: true
-  }
-
-  Collapse.prototype.dimension = function () {
-    var hasWidth = this.$element.hasClass('width')
-    return hasWidth ? 'width' : 'height'
-  }
-
-  Collapse.prototype.show = function () {
-    if (this.transitioning || this.$element.hasClass('in')) return
-
-    var startEvent = $.Event('show.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    var actives = this.$parent && this.$parent.find('> .panel > .in')
-
-    if (actives && actives.length) {
-      var hasData = actives.data('bs.collapse')
-      if (hasData && hasData.transitioning) return
-      actives.collapse('hide')
-      hasData || actives.data('bs.collapse', null)
-    }
-
-    var dimension = this.dimension()
-
-    this.$element
-      .removeClass('collapse')
-      .addClass('collapsing')
-      [dimension](0)
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.$element
-        .removeClass('collapsing')
-        .addClass('in')
-        [dimension]('auto')
-      this.transitioning = 0
-      this.$element.trigger('shown.bs.collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
-
-    this.$element
-      .one($.support.transition.end, $.proxy(complete, this))
-      .emulateTransitionEnd(350)
-      [dimension](this.$element[0][scrollSize])
-  }
-
-  Collapse.prototype.hide = function () {
-    if (this.transitioning || !this.$element.hasClass('in')) return
-
-    var startEvent = $.Event('hide.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    var dimension = this.dimension()
-
-    this.$element
-      [dimension](this.$element[dimension]())
-      [0].offsetHeight
-
-    this.$element
-      .addClass('collapsing')
-      .removeClass('collapse')
-      .removeClass('in')
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.transitioning = 0
-      this.$element
-        .trigger('hidden.bs.collapse')
-        .removeClass('collapsing')
-        .addClass('collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    this.$element
-      [dimension](0)
-      .one($.support.transition.end, $.proxy(complete, this))
-      .emulateTransitionEnd(350)
-  }
-
-  Collapse.prototype.toggle = function () {
-    this[this.$element.hasClass('in') ? 'hide' : 'show']()
-  }
-
-
-  // COLLAPSE PLUGIN DEFINITION
-  // ==========================
-
-  var old = $.fn.collapse
-
-  $.fn.collapse = function (option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.collapse')
-      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.collapse.Constructor = Collapse
-
-
-  // COLLAPSE NO CONFLICT
-  // ====================
-
-  $.fn.collapse.noConflict = function () {
-    $.fn.collapse = old
-    return this
-  }
-
-
-  // COLLAPSE DATA-API
-  // =================
-
-  $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {
-    var $this   = $(this), href
-    var target  = $this.attr('data-target')
-        || e.preventDefault()
-        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
-    var $target = $(target)
-    var data    = $target.data('bs.collapse')
-    var option  = data ? 'toggle' : $this.data()
-    var parent  = $this.attr('data-parent')
-    var $parent = parent && $(parent)
-
-    if (!data || !data.transitioning) {
-      if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
-      $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
-    }
-
-    $target.collapse(option)
-  })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: dropdown.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#dropdowns
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // DROPDOWN CLASS DEFINITION
-  // =========================
-
-  var backdrop = '.dropdown-backdrop'
-  var toggle   = '[data-toggle=dropdown]'
-  var Dropdown = function (element) {
-    var $el = $(element).on('click.bs.dropdown', this.toggle)
-  }
-
-  Dropdown.prototype.toggle = function (e) {
-    var $this = $(this)
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    clearMenus()
-
-    if (!isActive) {
-      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
-        // if mobile we we use a backdrop because click events don't delegate
-        $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
-      }
-
-      $parent.trigger(e = $.Event('show.bs.dropdown'))
-
-      if (e.isDefaultPrevented()) return
-
-      $parent
-        .toggleClass('open')
-        .trigger('shown.bs.dropdown')
-
-      $this.focus()
-    }
-
-    return false
-  }
-
-  Dropdown.prototype.keydown = function (e) {
-    if (!/(38|40|27)/.test(e.keyCode)) return
-
-    var $this = $(this)
-
-    e.preventDefault()
-    e.stopPropagation()
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    if (!isActive || (isActive && e.keyCode == 27)) {
-      if (e.which == 27) $parent.find(toggle).focus()
-      return $this.click()
-    }
-
-    var $items = $('[role=menu] li:not(.divider):visible a', $parent)
-
-    if (!$items.length) return
-
-    var index = $items.index($items.filter(':focus'))
-
-    if (e.keyCode == 38 && index > 0)                 index--                        // up
-    if (e.keyCode == 40 && index < $items.length - 1) index++                        // down
-    if (!~index)                                      index=0
-
-    $items.eq(index).focus()
-  }
-
-  function clearMenus() {
-    $(backdrop).remove()
-    $(toggle).each(function (e) {
-      var $parent = getParent($(this))
-      if (!$parent.hasClass('open')) return
-      $parent.trigger(e = $.Event('hide.bs.dropdown'))
-      if (e.isDefaultPrevented()) return
-      $parent.removeClass('open').trigger('hidden.bs.dropdown')
-    })
-  }
-
-  function getParent($this) {
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-    }
-
-    var $parent = selector && $(selector)
-
-    return $parent && $parent.length ? $parent : $this.parent()
-  }
-
-
-  // DROPDOWN PLUGIN DEFINITION
-  // ==========================
-
-  var old = $.fn.dropdown
-
-  $.fn.dropdown = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('dropdown')
-
-      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  $.fn.dropdown.Constructor = Dropdown
-
-
-  // DROPDOWN NO CONFLICT
-  // ====================
-
-  $.fn.dropdown.noConflict = function () {
-    $.fn.dropdown = old
-    return this
-  }
-
-
-  // APPLY TO STANDARD DROPDOWN ELEMENTS
-  // ===================================
-
-  $(document)
-    .on('click.bs.dropdown.data-api', clearMenus)
-    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
-    .on('click.bs.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
-    .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: modal.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#modals
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // MODAL CLASS DEFINITION
-  // ======================
-
-  var Modal = function (element, options) {
-    this.options   = options
-    this.$element  = $(element)
-    this.$backdrop =
-    this.isShown   = null
-
-    if (this.options.remote) this.$element.load(this.options.remote)
-  }
-
-  Modal.DEFAULTS = {
-      backdrop: true
-    , keyboard: true
-    , show: true
-  }
-
-  Modal.prototype.toggle = function (_relatedTarget) {
-    return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
-  }
-
-  Modal.prototype.show = function (_relatedTarget) {
-    var that = this
-    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
-
-    this.$element.trigger(e)
-
-    if (this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = true
-
-    this.escape()
-
-    this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
-
-    this.backdrop(function () {
-      var transition = $.support.transition && that.$element.hasClass('fade')
-
-      if (!that.$element.parent().length) {
-        that.$element.appendTo(document.body) // don't move modals dom position
-      }
-
-      that.$element.show()
-
-      if (transition) {
-        that.$element[0].offsetWidth // force reflow
-      }
-
-      that.$element
-        .addClass('in')
-        .attr('aria-hidden', false)
-
-      that.enforceFocus()
-
-      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
-
-      transition ?
-        that.$element.find('.modal-dialog') // wait for modal to slide in
-          .one($.support.transition.end, function () {
-            that.$element.focus().trigger(e)
-          })
-          .emulateTransitionEnd(300) :
-        that.$element.focus().trigger(e)
-    })
-  }
-
-  Modal.prototype.hide = function (e) {
-    if (e) e.preventDefault()
-
-    e = $.Event('hide.bs.modal')
-
-    this.$element.trigger(e)
-
-    if (!this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = false
-
-    this.escape()
-
-    $(document).off('focusin.bs.modal')
-
-    this.$element
-      .removeClass('in')
-      .attr('aria-hidden', true)
-      .off('click.dismiss.modal')
-
-    $.support.transition && this.$element.hasClass('fade') ?
-      this.$element
-        .one($.support.transition.end, $.proxy(this.hideModal, this))
-        .emulateTransitionEnd(300) :
-      this.hideModal()
-  }
-
-  Modal.prototype.enforceFocus = function () {
-    $(document)
-      .off('focusin.bs.modal') // guard against infinite focus loop
-      .on('focusin.bs.modal', $.proxy(function (e) {
-        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
-          this.$element.focus()
-        }
-      }, this))
-  }
-
-  Modal.prototype.escape = function () {
-    if (this.isShown && this.options.keyboard) {
-      this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
-        e.which == 27 && this.hide()
-      }, this))
-    } else if (!this.isShown) {
-      this.$element.off('keyup.dismiss.bs.modal')
-    }
-  }
-
-  Modal.prototype.hideModal = function () {
-    var that = this
-    this.$element.hide()
-    this.backdrop(function () {
-      that.removeBackdrop()
-      that.$element.trigger('hidden.bs.modal')
-    })
-  }
-
-  Modal.prototype.removeBackdrop = function () {
-    this.$backdrop && this.$backdrop.remove()
-    this.$backdrop = null
-  }
-
-  Modal.prototype.backdrop = function (callback) {
-    var that    = this
-    var animate = this.$element.hasClass('fade') ? 'fade' : ''
-
-    if (this.isShown && this.options.backdrop) {
-      var doAnimate = $.support.transition && animate
-
-      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
-        .appendTo(document.body)
-
-      this.$element.on('click.dismiss.modal', $.proxy(function (e) {
-        if (e.target !== e.currentTarget) return
-        this.options.backdrop == 'static'
-          ? this.$element[0].focus.call(this.$element[0])
-          : this.hide.call(this)
-      }, this))
-
-      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
-      this.$backdrop.addClass('in')
-
-      if (!callback) return
-
-      doAnimate ?
-        this.$backdrop
-          .one($.support.transition.end, callback)
-          .emulateTransitionEnd(150) :
-        callback()
-
-    } else if (!this.isShown && this.$backdrop) {
-      this.$backdrop.removeClass('in')
-
-      $.support.transition && this.$element.hasClass('fade')?
-        this.$backdrop
-          .one($.support.transition.end, callback)
-          .emulateTransitionEnd(150) :
-        callback()
-
-    } else if (callback) {
-      callback()
-    }
-  }
-
-
-  // MODAL PLUGIN DEFINITION
-  // =======================
-
-  var old = $.fn.modal
-
-  $.fn.modal = function (option, _relatedTarget) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.modal')
-      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
-      if (typeof option == 'string') data[option](_relatedTarget)
-      else if (options.show) data.show(_relatedTarget)
-    })
-  }
-
-  $.fn.modal.Constructor = Modal
-
-
-  // MODAL NO CONFLICT
-  // =================
-
-  $.fn.modal.noConflict = function () {
-    $.fn.modal = old
-    return this
-  }
-
-
-  // MODAL DATA-API
-  // ==============
-
-  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
-    var $this   = $(this)
-    var href    = $this.attr('href')
-    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
-    var option  = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
-
-    e.preventDefault()
-
-    $target
-      .modal(option, this)
-      .one('hide', function () {
-        $this.is(':visible') && $this.focus()
-      })
-  })
-
-  $(document)
-    .on('show.bs.modal',  '.modal', function () { $(document.body).addClass('modal-open') })
-    .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: tooltip.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#tooltip
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // TOOLTIP PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Tooltip = function (element, options) {
-    this.type       =
-    this.options    =
-    this.enabled    =
-    this.timeout    =
-    this.hoverState =
-    this.$element   = null
-
-    this.init('tooltip', element, options)
-  }
-
-  Tooltip.DEFAULTS = {
-    animation: true
-  , placement: 'top'
-  , selector: false
-  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
-  , trigger: 'hover focus'
-  , title: ''
-  , delay: 0
-  , html: false
-  , container: false
-  }
-
-  Tooltip.prototype.init = function (type, element, options) {
-    this.enabled  = true
-    this.type     = type
-    this.$element = $(element)
-    this.options  = this.getOptions(options)
-
-    var triggers = this.options.trigger.split(' ')
-
-    for (var i = triggers.length; i--;) {
-      var trigger = triggers[i]
-
-      if (trigger == 'click') {
-        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
-      } else if (trigger != 'manual') {
-        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focus'
-        var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
-
-        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
-        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
-      }
-    }
-
-    this.options.selector ?
-      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
-      this.fixTitle()
-  }
-
-  Tooltip.prototype.getDefaults = function () {
-    return Tooltip.DEFAULTS
-  }
-
-  Tooltip.prototype.getOptions = function (options) {
-    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
-
-    if (options.delay && typeof options.delay == 'number') {
-      options.delay = {
-        show: options.delay
-      , hide: options.delay
-      }
-    }
-
-    return options
-  }
-
-  Tooltip.prototype.getDelegateOptions = function () {
-    var options  = {}
-    var defaults = this.getDefaults()
-
-    this._options && $.each(this._options, function (key, value) {
-      if (defaults[key] != value) options[key] = value
-    })
-
-    return options
-  }
-
-  Tooltip.prototype.enter = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'in'
-
-    if (!self.options.delay || !self.options.delay.show) return self.show()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'in') self.show()
-    }, self.options.delay.show)
-  }
-
-  Tooltip.prototype.leave = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'out'
-
-    if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'out') self.hide()
-    }, self.options.delay.hide)
-  }
-
-  Tooltip.prototype.show = function () {
-    var e = $.Event('show.bs.'+ this.type)
-
-    if (this.hasContent() && this.enabled) {
-      this.$element.trigger(e)
-
-      if (e.isDefaultPrevented()) return
-
-      var $tip = this.tip()
-
-      this.setContent()
-
-      if (this.options.animation) $tip.addClass('fade')
-
-      var placement = typeof this.options.placement == 'function' ?
-        this.options.placement.call(this, $tip[0], this.$element[0]) :
-        this.options.placement
-
-      var autoToken = /\s?auto?\s?/i
-      var autoPlace = autoToken.test(placement)
-      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
-
-      $tip
-        .detach()
-        .css({ top: 0, left: 0, display: 'block' })
-        .addClass(placement)
-
-      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
-
-      var pos          = this.getPosition()
-      var actualWidth  = $tip[0].offsetWidth
-      var actualHeight = $tip[0].offsetHeight
-
-      if (autoPlace) {
-        var $parent = this.$element.parent()
-
-        var orgPlacement = placement
-        var docScroll    = document.documentElement.scrollTop || document.body.scrollTop
-        var parentWidth  = this.options.container == 'body' ? window.innerWidth  : $parent.outerWidth()
-        var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()
-        var parentLeft   = this.options.container == 'body' ? 0 : $parent.offset().left
-
-        placement = placement == 'bottom' && pos.top   + pos.height  + actualHeight - docScroll > parentHeight  ? 'top'    :
-                    placement == 'top'    && pos.top   - docScroll   - actualHeight < 0                         ? 'bottom' :
-                    placement == 'right'  && pos.right + actualWidth > parentWidth                              ? 'left'   :
-                    placement == 'left'   && pos.left  - actualWidth < parentLeft                               ? 'right'  :
-                    placement
-
-        $tip
-          .removeClass(orgPlacement)
-          .addClass(placement)
-      }
-
-      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
-
-      this.applyPlacement(calculatedOffset, placement)
-      this.$element.trigger('shown.bs.' + this.type)
-    }
-  }
-
-  Tooltip.prototype.applyPlacement = function(offset, placement) {
-    var replace
-    var $tip   = this.tip()
-    var width  = $tip[0].offsetWidth
-    var height = $tip[0].offsetHeight
-
-    // manually read margins because getBoundingClientRect includes difference
-    var marginTop = parseInt($tip.css('margin-top'), 10)
-    var marginLeft = parseInt($tip.css('margin-left'), 10)
-
-    // we must check for NaN for ie 8/9
-    if (isNaN(marginTop))  marginTop  = 0
-    if (isNaN(marginLeft)) marginLeft = 0
-
-    offset.top  = offset.top  + marginTop
-    offset.left = offset.left + marginLeft
-
-    $tip
-      .offset(offset)
-      .addClass('in')
-
-    // check to see if placing tip in new offset caused the tip to resize itself
-    var actualWidth  = $tip[0].offsetWidth
-    var actualHeight = $tip[0].offsetHeight
-
-    if (placement == 'top' && actualHeight != height) {
-      replace = true
-      offset.top = offset.top + height - actualHeight
-    }
-
-    if (/bottom|top/.test(placement)) {
-      var delta = 0
-
-      if (offset.left < 0) {
-        delta       = offset.left * -2
-        offset.left = 0
-
-        $tip.offset(offset)
-
-        actualWidth  = $tip[0].offsetWidth
-        actualHeight = $tip[0].offsetHeight
-      }
-
-      this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
-    } else {
-      this.replaceArrow(actualHeight - height, actualHeight, 'top')
-    }
-
-    if (replace) $tip.offset(offset)
-  }
-
-  Tooltip.prototype.replaceArrow = function(delta, dimension, position) {
-    this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
-  }
-
-  Tooltip.prototype.setContent = function () {
-    var $tip  = this.tip()
-    var title = this.getTitle()
-
-    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
-    $tip.removeClass('fade in top bottom left right')
-  }
-
-  Tooltip.prototype.hide = function () {
-    var that = this
-    var $tip = this.tip()
-    var e    = $.Event('hide.bs.' + this.type)
-
-    function complete() {
-      if (that.hoverState != 'in') $tip.detach()
-    }
-
-    this.$element.trigger(e)
-
-    if (e.isDefaultPrevented()) return
-
-    $tip.removeClass('in')
-
-    $.support.transition && this.$tip.hasClass('fade') ?
-      $tip
-        .one($.support.transition.end, complete)
-        .emulateTransitionEnd(150) :
-      complete()
-
-    this.$element.trigger('hidden.bs.' + this.type)
-
-    return this
-  }
-
-  Tooltip.prototype.fixTitle = function () {
-    var $e = this.$element
-    if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
-      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
-    }
-  }
-
-  Tooltip.prototype.hasContent = function () {
-    return this.getTitle()
-  }
-
-  Tooltip.prototype.getPosition = function () {
-    var el = this.$element[0]
-    return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
-      width: el.offsetWidth
-    , height: el.offsetHeight
-    }, this.$element.offset())
-  }
-
-  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
-    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :
-           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :
-           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
-        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   }
-  }
-
-  Tooltip.prototype.getTitle = function () {
-    var title
-    var $e = this.$element
-    var o  = this.options
-
-    title = $e.attr('data-original-title')
-      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
-
-    return title
-  }
-
-  Tooltip.prototype.tip = function () {
-    return this.$tip = this.$tip || $(this.options.template)
-  }
-
-  Tooltip.prototype.arrow = function () {
-    return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
-  }
-
-  Tooltip.prototype.validate = function () {
-    if (!this.$element[0].parentNode) {
-      this.hide()
-      this.$element = null
-      this.options  = null
-    }
-  }
-
-  Tooltip.prototype.enable = function () {
-    this.enabled = true
-  }
-
-  Tooltip.prototype.disable = function () {
-    this.enabled = false
-  }
-
-  Tooltip.prototype.toggleEnabled = function () {
-    this.enabled = !this.enabled
-  }
-
-  Tooltip.prototype.toggle = function (e) {
-    var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this
-    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
-  }
-
-  Tooltip.prototype.destroy = function () {
-    this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
-  }
-
-
-  // TOOLTIP PLUGIN DEFINITION
-  // =========================
-
-  var old = $.fn.tooltip
-
-  $.fn.tooltip = function (option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.tooltip')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.tooltip.Constructor = Tooltip
-
-
-  // TOOLTIP NO CONFLICT
-  // ===================
-
-  $.fn.tooltip.noConflict = function () {
-    $.fn.tooltip = old
-    return this
-  }
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: popover.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#popovers
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // POPOVER PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Popover = function (element, options) {
-    this.init('popover', element, options)
-  }
-
-  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
-
-  Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, {
-    placement: 'right'
-  , trigger: 'click'
-  , content: ''
-  , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
-  })
-
-
-  // NOTE: POPOVER EXTENDS tooltip.js
-  // ================================
-
-  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
-
-  Popover.prototype.constructor = Popover
-
-  Popover.prototype.getDefaults = function () {
-    return Popover.DEFAULTS
-  }
-
-  Popover.prototype.setContent = function () {
-    var $tip    = this.tip()
-    var title   = this.getTitle()
-    var content = this.getContent()
-
-    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
-    $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
-
-    $tip.removeClass('fade top bottom left right in')
-
-    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
-    // this manually by checking the contents.
-    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
-  }
-
-  Popover.prototype.hasContent = function () {
-    return this.getTitle() || this.getContent()
-  }
-
-  Popover.prototype.getContent = function () {
-    var $e = this.$element
-    var o  = this.options
-
-    return $e.attr('data-content')
-      || (typeof o.content == 'function' ?
-            o.content.call($e[0]) :
-            o.content)
-  }
-
-  Popover.prototype.arrow = function () {
-    return this.$arrow = this.$arrow || this.tip().find('.arrow')
-  }
-
-  Popover.prototype.tip = function () {
-    if (!this.$tip) this.$tip = $(this.options.template)
-    return this.$tip
-  }
-
-
-  // POPOVER PLUGIN DEFINITION
-  // =========================
-
-  var old = $.fn.popover
-
-  $.fn.popover = function (option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.popover')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.popover.Constructor = Popover
-
-
-  // POPOVER NO CONFLICT
-  // ===================
-
-  $.fn.popover.noConflict = function () {
-    $.fn.popover = old
-    return this
-  }
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: scrollspy.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#scrollspy
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // SCROLLSPY CLASS DEFINITION
-  // ==========================
-
-  function ScrollSpy(element, options) {
-    var href
-    var process  = $.proxy(this.process, this)
-
-    this.$element       = $(element).is('body') ? $(window) : $(element)
-    this.$body          = $('body')
-    this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
-    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
-    this.selector       = (this.options.target
-      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
-      || '') + ' .nav li > a'
-    this.offsets        = $([])
-    this.targets        = $([])
-    this.activeTarget   = null
-
-    this.refresh()
-    this.process()
-  }
-
-  ScrollSpy.DEFAULTS = {
-    offset: 10
-  }
-
-  ScrollSpy.prototype.refresh = function () {
-    var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
-
-    this.offsets = $([])
-    this.targets = $([])
-
-    var self     = this
-    var $targets = this.$body
-      .find(this.selector)
-      .map(function () {
-        var $el   = $(this)
-        var href  = $el.data('target') || $el.attr('href')
-        var $href = /^#\w/.test(href) && $(href)
-
-        return ($href
-          && $href.length
-          && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
-      })
-      .sort(function (a, b) { return a[0] - b[0] })
-      .each(function () {
-        self.offsets.push(this[0])
-        self.targets.push(this[1])
-      })
-  }
-
-  ScrollSpy.prototype.process = function () {
-    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
-    var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
-    var maxScroll    = scrollHeight - this.$scrollElement.height()
-    var offsets      = this.offsets
-    var targets      = this.targets
-    var activeTarget = this.activeTarget
-    var i
-
-    if (scrollTop >= maxScroll) {
-      return activeTarget != (i = targets.last()[0]) && this.activate(i)
-    }
-
-    for (i = offsets.length; i--;) {
-      activeTarget != targets[i]
-        && scrollTop >= offsets[i]
-        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
-        && this.activate( targets[i] )
-    }
-  }
-
-  ScrollSpy.prototype.activate = function (target) {
-    this.activeTarget = target
-
-    $(this.selector)
-      .parents('.active')
-      .removeClass('active')
-
-    var selector = this.selector
-      + '[data-target="' + target + '"],'
-      + this.selector + '[href="' + target + '"]'
-
-    var active = $(selector)
-      .parents('li')
-      .addClass('active')
-
-    if (active.parent('.dropdown-menu').length)  {
-      active = active
-        .closest('li.dropdown')
-        .addClass('active')
-    }
-
-    active.trigger('activate')
-  }
-
-
-  // SCROLLSPY PLUGIN DEFINITION
-  // ===========================
-
-  var old = $.fn.scrollspy
-
-  $.fn.scrollspy = function (option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.scrollspy')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.scrollspy.Constructor = ScrollSpy
-
-
-  // SCROLLSPY NO CONFLICT
-  // =====================
-
-  $.fn.scrollspy.noConflict = function () {
-    $.fn.scrollspy = old
-    return this
-  }
-
-
-  // SCROLLSPY DATA-API
-  // ==================
-
-  $(window).on('load', function () {
-    $('[data-spy="scroll"]').each(function () {
-      var $spy = $(this)
-      $spy.scrollspy($spy.data())
-    })
-  })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: tab.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#tabs
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // TAB CLASS DEFINITION
-  // ====================
-
-  var Tab = function (element) {
-    this.element = $(element)
-  }
-
-  Tab.prototype.show = function () {
-    var $this    = this.element
-    var $ul      = $this.closest('ul:not(.dropdown-menu)')
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
-    }
-
-    if ($this.parent('li').hasClass('active')) return
-
-    var previous = $ul.find('.active:last a')[0]
-    var e        = $.Event('show.bs.tab', {
-      relatedTarget: previous
-    })
-
-    $this.trigger(e)
-
-    if (e.isDefaultPrevented()) return
-
-    var $target = $(selector)
-
-    this.activate($this.parent('li'), $ul)
-    this.activate($target, $target.parent(), function () {
-      $this.trigger({
-        type: 'shown.bs.tab'
-      , relatedTarget: previous
-      })
-    })
-  }
-
-  Tab.prototype.activate = function (element, container, callback) {
-    var $active    = container.find('> .active')
-    var transition = callback
-      && $.support.transition
-      && $active.hasClass('fade')
-
-    function next() {
-      $active
-        .removeClass('active')
-        .find('> .dropdown-menu > .active')
-        .removeClass('active')
-
-      element.addClass('active')
-
-      if (transition) {
-        element[0].offsetWidth // reflow for transition
-        element.addClass('in')
-      } else {
-        element.removeClass('fade')
-      }
-
-      if (element.parent('.dropdown-menu')) {
-        element.closest('li.dropdown').addClass('active')
-      }
-
-      callback && callback()
-    }
-
-    transition ?
-      $active
-        .one($.support.transition.end, next)
-        .emulateTransitionEnd(150) :
-      next()
-
-    $active.removeClass('in')
-  }
-
-
-  // TAB PLUGIN DEFINITION
-  // =====================
-
-  var old = $.fn.tab
-
-  $.fn.tab = function ( option ) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.tab')
-
-      if (!data) $this.data('bs.tab', (data = new Tab(this)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.tab.Constructor = Tab
-
-
-  // TAB NO CONFLICT
-  // ===============
-
-  $.fn.tab.noConflict = function () {
-    $.fn.tab = old
-    return this
-  }
-
-
-  // TAB DATA-API
-  // ============
-
-  $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
-    e.preventDefault()
-    $(this).tab('show')
-  })
-
-}(window.jQuery);
-
-/* ========================================================================
- * Bootstrap: affix.js v3.0.0
- * http://twbs.github.com/bootstrap/javascript.html#affix
- * ========================================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================================== */
-
-
-+function ($) { "use strict";
-
-  // AFFIX CLASS DEFINITION
-  // ======================
-
-  var Affix = function (element, options) {
-    this.options = $.extend({}, Affix.DEFAULTS, options)
-    this.$window = $(window)
-      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
-      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
-
-    this.$element = $(element)
-    this.affixed  =
-    this.unpin    = null
-
-    this.checkPosition()
-  }
-
-  Affix.RESET = 'affix affix-top affix-bottom'
-
-  Affix.DEFAULTS = {
-    offset: 0
-  }
-
-  Affix.prototype.checkPositionWithEventLoop = function () {
-    setTimeout($.proxy(this.checkPosition, this), 1)
-  }
-
-  Affix.prototype.checkPosition = function () {
-    if (!this.$element.is(':visible')) return
-
-    var scrollHeight = $(document).height()
-    var scrollTop    = this.$window.scrollTop()
-    var position     = this.$element.offset()
-    var offset       = this.options.offset
-    var offsetTop    = offset.top
-    var offsetBottom = offset.bottom
-
-    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
-    if (typeof offsetTop == 'function')    offsetTop    = offset.top()
-    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
-
-    var affix = this.unpin   != null && (scrollTop + this.unpin <= position.top) ? false :
-                offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
-                offsetTop    != null && (scrollTop <= offsetTop) ? 'top' : false
-
-    if (this.affixed === affix) return
-    if (this.unpin) this.$element.css('top', '')
-
-    this.affixed = affix
-    this.unpin   = affix == 'bottom' ? position.top - scrollTop : null
-
-    this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))
-
-    if (affix == 'bottom') {
-      this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })
-    }
-  }
-
-
-  // AFFIX PLUGIN DEFINITION
-  // =======================
-
-  var old = $.fn.affix
-
-  $.fn.affix = function (option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.affix')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  $.fn.affix.Constructor = Affix
-
-
-  // AFFIX NO CONFLICT
-  // =================
-
-  $.fn.affix.noConflict = function () {
-    $.fn.affix = old
-    return this
-  }
-
-
-  // AFFIX DATA-API
-  // ==============
-
-  $(window).on('load', function () {
-    $('[data-spy="affix"]').each(function () {
-      var $spy = $(this)
-      var data = $spy.data()
-
-      data.offset = data.offset || {}
-
-      if (data.offsetBottom) data.offset.bottom = data.offsetBottom
-      if (data.offsetTop)    data.offset.top    = data.offsetTop
-
-      $spy.affix(data)
-    })
-  })
-
-}(window.jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/bootstrap.min.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/bootstrap.min.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/bootstrap.min.js
deleted file mode 100644
index 1765631..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/bootstrap.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
-* bootstrap.js v3.0.0 by @fat and @mdo
-* Copyright 2013 Twitter Inc.
-* http://www.apache.org/licenses/LICENSE-2.0
-*/
-if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefau
 ltPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.l
 ength){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this))
 .on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return th
 is.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,se
 tTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g)
 ,b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass
 ("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":
 "show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented(
 )||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.clic
 k();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return th
 is[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$eleme
 nt.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade"
 :"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.
 noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.en
 abled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototyp
 e.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$ele
 ment[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10)
 ,h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),th
 is.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(
 this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";
 var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("functio
 n"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process(
 )}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+
 '[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f
 ),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQ
 uery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-
 d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
\ No newline at end of file



[39/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/example/live.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/example/live.js b/docs/system-architecture/css/toc-0.1.2/example/live.js
deleted file mode 100644
index e48917b..0000000
--- a/docs/system-architecture/css/toc-0.1.2/example/live.js
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
-  Live.js - One script closer to Designing in the Browser
-  Written for Handcraft.com by Martin Kool (@mrtnkl).
-
-  Version 4.
-  Recent change: Made stylesheet and mimetype checks case insensitive.
-
-  http://livejs.com
-  http://livejs.com/license (MIT)  
-  @livejs
-
-  Include live.js#css to monitor css changes only.
-  Include live.js#js to monitor js changes only.
-  Include live.js#html to monitor html changes only.
-  Mix and match to monitor a preferred combination such as live.js#html,css  
-
-  By default, just include live.js to monitor all css, js and html changes.
-  
-  Live.js can also be loaded as a bookmarklet. It is best to only use it for CSS then,
-  as a page reload due to a change in html or css would not re-include the bookmarklet.
-  To monitor CSS and be notified that it has loaded, include it as: live.js#css,notify
-*/
-(function () {
-
-  var headers = { "Etag": 1, "Last-Modified": 1, "Content-Length": 1, "Content-Type": 1 },
-      resources = {},
-      pendingRequests = {},
-      currentLinkElements = {},
-      oldLinkElements = {},
-      interval = 1000,
-      loaded = false,
-      active = { "html": 1, "css": 1, "js": 1 };
-
-  var Live = {
-
-    // performs a cycle per interval
-    heartbeat: function () {      
-      if (document.body) {        
-        // make sure all resources are loaded on first activation
-        if (!loaded) Live.loadresources();
-        Live.checkForChanges();
-      }
-      setTimeout(Live.heartbeat, interval);
-    },
-
-    // loads all local css and js resources upon first activation
-    loadresources: function () {
-
-      // helper method to assert if a given url is local
-      function isLocal(url) {
-        var loc = document.location,
-            reg = new RegExp("^\\.|^\/(?!\/)|^[\\w]((?!://).)*$|" + loc.protocol + "//" + loc.host);
-        return url.match(reg);
-      }
-
-      // gather all resources
-      var scripts = document.getElementsByTagName("script"),
-          links = document.getElementsByTagName("link"),
-          uris = [];
-
-      // track local js urls
-      for (var i = 0; i < scripts.length; i++) {
-        var script = scripts[i], src = script.getAttribute("src");
-        if (src && isLocal(src))
-          uris.push(src);
-        if (src && src.match(/\blive.js#/)) {
-          for (var type in active)
-            active[type] = src.match("[#,|]" + type) != null
-          if (src.match("notify")) 
-            alert("Live.js is loaded.");
-        }
-      }
-      if (!active.js) uris = [];
-      if (active.html) uris.push(document.location.href);
-
-      // track local css urls
-      for (var i = 0; i < links.length && active.css; i++) {
-        var link = links[i], rel = link.getAttribute("rel"), href = link.getAttribute("href", 2);
-        if (href && rel && rel.match(new RegExp("stylesheet", "i")) && isLocal(href)) {
-          uris.push(href);
-          currentLinkElements[href] = link;
-        }
-      }
-
-      // initialize the resources info
-      for (var i = 0; i < uris.length; i++) {
-        var url = uris[i];
-        Live.getHead(url, function (url, info) {
-          resources[url] = info;
-        });
-      }
-
-      // add rule for morphing between old and new css files
-      var head = document.getElementsByTagName("head")[0],
-          style = document.createElement("style"),
-          rule = "transition: all .3s ease-out;"
-      css = [".livejs-loading * { ", rule, " -webkit-", rule, "-moz-", rule, "-o-", rule, "}"].join('');
-      style.setAttribute("type", "text/css");
-      head.appendChild(style);
-      style.styleSheet ? style.styleSheet.cssText = css : style.appendChild(document.createTextNode(css));
-
-      // yep
-      loaded = true;
-    },
-
-    // check all tracking resources for changes
-    checkForChanges: function () {
-      for (var url in resources) {
-        if (pendingRequests[url])
-          continue;
-
-        Live.getHead(url, function (url, newInfo) {
-          var oldInfo = resources[url],
-              hasChanged = false;
-          resources[url] = newInfo;
-          for (var header in oldInfo) {
-            // do verification based on the header type
-            var oldValue = oldInfo[header],
-                newValue = newInfo[header],
-                contentType = newInfo["Content-Type"];
-            switch (header.toLowerCase()) {
-              case "etag":
-                if (!newValue) break;
-                // fall through to default
-              default:
-                hasChanged = oldValue != newValue;
-                break;
-            }
-            // if changed, act
-            if (hasChanged) {
-              Live.refreshResource(url, contentType);
-              break;
-            }
-          }
-        });
-      }
-    },
-
-    // act upon a changed url of certain content type
-    refreshResource: function (url, type) {
-      switch (type.toLowerCase()) {
-        // css files can be reloaded dynamically by replacing the link element                               
-        case "text/css":
-          var link = currentLinkElements[url],
-              html = document.body.parentNode,
-              head = link.parentNode,
-              next = link.nextSibling,
-              newLink = document.createElement("link");
-
-          html.className = html.className.replace(/\s*livejs\-loading/gi, '') + ' livejs-loading';
-          newLink.setAttribute("type", "text/css");
-          newLink.setAttribute("rel", "stylesheet");
-          newLink.setAttribute("href", url + "?now=" + new Date() * 1);
-          next ? head.insertBefore(newLink, next) : head.appendChild(newLink);
-          currentLinkElements[url] = newLink;
-          oldLinkElements[url] = link;
-
-          // schedule removal of the old link
-          Live.removeoldLinkElements();
-          break;
-
-        // check if an html resource is our current url, then reload                               
-        case "text/html":
-          if (url != document.location.href)
-            return;
-
-          // local javascript changes cause a reload as well
-        case "text/javascript":
-        case "application/javascript":
-        case "application/x-javascript":
-          document.location.reload();
-      }
-    },
-
-    // removes the old stylesheet rules only once the new one has finished loading
-    removeoldLinkElements: function () {
-      var pending = 0;
-      for (var url in oldLinkElements) {
-        // if this sheet has any cssRules, delete the old link
-        try {
-          var link = currentLinkElements[url],
-              oldLink = oldLinkElements[url],
-              html = document.body.parentNode,
-              sheet = link.sheet || link.styleSheet,
-              rules = sheet.rules || sheet.cssRules;
-          if (rules.length >= 0) {
-            oldLink.parentNode.removeChild(oldLink);
-            delete oldLinkElements[url];
-            setTimeout(function () {
-              html.className = html.className.replace(/\s*livejs\-loading/gi, '');
-            }, 100);
-          }
-        } catch (e) {
-          pending++;
-        }
-        if (pending) setTimeout(Live.removeoldLinkElements, 50);
-      }
-    },
-
-    // performs a HEAD request and passes the header info to the given callback
-    getHead: function (url, callback) {
-      pendingRequests[url] = true;
-      var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XmlHttp");
-      xhr.open("HEAD", url, true);
-      xhr.onreadystatechange = function () {
-        delete pendingRequests[url];
-        if (xhr.readyState == 4 && xhr.status != 304) {
-          xhr.getAllResponseHeaders();
-          var info = {};
-          for (var h in headers) {
-            var value = xhr.getResponseHeader(h);
-            // adjust the simple Etag variant to match on its significant part
-            if (h.toLowerCase() == "etag" && value) value = value.replace(/^W\//, '');
-            if (h.toLowerCase() == "content-type" && value) value = value.replace(/^(.*?);.*?$/i, "$1");
-            info[h] = value;
-          }
-          callback(url, info);
-        }
-      }
-      xhr.send();
-    }
-  };
-
-  // start listening
-  if (document.location.protocol != "file:") {
-    if (!window.liveJsLoaded)
-      Live.heartbeat();
-
-    window.liveJsLoaded = true;
-  }
-  else if (window.console)
-    console.log("Live.js doesn't support the file protocol. It needs http.");    
-})();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/lib/copyright.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/lib/copyright.js b/docs/system-architecture/css/toc-0.1.2/lib/copyright.js
deleted file mode 100644
index 54b73bd..0000000
--- a/docs/system-architecture/css/toc-0.1.2/lib/copyright.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
-  * jquery.toc.js - A jQuery plugin that will automatically generate a table of contents. 
-  * v0.1.1
-  * https://github.com/jgallen23/toc
-  * copyright JGA 2012
-  * MIT License
-  */

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/lib/toc.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/lib/toc.js b/docs/system-architecture/css/toc-0.1.2/lib/toc.js
deleted file mode 100644
index ef8f0c0..0000000
--- a/docs/system-architecture/css/toc-0.1.2/lib/toc.js
+++ /dev/null
@@ -1,100 +0,0 @@
-(function($) {
-$.fn.toc = function(options) {
-  var self = this;
-  var opts = $.extend({}, jQuery.fn.toc.defaults, options);
-
-  var container = $(opts.container);
-  var headings = $(opts.selectors, container);
-  var headingOffsets = [];
-  var activeClassName = opts.prefix+'-active';
-
-  var scrollTo = function(e) {
-    if (opts.smoothScrolling) {
-      e.preventDefault();
-      var elScrollTo = $(e.target).attr('href');
-      var $el = $(elScrollTo);
-
-      $('body,html').animate({ scrollTop: $el.offset().top }, 400, 'swing', function() {
-        location.hash = elScrollTo;
-      });
-    }
-    $('li', self).removeClass(activeClassName);
-    $(e.target).parent().addClass(activeClassName);
-  };
-
-  //highlight on scroll
-  var timeout;
-  var highlightOnScroll = function(e) {
-    if (timeout) {
-      clearTimeout(timeout);
-    }
-    timeout = setTimeout(function() {
-      var top = $(window).scrollTop(),
-        highlighted;
-      for (var i = 0, c = headingOffsets.length; i < c; i++) {
-        if (headingOffsets[i] >= top) {
-          $('li', self).removeClass(activeClassName);
-          highlighted = $('li:eq('+(i-1)+')', self).addClass(activeClassName);
-          opts.onHighlight(highlighted);
-          break;
-        }
-      }
-    }, 50);
-  };
-  if (opts.highlightOnScroll) {
-    $(window).bind('scroll', highlightOnScroll);
-    highlightOnScroll();
-  }
-
-  return this.each(function() {
-    //build TOC
-    var el = $(this);
-    var ul = $('<ul/>');
-    headings.each(function(i, heading) {
-      var $h = $(heading);
-      headingOffsets.push($h.offset().top - opts.highlightOffset);
-
-      //add anchor
-      var anchor = $('<span/>').attr('id', opts.anchorName(i, heading, opts.prefix)).insertBefore($h);
-
-      //build TOC item
-      var a = $('<a/>')
-        .text(opts.headerText(i, heading, $h))
-        .attr('href', '#' + opts.anchorName(i, heading, opts.prefix))
-        .bind('click', function(e) { 
-          scrollTo(e);
-          el.trigger('selected', $(this).attr('href'));
-        });
-
-      var li = $('<li/>')
-        .addClass(opts.itemClass(i, heading, $h, opts.prefix))
-        .append(a);
-
-      ul.append(li);
-    });
-    el.html(ul);
-  });
-};
-
-
-jQuery.fn.toc.defaults = {
-  container: 'body',
-  selectors: 'h1,h2,h3',
-  smoothScrolling: true,
-  prefix: 'toc',
-  onHighlight: function() {},
-  highlightOnScroll: true,
-  highlightOffset: 100,
-  anchorName: function(i, heading, prefix) {
-    return prefix+i;
-  },
-  headerText: function(i, heading, $heading) {
-    return $heading.text();
-  },
-  itemClass: function(i, heading, $heading, prefix) {
-    return prefix + '-' + $heading[0].tagName.toLowerCase();
-  }
-
-};
-
-})(jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/package.json
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/package.json b/docs/system-architecture/css/toc-0.1.2/package.json
deleted file mode 100644
index 9bec26b..0000000
--- a/docs/system-architecture/css/toc-0.1.2/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "name": "toc",
-  "version": "0.0.0",
-  "private": true,
-  "devDependencies": {
-    "mocha": "~1.8.2",
-    "grunt": "~0.4.1",
-    "grunt-reloadr": "~0.1.2",
-    "grunt-mocha": "~0.3.0",
-    "grunt-contrib-concat": "~0.1.3",
-    "grunt-contrib-uglify": "~0.2.0",
-    "grunt-contrib-jshint": "~0.3.0",
-    "grunt-contrib-connect": "~0.2.0",
-    "grunt-contrib-watch": "~0.3.1",
-    "grunt-plato": "~0.1.5"
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/test/index.html
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/test/index.html b/docs/system-architecture/css/toc-0.1.2/test/index.html
deleted file mode 100644
index e9e41c2..0000000
--- a/docs/system-architecture/css/toc-0.1.2/test/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-  <meta charset="utf-8">
-  <title>toc Tests</title>
-  <link rel="stylesheet" href="../node_modules/mocha/mocha.css" />
-  <script src="../components/assert/assert.js"></script>
-  <script src="../node_modules/mocha/mocha.js"></script>
-  <!--<script src="../components/blanket/dist/qunit/blanket.min.js" data-cover-adapter="../components/blanket/src/adapters/mocha-blanket.js"></script>-->
-  <script>mocha.setup('tdd')</script>
-</head>
-<body>
-  <div id="mocha"></div>
-  <div id="fixture" style="display: none">
-
-  </div>
-  <script src="../dist/toc.js" data-cover></script>
-  <script src="toc.test.js"></script>
-  <script>
-    if (navigator.userAgent.indexOf('PhantomJS') < 0) {
-      mocha.run().globals(['LiveReload']);
-    }
-  </script>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/test/toc.test.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/test/toc.test.js b/docs/system-architecture/css/toc-0.1.2/test/toc.test.js
deleted file mode 100644
index 6171947..0000000
--- a/docs/system-architecture/css/toc-0.1.2/test/toc.test.js
+++ /dev/null
@@ -1,4 +0,0 @@
-
-suite('toc', function() {
-
-});

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/diagrams/command-query.png
----------------------------------------------------------------------
diff --git a/docs/system-architecture/diagrams/command-query.png b/docs/system-architecture/diagrams/command-query.png
deleted file mode 100644
index 4de18ec..0000000
Binary files a/docs/system-architecture/diagrams/command-query.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/diagrams/command-query.xml
----------------------------------------------------------------------
diff --git a/docs/system-architecture/diagrams/command-query.xml b/docs/system-architecture/diagrams/command-query.xml
deleted file mode 100644
index f244192..0000000
--- a/docs/system-architecture/diagrams/command-query.xml
+++ /dev/null
@@ -1 +0,0 @@
-<mxGraphModel dx="800" dy="800" grid="1" guides="1" tooltips="1" connect="1" fold="1" page="1" pageScale="1" pageWidth="826" pageHeight="1169" style="default-style2"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="47" value="Mifos X Platform &amp; API" style="verticalAlign=top;align=left;spacingTop=8;spacingLeft=2;spacingRight=12;shape=cube;size=10;direction=south;fontStyle=4;fillColor=#CCCCCC" parent="1" vertex="1"><mxGeometry x="120" y="60" width="590" height="440" as="geometry"/></mxCell><mxCell id="93" value="Oracle Mysql RDMS" style="shape=cylinder;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="730" y="59.5" width="60" height="450.5" as="geometry"/></mxCell><mxCell id="95" value="Command" style="shape=message;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="20" y="370" width="60" height="40" as="geometry"/></mxCell><mxCell id="96" value="Query" style="shape=message;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="20" y="140" width="60" height="40" 
 as="geometry"/></mxCell><mxCell id="97" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="80" y="384" as="sourcePoint"/><mxPoint x="120" y="384" as="targetPoint"/></mxGeometry></mxCell><mxCell id="98" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="80" y="150" as="sourcePoint"/><mxPoint x="120" y="150" as="targetPoint"/></mxGeometry></mxCell><mxCell id="99" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="120" y="400" as="sourcePoint"/><mxPoint x="80" y="400" as="targetPoint"/></mxGeometry></mxCell><mxCell id="100" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="120" y="170" as="sourcePoint"/><mxPoint
  x="80" y="170" as="targetPoint"/></mxGeometry></mxCell><mxCell id="106" value="" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;" vertex="1" parent="1"><mxGeometry x="134" y="280" width="546" height="205" as="geometry"/></mxCell><mxCell id="109" value="HTTPS API" style="rounded=1;whiteSpace=wrap;fillColor=#007FFF;rotation=-90" vertex="1" parent="1"><mxGeometry x="100" y="390" width="124" height="30" as="geometry"/></mxCell><mxCell id="108" value="" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;" vertex="1" parent="1"><mxGeometry x="130" y="92.5" width="550" height="175" as="geometry"/></mxCell><mxCell id="52" value="HTTPS API" style="rounded=1;whiteSpace=wrap;fillColor=#007FFF;rotation=-90" parent="1" vertex="1"><mxGeometry x="100" y="165" width="124" height="30" as="geometry"/></mxCell><mxCell id="112" value="1. Check Permissions" style="" vertex="1" parent="1"><mxGeometry x="210" y="120" width="170
 " height="30" as="geometry"/></mxCell><mxCell id="113" value="2. Fetch Data (SQL Query)" style="" vertex="1" parent="1"><mxGeometry x="240" y="165" width="170" height="30" as="geometry"/></mxCell><mxCell id="114" value="3. Covert To JSON response" style="" vertex="1" parent="1"><mxGeometry x="210" y="205" width="183" height="30" as="geometry"/></mxCell><mxCell id="115" value="1. Check Permissions" style="" vertex="1" parent="1"><mxGeometry x="200" y="310" width="170" height="30" as="geometry"/></mxCell><mxCell id="116" value="2. Locate Command Handler" style="" vertex="1" parent="1"><mxGeometry x="216.5" y="352.5" width="170" height="30" as="geometry"/></mxCell><mxCell id="117" value="3. Command Handler&#xa;Uses Domain Services&#xa;Model + ORM to perist changes&#xa;All changes passed back" style="" vertex="1" parent="1"><mxGeometry x="410" y="345" width="250" height="125" as="geometry"/></mxCell><mxCell id="118" value="4.Updated with &#xa;changes for Audit" style="" vertex="1" paren
 t="1"><mxGeometry x="200" y="405" width="170" height="30" as="geometry"/></mxCell><mxCell id="119" value="5. Covert To JSON response" style="" vertex="1" parent="1"><mxGeometry x="200" y="440" width="183" height="30" as="geometry"/></mxCell></root></mxGraphModel>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/diagrams/platform-categories.png
----------------------------------------------------------------------
diff --git a/docs/system-architecture/diagrams/platform-categories.png b/docs/system-architecture/diagrams/platform-categories.png
deleted file mode 100644
index 6c46464..0000000
Binary files a/docs/system-architecture/diagrams/platform-categories.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/diagrams/platform-categories.xml
----------------------------------------------------------------------
diff --git a/docs/system-architecture/diagrams/platform-categories.xml b/docs/system-architecture/diagrams/platform-categories.xml
deleted file mode 100644
index f63b817..0000000
--- a/docs/system-architecture/diagrams/platform-categories.xml
+++ /dev/null
@@ -1 +0,0 @@
-<mxGraphModel dx="800" dy="800" grid="1" guides="1" tooltips="1" connect="1" fold="1" page="1" pageScale="1" pageWidth="826" pageHeight="1169" style="default-style2"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="47" value="Mifos X Platform &amp; API" style="verticalAlign=top;align=left;spacingTop=8;spacingLeft=2;spacingRight=12;shape=cube;size=10;direction=south;fontStyle=4;fillColor=#CCCCCC" vertex="1" parent="1"><mxGeometry x="30" y="59.5" width="780" height="260.5" as="geometry"/></mxCell><mxCell id="48" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="118.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="49" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="46" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="50" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="757.5" y="22" width="25"
  height="42" as="geometry"/></mxCell><mxCell id="51" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="675" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="52" value="HTTPS API" style="rounded=1;whiteSpace=wrap;fillColor=#007FFF" vertex="1" parent="1"><mxGeometry x="46" y="99.5" width="744" height="30" as="geometry"/></mxCell><mxCell id="77" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="191" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="78" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="252.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="79" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="382.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="80" value="" style="shape=lollipop;direction=south;rotation=-90" ver
 tex="1" parent="1"><mxGeometry x="487.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="86" value="Infrastructure" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="46" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="87" value="User Administration" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="46" y="230" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="88" value="Organisation Modelling" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="231" y="230" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="89" value="Product Configuration" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeo
 metry x="231" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="90" value="Client Data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="440" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="91" value="Portfolio Management" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="624.25" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="92" value="GL Account Management" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="523.5" y="230" width="151.5" height="70" as="geometry"/></mxCell></root></mxGraphModel>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/diagrams/platform-systemview.png
----------------------------------------------------------------------
diff --git a/docs/system-architecture/diagrams/platform-systemview.png b/docs/system-architecture/diagrams/platform-systemview.png
deleted file mode 100644
index aa66031..0000000
Binary files a/docs/system-architecture/diagrams/platform-systemview.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/diagrams/platform-systemview.xml
----------------------------------------------------------------------
diff --git a/docs/system-architecture/diagrams/platform-systemview.xml b/docs/system-architecture/diagrams/platform-systemview.xml
deleted file mode 100644
index 9fba161..0000000
--- a/docs/system-architecture/diagrams/platform-systemview.xml
+++ /dev/null
@@ -1 +0,0 @@
-<mxGraphModel dx="800" dy="800" grid="1" guides="1" tooltips="1" connect="1" fold="1" page="1" pageScale="1" pageWidth="826" pageHeight="1169" style="default-style2"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="47" value="Mifos X Platform &amp; API" style="verticalAlign=top;align=left;spacingTop=8;spacingLeft=2;spacingRight=12;shape=cube;size=10;direction=south;fontStyle=4;fillColor=#CCCCCC" vertex="1" parent="1"><mxGeometry x="30" y="842" width="780" height="100" as="geometry"/></mxCell><mxCell id="48" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="118.5" y="804.5" width="25" height="42" as="geometry"/></mxCell><mxCell id="49" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="46" y="804.5" width="25" height="42" as="geometry"/></mxCell><mxCell id="50" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="757.5" y="804.5" widt
 h="25" height="42" as="geometry"/></mxCell><mxCell id="51" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="675" y="804.5" width="25" height="42" as="geometry"/></mxCell><mxCell id="52" value="HTTPS API" style="rounded=1;whiteSpace=wrap;fillColor=#007FFF" vertex="1" parent="1"><mxGeometry x="46" y="882" width="744" height="30" as="geometry"/></mxCell><mxCell id="53" value="Customer" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="252.5" y="390" width="30" height="70" as="geometry"/></mxCell><mxCell id="54" value="Back-Office Apps" style="rounded=1;whiteSpace=wrap;rotation=-90" vertex="1" parent="1"><mxGeometry x="72.5" y="720" width="120" height="50" as="geometry"/></mxCell><mxCell id="55" value="Field Officer Apps" style="rounded=1;whiteSpace=wrap;rotation=-90" vertex="1" parent="1"><mxGeometry x="207.5" y="720" width="120" height="50" as="geometry"/></mxCell><mxCell id="56" 
 value="Front Office / Telller Apps" style="rounded=1;whiteSpace=wrap;rotation=-90" vertex="1" parent="1"><mxGeometry x="143.5" y="720" width="120" height="50" as="geometry"/></mxCell><mxCell id="57" value="Public Facing Information Apps" style="rounded=1;whiteSpace=wrap;rotation=-90" vertex="1" parent="1"><mxGeometry x="-1.5" y="719" width="120" height="50" as="geometry"/></mxCell><mxCell id="58" value="Mobile Money Apps" style="rounded=1;whiteSpace=wrap;rotation=-90" vertex="1" parent="1"><mxGeometry x="440" y="720" width="120" height="50" as="geometry"/></mxCell><mxCell id="59" value="ATM / Card Services Apps" style="rounded=1;whiteSpace=wrap;rotation=-90" vertex="1" parent="1"><mxGeometry x="335" y="720" width="120" height="50" as="geometry"/></mxCell><mxCell id="60" value="ATM / POS / Card Services" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="380" y="530" width="30" height="70" as="geometry"/></mxCell><mxCell id="61"
  value="Social Performance App" style="rounded=1;whiteSpace=wrap;rotation=-90" vertex="1" parent="1"><mxGeometry x="645" y="720" width="120" height="50" as="geometry"/></mxCell><mxCell id="62" value="Reporting (third parties e.g. Mix)" style="rounded=1;whiteSpace=wrap;rotation=-90" vertex="1" parent="1"><mxGeometry x="710" y="720" width="120" height="50" as="geometry"/></mxCell><mxCell id="63" value="Agent&#xa;" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="615" y="540" width="30" height="70" as="geometry"/></mxCell><mxCell id="64" value="Third Parties / Industry" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="742.5" y="390" width="30" height="70" as="geometry"/></mxCell><mxCell id="65" value="MFI Staff" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top" vertex="1" parent="1"><mxGeometry x="140" y="530" width="30" height="70" as="geometry"/></mx
 Cell><mxCell id="66" value="" style="edgeStyle=none" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="240" y="470" as="sourcePoint"/><mxPoint x="170" y="520" as="targetPoint"/></mxGeometry></mxCell><mxCell id="67" value="" style="edgeStyle=none" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="300" y="470" as="sourcePoint"/><mxPoint x="380" y="520" as="targetPoint"/></mxGeometry></mxCell><mxCell id="68" value="" style="edgeStyle=none" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="290" y="420" as="sourcePoint"/><mxPoint x="630" y="420" as="targetPoint"/></mxGeometry></mxCell><mxCell id="69" value="" style="edgeStyle=none;entryX=1;entryY=0.5" edge="1" target="58" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="500" y="420" as="sourcePoint"/><mxPoint x="650" y="430" as="targetPoint"/></mxGeometry></mxCell>
 <mxCell id="70" value="" style="edgeStyle=none;" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="629" y="420" as="sourcePoint"/><mxPoint x="630" y="530" as="targetPoint"/></mxGeometry></mxCell><mxCell id="71" value="Agent Apps" style="rounded=1;whiteSpace=wrap;rotation=-90" vertex="1" parent="1"><mxGeometry x="570" y="720" width="120" height="50" as="geometry"/></mxCell><mxCell id="72" value="" style="edgeStyle=none;" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="629" y="635" as="sourcePoint"/><mxPoint x="630" y="680" as="targetPoint"/></mxGeometry></mxCell><mxCell id="73" value="" style="edgeStyle=none;" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="394.5" y="620" as="sourcePoint"/><mxPoint x="395.5" y="665" as="targetPoint"/></mxGeometry></mxCell><mxCell id="74" value="" style="edgeStyle=none;" edge="1" parent="1"><mxGeometry width="10
 0" height="100" relative="1" as="geometry"><mxPoint x="770" y="680" as="sourcePoint"/><mxPoint x="770" y="490" as="targetPoint"/></mxGeometry></mxCell><mxCell id="75" value="" style="edgeStyle=none;" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="58.5" y="680" as="sourcePoint"/><mxPoint x="60" y="420" as="targetPoint"/></mxGeometry></mxCell><mxCell id="76" value="" style="edgeStyle=none" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="58.5" y="420" as="sourcePoint"/><mxPoint x="240" y="420" as="targetPoint"/></mxGeometry></mxCell><mxCell id="77" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="191" y="804.5" width="25" height="42" as="geometry"/></mxCell><mxCell id="78" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="252.5" y="804.5" width="25" height="42" as="geometry"/></mxCell><mxCell id
 ="79" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="382.5" y="804.5" width="25" height="42" as="geometry"/></mxCell><mxCell id="80" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="487.5" y="804.5" width="25" height="42" as="geometry"/></mxCell><mxCell id="81" value="" style="edgeStyle=none" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="130" y="640" as="sourcePoint"/><mxPoint x="270" y="640" as="targetPoint"/></mxGeometry></mxCell><mxCell id="82" value="" style="edgeStyle=none;" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="130" y="640" as="sourcePoint"/><mxPoint x="131" y="685" as="targetPoint"/></mxGeometry></mxCell><mxCell id="83" value="" style="edgeStyle=none;" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="264.5" y="640" as="source
 Point"/><mxPoint x="265.5" y="685" as="targetPoint"/></mxGeometry></mxCell><mxCell id="84" value="" style="edgeStyle=none;" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="207" y="640" as="sourcePoint"/><mxPoint x="208" y="685" as="targetPoint"/></mxGeometry></mxCell><mxCell id="85" value="" style="edgeStyle=none;" edge="1" parent="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="180" y="600" as="sourcePoint"/><mxPoint x="210" y="640" as="targetPoint"/></mxGeometry></mxCell></root></mxGraphModel>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/favicon.ico
----------------------------------------------------------------------
diff --git a/docs/system-architecture/favicon.ico b/docs/system-architecture/favicon.ico
deleted file mode 100644
index be74abd..0000000
Binary files a/docs/system-architecture/favicon.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/humans.txt
----------------------------------------------------------------------
diff --git a/docs/system-architecture/humans.txt b/docs/system-architecture/humans.txt
deleted file mode 100644
index d9e1bb9..0000000
--- a/docs/system-architecture/humans.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-# humanstxt.org/
-# The humans responsible & technology colophon
-
-# TEAM
-
-    <name> -- <role> -- <twitter>
-
-# THANKS
-
-    <name>
-
-# TECHNOLOGY COLOPHON
-
-    HTML5, CSS3
-    Normalize.css, jQuery, Modernizr

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/img/mifos-icon.png
----------------------------------------------------------------------
diff --git a/docs/system-architecture/img/mifos-icon.png b/docs/system-architecture/img/mifos-icon.png
deleted file mode 100644
index bb02523..0000000
Binary files a/docs/system-architecture/img/mifos-icon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/index.html
----------------------------------------------------------------------
diff --git a/docs/system-architecture/index.html b/docs/system-architecture/index.html
deleted file mode 100644
index fdf12d4..0000000
--- a/docs/system-architecture/index.html
+++ /dev/null
@@ -1,587 +0,0 @@
-<!doctype html>
-<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
-<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
-<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
-    <head>
-        <meta charset="utf-8">
-        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-        <title>Mifos Platform Docs: System Architecture</title>
-        <meta name="description" content="mifos platform documentation">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
-
-        <link rel="stylesheet" href="css/bootstrap-3.0.0/bootstrap.min.css">
-        <link href="css/bootstrap-3.0.0/bootstrap-theme.min.css" rel="stylesheet">
-<style>
-#wrapper {
-    margin: 0 20px 0 220px;
-}
-a {
-    color: #336699;
-}
-body {
-    font-family: Helvetica Neue,Helvetica,Arial,sans-serif;
-    font-size: 16px;
-    line-height: 24px;
-    margin: 0;
-    padding: 0;
-}
-h1, h2, h3, #toc a {
-    font-family: 'Voces',sans-serif;
-}
-p, ul {
-    margin-bottom: 24px;
-    margin-top: 0;
-}
-small {
-    font-size: 10px;
-}
-code {
-    word-wrap: break-word;
-}
-.repo-stats iframe {
-    float: right;
-    margin-left: 5px;
-}
-#toc {
-    background: none repeat scroll 0 0 #333333;
-    box-shadow: -5px 0 5px 0 #000000 inset;
-    color: #FFFFFF;
-    height: 100%;
-    left: 0;
-    position: fixed;
-    top: 0;
-    width: 215px;
-}
-#toc ul {
-    list-style: none outside none;
-    margin: 0;
-    padding: 0;
-}
-#toc li {
-    padding: 5px 10px;
-}
-#toc a {
-    color: #FFFFFF;
-    display: block;
-    text-decoration: none;
-}
-#toc .toc-h2 {
-    padding-left: 10px;
-}
-#toc .toc-h3 {
-    padding-left: 20px;
-}
-#toc .toc-active {
-    background: none repeat scroll 0 0 #336699;
-    box-shadow: -5px 0 10px -5px #000000 inset;
-}
-pre {
-    background: none repeat scroll 0 0 #333333;
-    color: #F8F8F8;
-    display: block;
-    padding: 0.5em;
-}
-pre .shebang, pre .comment, pre .template_comment, pre .javadoc {
-    color: #7C7C7C;
-}
-pre .keyword, pre .tag, pre .ruby .function .keyword, pre .tex .command {
-    color: #96CBFE;
-}
-pre .function .keyword, pre .sub .keyword, pre .method, pre .list .title {
-    color: #FFFFB6;
-}
-pre .string, pre .tag .value, pre .cdata, pre .filter .argument, pre .attr_selector, pre .apache .cbracket, pre .date {
-    color: #A8FF60;
-}
-pre .subst {
-    color: #DAEFA3;
-}
-pre .regexp {
-    color: #E9C062;
-}
-pre .function .title, pre .sub .identifier, pre .pi, pre .decorator, pre .ini .title, pre .tex .special {
-    color: #FFFFB6;
-}
-pre .class .title, pre .haskell .label, pre .constant, pre .smalltalk .class, pre .javadoctag, pre .yardoctag, pre .phpdoc, pre .nginx .built_in {
-    color: #FFFFB6;
-}
-pre .symbol, pre .ruby .symbol .string, pre .ruby .symbol .keyword, pre .ruby .symbol .keymethods, pre .number, pre .variable, pre .vbscript, pre .literal {
-    color: #C6C5FE;
-}
-pre .css .tag {
-    color: #96CBFE;
-}
-pre .css .rules .property, pre .css .id {
-    color: #FFFFB6;
-}
-pre .css .class {
-    color: #FFFFFF;
-}
-pre .hexcolor {
-    color: #C6C5FE;
-}
-pre .number {
-    color: #FF73FD;
-}
-pre .tex .formula {
-    opacity: 0.7;
-}
-.github-repo {
-    background: url("images/Octocat.png") no-repeat scroll right bottom rgba(0, 0, 0, 0);
-    border: 1px solid #CCCCCC;
-    border-radius: 5px;
-    box-shadow: 0 0 3px #333333;
-    font-family: Helvetica,Arial,sans-serif;
-    font-size: 14px;
-    letter-spacing: 1px;
-    position: relative;
-}
-.github-repo a {
-    text-decoration: none;
-}
-.github-repo a:hover {
-    text-decoration: underline;
-}
-.github-repo .repo-header {
-    background: none repeat scroll 0 0 rgba(240, 240, 240, 0.7);
-}
-.github-repo .repo-header .repo-stats {
-    float: right;
-    font-size: 12px;
-    line-height: 20px;
-    margin: 5px 10px 0 0;
-}
-.github-repo .repo-header .repo-stats span, .github-repo .repo-header .repo-stats a {
-    color: #000000;
-    padding: 0 5px 0 25px;
-}
-.github-repo .repo-header .repo-stats .repo-watchers {
-    background: url("images/repostat.png") no-repeat scroll 5px -5px rgba(0, 0, 0, 0);
-}
-.github-repo .repo-header .repo-stats .repo-forks {
-    background: url("images/repostat.png") no-repeat scroll 5px -55px rgba(0, 0, 0, 0);
-}
-.github-repo .repo-header .repo-stats .repo-twitter {
-    float: right;
-    margin-left: 5px;
-}
-.github-repo .repo-header .repo-name {
-    display: block;
-    font-size: 18px;
-    letter-spacing: 2px;
-    padding: 5px 10px;
-}
-.github-repo .repo-commit {
-    padding: 10px;
-}
-.github-repo .repo-commit .repo-commit-message {
-    color: #000000;
-}
-.github-repo .repo-commit .repo-commit-date {
-    color: #333333;
-    display: block;
-    font-size: 12px;
-    font-style: italic;
-    letter-spacing: 0;
-    margin-top: 10px;
-}
-</style>
-
-        <script src="js/vendor/modernizr-2.6.2.min.js"></script>
-
-        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
-        <!--[if lt IE 9]>
-        <script src="js/vendor/bootstrap-3.0.0/assets/html5shiv.js"></script>
-        <script src="js/vendor/bootstrap-3.0.0/assets/respond.min.js"></script>
-        <![endif]-->
-    </head>
-    <body>
-        <!--[if lt IE 7]>
-            <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
-        <![endif]-->
-<div id="toc">
-</div>
-<div id="wrapper">
-<aside>
-    <h1>Mifos Platform Software Architecture Document</h1>
-    <section>
-        <h2>Summary</h2>
-        <p>
-            This document captures the major architectural decisions in platform. The purpose of the document is to provide a guide to the overall structure of the platform; where it fits in the overall context of an MIS solution and its internals so that contributors can more effectively understand how changes that they are considering can be made, and the consequences of those changes.
-        </p>
-        <p>
-            The target audience for this report is both system integrators (who will use the document to gain an understanding of the structure of the platform and its design rationale) and platform contributors who will use the document to reason about future changes and who will update the document as the system evolves.
-        </p>
-    </section>
-
-  <section>
-    <h2>Introduction</h2>
-    <section>
-        <h4>The Idea</h4>
-        <p>Mifos was an idea born out of a wish to create and deploy technology that allows the microfinance industry to scale. The goal is to:
-            <ul>
-                <li>Produce a gold standard management information system suitable for microfinance operations</li>
-                <li>Acts as the basis of a <strong>platform for microfinance</strong></li>
-                <li>Open source, owned and driven by member organisations in the community</li>
-                <li>Enabling potential for eco-system of providers located near to MFIs</li>
-            </ul>
-        </p>
-
-        <h4>History</h4>
-        <p>
-            <ul>
-                <li>2006: Project intiated by <a href="http://www.grameenfoundation.org/" target="_blank">Grameen Foundation</a></li>
-                <li>Late 2011: Grameen Foundation handed over full responsibility to open source community.</li>
-                <li>2012: Mifos X platform started. Previous members of project come together under the name of Community for Open Source Microfinance (COSM / <a href="http://www.openmf.org" target="_blank">OpenMF</a>)</li>
-                <li>2013: COSM / OpenMF officially rebranded to <strong>Mifos Initiative</strong> and receive US 501c3 status.</li>
-            </ul>
-        </p>
-
-        <h4>Project Related</h4>
-        <p>
-            <ul>
-                <li>Project url is <a href="https://github.com/openMF/mifosx" target="_blank">https://github.com/openMF/mifosx</a>
-                </li>
-                <li>Download from <a href="https://sourceforge.net/projects/mifos/" target="_blank">https://sourceforge.net/projects/mifos/</a>
-                </li>
-                <li><a href="https://sourceforge.net/projects/mifos/files/Mifos%20X/stats/timeline?dates=2012-04-25+to+2013-11-16" target="_blank">Download stats</a>
-                </li>
-            </ul>
-        </p>
-    </section>
-  </section>
-
-    <section>
-        <h2>System Overview</h2>
-        <img src="diagrams/platform-systemview.png" alt="System view diagram" />
-        <p>
-            Financial institutions deliver their services to customers through a variety of means today.
-            <ul>
-                <li>Customers can call direct into branches (teller model)</li>
-                <li>Customers can organise into groups (or centers) and agree to meetup at a location and time with FI staff (traditional microfinance).</li>
-                <li>An FI might have a public facing information portal that customers can use for variety of reasons including account management (online banking).</li>
-                <li>An FI might be integrated into a ATM/POS/Card services network that the customer can use.</li>
-                <li>An FI might be integrated with a mobile money operator and support mobile money services for customer (present/future microfinance).</li>
-                <li>An FI might use third party agents to sell on products/services from other banks/FIs.</li>
-            </ul>
-        </p>
-        <p>
-            As illustrated in the above diagram, the various stakeholders leverage <strong>business apps</strong> to perform specific customer or FI related actions. The functionality contained in these business apps can be bundled up and packaged in any way. In the diagram, several of the apps may be combined into one app or any one of the blocks representing an app could be further broken up as needed.
-        </p>
-        <p>
-            The platform is the <strong>core engine of the MIS</strong>. It hides alot of the complexity that exists in the business and technical domains needed for an MIS in FIs behind a relatively simple API. It is this API that <strong>frees up app developers to innovate and produce apps</strong> that can be as general or as bespoke as FIs need them to be.
-        </p>
-    </section>
-
-    <section>
-        <h2>Functional Overview</h2>
-        <p>As ALL capabilities of the platform are exposed through an API, The API docs are the best place to view a detailed breakdown of what the platform does. See <a href="https://demo.openmf.org/api-docs/apiLive.htm" target="_blank">online API Documentation</a>.
-        </p>
-        <img    src="diagrams/platform-categories.png" 
-                alt="platform functionality view" />
-        <p>At a higher level though we see the capabilities fall into the following categories:
-            <ul>
-                <li>
-                    Infrastructure
-                    <ul>
-                        <li>Codes</li>
-                        <li>Extensible Data Tables</li>
-                        <li>Reporting</li>
-                    </ul>
-                </li>
-                <li>
-                    User Administration
-                    <ul>
-                        <li>Users</li>
-                        <li>Roles</li>
-                        <li>Permissions</li>
-                    </ul>
-                </li>
-                <li>Organisation Modelling
-                    <ul>
-                        <li>Offices</li>
-                        <li>Staff</li>
-                        <li>Currency</li>
-                    </ul>
-                </li>
-                <li>Product Configuration
-                    <ul>
-                        <li>Charges</li>
-                        <li>Loan Products</li>
-                        <li>Deposit Products</li>
-                    </ul>
-                </li>
-                <li>
-                    Client Data
-                     <ul>
-                        <li>Know Your Client (KYC)</li>
-                    </ul>
-                </li>
-                <li>Portfolio Management
-                    <ul>
-                        <li>Loan Accounts</li>
-                        <li>Deposit Accounts</li>
-                        <li>Client/Groups</li>
-                    </ul>
-                </li>
-                <li>GL Account Management 
-                    <ul>
-                        <li>Chart of Accounts</li>
-                        <li>General Ledger</li>
-                    </ul>
-                </li>
-            </ul>
-        </p>
-    </section>
-
-    <section>
-        <h2>Technology</h2>
-        <p>
-            <ul>
-                <li>Java 7: <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a></li>
-
-                <li>JAX-RS 1.0: <a href="https://wikis.oracle.com/display/Jersey/Overview+of+JAX-RS+1.0+Features" target="_blank">using Jersey (1.17.x)</a></li>
-
-                <li><a href="http://www.json.org/" target="_blank">JSON</a> using <a href="http://code.google.com/p/google-gson/" target="_blank">Google GSON</a></li>
-
-                <li>
-                    Spring I/O Platform: <a href="http://spring.io/platform" target="_blank">http://spring.io/platform</a>
-                    <ul>
-                        <li><a  href="http://projects.spring.io/spring-framework"
-                                target="_blank">Spring Framework</a></li>
-                        <li><a  href="http://projects.spring.io/spring-security"
-                                target="_blank">Spring Security</a></li>
-                        <li><a  href="http://projects.spring.io/spring-data/"
-                                target="_blank">Spring Data (JPA) backed by Hibernate</a></li>
-                    </ul>
-                </li>
-                
-                <li>MySQL: <a href="http://www.oracle.com/us/products/mysql/overview/index.html" target="_blank">http://www.oracle.com/us/products/mysql/overview/index.html</a></li>
-            </ul>
-        </p>
-    </section>
-
-    <section>
-        <h2>Principals</h2>
-        <h3>RESTful API</h3>
-        <p>
-            The platform exposes all its functionality via a <strong>practically-RESTful API</strong>, that communicates using JSON.<p>
-        <p>
-            We use the term <strong>practically-RESTful</strong> in order to make it clear we are not trying to be <a href="http://en.wikipedia.org/wiki/Representational_state_transfer" target="_blank">fully REST compliant</a> but still maintain important RESTful attributes like:
-            <ul>
-                <li>
-                    Stateless: platform maintains no conversational or session-based state. The result of this is ability to scale horizontally with ease.
-                </li>
-                <li>
-                    Resource-oriented: API is focussed around set of resources using HTTP vocabulary and conventions e.g GET, PUT, POST, DELETE, HTTP status codes. This results in a simple and consistent API for clients.
-                </li>
-            </ul>
-
-            See <a href="https://demo.openmf.org/api-docs/apiLive.htm" target="_blank">online API Documentation</a> for more detail.
-        </p>
-        <h3>Multi-tenanted</h3>
-        <p>
-            The mifos platform has been developed with support for multi-tenancy at the core of its design. This means that it is just as easy to use the platform for Software-as-a-Service (SaaS) type offerings as it is for local installations.
-        </p>
-        <p>
-            The platform uses an approach that isolates an FIs data per database/schema (<a href="http://msdn.microsoft.com/en-us/library/aa479086.aspx#mlttntda_topic2" target="_blank">See Separate Databases and Shared Database, Separate Schemas</a>). 
-        </p>
-        <h3>Extensible</h3>
-        <p>
-            Whilst each tenant will have a set of core tables, the platform tables can be extended in different ways for each tenant through the use of <a href="#datatables">Data tables</a> functionality.
-        </p>
-
-        <h3>Command Query Seperation</h3>
-        <p>We seperate <strong>commands</strong> (that change data) from <strong>queries</strong> (that read data).</p>
-        <p>Why? There are numerous reasons for choosing this approach which at present is not an attempt at full blown CQRS. The main advantages at present are:
-            <ul>
-                <li>State changing commands are persisted providing an audit of all state changes.</li>
-                <li>Used to support a general approach to <strong>maker-checker</strong>.</li>
-                <li>State changing commands use the Object-Oriented paradign (and hence ORM) whilst querys can stay in the data paradigm.</li>
-            </ul>
-        </p>
-
-        <h3>Maker-Checker</h3>
-        <p>Also known as <strong>four-eyes principal</strong>. Enables apps to support a maker-checker style workflow process. Commands that pass validation will be persisted. Maker-checker can be enabled/disabled at fine-grained level for any state changing API.</p>
-
-        <h3>Fine grained access control</h3>
-        <p>A fine grained permission is associated with each API. Administrators have fine grained control over what roles or users have access to.</p>
-    </section>
-
-    <section>
-        <h2>Code Packaging</h2>
-        <p>
-            The intention is for platform code to be packaged in a vertical slice way (as opposed to layers).<br>
-            Source code starts from <a href="https://github.com/openMF/mifosx/tree/master/mifosng-provider/src/main/java/org/mifosplatform">mifosng-provider/src/main/java/org/mifosplatform</a><br>
-            
-            <ul><strong>org.mifosplatform.</strong>
-                <li>accounting</li>
-                <li>useradministration</li>
-                <li>infrastructure</li>
-                <li>portfolio
-                     <ul>
-                        <li>charge</li>
-                        <li>client</li>
-                        <li>fund</li>
-                        <li>loanaccount</li>
-                    </ul>
-                </li>
-                <li>accounting</li>
-            </ul>
-
-            Within each vertical slice is some common packaging structure:
-
-             <ul><strong>org.mifosplatform.useradministration.</strong>
-                <li>api - XXXApiResource.java - REST api implementation files</li>
-                <li>handler - XXXCommandHandler.java - specific handlers invoked</li>
-                <li>service - contains read + write services for functional area</li>
-                <li>domain - OO concepts for the functional area</li>
-                <li>data - Data concepts for the area</li>
-                <li>serialization - ability to convert from/to API JSON for functional area</li>
-            </ul>
-        </p>
-    </section>
-
-    <section>
-        <h2>Design Overview</h2>
-        <p><strong>Note</strong>: The implementation of the platform code to process commands through handlers whilst supporting maker-checker and authorisation checks is a little bit convoluted at present and is an area pin-pointed for clean up to make it easier to on board new platform developers. In the mean time below content is used to explain its workings at present.</p>
-        <img src="diagrams/command-query.png" alt="Command-Query Overview" />
-        <p>
-            Taking into account example shown above for the <strong>users</strong> resource.
-            <ol>
-                <li>Query: GET /users</li>
-                <li>HTTPS API: retrieveAll method on org.mifosplatform.useradministration.api.UsersApiResource invoked</li>
-                <li>UsersApiResource.retrieveAll: Check user has permission to access this resources data.</li>
-                <li>UsersApiResource.retrieveAll: Use 'read service' to fetch all users data ('read services' execute simple SQL queries against Database using JDBC)</li>
-                <li>UsersApiResource.retrieveAll: Data returned to coverted into JSON response</li>
-            </ol>
-
-            <ol>
-                <li>Command: POST /users (Note: data passed in request body)</li>
-                <li>HTTPS API: <strong>create</strong> method on <strong>org.mifosplatform.useradministration.api.UsersApiResource</strong> invoked</li>
-            </ol>
-
-<pre><code>@POST
-@Consumes({ MediaType.APPLICATION_JSON })
-@Produces({ MediaType.APPLICATION_JSON })
-public String create(final String apiRequestBodyAsJson) {
-
-    final CommandWrapper commandRequest = new CommandWrapperBuilder() //
-            .createUser() //
-            .withJson(apiRequestBodyAsJson) //
-            .build();
-
-    final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest);
-
-    return this.toApiJsonSerializer.serialize(result);
-}
-</code></pre>
-<p><em>Description:</em> Create a CommandWrapper object that represents this create user command and JSON request body. Pass off responsiblity for processing to <strong>PortfolioCommandSourceWritePlatformService.logCommandSource</strong>.</p>
-
-<pre><code>
-@Override
-public CommandProcessingResult logCommandSource(final CommandWrapper wrapper) {
-
-    boolean isApprovedByChecker = false;
-    // check if is update of own account details
-    if (wrapper.isUpdateOfOwnUserDetails(this.context.authenticatedUser().getId())) {
-        // then allow this operation to proceed.
-        // maker checker doesnt mean anything here.
-        isApprovedByChecker = true; // set to true in case permissions have
-                                    // been maker-checker enabled by
-                                    // accident.
-    } else {
-        // if not user changing their own details - check user has
-        // permission to perform specific task.
-        this.context.authenticatedUser().validateHasPermissionTo(wrapper.getTaskPermissionName());
-    }
-    validateIsUpdateAllowed();
-
-    final String json = wrapper.getJson();
-    CommandProcessingResult result = null;
-    try {
-        final JsonElement parsedCommand = this.fromApiJsonHelper.parse(json);
-        final JsonCommand command = JsonCommand.from(json, parsedCommand, this.fromApiJsonHelper, wrapper.getEntityName(),
-                wrapper.getEntityId(), wrapper.getSubentityId(), wrapper.getGroupId(), wrapper.getClientId(), wrapper.getLoanId(),
-                wrapper.getSavingsId(), wrapper.getCodeId(), wrapper.getSupportedEntityType(), wrapper.getSupportedEntityId(),
-                wrapper.getTransactionId(), wrapper.getHref(), wrapper.getProductId());
-
-        result = this.processAndLogCommandService.processAndLogCommand(wrapper, command, isApprovedByChecker);
-    } catch (final RollbackTransactionAsCommandIsNotApprovedByCheckerException e) {
-
-        result = this.processAndLogCommandService.logCommand(e.getCommandSourceResult());
-    }
-
-    return result;
-}
-</code></pre>
-<p><em>Description:</em> check user has permission for this action. if ok, a) parse the json request body, b) create a JsonCommand object to wrap the command details, c) use <strong>CommandProcessingService</strong> to handle command.</p>
-<p><strong>Note</strong>: if a RollbackTransactionAsCommandIsNotApprovedByCheckerException occurs at this point. The original transaction will of been aborted and we only log an entry for the command in the audit table setting its status as 'Pending'.</p>
-
-<pre><code>@Transactional
-@Override
-public CommandProcessingResult processAndLogCommand(final CommandWrapper wrapper, final JsonCommand command, final boolean isApprovedByChecker) {
-
-    final boolean rollbackTransaction = this.configurationDomainService.isMakerCheckerEnabledForTask(wrapper.taskPermissionName())
-            && !isApprovedByChecker;
-
-    final NewCommandSourceHandler handler = findCommandHandler(wrapper);
-    final CommandProcessingResult result = handler.processCommand(command);
-
-    final AppUser maker = this.context.authenticatedUser();
-
-    CommandSource commandSourceResult = null;
-    if (command.commandId() != null) {
-        commandSourceResult = this.commandSourceRepository.findOne(command.commandId());
-        commandSourceResult.markAsChecked(maker, DateTime.now());
-    } else {
-        commandSourceResult = CommandSource.fullEntryFrom(wrapper, command, maker);
-    }
-    commandSourceResult.updateResourceId(result.resourceId());
-    commandSourceResult.updateForAudit(result.getOfficeId(), result.getGroupId(), result.getClientId(), result.getLoanId(),
-            result.getSavingsId(), result.getProductId());
-
-    String changesOnlyJson = null;
-    if (result.hasChanges()) {
-        changesOnlyJson = this.toApiJsonSerializer.serializeResult(result.getChanges());
-        commandSourceResult.updateJsonTo(changesOnlyJson);
-    }
-
-    if (!result.hasChanges() && wrapper.isUpdateOperation() && !wrapper.isUpdateDatatable()) {
-        commandSourceResult.updateJsonTo(null);
-    }
-
-    if (commandSourceResult.hasJson()) {
-        this.commandSourceRepository.save(commandSourceResult);
-    }
-
-    if (rollbackTransaction) { throw new RollbackTransactionAsCommandIsNotApprovedByCheckerException(commandSourceResult); }
-
-    return result;
-}
-</code></pre>
-        <ol>
-            <li>Check that if maker-checker configuration enabled for this action. If yes and this is not a 'checker' approving the command - rollback at the end. We rollback at the end in order to test if the command will pass 'domain validation' which requires commit to database for full check.</li>
-            <li>findCommandHandler - Find the correct <strong>Hanlder</strong> to process this command.</li>
-            <li>Process command using handler (In transactional scope).</li>
-            <li>CommandSource object created/updated with all details for logging to 'm_portfolio_command_source' table.</li>
-            <li>In update scenario, we check to see if there where really any changes/updates. If so only JSON for changes is stored in audit log.</li>
-        </ol>
-        </p>
-    </section>
-
-</aside>
-<!-- end of wrapper -->
-</div>
-
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
-    <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.9.1.min.js"><\/script>')</script>
-    <script src="js/plugins.js"></script>
-    <script src="js/vendor/bootstrap-3.0.0/bootstrap.min.js"></script>
-    <script src="js/vendor/toc-0.1.2/jquery.toc.min.js"></script>
-    <script>
-        $('#toc').toc();
-    </script>
-    </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/plugins.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/plugins.js b/docs/system-architecture/js/plugins.js
deleted file mode 100644
index 9683075..0000000
--- a/docs/system-architecture/js/plugins.js
+++ /dev/null
@@ -1,23 +0,0 @@
-// Avoid `console` errors in browsers that lack a console.
-(function() {
-    var method;
-    var noop = function () {};
-    var methods = [
-        'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
-        'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
-        'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
-        'timeStamp', 'trace', 'warn'
-    ];
-    var length = methods.length;
-    var console = (window.console = window.console || {});
-
-    while (length--) {
-        method = methods[length];
-
-        // Only stub undefined methods.
-        if (!console[method]) {
-            console[method] = noop;
-        }
-    }
-}());
-// Place any jQuery/helper plugins in here.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/application.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/application.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/application.js
deleted file mode 100644
index 81b644b..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/application.js
+++ /dev/null
@@ -1,83 +0,0 @@
-// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
-// IT'S ALL JUST JUNK FOR OUR DOCS!
-// ++++++++++++++++++++++++++++++++++++++++++
-
-!function ($) {
-
-  $(function(){
-
-    var $window = $(window)
-    var $body   = $(document.body)
-
-    var navHeight = $('.navbar').outerHeight(true) + 10
-
-    $body.scrollspy({
-      target: '.bs-sidebar',
-      offset: navHeight
-    })
-
-    $window.on('load', function () {
-      $body.scrollspy('refresh')
-    })
-
-    $('.bs-docs-container [href=#]').click(function (e) {
-      e.preventDefault()
-    })
-
-    // back to top
-    setTimeout(function () {
-      var $sideBar = $('.bs-sidebar')
-
-      $sideBar.affix({
-        offset: {
-          top: function () {
-            var offsetTop      = $sideBar.offset().top
-            var sideBarMargin  = parseInt($sideBar.children(0).css('margin-top'), 10)
-            var navOuterHeight = $('.bs-docs-nav').height()
-
-            return (this.top = offsetTop - navOuterHeight - sideBarMargin)
-          }
-        , bottom: function () {
-            return (this.bottom = $('.bs-footer').outerHeight(true))
-          }
-        }
-      })
-    }, 100)
-
-    setTimeout(function () {
-      $('.bs-top').affix()
-    }, 100)
-
-    // tooltip demo
-    $('.tooltip-demo').tooltip({
-      selector: "[data-toggle=tooltip]",
-      container: "body"
-    })
-
-    $('.tooltip-test').tooltip()
-    $('.popover-test').popover()
-
-    $('.bs-docs-navbar').tooltip({
-      selector: "a[data-toggle=tooltip]",
-      container: ".bs-docs-navbar .nav"
-    })
-
-    // popover demo
-    $("[data-toggle=popover]")
-      .popover()
-
-    // button state demo
-    $('#fat-btn')
-      .click(function () {
-        var btn = $(this)
-        btn.button('loading')
-        setTimeout(function () {
-          btn.button('reset')
-        }, 3000)
-      })
-
-    // carousel demo
-    $('.bs-docs-carousel-example').carousel()
-})
-
-}(window.jQuery)

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/customizer.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/customizer.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/customizer.js
deleted file mode 100644
index 5abfe42..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/customizer.js
+++ /dev/null
@@ -1,290 +0,0 @@
-window.onload = function () { // wait for load in a dumb way because B-0
-  var cw = '/*!\n * Bootstrap v3.0.0\n *\n * Copyright 2013 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n'
-
-  function showError(msg, err) {
-    $('<div id="bsCustomizerAlert" class="bs-customizer-alert">\
-        <div class="container">\
-          <a href="#bsCustomizerAlert" data-dismiss="alert" class="close pull-right">&times;</a>\
-          <p class="bs-customizer-alert-text"><span class="glyphicon glyphicon-warning-sign"></span>' + msg + '</p>' +
-          (err.extract ? '<pre class="bs-customizer-alert-extract">' + err.extract.join('\n') + '</pre>' : '') + '\
-        </div>\
-      </div>').appendTo('body').alert()
-    throw err
-  }
-
-  function showCallout(msg, showUpTop) {
-    var callout = $('<div class="bs-callout bs-callout-danger">\
-       <h4>Attention!</h4>\
-      <p>' + msg + '</p>\
-    </div>')
-
-    if (showUpTop) {
-      callout.appendTo('.bs-docs-container')
-    } else {
-      callout.insertAfter('.bs-customize-download')
-    }
-  }
-
-  function getQueryParam(key) {
-    key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&"); // escape RegEx meta chars
-    var match = location.search.match(new RegExp("[?&]"+key+"=([^&]+)(&|$)"));
-    return match && decodeURIComponent(match[1].replace(/\+/g, " "));
-  }
-
-  function createGist(configData) {
-    var data = {
-      "description": "Bootstrap Customizer Config",
-      "public": true,
-      "files": {
-        "config.json": {
-          "content": JSON.stringify(configData, null, 2)
-        }
-      }
-    }
-    $.ajax({
-      url: 'https://api.github.com/gists',
-      type: 'POST',
-      dataType: 'json',
-      data: JSON.stringify(data)
-    })
-    .success(function(result) {
-      history.replaceState(false, document.title, window.location.origin + window.location.pathname + '?id=' + result.id)
-    })
-    .error(function(err) {
-      showError('<strong>Ruh roh!</strong> Could not save gist file, configuration not saved.', err)
-    })
-  }
-
-  function getCustomizerData() {
-    var vars = {}
-
-    $('#less-variables-section input')
-        .each(function () {
-          $(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
-        })
-
-    var data = {
-      vars: vars,
-      css: $('#less-section input:checked')  .map(function () { return this.value }).toArray(),
-      js:  $('#plugin-section input:checked').map(function () { return this.value }).toArray()
-    }
-
-    if ($.isEmptyObject(data.vars) && !data.css.length && !data.js.length) return
-
-    return data
-  }
-
-  function parseUrl() {
-    var id = getQueryParam('id')
-
-    if (!id) return
-
-    $.ajax({
-      url: 'https://api.github.com/gists/' + id,
-      type: 'GET',
-      dataType: 'json'
-    })
-    .success(function(result) {
-      var data = JSON.parse(result.files['config.json'].content)
-      if (data.js) {
-        $('#plugin-section input').each(function () {
-          $(this).prop('checked', ~$.inArray(this.value, data.js))
-        })
-      }
-      if (data.css) {
-        $('#less-section input').each(function () {
-          $(this).prop('checked', ~$.inArray(this.value, data.css))
-        })
-      }
-      if (data.vars) {
-        for (var i in data.vars) {
-          $('input[data-var="' + i + '"]').val(data.vars[i])
-        }
-      }
-    })
-    .error(function(err) {
-      showError('Error fetching bootstrap config file', err)
-    })
-  }
-
-  function generateZip(css, js, fonts, complete) {
-    if (!css && !js) return showError('<strong>Ruh roh!</strong> No Bootstrap files selected.', new Error('no Bootstrap'))
-
-    var zip = new JSZip()
-
-    if (css) {
-      var cssFolder = zip.folder('css')
-      for (var fileName in css) {
-        cssFolder.file(fileName, css[fileName])
-      }
-    }
-
-    if (js) {
-      var jsFolder = zip.folder('js')
-      for (var fileName in js) {
-        jsFolder.file(fileName, js[fileName])
-      }
-    }
-
-    if (fonts) {
-      var fontsFolder = zip.folder('fonts')
-      for (var fileName in fonts) {
-        fontsFolder.file(fileName, fonts[fileName])
-      }
-    }
-
-    var content = zip.generate({type:"blob"})
-
-    complete(content)
-  }
-
-  function generateCustomCSS(vars) {
-    var result = ''
-
-    for (var key in vars) {
-      result += key + ': ' + vars[key] + ';\n'
-    }
-
-    return result + '\n\n'
-  }
-
-  function generateFonts() {
-    var glyphicons = $('#less-section [value="glyphicons.less"]:checked')
-    if (glyphicons.length) {
-      return __fonts
-    }
-  }
-
-  function generateCSS() {
-    var $checked = $('#less-section input:checked')
-
-    if (!$checked.length) return false
-
-    var result = {}
-    var vars = {}
-    var css = ''
-
-    $('#less-variables-section input')
-        .each(function () {
-          $(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
-        })
-
-    css += __less['variables.less']
-    if (vars) css += generateCustomCSS(vars)
-    css += __less['mixins.less']
-    css += __less['normalize.less']
-    css += __less['scaffolding.less']
-    css += $checked
-      .map(function () { return __less[this.value] })
-      .toArray()
-      .join('\n')
-
-    css = css.replace(/@import[^\n]*/gi, '') //strip any imports
-
-    try {
-      var parser = new less.Parser({
-          paths: ['variables.less', 'mixins.less']
-        , optimization: 0
-        , filename: 'bootstrap.css'
-      }).parse(css, function (err, tree) {
-        if (err) {
-          return showError('<strong>Ruh roh!</strong> Could not parse less files.', err)
-        }
-        result = {
-          'bootstrap.css'     : cw + tree.toCSS(),
-          'bootstrap.min.css' : cw + tree.toCSS({ compress: true })
-        }
-      })
-    } catch (err) {
-      return showError('<strong>Ruh roh!</strong> Could not parse less files.', err)
-    }
-
-    return result
-  }
-
-  function generateJavascript() {
-    var $checked = $('#plugin-section input:checked')
-    if (!$checked.length) return false
-
-    var js = $checked
-      .map(function () { return __js[this.value] })
-      .toArray()
-      .join('\n')
-
-    return {
-      'bootstrap.js': js,
-      'bootstrap.min.js': cw + uglify(js)
-    }
-  }
-
-  var inputsComponent = $('#less-section input')
-  var inputsPlugin    = $('#plugin-section input')
-  var inputsVariables = $('#less-variables-section input')
-
-  $('#less-section .toggle').on('click', function (e) {
-    e.preventDefault()
-    inputsComponent.prop('checked', !inputsComponent.is(':checked'))
-  })
-
-  $('#plugin-section .toggle').on('click', function (e) {
-    e.preventDefault()
-    inputsPlugin.prop('checked', !inputsPlugin.is(':checked'))
-  })
-
-  $('#less-variables-section .toggle').on('click', function (e) {
-    e.preventDefault()
-    inputsVariables.val('')
-  })
-
-  $('[data-dependencies]').on('click', function () {
-    if (!$(this).is(':checked')) return
-    var dependencies = this.getAttribute('data-dependencies')
-    if (!dependencies) return
-    dependencies = dependencies.split(',')
-    for (var i = 0; i < dependencies.length; i++) {
-      var dependency = $('[value="' + dependencies[i] + '"]')
-      dependency && dependency.prop('checked', true)
-    }
-  })
-
-  $('[data-dependents]').on('click', function () {
-    if ($(this).is(':checked')) return
-    var dependents = this.getAttribute('data-dependents')
-    if (!dependents) return
-    dependents = dependents.split(',')
-    for (var i = 0; i < dependents.length; i++) {
-      var dependent = $('[value="' + dependents[i] + '"]')
-      dependent && dependent.prop('checked', false)
-    }
-  })
-
-  var $compileBtn = $('#btn-compile')
-  var $downloadBtn = $('#btn-download')
-
-  $compileBtn.on('click', function (e) {
-    e.preventDefault()
-
-    $compileBtn.attr('disabled', 'disabled')
-
-    generateZip(generateCSS(), generateJavascript(), generateFonts(), function (blob) {
-      $compileBtn.removeAttr('disabled')
-      saveAs(blob, "bootstrap.zip")
-      createGist(getCustomizerData())
-    })
-  })
-
-  // browser support alerts
-  if (!window.URL && navigator.userAgent.toLowerCase().indexOf('safari') != -1) {
-    showCallout("Looks like you're using safari, which sadly doesn't have the best support\
-                 for HTML5 blobs. Because of this your file will be downloaded with the name <code>\"untitled\"</code>.\
-                 However, if you check your downloads folder, just rename this <code>\"untitled\"</code> file\
-                 to <code>\"bootstrap.zip\"</code> and you should be good to go!")
-  } else if (!window.URL && !window.webkitURL) {
-    $('.bs-docs-section, .bs-sidebar').css('display', 'none')
-
-    showCallout("Looks like your current browser doesn't support the Bootstrap Customizer. Please take a second\
-                to <a href=\"https://www.google.com/intl/en/chrome/browser/\"> upgrade to a more modern browser</a>.", true)
-  }
-
-  parseUrl()
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/filesaver.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/filesaver.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/filesaver.js
deleted file mode 100644
index adecc88..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/filesaver.js
+++ /dev/null
@@ -1,169 +0,0 @@
-/* Blob.js
- * A Blob implementation.
- * 2013-06-20
- *
- * By Eli Grey, http://eligrey.com
- * By Devin Samarin, https://github.com/eboyjr
- * License: X11/MIT
- *   See LICENSE.md
- */
-
-/*global self, unescape */
-/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
-  plusplus: true */
-
-/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
-
-if (typeof Blob !== "function" || typeof URL === "undefined")
-if (typeof Blob === "function" && typeof webkitURL !== "undefined") self.URL = webkitURL;
-else var Blob = (function (view) {
-  "use strict";
-
-  var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || view.MSBlobBuilder || (function(view) {
-    var
-        get_class = function(object) {
-        return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
-      }
-      , FakeBlobBuilder = function BlobBuilder() {
-        this.data = [];
-      }
-      , FakeBlob = function Blob(data, type, encoding) {
-        this.data = data;
-        this.size = data.length;
-        this.type = type;
-        this.encoding = encoding;
-      }
-      , FBB_proto = FakeBlobBuilder.prototype
-      , FB_proto = FakeBlob.prototype
-      , FileReaderSync = view.FileReaderSync
-      , FileException = function(type) {
-        this.code = this[this.name = type];
-      }
-      , file_ex_codes = (
-          "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
-        + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
-      ).split(" ")
-      , file_ex_code = file_ex_codes.length
-      , real_URL = view.URL || view.webkitURL || view
-      , real_create_object_URL = real_URL.createObjectURL
-      , real_revoke_object_URL = real_URL.revokeObjectURL
-      , URL = real_URL
-      , btoa = view.btoa
-      , atob = view.atob
-
-      , ArrayBuffer = view.ArrayBuffer
-      , Uint8Array = view.Uint8Array
-    ;
-    FakeBlob.fake = FB_proto.fake = true;
-    while (file_ex_code--) {
-      FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
-    }
-    if (!real_URL.createObjectURL) {
-      URL = view.URL = {};
-    }
-    URL.createObjectURL = function(blob) {
-      var
-          type = blob.type
-        , data_URI_header
-      ;
-      if (type === null) {
-        type = "application/octet-stream";
-      }
-      if (blob instanceof FakeBlob) {
-        data_URI_header = "data:" + type;
-        if (blob.encoding === "base64") {
-          return data_URI_header + ";base64," + blob.data;
-        } else if (blob.encoding === "URI") {
-          return data_URI_header + "," + decodeURIComponent(blob.data);
-        } if (btoa) {
-          return data_URI_header + ";base64," + btoa(blob.data);
-        } else {
-          return data_URI_header + "," + encodeURIComponent(blob.data);
-        }
-      } else if (real_create_object_URL) {
-        return real_create_object_URL.call(real_URL, blob);
-      }
-    };
-    URL.revokeObjectURL = function(object_URL) {
-      if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
-        real_revoke_object_URL.call(real_URL, object_URL);
-      }
-    };
-    FBB_proto.append = function(data/*, endings*/) {
-      var bb = this.data;
-      // decode data to a binary string
-      if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
-        var
-            str = ""
-          , buf = new Uint8Array(data)
-          , i = 0
-          , buf_len = buf.length
-        ;
-        for (; i < buf_len; i++) {
-          str += String.fromCharCode(buf[i]);
-        }
-        bb.push(str);
-      } else if (get_class(data) === "Blob" || get_class(data) === "File") {
-        if (FileReaderSync) {
-          var fr = new FileReaderSync;
-          bb.push(fr.readAsBinaryString(data));
-        } else {
-          // async FileReader won't work as BlobBuilder is sync
-          throw new FileException("NOT_READABLE_ERR");
-        }
-      } else if (data instanceof FakeBlob) {
-        if (data.encoding === "base64" && atob) {
-          bb.push(atob(data.data));
-        } else if (data.encoding === "URI") {
-          bb.push(decodeURIComponent(data.data));
-        } else if (data.encoding === "raw") {
-          bb.push(data.data);
-        }
-      } else {
-        if (typeof data !== "string") {
-          data += ""; // convert unsupported types to strings
-        }
-        // decode UTF-16 to binary string
-        bb.push(unescape(encodeURIComponent(data)));
-      }
-    };
-    FBB_proto.getBlob = function(type) {
-      if (!arguments.length) {
-        type = null;
-      }
-      return new FakeBlob(this.data.join(""), type, "raw");
-    };
-    FBB_proto.toString = function() {
-      return "[object BlobBuilder]";
-    };
-    FB_proto.slice = function(start, end, type) {
-      var args = arguments.length;
-      if (args < 3) {
-        type = null;
-      }
-      return new FakeBlob(
-          this.data.slice(start, args > 1 ? end : this.data.length)
-        , type
-        , this.encoding
-      );
-    };
-    FB_proto.toString = function() {
-      return "[object Blob]";
-    };
-    return FakeBlobBuilder;
-  }(view));
-
-  return function Blob(blobParts, options) {
-    var type = options ? (options.type || "") : "";
-    var builder = new BlobBuilder();
-    if (blobParts) {
-      for (var i = 0, len = blobParts.length; i < len; i++) {
-        builder.append(blobParts[i]);
-      }
-    }
-    return builder.getBlob(type);
-  };
-}(self));
-
-/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
-var saveAs=saveAs||(navigator.msSaveOrOpenBlob&&navigator.msSaveOrOpenBlob.bind(navigator))||(function(h){"use strict";var r=h.document,l=function(){return h.URL||h.webkitURL||h},e=h.URL||h.webkitURL||h,n=r.createElementNS("http://www.w3.org/1999/xhtml","a"),g=!h.externalHost&&"download" in n,j=function(t){var s=r.createEvent("MouseEvents");s.initMouseEvent("click",true,false,h,0,0,0,0,0,false,false,false,false,0,null);t.dispatchEvent(s)},o=h.webkitRequestFileSystem,p=h.requestFileSystem||o||h.mozRequestFileSystem,m=function(s){(h.setImmediate||h.setTimeout)(function(){throw s},0)},c="application/octet-stream",k=0,b=[],i=function(){var t=b.length;while(t--){var s=b[t];if(typeof s==="string"){e.revokeObjectURL(s)}else{s.remove()}}b.length=0},q=function(t,s,w){s=[].concat(s);var v=s.length;while(v--){var x=t["on"+s[v]];if(typeof x==="function"){try{x.call(t,w||t)}catch(u){m(u)}}}},f=function(t,u){var v=this,B=t.type,E=false,x,w,s=function(){var F=l().createObjectURL(t);b.push(F);retur
 n F},A=function(){q(v,"writestart progress write writeend".split(" "))},D=function(){if(E||!x){x=s(t)}if(w){w.location.href=x}else{window.open(x,"_blank")}v.readyState=v.DONE;A()},z=function(F){return function(){if(v.readyState!==v.DONE){return F.apply(this,arguments)}}},y={create:true,exclusive:false},C;v.readyState=v.INIT;if(!u){u="download"}if(g){x=s(t);n.href=x;n.download=u;j(n);v.readyState=v.DONE;A();return}if(h.chrome&&B&&B!==c){C=t.slice||t.webkitSlice;t=C.call(t,0,t.size,c);E=true}if(o&&u!=="download"){u+=".download"}if(B===c||o){w=h}if(!p){D();return}k+=t.size;p(h.TEMPORARY,k,z(function(F){F.root.getDirectory("saved",y,z(function(G){var H=function(){G.getFile(u,y,z(function(I){I.createWriter(z(function(J){J.onwriteend=function(K){w.location.href=I.toURL();b.push(I);v.readyState=v.DONE;q(v,"writeend",K)};J.onerror=function(){var K=J.error;if(K.code!==K.ABORT_ERR){D()}};"writestart progress write abort".split(" ").forEach(function(K){J["on"+K]=v["on"+K]});J.write(t);v.abort=
 function(){J.abort();v.readyState=v.DONE};v.readyState=v.WRITING}),D)}),D)};G.getFile(u,{create:false},z(function(I){I.remove();H()}),z(function(I){if(I.code===I.NOT_FOUND_ERR){H()}else{D()}}))}),D)}),D)},d=f.prototype,a=function(s,t){return new f(s,t)};d.abort=function(){var s=this;s.readyState=s.DONE;q(s,"abort")};d.readyState=d.INIT=0;d.WRITING=1;d.DONE=2;d.error=d.onwritestart=d.onprogress=d.onwrite=d.onabort=d.onerror=d.onwriteend=null;h.addEventListener("unload",i,false);return a}(self));
\ No newline at end of file


[46/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/build-cloudbees.sh
----------------------------------------------------------------------
diff --git a/build-cloudbees.sh b/build-cloudbees.sh
deleted file mode 100755
index c608ea1..0000000
--- a/build-cloudbees.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-set -e
-
-# https://developer.cloudbees.com/bin/view/DEV/Node+Builds
-curl -s -o use-node https://repository-cloudbees.forge.cloudbees.com/distributions/ci-addons/node/use-node
-NODE_VERSION=0.11.12 . ./use-node
-
-./build.sh

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/build.sh
----------------------------------------------------------------------
diff --git a/build.sh b/build.sh
deleted file mode 100755
index 3b06f12..0000000
--- a/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-# Exit the script if any command returns a non-true return value (http://www.davidpashley.com/articles/writing-robust-shell-scripts/)
-set -e
-
-git --version
-# TODO UNCOMMENT THIS once https://github.com/openMF/mifosx/pull/1291 is merged!
-# git pull
-# This does NOT get the most recent revision from the submodule repository.
-# Instead, it only gets the revision of the submodule that is recorded in the revision of the main repository.
-## NOT git submodule update --remote
-# The following is very important, because even if the main (API) repo is latest,
-# the sub-module initially will be a fixed old rev. and only this grabs real latest:
-git submodule foreach 'git checkout develop && git pull --ff-only origin develop'
-
-cd apps/community-app
-./build.sh
-cd ../../fineract-provider/
-./gradlew -Penv=dev clean dist

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/config/fineractdev-eclipse-preferences.epf
----------------------------------------------------------------------
diff --git a/config/fineractdev-eclipse-preferences.epf b/config/fineractdev-eclipse-preferences.epf
deleted file mode 100644
index 373d3ef..0000000
--- a/config/fineractdev-eclipse-preferences.epf
+++ /dev/null
@@ -1,110 +0,0 @@
-#Fri Nov 23 23:01:54 GMT 2012
-/instance/org.eclipse.jdt.ui/cleanup.always_use_parentheses_in_expressions=false
-/instance/org.eclipse.jdt.ui/cleanup.make_parameters_final=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-/instance/org.eclipse.jdt.ui/cleanup.add_serial_version_id=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=disabled
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.ondemandthreshold=99
-/instance/org.eclipse.jdt.ui/cleanup.always_use_blocks=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-/instance/org.eclipse.jdt.ui/cleanup.remove_trailing_whitespaces=true
-/instance/org.eclipse.jdt.ui/cleanup.make_private_fields_final=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_override_annotations_interface_methods=true
-@org.eclipse.jdt.ui=3.7.1.r371_v20110824-0800
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_nls_tags=false
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.ignorelowercasenames=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_private_constructors=true
-/instance/org.eclipse.jdt.ui/cleanup.add_default_serial_version_id=true
-/instance/org.eclipse.jdt.ui/cleanup.use_blocks=true
-/instance/org.eclipse.jdt.ui/cleanup.convert_to_enhanced_for_loop=false
-file_export_version=3.0
-/instance/org.eclipse.jdt.ui/formatter_settings_version=12
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.exception.name=e
-/instance/org.eclipse.jdt.ui/cleanup.qualify_static_field_accesses_with_declaring_class=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=enabled
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.cleanupprofiles=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<profiles version\="2">\r\n<profile kind\="CleanUpProfile" name\="fineractdevprofile" version\="2">\r\n<setting id\="cleanup.remove_unused_private_fields" value\="true"/>\r\n<setting id\="cleanup.always_use_parentheses_in_expressions" value\="false"/>\r\n<setting id\="cleanup.never_use_blocks" value\="false"/>\r\n<setting id\="cleanup.remove_unused_private_methods" value\="true"/>\r\n<setting id\="cleanup.add_missing_deprecated_annotations" value\="true"/>\r\n<setting id\="cleanup.convert_to_enhanced_for_loop" value\="false"/>\r\n<setting id\="cleanup.remove_unnecessary_nls_tags" value\="true"/>\r\n<setting id\="cleanup.sort_members" value\="false"/>\r\n<setting id\="cleanup.remove_unused_local_variables" value\="false"/>\r\n<setting id\="cleanup.never_use_parentheses_in_expressions" value\="true"/>\r\n<setting id\="cleanup.remove_unused_private_members" value
 \="false"/>\r\n<setting id\="cleanup.remove_unnecessary_casts" value\="true"/>\r\n<setting id\="cleanup.make_parameters_final" value\="true"/>\r\n<setting id\="cleanup.use_this_for_non_static_field_access" value\="true"/>\r\n<setting id\="cleanup.remove_private_constructors" value\="true"/>\r\n<setting id\="cleanup.use_blocks" value\="true"/>\r\n<setting id\="cleanup.always_use_this_for_non_static_method_access" value\="false"/>\r\n<setting id\="cleanup.remove_trailing_whitespaces_all" value\="true"/>\r\n<setting id\="cleanup.always_use_this_for_non_static_field_access" value\="true"/>\r\n<setting id\="cleanup.use_this_for_non_static_field_access_only_if_necessary" value\="false"/>\r\n<setting id\="cleanup.add_default_serial_version_id" value\="true"/>\r\n<setting id\="cleanup.make_type_abstract_if_missing_method" value\="false"/>\r\n<setting id\="cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class" value\="true"/>\r\n<setting id\="cleanup.make_variable_decl
 arations_final" value\="true"/>\r\n<setting id\="cleanup.add_missing_nls_tags" value\="false"/>\r\n<setting id\="cleanup.format_source_code" value\="true"/>\r\n<setting id\="cleanup.qualify_static_method_accesses_with_declaring_class" value\="false"/>\r\n<setting id\="cleanup.add_missing_override_annotations" value\="true"/>\r\n<setting id\="cleanup.remove_unused_private_types" value\="true"/>\r\n<setting id\="cleanup.add_missing_methods" value\="true"/>\r\n<setting id\="cleanup.make_local_variable_final" value\="true"/>\r\n<setting id\="cleanup.correct_indentation" value\="true"/>\r\n<setting id\="cleanup.add_missing_override_annotations_interface_methods" value\="true"/>\r\n<setting id\="cleanup.remove_unused_imports" value\="true"/>\r\n<setting id\="cleanup.remove_trailing_whitespaces_ignore_empty" value\="false"/>\r\n<setting id\="cleanup.make_private_fields_final" value\="true"/>\r\n<setting id\="cleanup.add_generated_serial_version_id" value\="false"/>\r\n<setting id\="cleanup
 .organize_imports" value\="true"/>\r\n<setting id\="cleanup.remove_trailing_whitespaces" value\="true"/>\r\n<setting id\="cleanup.sort_members_all" value\="false"/>\r\n<setting id\="cleanup.use_blocks_only_for_return_and_throw" value\="false"/>\r\n<setting id\="cleanup.add_missing_annotations" value\="true"/>\r\n<setting id\="cleanup.use_parentheses_in_expressions" value\="false"/>\r\n<setting id\="cleanup.qualify_static_field_accesses_with_declaring_class" value\="false"/>\r\n<setting id\="cleanup.use_this_for_non_static_method_access_only_if_necessary" value\="true"/>\r\n<setting id\="cleanup.use_this_for_non_static_method_access" value\="true"/>\r\n<setting id\="cleanup.qualify_static_member_accesses_through_instances_with_declaring_class" value\="true"/>\r\n<setting id\="cleanup.add_serial_version_id" value\="false"/>\r\n<setting id\="cleanup.format_source_code_changes_only" value\="false"/>\r\n<setting id\="cleanup.qualify_static_member_accesses_with_declaring_class" value\="tr
 ue"/>\r\n<setting id\="cleanup.always_use_blocks" value\="true"/>\r\n</profile>\r\n</profiles>\r\n
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.importorder=java;javax;org;com;
-/instance/org.eclipse.jdt.ui/cleanup_profile=_fineractdevprofile
-/instance/org.eclipse.jdt.ui/cleanup.qualify_static_member_accesses_with_declaring_class=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-/instance/org.eclipse.jdt.ui/cleanup.use_parentheses_in_expressions=false
-\!/=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.compliance=1.6
-/instance/org.eclipse.jdt.ui/cleanup.sort_members=false
-/instance/org.eclipse.jdt.ui/cleanup.use_this_for_non_static_field_access_only_if_necessary=false
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.staticondemandthreshold=99
-/instance/org.eclipse.jdt.ui/cleanup.never_use_parentheses_in_expressions=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.localSuffixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.localPrefixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-/instance/org.eclipse.jdt.ui/cleanup.make_variable_declarations_final=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.formatterprofiles=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<profiles version\="12">\r\n<profile kind\="CodeFormatterProfile" name\="fineractdevprojectformatter" version\="12">\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.disabling_tag" value\="@formatter\:off"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" valu
 e\="end_of_line"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_field" value\="0"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.use_on_off_tags" val
 ue\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotatio
 n" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value\="80"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value\="end_of_line"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value\="do
  not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_after_package" value\="1"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.continuation_indentation" value\="2"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value\="do not insert
 "/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value\="1"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_package" value\="0"/>\r\n<setting id\="org.eclipse.jdt.core.compiler.source" value\="1.7"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_line_comments" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.
 insert_space_after_comma_in_enum_declarations" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.join_wrapped_lines" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value\="1"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_bef
 ore_opening_brace_in_method_declaration" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.co
 re.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.lineSplit" value\="140"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constr
 uctor_declaration" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value\="1"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.indentation.size" value\="8"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.enabling_tag" value\="@formatter\:on"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_assignment" value\="0"/>\r\n<setting id\="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value\="error"/>\r\n<setting id\="org.eclipse.jdt.
 core.formatter.tabulation.char" value\="space"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_method" value\="1"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value\="do not in
 sert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value\="end_of_line"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value\="0"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.inse
 rt_space_before_opening_brace_in_enum_constant" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_switch" value\="end_of_line"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value\="d
 o not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value\="error"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.i
 ndent_switchstatements_compare_to_switch" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_block" value\="end_of_line"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value\="end_of_line"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.compact_else_if" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value\="tr
 ue"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value\="end_of_line"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration
 _parameters" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.tabulation.size" value\="4"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value\="do not insert"/>\r\n<setting id\="org.eclipse.
 jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.indent_empty_lines" v
 alue\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value\="end_of_line"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value\="1"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.forma
 tter.insert_space_before_opening_paren_in_method_invocation" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.compiler.compliance" value\="1.7"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value\="2"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value\="16
 "/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.
 formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value\="end_of_line"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value\="insert"/>\r\n<setting id\=
 "org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value\="enabled"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value\="do not inse
 rt"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.line_length" value\="80"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value\="1"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value\="end_of_line"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value\="0"/>\r\n<setting id\="org.eclipse.jdt.core.form
 atter.insert_space_before_colon_in_conditional" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value\="1"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value\="16"/>\r\n<setting id\="
 org.eclipse.jdt.core.formatter.join_lines_in_comments" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.inse
 rt_space_between_empty_parens_in_constructor_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value\="1"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_html" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value\="insert"/>\r\n<setting id\=
 "org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_source_code" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value\="16"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_br
 ace_in_array_initializer" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value\="1.7"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value\="80"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value\="0"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_header" value\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.format_block_comments" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value\="0"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.indent_body_decl
 arations_compare_to_annotation_declaration_header" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.inser
 t_space_before_colon_in_assert" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value\="end_of_line"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field
 _declarations" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value\="1"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value\="true"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value\="insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.never_
 indent_line_comments_on_first_column" value\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value\="do not insert"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value\="false"/>\r\n<setting id\="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value\="false"/>\r\n</profile>\r\n</profiles>\r\n
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.keywordthis=true
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_override_annotations=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_unnecessary_nls_tags=true
-/instance/org.eclipse.jdt.ui/formatter_profile=_fineractdevprojectformatter
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-/instance/org.eclipse.jdt.ui/cleanup.organize_imports=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.formatterprofiles.version=12
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-@org.eclipse.jdt.core=3.7.1.v_B76_R37x
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_private_types=true
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_methods=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_imports=true
-/instance/org.eclipse.jdt.ui/cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-/instance/org.eclipse.jdt.ui/cleanup.always_use_this_for_non_static_method_access=false
-/instance/org.eclipse.jdt.ui/cleanup.always_use_this_for_non_static_field_access=true
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_annotations=true
-/instance/org.eclipse.jdt.ui/cleanup.use_this_for_non_static_field_access=true
-/instance/org.eclipse.jdt.ui/cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_trailing_whitespaces_all=true
-/instance/org.eclipse.jdt.ui/cleanup.never_use_blocks=false
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.gettersetter.use.is=true
-/instance/org.eclipse.jdt.ui/cleanup.format_source_code_changes_only=false
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_private_methods=true
-/instance/org.eclipse.jdt.ui/cleanup.add_generated_serial_version_id=false
-/instance/org.eclipse.jdt.ui/cleanup.remove_trailing_whitespaces_ignore_empty=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.source=1.6
-/instance/org.eclipse.jdt.ui/cleanup.use_this_for_non_static_method_access=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-/instance/org.eclipse.jdt.ui/cleanup.sort_members_all=false
-/instance/org.eclipse.jdt.ui/cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_private_fields=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.overrideannotation=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-/instance/org.eclipse.jdt.ui/cleanup.qualify_static_method_accesses_with_declaring_class=false
-/instance/org.eclipse.jdt.ui/cleanup_settings_version=2
-/instance/org.eclipse.jdt.ui/cleanup.make_type_abstract_if_missing_method=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_local_variables=false
-/instance/org.eclipse.jdt.ui/cleanup.make_local_variable_final=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-/instance/org.eclipse.jdt.ui/cleanup.format_source_code=true
-/instance/org.eclipse.jdt.ui/cleanup.correct_indentation=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_unnecessary_casts=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_private_members=false
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_deprecated_annotations=true
-/instance/org.eclipse.jdt.ui/cleanup.use_blocks_only_for_return_and_throw=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/.gitattributes
----------------------------------------------------------------------
diff --git a/docs/system-architecture/.gitattributes b/docs/system-architecture/.gitattributes
deleted file mode 100644
index 2125666..0000000
--- a/docs/system-architecture/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-* text=auto
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/.gitignore
----------------------------------------------------------------------
diff --git a/docs/system-architecture/.gitignore b/docs/system-architecture/.gitignore
deleted file mode 100644
index 16b2d7d..0000000
--- a/docs/system-architecture/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Include your project-specific ignores in this file
-# Read about how to use .gitignore: https://help.github.com/articles/ignoring-files

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/.htaccess
----------------------------------------------------------------------
diff --git a/docs/system-architecture/.htaccess b/docs/system-architecture/.htaccess
deleted file mode 100644
index 64b43ad..0000000
--- a/docs/system-architecture/.htaccess
+++ /dev/null
@@ -1,544 +0,0 @@
-# Apache Configuration File
-
-# (!) Using `.htaccess` files slows down Apache, therefore, if you have access
-# to the main server config file (usually called `httpd.conf`), you should add
-# this logic there: http://httpd.apache.org/docs/current/howto/htaccess.html.
-
-# ##############################################################################
-# # CROSS-ORIGIN RESOURCE SHARING (CORS)                                       #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Cross-domain AJAX requests                                                 |
-# ------------------------------------------------------------------------------
-
-# Enable cross-origin AJAX requests.
-# http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity
-# http://enable-cors.org/
-
-# <IfModule mod_headers.c>
-#    Header set Access-Control-Allow-Origin "*"
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | CORS-enabled images                                                        |
-# ------------------------------------------------------------------------------
-
-# Send the CORS header for images when browsers request it.
-# https://developer.mozilla.org/en/CORS_Enabled_Image
-# http://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
-# http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/
-
-<IfModule mod_setenvif.c>
-    <IfModule mod_headers.c>
-        <FilesMatch "\.(gif|ico|jpe?g|png|svg|svgz|webp)$">
-            SetEnvIf Origin ":" IS_CORS
-            Header set Access-Control-Allow-Origin "*" env=IS_CORS
-        </FilesMatch>
-    </IfModule>
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | Web fonts access                                                           |
-# ------------------------------------------------------------------------------
-
-# Allow access from all domains for web fonts
-
-<IfModule mod_headers.c>
-    <FilesMatch "\.(eot|font.css|otf|ttc|ttf|woff)$">
-        Header set Access-Control-Allow-Origin "*"
-    </FilesMatch>
-</IfModule>
-
-
-# ##############################################################################
-# # ERRORS                                                                     #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | 404 error prevention for non-existing redirected folders                   |
-# ------------------------------------------------------------------------------
-
-# Prevent Apache from returning a 404 error for a rewrite if a directory
-# with the same name does not exist.
-# http://httpd.apache.org/docs/current/content-negotiation.html#multiviews
-# http://www.webmasterworld.com/apache/3808792.htm
-
-Options -MultiViews
-
-# ------------------------------------------------------------------------------
-# | Custom error messages / pages                                              |
-# ------------------------------------------------------------------------------
-
-# You can customize what Apache returns to the client in case of an error (see
-# http://httpd.apache.org/docs/current/mod/core.html#errordocument), e.g.:
-
-ErrorDocument 404 /404.html
-
-
-# ##############################################################################
-# # INTERNET EXPLORER                                                          #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Better website experience                                                  |
-# ------------------------------------------------------------------------------
-
-# Force IE to render pages in the highest available mode in the various
-# cases when it may not: http://hsivonen.iki.fi/doctype/ie-mode.pdf.
-# Use, if installed, Google Chrome Frame.
-
-<IfModule mod_headers.c>
-    Header set X-UA-Compatible "IE=edge,chrome=1"
-    # `mod_headers` can't match based on the content-type, however, we only
-    # want to send this header for HTML pages and not for the other resources
-    <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$">
-        Header unset X-UA-Compatible
-    </FilesMatch>
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | Cookie setting from iframes                                                |
-# ------------------------------------------------------------------------------
-
-# Allow cookies to be set from iframes in IE.
-
-# <IfModule mod_headers.c>
-#   Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | Screen flicker                                                             |
-# ------------------------------------------------------------------------------
-
-# Stop screen flicker in IE on CSS rollovers (this only works in
-# combination with the `ExpiresByType` directives for images from below).
-
-# BrowserMatch "MSIE" brokenvary=1
-# BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
-# BrowserMatch "Opera" !brokenvary
-# SetEnvIf brokenvary 1 force-no-vary
-
-
-# ##############################################################################
-# # MIME TYPES AND ENCODING                                                    #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Proper MIME types for all files                                            |
-# ------------------------------------------------------------------------------
-
-<IfModule mod_mime.c>
-
-  # Audio
-    AddType audio/mp4                                   m4a f4a f4b
-    AddType audio/ogg                                   oga ogg
-
-  # JavaScript
-    # Normalize to standard type (it's sniffed in IE anyways):
-    # http://tools.ietf.org/html/rfc4329#section-7.2
-    AddType application/javascript                      js jsonp
-    AddType application/json                            json
-
-  # Video
-    AddType video/mp4                                   mp4 m4v f4v f4p
-    AddType video/ogg                                   ogv
-    AddType video/webm                                  webm
-    AddType video/x-flv                                 flv
-
-  # Web fonts
-    AddType application/font-woff                       woff
-    AddType application/vnd.ms-fontobject               eot
-
-    # Browsers usually ignore the font MIME types and sniff the content,
-    # however, Chrome shows a warning if other MIME types are used for the
-    # following fonts.
-    AddType application/x-font-ttf                      ttc ttf
-    AddType font/opentype                               otf
-
-    # Make SVGZ fonts work on iPad:
-    # https://twitter.com/FontSquirrel/status/14855840545
-    AddType     image/svg+xml                           svg svgz
-    AddEncoding gzip                                    svgz
-
-  # Other
-    AddType application/octet-stream                    safariextz
-    AddType application/x-chrome-extension              crx
-    AddType application/x-opera-extension               oex
-    AddType application/x-shockwave-flash               swf
-    AddType application/x-web-app-manifest+json         webapp
-    AddType application/x-xpinstall                     xpi
-    AddType application/xml                             atom rdf rss xml
-    AddType image/webp                                  webp
-    AddType image/x-icon                                ico
-    AddType text/cache-manifest                         appcache manifest
-    AddType text/vtt                                    vtt
-    AddType text/x-component                            htc
-    AddType text/x-vcard                                vcf
-
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | UTF-8 encoding                                                             |
-# ------------------------------------------------------------------------------
-
-# Use UTF-8 encoding for anything served as `text/html` or `text/plain`.
-AddDefaultCharset utf-8
-
-# Force UTF-8 for certain file formats.
-<IfModule mod_mime.c>
-    AddCharset utf-8 .atom .css .js .json .rss .vtt .webapp .xml
-</IfModule>
-
-
-# ##############################################################################
-# # URL REWRITES                                                               #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Rewrite engine                                                             |
-# ------------------------------------------------------------------------------
-
-# Turning on the rewrite engine and enabling the `FollowSymLinks` option is
-# necessary for the following directives to work.
-
-# If your web host doesn't allow the `FollowSymlinks` option, you may need to
-# comment it out and use `Options +SymLinksIfOwnerMatch` but, be aware of the
-# performance impact: http://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks
-
-# Also, some cloud hosting services require `RewriteBase` to be set:
-# http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-mod-rewrite-not-working-on-my-site
-
-<IfModule mod_rewrite.c>
-    Options +FollowSymlinks
-  # Options +SymLinksIfOwnerMatch
-    RewriteEngine On
-  # RewriteBase /
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | Suppressing / Forcing the "www." at the beginning of URLs                  |
-# ------------------------------------------------------------------------------
-
-# The same content should never be available under two different URLs especially
-# not with and without "www." at the beginning. This can cause SEO problems
-# (duplicate content), therefore, you should choose one of the alternatives and
-# redirect the other one.
-
-# By default option 1 (no "www.") is activated:
-# http://no-www.org/faq.php?q=class_b
-
-# If you'd prefer to use option 2, just comment out all the lines from option 1
-# and uncomment the ones from option 2.
-
-# IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME!
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Option 1: rewrite www.example.com → example.com
-
-<IfModule mod_rewrite.c>
-    RewriteCond %{HTTPS} !=on
-    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
-    RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
-</IfModule>
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Option 2: rewrite example.com → www.example.com
-
-# Be aware that the following might not be a good idea if you use "real"
-# subdomains for certain parts of your website.
-
-# <IfModule mod_rewrite.c>
-#    RewriteCond %{HTTPS} !=on
-#    RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
-#    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
-# </IfModule>
-
-
-# ##############################################################################
-# # SECURITY                                                                   #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Content Security Policy (CSP)                                              |
-# ------------------------------------------------------------------------------
-
-# You can mitigate the risk of cross-site scripting and other content-injection
-# attacks by setting a Content Security Policy which whitelists trusted sources
-# of content for your site.
-
-# The example header below allows ONLY scripts that are loaded from the current
-# site's origin (no inline scripts, no CDN, etc). This almost certainly won't
-# work as-is for your site!
-
-# To get all the details you'll need to craft a reasonable policy for your site,
-# read: http://html5rocks.com/en/tutorials/security/content-security-policy (or
-# see the specification: http://w3.org/TR/CSP).
-
-# <IfModule mod_headers.c>
-#    Header set Content-Security-Policy "script-src 'self'; object-src 'self'"
-#    <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$">
-#        Header unset Content-Security-Policy
-#    </FilesMatch>
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | File access                                                                |
-# ------------------------------------------------------------------------------
-
-# Block access to directories without a default document.
-# Usually you should leave this uncommented because you shouldn't allow anyone
-# to surf through every directory on your server (which may includes rather
-# private places like the CMS's directories).
-
-<IfModule mod_autoindex.c>
-    Options -Indexes
-</IfModule>
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Block access to hidden files and directories.
-# This includes directories used by version control systems such as Git and SVN.
-
-<IfModule mod_rewrite.c>
-    RewriteCond %{SCRIPT_FILENAME} -d [OR]
-    RewriteCond %{SCRIPT_FILENAME} -f
-    RewriteRule "(^|/)\." - [F]
-</IfModule>
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Block access to backup and source files.
-# These files may be left by some text editors and can pose a great security
-# danger when anyone has access to them.
-
-<FilesMatch "(^#.*#|\.(bak|config|dist|fla|inc|ini|log|psd|sh|sql|sw[op])|~)$">
-    Order allow,deny
-    Deny from all
-    Satisfy All
-</FilesMatch>
-
-# ------------------------------------------------------------------------------
-# | Secure Sockets Layer (SSL)                                                 |
-# ------------------------------------------------------------------------------
-
-# Rewrite secure requests properly to prevent SSL certificate warnings, e.g.:
-# prevent `https://www.example.com` when your certificate only allows
-# `https://secure.example.com`.
-
-# <IfModule mod_rewrite.c>
-#    RewriteCond %{SERVER_PORT} !^443
-#    RewriteRule ^ https://example-domain-please-change-me.com%{REQUEST_URI} [R=301,L]
-# </IfModule>
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-# Force client-side SSL redirection.
-
-# If a user types "example.com" in his browser, the above rule will redirect him
-# to the secure version of the site. That still leaves a window of opportunity
-# (the initial HTTP connection) for an attacker to downgrade or redirect the
-# request. The following header ensures that browser will ONLY connect to your
-# server via HTTPS, regardless of what the users type in the address bar.
-# http://www.html5rocks.com/en/tutorials/security/transport-layer-security/
-
-# <IfModule mod_headers.c>
-#    Header set Strict-Transport-Security max-age=16070400;
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | Server software information                                                |
-# ------------------------------------------------------------------------------
-
-# Avoid displaying the exact Apache version number, the description of the
-# generic OS-type and the information about Apache's compiled-in modules.
-
-# ADD THIS DIRECTIVE IN THE `httpd.conf` AS IT WILL NOT WORK IN THE `.htaccess`!
-
-# ServerTokens Prod
-
-
-# ##############################################################################
-# # WEB PERFORMANCE                                                            #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Compression                                                                |
-# ------------------------------------------------------------------------------
-
-<IfModule mod_deflate.c>
-
-    # Force compression for mangled headers.
-    # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
-    <IfModule mod_setenvif.c>
-        <IfModule mod_headers.c>
-            SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
-            RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
-        </IfModule>
-    </IfModule>
-
-    # Compress all output labeled with one of the following MIME-types
-    # (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
-    #  and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
-    #  as `AddOutputFilterByType` is still in the core directives).
-    <IfModule mod_filter.c>
-        AddOutputFilterByType DEFLATE application/atom+xml \
-                                      application/javascript \
-                                      application/json \
-                                      application/rss+xml \
-                                      application/vnd.ms-fontobject \
-                                      application/x-font-ttf \
-                                      application/x-web-app-manifest+json \
-                                      application/xhtml+xml \
-                                      application/xml \
-                                      font/opentype \
-                                      image/svg+xml \
-                                      image/x-icon \
-                                      text/css \
-                                      text/html \
-                                      text/plain \
-                                      text/x-component \
-                                      text/xml
-    </IfModule>
-
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | Content transformations                                                    |
-# ------------------------------------------------------------------------------
-
-# Prevent some of the mobile network providers from modifying the content of
-# your site: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.5.
-
-# <IfModule mod_headers.c>
-#    Header set Cache-Control "no-transform"
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | ETag removal                                                               |
-# ------------------------------------------------------------------------------
-
-# Since we're sending far-future expires headers (see below), ETags can
-# be removed: http://developer.yahoo.com/performance/rules.html#etags.
-
-# `FileETag None` is not enough for every server.
-<IfModule mod_headers.c>
-    Header unset ETag
-</IfModule>
-
-FileETag None
-
-# ------------------------------------------------------------------------------
-# | Expires headers (for better cache control)                                 |
-# ------------------------------------------------------------------------------
-
-# The following expires headers are set pretty far in the future. If you don't
-# control versioning with filename-based cache busting, consider lowering the
-# cache time for resources like CSS and JS to something like 1 week.
-
-<IfModule mod_expires.c>
-
-    ExpiresActive on
-    ExpiresDefault                                      "access plus 1 month"
-
-  # CSS
-    ExpiresByType text/css                              "access plus 1 year"
-
-  # Data interchange
-    ExpiresByType application/json                      "access plus 0 seconds"
-    ExpiresByType application/xml                       "access plus 0 seconds"
-    ExpiresByType text/xml                              "access plus 0 seconds"
-
-  # Favicon (cannot be renamed!)
-    ExpiresByType image/x-icon                          "access plus 1 week"
-
-  # HTML components (HTCs)
-    ExpiresByType text/x-component                      "access plus 1 month"
-
-  # HTML
-    ExpiresByType text/html                             "access plus 0 seconds"
-
-  # JavaScript
-    ExpiresByType application/javascript                "access plus 1 year"
-
-  # Manifest files
-    ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
-    ExpiresByType text/cache-manifest                   "access plus 0 seconds"
-
-  # Media
-    ExpiresByType audio/ogg                             "access plus 1 month"
-    ExpiresByType image/gif                             "access plus 1 month"
-    ExpiresByType image/jpeg                            "access plus 1 month"
-    ExpiresByType image/png                             "access plus 1 month"
-    ExpiresByType video/mp4                             "access plus 1 month"
-    ExpiresByType video/ogg                             "access plus 1 month"
-    ExpiresByType video/webm                            "access plus 1 month"
-
-  # Web feeds
-    ExpiresByType application/atom+xml                  "access plus 1 hour"
-    ExpiresByType application/rss+xml                   "access plus 1 hour"
-
-  # Web fonts
-    ExpiresByType application/font-woff                 "access plus 1 month"
-    ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
-    ExpiresByType application/x-font-ttf                "access plus 1 month"
-    ExpiresByType font/opentype                         "access plus 1 month"
-    ExpiresByType image/svg+xml                         "access plus 1 month"
-
-</IfModule>
-
-# ------------------------------------------------------------------------------
-# | Filename-based cache busting                                               |
-# ------------------------------------------------------------------------------
-
-# If you're not using a build process to manage your filename version revving,
-# you might want to consider enabling the following directives to route all
-# requests such as `/css/style.12345.css` to `/css/style.css`.
-
-# To understand why this is important and a better idea than `*.css?v231`, read:
-# http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring
-
-# <IfModule mod_rewrite.c>
-#    RewriteCond %{REQUEST_FILENAME} !-f
-#    RewriteCond %{REQUEST_FILENAME} !-d
-#    RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | File concatenation                                                         |
-# ------------------------------------------------------------------------------
-
-# Allow concatenation from within specific CSS and JS files, e.g.:
-# Inside of `script.combined.js` you could have
-#   <!--#include file="libs/jquery.js" -->
-#   <!--#include file="plugins/jquery.idletimer.js" -->
-# and they would be included into this single file.
-
-# <IfModule mod_include.c>
-#    <FilesMatch "\.combined\.js$">
-#        Options +Includes
-#        AddOutputFilterByType INCLUDES application/javascript application/json
-#        SetOutputFilter INCLUDES
-#    </FilesMatch>
-#    <FilesMatch "\.combined\.css$">
-#        Options +Includes
-#        AddOutputFilterByType INCLUDES text/css
-#        SetOutputFilter INCLUDES
-#    </FilesMatch>
-# </IfModule>
-
-# ------------------------------------------------------------------------------
-# | Persistent connections                                                     |
-# ------------------------------------------------------------------------------
-
-# Allow multiple requests to be sent over the same TCP connection:
-# http://httpd.apache.org/docs/current/en/mod/core.html#keepalive.
-
-# Enable if you serve a lot of static content but, be aware of the
-# possible disadvantages!
-
-# <IfModule mod_headers.c>
-#    Header set Connection Keep-Alive
-# </IfModule>

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/404.html
----------------------------------------------------------------------
diff --git a/docs/system-architecture/404.html b/docs/system-architecture/404.html
deleted file mode 100644
index fdace4a..0000000
--- a/docs/system-architecture/404.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-    <head>
-        <meta charset="utf-8">
-        <title>Page Not Found :(</title>
-        <style>
-            ::-moz-selection {
-                background: #b3d4fc;
-                text-shadow: none;
-            }
-
-            ::selection {
-                background: #b3d4fc;
-                text-shadow: none;
-            }
-
-            html {
-                padding: 30px 10px;
-                font-size: 20px;
-                line-height: 1.4;
-                color: #737373;
-                background: #f0f0f0;
-                -webkit-text-size-adjust: 100%;
-                -ms-text-size-adjust: 100%;
-            }
-
-            html,
-            input {
-                font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-            }
-
-            body {
-                max-width: 500px;
-                _width: 500px;
-                padding: 30px 20px 50px;
-                border: 1px solid #b3b3b3;
-                border-radius: 4px;
-                margin: 0 auto;
-                box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;
-                background: #fcfcfc;
-            }
-
-            h1 {
-                margin: 0 10px;
-                font-size: 50px;
-                text-align: center;
-            }
-
-            h1 span {
-                color: #bbb;
-            }
-
-            h3 {
-                margin: 1.5em 0 0.5em;
-            }
-
-            p {
-                margin: 1em 0;
-            }
-
-            ul {
-                padding: 0 0 0 40px;
-                margin: 1em 0;
-            }
-
-            .container {
-                max-width: 380px;
-                _width: 380px;
-                margin: 0 auto;
-            }
-
-            /* google search */
-
-            #goog-fixurl ul {
-                list-style: none;
-                padding: 0;
-                margin: 0;
-            }
-
-            #goog-fixurl form {
-                margin: 0;
-            }
-
-            #goog-wm-qt,
-            #goog-wm-sb {
-                border: 1px solid #bbb;
-                font-size: 16px;
-                line-height: normal;
-                vertical-align: top;
-                color: #444;
-                border-radius: 2px;
-            }
-
-            #goog-wm-qt {
-                width: 220px;
-                height: 20px;
-                padding: 5px;
-                margin: 5px 10px 0 0;
-                box-shadow: inset 0 1px 1px #ccc;
-            }
-
-            #goog-wm-sb {
-                display: inline-block;
-                height: 32px;
-                padding: 0 10px;
-                margin: 5px 0 0;
-                white-space: nowrap;
-                cursor: pointer;
-                background-color: #f5f5f5;
-                background-image: -webkit-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                background-image: -moz-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                background-image: -ms-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                background-image: -o-linear-gradient(rgba(255,255,255,0), #f1f1f1);
-                -webkit-appearance: none;
-                -moz-appearance: none;
-                appearance: none;
-                *overflow: visible;
-                *display: inline;
-                *zoom: 1;
-            }
-
-            #goog-wm-sb:hover,
-            #goog-wm-sb:focus {
-                border-color: #aaa;
-                box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
-                background-color: #f8f8f8;
-            }
-
-            #goog-wm-qt:hover,
-            #goog-wm-qt:focus {
-                border-color: #105cb6;
-                outline: 0;
-                color: #222;
-            }
-
-            input::-moz-focus-inner {
-                padding: 0;
-                border: 0;
-            }
-        </style>
-    </head>
-    <body>
-        <div class="container">
-            <h1>Not found <span>:(</span></h1>
-            <p>Sorry, but the page you were trying to view does not exist.</p>
-            <p>It looks like this was the result of either:</p>
-            <ul>
-                <li>a mistyped address</li>
-                <li>an out-of-date link</li>
-            </ul>
-            <script>
-                var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),GOOG_FIXURL_SITE = location.host;
-            </script>
-            <script src="//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
-        </div>
-    </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/docs/system-architecture/CHANGELOG.md b/docs/system-architecture/CHANGELOG.md
deleted file mode 100644
index c6ea125..0000000
--- a/docs/system-architecture/CHANGELOG.md
+++ /dev/null
@@ -1,122 +0,0 @@
-### HEAD
-
-### 4.2.0 (April 8, 2013)
-
-* Remove Google Analytics protocol check ([#1319](https://github.com/h5bp/html5-boilerplate/pull/1319)).
-* Update to Normalize.css 1.1.1.
-* Update Apache configurations to include the latest changes in the canonical
-  [`.htaccess`](https://github.com/h5bp/server-configs/blob/master/apache/.htaccess)
-  file.
-* Use a protocol relative URL for the 404 template script.
-* Update to jQuery 1.9.1.
-
-### 4.1.0 (January 21, 2013)
-
-* Update to Normalize.css 1.1.0.
-* Update to jQuery 1.9.0.
-
-### 4.0.3 (January 12, 2013)
-
-* Use 32x32 favicon.ico ([#1286](https://github.com/h5bp/html5-boilerplate/pull/1286)).
-* Remove named function expression in plugins.js ([#1280](https://github.com/h5bp/html5-boilerplate/pull/1280)).
-* Adjust CSS image-replacement code ([#1239](https://github.com/h5bp/html5-boilerplate/issues/1239)).
-* Update HiDPI example media query ([#1127](https://github.com/h5bp/html5-boilerplate/issues/1127)).
-
-### 4.0.2 (December 9, 2012)
-
-* Update placeholder icons.
-* Update to Normalize.css 1.0.2.
-* Update to jQuery 1.8.3.
-
-### 4.0.1 (October 20, 2012)
-
-* Further improvements to `console` method stubbing ([#1206](https://github.com/h5bp/html5-boilerplate/issues/1206), [#1229](https://github.com/h5bp/html5-boilerplate/pull/1229)).
-* Update to jQuery 1.8.2.
-* Update to Modernizr 2.6.2.
-* Minor additions to the documentation.
-
-### 4.0.0 (August 28, 2012)
-
-* Improve the Apache compression configuration ([#1012](https://github.com/h5bp/html5-boilerplate/issues/1012), [#1173](https://github.com/h5bp/html5-boilerplate/issues/1173)).
-* Add a HiDPI example media query ([#1127](https://github.com/h5bp/html5-boilerplate/issues/1127)).
-* Add bundled docs ([#1154](https://github.com/h5bp/html5-boilerplate/issues/1154)).
-* Add MIT license ([#1139](https://github.com/h5bp/html5-boilerplate/issues/1139)).
-* Update to Normalize.css 1.0.1.
-* Separate Normalize.css from the rest of the CSS ([#1160](https://github.com/h5bp/html5-boilerplate/issues/1160)).
-* Improve `console.log` protection ([#1107](https://github.com/h5bp/html5-boilerplate/issues/1107)).
-* Replace hot pink text selection color with a neutral color.
-* Change image replacement technique ([#1149](https://github.com/h5bp/html5-boilerplate/issues/1149)).
-* Code format and consistency changes ([#1112](https://github.com/h5bp/html5-boilerplate/issues/1112)).
-* Rename CSS file and rename JS files and subdirectories.
-* Update to jQuery 1.8 ([#1161](https://github.com/h5bp/html5-boilerplate/issues/1161)).
-* Update to Modernizr 2.6.1 ([#1086](https://github.com/h5bp/html5-boilerplate/issues/1086)).
-* Remove uncompressed jQuery ([#1153](https://github.com/h5bp/html5-boilerplate/issues/1153)).
-* Remove superfluous inline comments ([#1150](https://github.com/h5bp/html5-boilerplate/issues/1150)).
-
-### 3.0.2 (February 19, 2012)
-
-* Update to Modernizr 2.5.3.
-
-### 3.0.1 (February 08, 2012).
-
-* Update to Modernizr 2.5.2 (includes html5shiv 3.3).
-
-### 3.0.0 (February 06, 2012)
-
-* Improvements to `.htaccess`.
-* Improve 404 design.
-* Simplify JS folder structure.
-* Change `html` IE class names changed to target ranges rather than specific versions of IE.
-* Update CSS to include latest normalize.css changes and better typographic defaults ([#825](https://github.com/h5bp/html5-boilerplate/issues/825)).
-* Update to Modernizr 2.5 (includes yepnope 1.5 and html5shiv 3.2).
-* Update to jQuery 1.7.1.
-* Revert to async snippet for the Google Analytics script.
-* Remove the ant build script ([#826](https://github.com/h5bp/html5-boilerplate/issues/826)).
-* Remove Respond.js ([#816](https://github.com/h5bp/html5-boilerplate/issues/816)).
-* Remove the `demo/` directory ([#808](https://github.com/h5bp/html5-boilerplate/issues/808)).
-* Remove the `test/` directory ([#808](https://github.com/h5bp/html5-boilerplate/issues/808)).
-* Remove Google Chrome Frame script for IE6 users; replace with links to Chrome Frame and options for alternative browsers.
-* Remove `initial-scale=1` from the viewport `meta` ([#824](https://github.com/h5bp/html5-boilerplate/issues/824)).
-* Remove `defer` from all scripts to avoid legacy IE bugs.
-* Remove explicit Site Speed tracking for Google Analytics. It's now enabled by default.
-
-### 2.0.0 (August 10, 2011)
-
-* Change starting CSS to be based on normalize.css instead of reset.css ([#500](https://github.com/h5bp/html5-boilerplate/issues/500)).
-* Add Respond.js media query polyfill.
-* Add Google Chrome Frame script prompt for IE6 users.
-* Simplify the `html` conditional comments for modern browsers and add an `oldie` class.
-* Update clearfix to use "micro clearfix".
-* Add placeholder CSS MQs for mobile-first approach.
-* Add `textarea { resize: vertical; }` to only allow vertical resizing.
-* Add `img { max-width: 100%; }` to the print styles; prevents images being truncated.
-* Add Site Speed tracking for Google Analytics.
-* Update to jQuery 1.6.2 (and use minified by default).
-* Update to Modernizr 2.0 Complete, Production minified (includes yepnope, html5shiv, and Respond.js).
-* Use `Modernizr.load()` to load the Google Analytics script.
-* Much faster build process.
-* Add build script options for CSSLint, JSLint, JSHint tools.
-* Build script now compresses all images in subfolders.
-* Build script now versions files by SHA hash.
-* Many `.htaccess` improvements including: disable directory browsing, improved support for all versions of Apache, more robust and extensive HTTP compression rules.
-* Remove `handheld.css` as it has very poor device support.
-* Remove touch-icon `link` elements from the HTML and include improved touch-icon support.
-* Remove the cache-busting query paramaters from files references in the HTML.
-* Remove IE6 PNGFix.
-
-### 1.0.0 (March 21, 2011)
-
-* Rewrite build script to make it more customizable and flexible.
-* Add a humans.txt.
-* Numerous `.htaccess` improvements (including inline documentation).
-* Move the alternative server configurations to the H5BP server configs repo.
-* Use a protocol-relative url to reference jQuery and prevent mixed content warnings.
-* Optimize the Google Analytics snippet.
-* Use Eric Meyer's recent CSS reset update and the HTML5 Doctor reset.
-* More robust `sub`/`sup` CSS styles.
-* Add keyboard `.focusable` helper class that extends `.visuallyhidden`.
-* Print styles no longer print hash or JavaScript links.
-* Add a print reset for IE's proprietary filters.
-* Remove IE9-specific conditional class on the `html` element.
-* Remove margins from lists within `nav` elements.
-* Remove YUI profiling.


[05/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SystemCodeTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SystemCodeTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SystemCodeTest.java
deleted file mode 100644
index 99fe2e9..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SystemCodeTest.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.system.CodeHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Test for creating, updating, deleting codes and code values
- * 
- */
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class SystemCodeTest {
-
-    private ResponseSpecification responseSpec;
-    private ResponseSpecification generalResponseSpec;
-    private RequestSpecification requestSpec;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-
-        this.generalResponseSpec = new ResponseSpecBuilder().build();
-
-    }
-
-    // @Ignore()
-    @Test
-    // scenario 57, 58, 59, 60
-    public void testCreateCode() {
-        final String codeName = "Client Marital Status";
-
-        final Integer createResponseId = (Integer) CodeHelper.createCode(this.requestSpec, this.responseSpec, codeName,
-                CodeHelper.RESPONSE_ID_ATTRIBUTE_NAME);
-
-        // verify code created
-
-        final HashMap newCodeAttributes = (HashMap) CodeHelper.getCodeById(this.requestSpec, this.responseSpec, createResponseId, "");
-
-        Assert.assertNotNull(newCodeAttributes);
-        assertEquals("Verify value of codeId", createResponseId, newCodeAttributes.get(CodeHelper.CODE_ID_ATTRIBUTE_NAME));
-
-        assertEquals("Verify code name", codeName, newCodeAttributes.get(CodeHelper.CODE_NAME_ATTRIBUTE_NAME));
-        assertEquals("Verify system defined is false", false, newCodeAttributes.get(CodeHelper.CODE_SYSTEM_DEFINED_ATTRIBUTE_NAME));
-
-        // update code
-        final HashMap updateChangeResponse = (HashMap) CodeHelper.updateCode(this.requestSpec, this.responseSpec, createResponseId,
-                codeName + "(CHANGE)", "changes");
-
-        assertEquals("Verify code name updated", codeName + "(CHANGE)", updateChangeResponse.get(CodeHelper.CODE_NAME_ATTRIBUTE_NAME));
-
-        // delete code
-        final Integer deleteResponseId = (Integer) CodeHelper.deleteCodeById(this.requestSpec, this.responseSpec, createResponseId,
-                CodeHelper.RESPONSE_ID_ATTRIBUTE_NAME);
-        assertEquals("Verify code deleted", createResponseId, deleteResponseId);
-
-        // verify code deleted
-        final HashMap deletedCodeValues = (HashMap) CodeHelper
-                .getCodeById(this.requestSpec, this.generalResponseSpec, deleteResponseId, "");
-
-        Assert.assertNotNull(deletedCodeValues);
-        assertNull("Verify value of codeId", deletedCodeValues.get(CodeHelper.CODE_ID_ATTRIBUTE_NAME));
-
-        assertNull("Verify code name", deletedCodeValues.get(CodeHelper.CODE_NAME_ATTRIBUTE_NAME));
-        assertNull("Verify system defined is false", deletedCodeValues.get(CodeHelper.CODE_SYSTEM_DEFINED_ATTRIBUTE_NAME));
-    }
-
-    // @Ignore()
-    @Test
-    // scenario 57, 60
-    public void testPreventCreateDuplicateCode() {
-        final String codeName = "Client Marital Status";
-
-        // create code
-        final Integer createResponseId = (Integer) CodeHelper.createCode(this.requestSpec, this.responseSpec, codeName,
-                CodeHelper.RESPONSE_ID_ATTRIBUTE_NAME);
-
-        // verify code created
-        final HashMap newCodeAttributes = (HashMap) CodeHelper.getCodeById(this.requestSpec, this.responseSpec, createResponseId, "");
-
-        Assert.assertNotNull(newCodeAttributes);
-        assertEquals("Verify value of codeId", createResponseId, newCodeAttributes.get(CodeHelper.CODE_ID_ATTRIBUTE_NAME));
-
-        assertEquals("Verify code name", codeName, newCodeAttributes.get(CodeHelper.CODE_NAME_ATTRIBUTE_NAME));
-        assertEquals("Verify system defined is false", false, newCodeAttributes.get(CodeHelper.CODE_SYSTEM_DEFINED_ATTRIBUTE_NAME));
-
-        // try to create duplicate-- should fail
-        final List<HashMap> error = (List) CodeHelper.createCode(this.requestSpec, this.generalResponseSpec, codeName,
-                CommonConstants.RESPONSE_ERROR);
-
-        assertEquals("Verify duplication error", "error.msg.code.duplicate.name", error.get(0).get("userMessageGlobalisationCode"));
-
-        // delete code that was just created
-
-        final Integer deleteResponseId = (Integer) CodeHelper.deleteCodeById(this.requestSpec, this.responseSpec, createResponseId,
-                CodeHelper.RESPONSE_ID_ATTRIBUTE_NAME);
-        assertEquals("Verify code deleted", createResponseId, deleteResponseId);
-
-        // verify code deleted
-        final HashMap deletedCodeAttributes = (HashMap) CodeHelper.getCodeById(this.requestSpec, this.generalResponseSpec,
-                deleteResponseId, "");
-
-        Assert.assertNotNull(deletedCodeAttributes);
-        assertNull("Verify value of codeId", deletedCodeAttributes.get(CodeHelper.CODE_ID_ATTRIBUTE_NAME));
-
-        assertNull("Verify code name", deletedCodeAttributes.get(CodeHelper.CODE_NAME_ATTRIBUTE_NAME));
-        assertNull("Verify system defined is false", deletedCodeAttributes.get(CodeHelper.CODE_SYSTEM_DEFINED_ATTRIBUTE_NAME));
-
-    }
-
-    // @Ignore
-    @Test
-    public void testUpdateDeleteSystemDefinedCode() {
-
-        // get any systemDefined code
-        final HashMap systemDefinedCode = (HashMap) CodeHelper.getSystemDefinedCodes(this.requestSpec, this.responseSpec);
-
-        // delete system-defined code should fail
-        final List<HashMap> error = (List) CodeHelper.deleteCodeById(this.requestSpec, this.generalResponseSpec,
-                (Integer) systemDefinedCode.get(CodeHelper.CODE_ID_ATTRIBUTE_NAME), CommonConstants.RESPONSE_ERROR);
-
-        assertEquals("Cannot delete system-defined code", "error.msg.code.systemdefined", error.get(0).get("userMessageGlobalisationCode"));
-
-        // update system-defined code should fail
-
-        final List<HashMap> updateError = (List) CodeHelper.updateCode(this.requestSpec, this.generalResponseSpec,
-                (Integer) systemDefinedCode.get(CodeHelper.CODE_ID_ATTRIBUTE_NAME),
-                systemDefinedCode.get(CodeHelper.CODE_NAME_ATTRIBUTE_NAME) + "CHANGE", CommonConstants.RESPONSE_ERROR);
-
-        assertEquals("Cannot update system-defined code", "error.msg.code.systemdefined",
-                updateError.get(0).get("userMessageGlobalisationCode"));
-
-    }
-
-    // @Ignore
-    @Test
-    public void testCodeValuesNotAssignedToTable() {
-
-        final String codeName = Utils.randomNameGenerator("Marital Status1", 10);
-
-        final String codeValue1 = "Married1";
-        final String codeValue2 = "Unmarried1";
-
-        final int codeValue1Position = 1;
-        final int codeValue2Position = 1;
-
-        final String codeDescription1 = "Description11";
-        final String codeDescription2 = "Description22";
-
-        // create code
-        final Integer createCodeResponseId = (Integer) CodeHelper.createCode(this.requestSpec, this.responseSpec, codeName,
-                CodeHelper.RESPONSE_ID_ATTRIBUTE_NAME);
-
-        // create first code value
-        final Integer createCodeValueResponseId1 = (Integer) CodeHelper.createCodeValue(this.requestSpec, this.responseSpec,
-                createCodeResponseId, codeValue1, codeDescription1, codeValue1Position, CodeHelper.SUBRESPONSE_ID_ATTRIBUTE_NAME);
-
-        // create second code value
-        final Integer createCodeValueResponseId2 = (Integer) CodeHelper.createCodeValue(this.requestSpec, this.responseSpec,
-                createCodeResponseId, codeValue2, codeDescription2, codeValue1Position, CodeHelper.SUBRESPONSE_ID_ATTRIBUTE_NAME);
-
-        // verify two code values created
-
-        final List<HashMap> codeValuesList = (List) CodeHelper.getCodeValuesForCode(this.requestSpec, this.responseSpec,
-                createCodeResponseId, "");
-
-        assertEquals("Number of code values returned matches number created", 2, codeValuesList.size());
-
-        // verify values of first code value
-        final HashMap codeValuesAttributes1 = (HashMap) CodeHelper.getCodeValueById(this.requestSpec, this.responseSpec,
-                createCodeResponseId, createCodeValueResponseId1, "");
-
-        Assert.assertNotNull(codeValuesAttributes1);
-        assertEquals("Verify value of codeValueId", createCodeValueResponseId1,
-                codeValuesAttributes1.get(CodeHelper.CODE_VALUE_ID_ATTRIBUTE_NAME));
-
-        assertEquals("Verify value of code name", codeValue1, codeValuesAttributes1.get(CodeHelper.CODE_VALUE_NAME_ATTRIBUTE_NAME));
-
-        assertEquals("Verify value of code description", codeDescription1,
-                codeValuesAttributes1.get(CodeHelper.CODE_VALUE_DESCRIPTION_ATTRIBUTE_NAME));
-
-        assertEquals("Verify position of code value", codeValue1Position,
-                codeValuesAttributes1.get(CodeHelper.CODE_VALUE_POSITION_ATTRIBUTE_NAME));
-
-        // verify values of second code value
-        final HashMap codeValuesAttributes2 = (HashMap) CodeHelper.getCodeValueById(this.requestSpec, this.responseSpec,
-                createCodeResponseId, createCodeValueResponseId2, "");
-
-        Assert.assertNotNull(codeValuesAttributes2);
-        assertEquals("Verify value of codeValueId", createCodeValueResponseId2,
-                codeValuesAttributes2.get(CodeHelper.CODE_VALUE_ID_ATTRIBUTE_NAME));
-
-        assertEquals("Verify value of code name", codeValue2, codeValuesAttributes2.get(CodeHelper.CODE_VALUE_NAME_ATTRIBUTE_NAME));
-
-        assertEquals("Verify value of code description", codeDescription2,
-                codeValuesAttributes2.get(CodeHelper.CODE_VALUE_DESCRIPTION_ATTRIBUTE_NAME));
-
-        assertEquals("Verify position of code value", codeValue2Position,
-                codeValuesAttributes2.get(CodeHelper.CODE_VALUE_POSITION_ATTRIBUTE_NAME));
-
-        // update code value 1
-        final HashMap codeValueChanges = (HashMap) CodeHelper.updateCodeValue(this.requestSpec, this.responseSpec, createCodeResponseId,
-                createCodeValueResponseId1, codeValue1 + "CHANGE", codeDescription1 + "CHANGE", 4, "changes");
-
-        assertEquals("Verify changed code value name", codeValueChanges.get("name"), codeValue1 + "CHANGE");
-
-        assertEquals("Verify changed code value description", codeValueChanges.get("description"), codeDescription1 + "CHANGE");
-
-        // delete code value
-        Integer deletedCodeValueResponseId1 = (Integer) CodeHelper.deleteCodeValueById(this.requestSpec, this.generalResponseSpec,
-                createCodeResponseId, createCodeValueResponseId1, CodeHelper.SUBRESPONSE_ID_ATTRIBUTE_NAME);
-
-        // Verify code value deleted
-
-        final ArrayList<HashMap> deletedCodeValueAttributes1 = (ArrayList<HashMap>) CodeHelper.getCodeValueById(this.requestSpec,
-                this.generalResponseSpec, createCodeResponseId, deletedCodeValueResponseId1, CommonConstants.RESPONSE_ERROR);
-
-        assertEquals("error.msg.codevalue.id.invalid", deletedCodeValueAttributes1.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        final List<HashMap> deletedCodeValuesList = (List) CodeHelper.getCodeValuesForCode(this.requestSpec, this.responseSpec,
-                createCodeResponseId, "");
-
-        assertEquals("Number of code values is 1", 1, deletedCodeValuesList.size());
-
-        final Integer deletedCodeValueResponseId2 = (Integer) CodeHelper.deleteCodeValueById(this.requestSpec, this.generalResponseSpec,
-                createCodeResponseId, createCodeValueResponseId2, CodeHelper.SUBRESPONSE_ID_ATTRIBUTE_NAME);
-
-        final ArrayList<HashMap> deletedCodeValueAttributes2 = (ArrayList<HashMap>) CodeHelper.getCodeValueById(this.requestSpec,
-                this.generalResponseSpec, createCodeResponseId, deletedCodeValueResponseId2, CommonConstants.RESPONSE_ERROR);
-
-        assertEquals("error.msg.codevalue.id.invalid", deletedCodeValueAttributes2.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        final List<HashMap> deletedCodeValuesList1 = (List) CodeHelper.getCodeValuesForCode(this.requestSpec, this.responseSpec,
-                createCodeResponseId, "");
-
-        assertEquals("Number of code values is 0", 0, deletedCodeValuesList1.size());
-
-    }
-
-    @Ignore
-    @Test
-    public void testCodeValuesAssignedToTable() {
-
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/TemplateIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/TemplateIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/TemplateIntegrationTest.java
deleted file mode 100644
index a176c97..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/TemplateIntegrationTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.Utils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class TemplateIntegrationTest {
-
-    private final String GET_TEMPLATES_URL = "/fineract-provider/api/v1/templates?tenantIdentifier=default";
-    private final String GET_TEMPLATE_ID_URL = "/fineract-provider/api/v1/templates/%s?tenantIdentifier=default";
-    private final String RESPONSE_ATTRIBUTE_NAME = "name";
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-
-    @Before
-    public void setup() {
-
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Ignore
-    @Test
-    public void test() {
-
-        final HashMap<String, String> metadata = new HashMap<>();
-        metadata.put("user", "resource_url");
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("name", "foo");
-        map.put("text", "Hello {{template}}");
-        map.put("mappers", metadata);
-
-        ArrayList<?> get = Utils.performServerGet(this.requestSpec, this.responseSpec, this.GET_TEMPLATES_URL, "");
-        final int entriesBeforeTest = get.size();
-
-        final Integer id = Utils.performServerPost(this.requestSpec, this.responseSpec, this.GET_TEMPLATES_URL, new Gson().toJson(map), "resourceId");
-
-        final String templateUrlForId = String.format(this.GET_TEMPLATE_ID_URL, id);
-
-        final String getrequest2 = Utils.performServerGet(this.requestSpec, this.responseSpec, templateUrlForId, this.RESPONSE_ATTRIBUTE_NAME);
-
-        Assert.assertTrue(getrequest2.equals("foo"));
-
-        Utils.performServerDelete(this.requestSpec, this.responseSpec, templateUrlForId, "");
-
-        get = Utils.performServerGet(this.requestSpec, this.responseSpec, this.GET_TEMPLATES_URL, "");
-        final int entriesAfterTest = get.size();
-
-        Assert.assertEquals(entriesBeforeTest, entriesAfterTest);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/WorkingDaysTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/WorkingDaysTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/WorkingDaysTest.java
deleted file mode 100755
index 92e3d09..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/WorkingDaysTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.WorkingDaysHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class WorkingDaysTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private ResponseSpecification generalResponseSpec;
-
-    @Before
-    public void setUp() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.generalResponseSpec = new ResponseSpecBuilder().build();
-
-    }
-
-    @Test
-    public void updateWorkingDays() {
-        HashMap response = (HashMap) WorkingDaysHelper.updateWorkingDays(requestSpec, responseSpec);
-        Assert.assertNotNull(response.get("resourceId"));
-    }
-
-    @Test
-    public void updateWorkingDaysWithWrongRecurrencePattern() {
-        final List<HashMap> error = (List) WorkingDaysHelper.updateWorkingDaysWithWrongRecurrence(requestSpec, generalResponseSpec,
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("Verify wrong recurrence pattern error", "error.msg.recurring.rule.parsing.error",
-                error.get(0).get("userMessageGlobalisationCode"));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/XBRLIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/XBRLIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/XBRLIntegrationTest.java
deleted file mode 100644
index 71041b6..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/XBRLIntegrationTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.xbrl.XBRLIntegrationTestHelper;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class XBRLIntegrationTest {
-
-    private RequestSpecification requestSpec;
-    private ResponseSpecification responseSpec;
-
-    private XBRLIntegrationTestHelper xbrlHelper;
-
-    @Before
-    public void setUp() throws Exception {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Test
-    public void shouldRetrieveTaxonomyList() {
-        this.xbrlHelper = new XBRLIntegrationTestHelper(this.requestSpec, this.responseSpec);
-
-        final ArrayList<HashMap> taxonomyList = this.xbrlHelper.getTaxonomyList();
-        verifyTaxonomyList(taxonomyList);
-    }
-
-    private void verifyTaxonomyList(final ArrayList<HashMap> taxonomyList) {
-        System.out.println("--------------------VERIFYING TAXONOMY LIST--------------------------");
-        assertEquals("Checking for the 1st taxonomy", "AdministrativeExpense", taxonomyList.get(0).get("name"));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java
deleted file mode 100644
index c99ebea..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java
+++ /dev/null
@@ -1,366 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.fineract.batch.domain.BatchRequest;
-import org.apache.fineract.batch.domain.BatchResponse;
-import org.junit.Assert;
-
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Helper class for {@link org.apache.fineract.integrationtests.BatchApiTest}. It
- * takes care of creation of {@code BatchRequest} list and posting this list to
- * the server.
- * 
- * @author Rishabh Shukla
- * 
- * @see org.apache.fineract.integrationtests.BatchApiTest
- */
-public class BatchHelper {
-
-    private static final String BATCH_API_URL = "/fineract-provider/api/v1/batches?" + Utils.TENANT_IDENTIFIER;
-    private static final String BATCH_API_URL_EXT = BATCH_API_URL + "&enclosingTransaction=true";
-
-    private BatchHelper() {
-        super();
-    }
-
-    /**
-     * Returns a JSON String for a list of {@code BatchRequest}s
-     * 
-     * @param batchRequests
-     * @return JSON String of BatchRequest
-     */
-    public static String toJsonString(final List<BatchRequest> batchRequests) {
-        return new Gson().toJson(batchRequests);
-    }
-
-    /**
-     * Returns the converted string response into JSON.
-     * 
-     * @param json
-     * @return List<BatchResponse>
-     */
-    private static List<BatchResponse> fromJsonString(final String json) {
-        return new Gson().fromJson(json, new TypeToken<List<BatchResponse>>() {}.getType());
-    }
-
-    /**
-     * Returns a list of BatchResponse with query parameter enclosing
-     * transaction set to false by posting the jsonified BatchRequest to the
-     * server.
-     * 
-     * @param requestSpec
-     * @param responseSpec
-     * @param jsonifiedBatchRequests
-     * @return a list of BatchResponse
-     */
-    public static List<BatchResponse> postBatchRequestsWithoutEnclosingTransaction(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final String jsonifiedBatchRequests) {
-        final String response = Utils.performServerPost(requestSpec, responseSpec, BATCH_API_URL, jsonifiedBatchRequests, null);
-        return BatchHelper.fromJsonString(response);
-    }
-
-    /**
-     * Returns a list of BatchResponse with query parameter enclosing
-     * transaction set to true by posting the jsonified BatchRequest to the
-     * server.
-     * 
-     * @param requestSpec
-     * @param responseSpec
-     * @param jsonifiedBatchRequests
-     * @return a list of BatchResponse
-     */
-    public static List<BatchResponse> postBatchRequestsWithEnclosingTransaction(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final String jsonifiedBatchRequests) {
-        final String response = Utils.performServerPost(requestSpec, responseSpec, BATCH_API_URL_EXT, jsonifiedBatchRequests, null);
-        return BatchHelper.fromJsonString(response);
-    }
-
-    /**
-     * Returns a BatchResponse based on the given BatchRequest, by posting the
-     * request to the server.
-     * 
-     * @param BatchRequest
-     * @return List<BatchResponse>
-     */
-    public static List<BatchResponse> postWithSingleRequest(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final BatchRequest br) {
-
-        final List<BatchRequest> batchRequests = new ArrayList<>();
-        batchRequests.add(br);
-
-        final String jsonifiedRequest = BatchHelper.toJsonString(batchRequests);
-        final List<BatchResponse> response = BatchHelper.postBatchRequestsWithoutEnclosingTransaction(requestSpec, responseSpec,
-                jsonifiedRequest);
-
-        // Verifies that the response result is there
-        Assert.assertNotNull(response);
-        Assert.assertTrue(response.size() > 0);
-
-        return response;
-    }
-
-    /**
-     * Creates and returns a
-     * {@link org.apache.fineract.batch.command.internal.CreateClientCommandStrategy}
-     * Request as one of the request in Batch.
-     * 
-     * @param reqId
-     * @param externalId
-     * @return BatchRequest
-     */
-    public static BatchRequest createClientRequest(final Long requestId, final String externalId) {
-
-        final BatchRequest br = new BatchRequest();
-        br.setRequestId(requestId);
-        br.setRelativeUrl("clients");
-        br.setMethod("POST");
-
-        final String extId;
-        if (externalId.equals("")) {
-            extId = "ext" + String.valueOf((10000 * Math.random())) + String.valueOf((10000 * Math.random()));
-        } else {
-            extId = externalId;
-        }
-
-        final String body = "{ \"officeId\": 1, \"firstname\": \"Petra\", \"lastname\": \"Yton\"," + "\"externalId\": " + extId
-                + ",  \"dateFormat\": \"dd MMMM yyyy\", \"locale\": \"en\"," + "\"active\": false, \"submittedOnDate\": \"04 March 2009\"}";
-
-        br.setBody(body);
-
-        return br;
-    }
-
-    /**
-     * Creates and returns a
-     * {@link org.apache.fineract.batch.command.internal.UpdateClientCommandStrategy}
-     * Request with given requestId and reference.
-     * 
-     * @param reqId
-     * @param clientId
-     * @return BatchRequest
-     */
-    public static BatchRequest updateClientRequest(final Long requestId, final Long reference) {
-
-        final BatchRequest br = new BatchRequest();
-
-        br.setRequestId(requestId);
-        br.setRelativeUrl("clients/$.clientId");
-        br.setMethod("PUT");
-        br.setReference(reference);
-        br.setBody("{\"firstname\": \"TestFirstName\", \"lastname\": \"TestLastName\"}");
-
-        return br;
-    }
-
-    /**
-     * Creates and returns a
-     * {@link org.apache.fineract.batch.command.internal.ApplyLoanCommandStrategy}
-     * Request with given requestId and reference.
-     * 
-     * @param requestId
-     * @param reference
-     * @param productId
-     * @return BatchRequest
-     */
-    public static BatchRequest applyLoanRequest(final Long requestId, final Long reference, final Integer productId) {
-
-        final BatchRequest br = new BatchRequest();
-
-        br.setRequestId(requestId);
-        br.setRelativeUrl("loans");
-        br.setMethod("POST");
-        br.setReference(reference);
-
-        final String body = "{\"dateFormat\": \"dd MMMM yyyy\", \"locale\": \"en_GB\", \"clientId\": \"$.clientId\"," + "\"productId\": "
-                + productId + ", \"principal\": \"10,000.00\", \"loanTermFrequency\": 12,"
-                + "\"loanTermFrequencyType\": 2, \"loanType\": \"individual\", \"numberOfRepayments\": 10,"
-                + "\"repaymentEvery\": 1, \"repaymentFrequencyType\": 2, \"interestRatePerPeriod\": 10,"
-                + "\"amortizationType\": 1, \"interestType\": 0, \"interestCalculationPeriodType\": 1,"
-                + "\"transactionProcessingStrategyId\": 1, \"expectedDisbursementDate\": \"10 Jun 2013\","
-                + "\"submittedOnDate\": \"10 Jun 2013\"}";
-        br.setBody(body);
-
-        return br;
-    }
-
-    /**
-     * Creates and returns a
-     * {@link org.apache.fineract.batch.command.internal.ApplySavingsCommandStrategy}
-     * Request with given requestId and reference.
-     * 
-     * @param requestId
-     * @param reference
-     * @param productId
-     * @return BatchRequest
-     */
-    public static BatchRequest applySavingsRequest(final Long requestId, final Long reference, final Integer productId) {
-
-        final BatchRequest br = new BatchRequest();
-
-        br.setRequestId(requestId);
-        br.setRelativeUrl("savingsaccounts");
-        br.setMethod("POST");
-        br.setReference(reference);
-
-        final String body = "{\"clientId\": \"$.clientId\", \"productId\": " + productId + ","
-                + "\"locale\": \"en\", \"dateFormat\": \"dd MMMM yyyy\", \"submittedOnDate\": \"01 March 2011\"}";
-        br.setBody(body);
-
-        return br;
-    }
-
-    /**
-     * Creates and returns a
-     * {@link org.apache.fineract.batch.command.internal.CreateChargeCommandStrategy}
-     * Request with given requestId and reference
-     * 
-     * @param requestId
-     * @param reference
-     * @return BatchRequest
-     */
-    public static BatchRequest createChargeRequest(final Long requestId, final Long reference) {
-
-        final BatchRequest br = new BatchRequest();
-        br.setRequestId(requestId);
-        br.setRelativeUrl("loans/$.loanId/charges");
-        br.setMethod("POST");
-        br.setReference(reference);
-
-        final String body = "{\"chargeId\": \"2\", \"locale\": \"en\", \"amount\": \"100\", "
-                + "\"dateFormat\": \"dd MMMM yyyy\", \"dueDate\": \"29 April 2013\"}";
-        br.setBody(body);
-
-        return br;
-    }
-
-    /**
-     * Creates and returns a
-     * {@link org.apache.fineract.batch.command.internal.CollectChargesCommandStrategy}
-     * Request with given requestId and reference.
-     * 
-     * @param requestId
-     * @param reference
-     * @return BatchRequest
-     */
-    public static BatchRequest collectChargesRequest(final Long requestId, final Long reference) {
-
-        final BatchRequest br = new BatchRequest();
-
-        br.setRequestId(requestId);
-        br.setRelativeUrl("loans/$.loanId/charges");
-        br.setReference(reference);
-        br.setMethod("GET");
-        br.setBody("{ }");
-
-        return br;
-    }
-
-    /**
-     * Creates and returns a
-     * {@link org.apache.fineract.batch.command.internal.ActivateClientCommandStrategy}
-     * Request with given requestId and reference.
-     * 
-     * 
-     * @param requestId
-     * @param reference
-     * @return BatchRequest
-     */
-    public static BatchRequest activateClientRequest(final Long requestId, final Long reference) {
-
-        final BatchRequest br = new BatchRequest();
-
-        br.setRequestId(requestId);
-        br.setRelativeUrl("clients/$.clientId?command=activate");
-        br.setReference(reference);
-        br.setMethod("POST");
-        br.setBody("{\"locale\": \"en\", \"dateFormat\": \"dd MMMM yyyy\", \"activationDate\": \"01 March 2011\"}");
-
-        return br;
-    }
-    
-    /**
-     * Creates and returns a
-     * {@link org.apache.fineract.batch.command.internal.ApproveLoanCommandStrategy}
-     * Request with given requestId and reference.
-     * 
-     * 
-     * @param requestId
-     * @param reference
-     * @return BatchRequest
-     */
-    public static BatchRequest approveLoanRequest(final Long requestId, final Long reference) {
-        final BatchRequest br = new BatchRequest();
-
-        br.setRequestId(requestId);
-        br.setRelativeUrl("loans/$.loanId?command=approve");
-        br.setReference(reference);
-        br.setMethod("POST");
-        br.setBody("{\"locale\": \"en\", \"dateFormat\": \"dd MMMM yyyy\", \"approvedOnDate\": \"12 September 2013\"," 
-                + "\"note\": \"Loan approval note\"}");
-
-        return br;
-    }
-
-    /**
-     * Creates and returns a
-     * {@link org.apache.fineract.batch.command.internal.DisburseLoanCommandStrategy}
-     * Request with given requestId and reference.
-     * 
-     * 
-     * @param requestId
-     * @param reference
-     * @return BatchRequest
-     */
-    public static BatchRequest disburseLoanRequest(final Long requestId, final Long reference) {
-        final BatchRequest br = new BatchRequest();
-
-        br.setRequestId(requestId);
-        br.setRelativeUrl("loans/$.loanId?command=disburse");
-        br.setReference(reference);
-        br.setMethod("POST");
-        br.setBody("{\"locale\": \"en\", \"dateFormat\": \"dd MMMM yyyy\", \"actualDisbursementDate\": \"15 September 2013\"}");
-
-        return br;
-    }
-    
-    /**
-     * Checks that the client with given externalId is not created on the
-     * server.
-     * 
-     * @param requestSpec
-     * @param responseSpec
-     * @param externalId
-     */
-    public static void verifyClientCreatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String externalId) {
-        System.out.println("------------------------------CHECK CLIENT DETAILS------------------------------------\n");
-        final String CLIENT_URL = "/fineract-provider/api/v1/clients?externalId=" + externalId + "&" + Utils.TENANT_IDENTIFIER;
-        final Integer responseRecords = Utils.performServerGet(requestSpec, responseSpec, CLIENT_URL, "totalFilteredRecords");
-        Assert.assertEquals("No records found with given externalId", (long) responseRecords, (long) 0);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CalendarHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CalendarHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CalendarHelper.java
deleted file mode 100644
index 0e9423b..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CalendarHelper.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import static com.jayway.restassured.path.json.JsonPath.from;
-import static org.junit.Assert.assertEquals;
-
-import java.util.HashMap;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class CalendarHelper {
-
-    private static final String BASE_URL = "/fineract-provider/api/v1/";
-    private static final String PARENT_ENTITY_NAME = "groups/";
-    private static final String ENITY_NAME = "/calendars";
-
-    public static Integer createMeetingCalendarForGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer groupId, final String startDate, final String frequency, final String interval, final String repeatsOnDay) {
-
-        System.out.println("---------------------------------CREATING A MEETING CALENDAR FOR THE GROUP------------------------------");
-
-        final String CALENDAR_RESOURCE_URL = BASE_URL + PARENT_ENTITY_NAME + groupId + ENITY_NAME + "?" + Utils.TENANT_IDENTIFIER;
-
-        System.out.println(CALENDAR_RESOURCE_URL);
-
-        return Utils.performServerPost(requestSpec, responseSpec, CALENDAR_RESOURCE_URL,
-                getTestCalendarAsJSON(frequency, interval, repeatsOnDay, startDate), "resourceId");
-    }
-
-    public static Integer updateMeetingCalendarForGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer groupId, String calendarID, final String startDate, final String frequency, final String interval,
-            final String repeatsOnDay) {
-
-        System.out.println("---------------------------------UPDATING A MEETING CALENDAR FOR THE GROUP------------------------------");
-
-        final String CALENDAR_RESOURCE_URL = BASE_URL + PARENT_ENTITY_NAME + groupId + ENITY_NAME + "/" + calendarID;
-
-        System.out.println(CALENDAR_RESOURCE_URL);
-        // TODO: check that resource id indeed exists in calendar update put.
-        return Utils.performServerPut(requestSpec, responseSpec, CALENDAR_RESOURCE_URL,
-                getTestCalendarAsJSON(frequency, interval, repeatsOnDay, startDate), "resourceId");
-    }
-
-    public static String getTestCalendarAsJSON(final String frequency, final String interval, final String repeatsOnDay,
-            final String startDate) {
-
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("dateFormat", "dd MMMM yyyy");
-        map.put("locale", "en");
-        map.put("frequency", frequency);
-        map.put("interval", interval);
-        map.put("repeating", "true");
-        map.put("repeatsOnDay", repeatsOnDay);
-        map.put("title", Utils.randomNameGenerator("groups_CollectionMeeting", 4));
-        map.put("typeId", "1");
-        map.put("startDate", startDate);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static void verifyCalendarCreatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedGroupId, final Integer generatedCalendarId) {
-        System.out.println("------------------------------CHECK CALENDAR DETAILS------------------------------------\n");
-        final String CLIENT_URL = "/fineract-provider/api/v1/groups/" + generatedGroupId + "?associations=all&" + Utils.TENANT_IDENTIFIER;
-        final String responseCalendarDetailsinJSON = Utils.performServerGet(requestSpec, responseSpec, CLIENT_URL,
-                "collectionMeetingCalendar");
-        final Integer responseCalendarId = from(responseCalendarDetailsinJSON).get("id");
-        assertEquals("ERROR IN CREATING THE CALENDAR", generatedCalendarId, responseCalendarId);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java
deleted file mode 100644
index c6ff955..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.fineract.infrastructure.core.service.DateUtils;
-
-import com.google.gson.Gson;
-
-public class CenterDomain implements Comparable<CenterDomain> {
-
-    public static class Builder {
-
-        private Integer id;
-        private String accountNo;
-        private HashMap status;
-        private boolean active;
-        private String name;
-        private String externalId;
-        private Integer staffId;
-        private Integer officeId;
-        private String officeName;
-        private String hierarchy;
-        private ArrayList<HashMap> groupMembers;
-
-        private Builder(final Integer id, final Integer statusid, final String statuscode, final String statusvalue, final boolean active,
-                final String name, final String externalId, final Integer staffId, final int officeID, final String officeName,
-                final String hierarchy, final ArrayList<HashMap> groupMembers) {
-            this.id = id;
-            this.accountNo = accountNo;
-            this.status = new HashMap();
-            this.status.put("id", statusid);
-            this.status.put("code", statuscode);
-            this.status.put("value", statusvalue);
-            this.active = active;
-            this.name = name;
-            this.externalId = externalId;
-            this.staffId = staffId;
-            this.officeId = officeID;
-            this.officeName = officeName;
-            this.hierarchy = hierarchy;
-            this.groupMembers = groupMembers;
-        }
-
-        public CenterDomain build() {
-            return new CenterDomain(this.id, this.accountNo, (int) this.status.get("id"), (String) this.status.get("code"),
-                    (String) this.status.get("value"), this.active, this.name, this.externalId, this.staffId, this.officeId,
-                    this.officeName, this.hierarchy, groupMembers);
-        }
-
-    }
-
-    private Integer id;
-    private String accountNo;
-    private HashMap status;
-    private boolean active;
-    private String name;
-    private String externalId;
-    private Integer staffId;
-    private Integer officeId;
-    private String officeName;
-    private String hierarchy;
-    private ArrayList<HashMap> groupMembers;
-
-    CenterDomain() {
-        /* super(); */
-    }
-
-    private CenterDomain(final Integer id, final String accountNo, final Integer statusid, final String statuscode, final String statusvalue, final boolean active,
-            final String name, final String externalId, final Integer staffId, final Integer officeID, final String officeName,
-            final String hierarchy, final ArrayList<HashMap> groupMembers) {
-        this.id = id;
-        this.accountNo = accountNo;
-        this.status = new HashMap();
-        this.status.put("id", statusid);
-        this.status.put("code", statuscode);
-        this.status.put("value", statusvalue);
-        this.active = active;
-        this.name = name;
-        this.externalId = externalId;
-        this.staffId = staffId;
-        this.officeId = officeID;
-        this.officeName = officeName;
-        this.hierarchy = hierarchy;
-        this.groupMembers = groupMembers;
-    }
-
-    public String toJSON() {
-        return new Gson().toJson(this);
-    }
-
-    public static CurrencyDomain fromJSON(final String jsonData) {
-        return new Gson().fromJson(jsonData, CurrencyDomain.class);
-    }
-
-    public static Builder create(final Integer id, final Integer statusid, final String statuscode, final String statusvalue,
-            final boolean active, final String name, final String externalId, final Integer staffId, final Integer officeID,
-            final String officeName, final String hierarchy, final ArrayList<HashMap> groupMembers) {
-        return new Builder(id, statusid, statuscode, statusvalue, active, name, externalId, staffId, officeID, officeName, hierarchy,
-                groupMembers);
-    }
-
-    @SuppressWarnings({ "rawtypes", "unchecked" })
-    public static String jsonRequestToCreateCenter(Integer id, Integer statusId, String statusCode, String statusValue, Boolean active,
-            String activationDate, String submittedDate, String name, String externalId, Integer staffId, Integer officeID,
-            String officeName, String hierarchy, final int[] groupMembers) {
-        // String ids = String.valueOf(id);
-        final HashMap map = new HashMap<>();
-        if (id != null) map.put("id", id);
-        if (statusId != null) map.put("statusId", statusId);
-        if (statusCode != null) map.put("statusCode", statusCode);
-        if (statusValue != null) map.put("statusValue", statusValue);
-        map.put("officeId", "1");
-        map.put("name", randomNameGenerator("Center_Name_", 5));
-        map.put("externalId", randomIDGenerator("ID_", 7));
-        map.put("dateFormat", "dd MMMM yyyy");
-        map.put("locale", "en");
-        if (staffId != null) {
-            map.put("staffId", String.valueOf(staffId));
-        }
-        if (active) {
-            map.put("active", "true");
-            map.put("locale", "en");
-            map.put("dateFormat", "dd MMM yyyy");
-            map.put("activationDate", activationDate);
-        } else {
-            map.put("active", "false");
-            if (submittedDate == null)
-                map.put("submittedOnDate", DateUtils.getDateOfTenant());
-            else
-                map.put("submittedOnDate", submittedDate);
-        }
-        if (externalId != null) map.put("externalId", externalId);
-        if (groupMembers != null) map.put("groupMembers", groupMembers);
-        System.out.println(map);
-        return new Gson().toJson(map);
-    }
-
-    public static String randomNameGenerator(final String prefix, final int lenOfRandomSuffix) {
-        return Utils.randomStringGenerator(prefix, lenOfRandomSuffix);
-    }
-
-    private static String randomIDGenerator(final String prefix, final int lenOfRandomSuffix) {
-        return Utils.randomStringGenerator(prefix, lenOfRandomSuffix, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-    }
-
-    public String getExternalId() {
-        return this.externalId;
-    }
-
-    public Integer getStaffId() {
-        return this.staffId;
-    }
-
-    public Integer getId() {
-        return this.id;
-    }
-
-    public HashMap getStatus() {
-        return this.status;
-    }
-
-    public boolean isActive() {
-        return this.active;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public Integer getOfficeId() {
-        return this.officeId;
-    }
-
-    public String getOfficeName() {
-        return this.officeName;
-    }
-
-    public String getHierarchy() {
-        return this.hierarchy;
-    }
-    
-    public String getAccountNo(){
-    	return this.accountNo;
-    }
-
-    public int[] getGroupMembers() {
-        int[] groupMemberList = new int[this.groupMembers.size()];
-        for (int i = 0; i < groupMemberList.length; i++) {
-            groupMemberList[i] = ((Double) this.groupMembers.get(i).get("id")).intValue();
-        }
-        return groupMemberList;
-    }
-
-    @Override
-    public int hashCode() {
-        int hash = 1;
-
-        if (this.id >= 0) hash += this.id;
-        if (this.status != null) {
-            if ((Double) this.status.get("id") >= 0) hash += (Double) this.status.get("id");
-            if ((String) this.status.get("code") != null) hash += this.status.get("code").hashCode();
-            if ((String) this.status.get("value") != null) hash += this.status.get("value").hashCode();
-        }
-        if (this.name != null) hash += this.name.hashCode();
-        if (this.officeId >= 0) hash += this.officeId;
-        if (this.officeName != null) hash += this.officeName.hashCode();
-        if (this.hierarchy != null) hash += this.hierarchy.hashCode();
-        if (this.groupMembers != null) hash += this.groupMembers.hashCode();
-
-        return hash;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (obj == this) { return true; }
-
-        if (!(obj instanceof CenterDomain)) return false;
-
-        CenterDomain cd = (CenterDomain) obj;
-
-        if (this.hashCode() == cd.hashCode()) return true;
-        return false;
-    }
-
-    @Override
-    public int compareTo(CenterDomain cd) {
-        return ((Integer) this.id).compareTo(cd.getId());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterHelper.java
deleted file mode 100644
index f81c64a..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterHelper.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import java.util.ArrayList;
-import static org.junit.Assert.assertEquals;
-import java.util.HashMap;
-import org.apache.commons.lang3.StringUtils;
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class CenterHelper {
-
-    private static final String CENTERS_URL = "/fineract-provider/api/v1/centers";
-
-    public static final String CREATED_DATE = "29 December 2014";
-    private static final String CREATE_CENTER_URL = "/fineract-provider/api/v1/centers?" + Utils.TENANT_IDENTIFIER;
-
-    public static CenterDomain retrieveByID(int id, final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        final String GET_CENTER_BY_ID_URL = CENTERS_URL + "/" + id + "?associations=groupMembers&" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING CENTER AT " + id + "-------------------------");
-        final String jsonData = new Gson().toJson(Utils.performServerGet(requestSpec, responseSpec, GET_CENTER_BY_ID_URL, ""));
-        return new Gson().fromJson(jsonData, new TypeToken<CenterDomain>() {}.getType());
-    }
-
-    public static ArrayList<CenterDomain> paginatedListCenters(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec) {
-        final String GET_CENTER = CENTERS_URL + "?paged=true&limit=-1&" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING CENTERS-------------------------");
-        final String jsonData = new Gson().toJson(Utils.performServerGet(requestSpec, responseSpec, GET_CENTER, "pageItems"));
-        return new Gson().fromJson(jsonData, new TypeToken<ArrayList<CenterDomain>>() {}.getType());
-    }
-
-    public static ArrayList<CenterDomain> listCenters(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        final String GET_CENTER = CENTERS_URL + "?limit=-1&" + Utils.TENANT_IDENTIFIER;
-        System.out.println("------------------------ RETRIEVING CENTERS-------------------------");
-        final String jsonData = new Gson().toJson(Utils.performServerGet(requestSpec, responseSpec, GET_CENTER, ""));
-        return new Gson().fromJson(jsonData, new TypeToken<ArrayList<CenterDomain>>() {}.getType());
-    }
-
-    public static int createCenter(final String name, final int officeId, final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec) {
-        return createCenter(name, officeId, null, -1, null, null, requestSpec, responseSpec);
-    }
-
-    public static int createCenter(final String name, final int officeId, final String activationDate,
-            final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        return createCenter(name, officeId, null, -1, null, activationDate, requestSpec, responseSpec);
-    }
-
-    public static int createCenter(final String name, final int officeId, final String externalId, final int staffId,
-            final int[] groupMembers, final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        return createCenter(name, officeId, externalId, staffId, groupMembers, null, requestSpec, responseSpec);
-    }
-
-    public static int createCenter(final String name, final int officeId, final String externalId, final int staffId,
-            final int[] groupMembers, final String activationDate, final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec) {
-        final String CREATE_CENTER_URL = CENTERS_URL + "?" + Utils.TENANT_IDENTIFIER;
-        HashMap hm = new HashMap();
-        hm.put("name", name);
-        hm.put("officeId", officeId);
-        hm.put("active", false);
-
-        if (externalId != null) hm.put("externalId", externalId);
-        if (staffId != -1) hm.put("staffId", staffId);
-        if (groupMembers != null) hm.put("groupMembers", groupMembers);
-        if (activationDate != null) {
-            hm.put("active", true);
-            hm.put("locale", "en");
-            hm.put("dateFormat", "dd MMM yyyy");
-            hm.put("activationDate", activationDate);
-        }
-        
-        System.out.println("------------------------CREATING CENTER-------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_CENTER_URL, new Gson().toJson(hm), "resourceId");
-    }
-
-    public static HashMap<String, String> updateCenter(final int id, HashMap request, final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec) {
-        final String UPDATE_CENTER_URL = CENTERS_URL + "/" + id + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------UPDATE CENTER AT " + id + "---------------------------------------------");
-        HashMap<String, String> hash = Utils.performServerPut(requestSpec, responseSpec, UPDATE_CENTER_URL, new Gson().toJson(request),
-                "changes");
-        return hash;
-    }
-
-    public static int[] associateGroups(final int id, final int[] groupMembers, final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec) {
-        final String ASSOCIATE_GROUP_CENTER_URL = CENTERS_URL + "/" + id + "?command=associateGroups&" + Utils.TENANT_IDENTIFIER;
-        HashMap groupMemberHashMap = new HashMap();
-        groupMemberHashMap.put("groupMembers", groupMembers);
-        System.out.println("---------------------------------ASSOCIATING GROUPS AT " + id + "--------------------------------------------");
-        HashMap hash = Utils.performServerPost(requestSpec, responseSpec, ASSOCIATE_GROUP_CENTER_URL,
-                new Gson().toJson(groupMemberHashMap), "changes");
-        System.out.println(hash);
-        ArrayList<String> arr = (ArrayList<String>) hash.get("groupMembers");
-        int[] ret = new int[arr.size()];
-        for (int i = 0; i < ret.length; i++) {
-            ret[i] = Integer.parseInt(arr.get(i));
-        }
-        return ret;
-    }
-
-    public static void deleteCenter(final int id, final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        final String DELETE_CENTER_URL = CENTERS_URL + "/" + id + "?" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------DELETING CENTER AT " + id + "--------------------------------------------");
-        Utils.performServerDelete(requestSpec, responseSpec, DELETE_CENTER_URL, "");
-    }
-
-    public static Integer createCenter(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            @SuppressWarnings("unused") final boolean active) {
-        System.out.println("---------------------------------CREATING A CENTER---------------------------------------------");
-        return createCenter(requestSpec, responseSpec, "CREATED_DATE");
-    }
-
-    public static Integer createCenter(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String activationDate) {
-        System.out.println("---------------------------------CREATING A CENTER---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_CENTER_URL, getTestCenterAsJSON(true, activationDate), "groupId");
-    }
-
-    public static Integer createCenter(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
-        System.out.println("---------------------------------CREATING A CENTER---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_CENTER_URL, getTestCenterAsJSON(true, CenterHelper.CREATED_DATE),
-                "groupId");
-    }
-
-    public static int createCenterWithStaffId(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer staffId) {
-        System.out.println("---------------------------------CREATING A CENTER---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CREATE_CENTER_URL,
-                getTestCenterWithStaffAsJSON(true, CenterHelper.CREATED_DATE, staffId), "groupId");
-    }
-
-    public static void verifyCenterCreatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedCenterID) {
-        System.out.println("------------------------------CHECK CENTER DETAILS------------------------------------\n");
-        final String CENTER_URL = "/fineract-provider/api/v1/centers/" + generatedCenterID + "?" + Utils.TENANT_IDENTIFIER;
-        final Integer responseCenterID = Utils.performServerGet(requestSpec, responseSpec, CENTER_URL, "id");
-        assertEquals("ERROR IN CREATING THE CENTER", generatedCenterID, responseCenterID);
-    }
-
-    public static void verifyCenterActivatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final Integer generatedCenterID, final boolean generatedCenterStatus) {
-        System.out.println("------------------------------CHECK CENTER STATUS------------------------------------\n");
-        final String CENTER_URL = "/fineract-provider/api/v1/centers/" + generatedCenterID + "?" + Utils.TENANT_IDENTIFIER;
-        final Boolean responseCenterStatus = Utils.performServerGet(requestSpec, responseSpec, CENTER_URL, "active");
-        assertEquals("ERROR IN ACTIVATING THE CENTER", generatedCenterStatus, responseCenterStatus);
-    }
-
-    public static Integer activateCenter(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String centerId) {
-        final String CENTER_ASSOCIATE_URL = "/fineract-provider/api/v1/centers/" + centerId + "?command=activate&" + Utils.TENANT_IDENTIFIER;
-        System.out.println("---------------------------------ACTIVATE A CENTER---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, CENTER_ASSOCIATE_URL, activateCenterAsJSON(""), "groupId");
-    }
-
-    public static String getTestCenterWithStaffAsJSON(final boolean active, final String activationDate, final Integer staffId) {
-       
-        Integer id = null;
-        Integer statusid = null;
-        String statuscode = null;
-        String statusvalue = null;
-        String name = null;
-        String externalId = null;
-        Integer officeID = null;
-        String officeName = null;
-        String hierarchy = null;
-        int[] groupMembers = null;
-        String submittedDate = null;
-
-        return CenterDomain.jsonRequestToCreateCenter(id, statusid, statuscode, statusvalue, active, activationDate,submittedDate,name,
-                externalId, staffId, officeID, officeName, hierarchy, groupMembers);
-    }
-
-    public static String getTestCenterAsJSON(final boolean active, final String activationDate) {
-      
-        Integer id = null;
-        Integer statusid = null;
-        String statuscode = null;
-        String statusvalue = null;
-        String name = null;
-        String externalId = null;
-        Integer officeID = null;
-        String officeName = null;
-        Integer staffId = null;
-        String hierarchy = null;
-        final int[] groupMembers = null;
-        String submittedDate = null;
-
-        return CenterDomain.jsonRequestToCreateCenter(id, statusid, statuscode, statusvalue, active, activationDate,submittedDate,name,
-                externalId, staffId, officeID, officeName, hierarchy, groupMembers);
-        
-    }
-
-    public static String assignStaffAsJSON(final Long staffId) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("staffId", staffId);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static String unassignStaffAsJSON(final Long staffId) {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("staffId", staffId);
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static String activateCenterAsJSON(final String activationDate) {
-        final HashMap<String, String> map = new HashMap<>();
-        map.put("dateFormat", "dd MMMM yyyy");
-        map.put("locale", "en");
-        if (StringUtils.isNotEmpty(activationDate)) {
-            map.put("activationDate", activationDate);
-        } else {
-            map.put("activationDate", "CREATED_DATE");
-            System.out.println("defaulting to fixed date: CREATED_DATE");
-        }
-        System.out.println("map : " + map);
-        return new Gson().toJson(map);
-    }
-
-    public static String randomNameGenerator(final String prefix, final int lenOfRandomSuffix) {
-        return Utils.randomStringGenerator(prefix, lenOfRandomSuffix);
-    }
-
-    private static String randomIDGenerator(final String prefix, final int lenOfRandomSuffix) {
-        return Utils.randomStringGenerator(prefix, lenOfRandomSuffix, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-    }
-
-    public static Object assignStaff(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String groupId, final Long staffId) {
-        final String GROUP_ASSIGN_STAFF_URL = "/fineract-provider/api/v1/groups/" + groupId + "?" + Utils.TENANT_IDENTIFIER
-                + "&command=assignStaff";
-        System.out.println("---------------------------------Assign Staff---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSIGN_STAFF_URL, assignStaffAsJSON(staffId), "changes");
-    }
-
-    public static Object unassignStaff(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String groupId, final Long staffId) {
-        final String GROUP_ASSIGN_STAFF_URL = "/fineract-provider/api/v1/groups/" + groupId + "?" + Utils.TENANT_IDENTIFIER
-                + "&command=unassignStaff";
-        System.out.println("---------------------------------Unassign Staff---------------------------------------------");
-        return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSIGN_STAFF_URL, unassignStaffAsJSON(staffId), "changes");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientChargesTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientChargesTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientChargesTest.java
deleted file mode 100644
index f9b01c6..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientChargesTest.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import org.apache.fineract.integrationtests.common.charges.ChargesHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * 
- * IntegrationTest for ClientCharges.
- * 
- */
-/**
- * @author lenovo
- * 
- */
-public class ClientChargesTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Test
-    public void clientChargeTest() {
-
-        // Creates clientCharge
-        final Integer chargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getChargeSpecifiedDueDateJSON());
-        Assert.assertNotNull(chargeId);
-
-        // creates client with activation date
-        final Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 November 2012");
-        Assert.assertNotNull(clientId);
-
-        /**
-         * create a charge for loan and try to associate to client created in
-         * the above lines.it will be an invalid scenario the reason is client
-         * is not allowed to have only client charge.
-         * 
-         */
-        final Integer loanChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateJSON());
-        Assert.assertNotNull(loanChargeId);
-        ResponseSpecification responseLoanChargeFailure = new ResponseSpecBuilder().expectStatusCode(403).build();
-        final Integer clientLoanChargeId = ClientHelper.addChargesForClient(this.requestSpec, responseLoanChargeFailure, clientId,
-                ClientHelper.getSpecifiedDueDateChargesClientAsJSON(loanChargeId.toString(), "29 October 2011"));
-        Assert.assertNull(clientLoanChargeId);
-
-        /**
-         * associates a clientCharge to a client and pay client charge for 10
-         * USD--success scenario
-         **/
-        final Integer clientChargeId = ClientHelper.addChargesForClient(this.requestSpec, this.responseSpec, clientId,
-                ClientHelper.getSpecifiedDueDateChargesClientAsJSON(chargeId.toString(), "29 October 2011"));
-        Assert.assertNotNull(clientChargeId);
-        final String clientChargePaidTransactionId = ClientHelper.payChargesForClients(this.requestSpec, this.responseSpec, clientId,
-                clientChargeId, ClientHelper.getPayChargeJSON("25 AUGUST 2015", "10"));
-        Assert.assertNotNull(clientChargePaidTransactionId);
-        isValidOutstandingAmount(ClientHelper.getClientCharge(requestSpec, responseSpec, clientId.toString(), clientChargeId.toString()),
-                (float) 190.0);
-
-        /**
-         * Revert the paid client charge transaction by passing the
-         * clientChargePaidTransactionId and ensure the same is reverted.
-         */
-                final Integer undoTrxnId = ClientHelper.revertClientChargeTransaction(this.requestSpec, this.responseSpec,
-                        clientId.toString(), clientChargePaidTransactionId);
-        Assert.assertNotNull(undoTrxnId);
-        isReversedTransaction(clientId.toString(), undoTrxnId.toString());
-        /**
-         * Now pay client charge for 20 USD and ensure the outstanding amount is
-         * updated properly
-         */
-        ResponseSpecification responseSpecFailure = new ResponseSpecBuilder().expectStatusCode(400).build();
-        final String responseId_futureDate_failure = ClientHelper.payChargesForClients(this.requestSpec, responseSpecFailure, clientId,
-                clientChargeId, ClientHelper.getPayChargeJSON("28 AUGUST 2016", "20"));
-        Assert.assertNull(responseId_futureDate_failure);
-
-        // waived off the outstanding client charge
-        final String waiveOffClientChargeTransactionId = ClientHelper.waiveChargesForClients(this.requestSpec, this.responseSpec, clientId,
-                clientChargeId, ClientHelper.getWaiveChargeJSON("100", clientChargeId.toString()));
-        Assert.assertNotNull(waiveOffClientChargeTransactionId);
-
-        /**
-         * Revert the waived off client charge transaction by passing the
-         * waiveOffClientChargeTransactionId and ensured the transaction is
-         * reversed.
-         */
-        final Integer undoWaiveTrxnId = ClientHelper.revertClientChargeTransaction(this.requestSpec, this.responseSpec, clientId.toString(),
-                waiveOffClientChargeTransactionId);
-        Assert.assertNotNull(undoWaiveTrxnId);
-        isReversedTransaction(clientId.toString(), undoWaiveTrxnId.toString());
-        /**
-         * pay client charge before client activation date and ensured its a
-         * failure test case
-         */
-
-        final String responseId_activationDate_failure = ClientHelper.payChargesForClients(this.requestSpec, responseSpecFailure, clientId,
-                clientChargeId, ClientHelper.getPayChargeJSON("30 October 2011", "20"));
-        Assert.assertNull(responseId_activationDate_failure);
-        /**
-         * pay client charge more than outstanding amount amount and ensured its
-         * a failure test case
-         */
-        final String responseId_moreAmount_failure = ClientHelper.payChargesForClients(this.requestSpec, responseSpecFailure, clientId,
-                clientChargeId, ClientHelper.getPayChargeJSON("25 AUGUST 2015", "300"));
-        Assert.assertNull(responseId_moreAmount_failure);
-        /**
-         * pay client charge for 10 USD and ensure outstanding amount is updated
-         * properly
-         */
-        final String chargePaid_responseId = ClientHelper.payChargesForClients(this.requestSpec, this.responseSpec, clientId,
-                clientChargeId, ClientHelper.getPayChargeJSON("25 AUGUST 2015", "100"));
-        Assert.assertNotNull(chargePaid_responseId);
-
-        isValidOutstandingAmount(ClientHelper.getClientCharge(requestSpec, responseSpec, clientId.toString(), clientChargeId.toString()),
-                (float) 100.0);
-
-    }
-
-    /**
-     * It checks whether the client charge transaction is reversed or not.
-     * 
-     * @param clientId
-     * @param transactionId
-     */
-    private void isReversedTransaction(String clientId, String transactionId) {
-        final Boolean isReversed = ClientHelper.getClientTransactions(this.requestSpec, this.responseSpec, clientId.toString(),
-                transactionId);
-        Assert.assertTrue(isReversed);
-    }
-
-    /**
-     * Check whether the outStandingAmount is equal to expected Amount or not
-     * after paying or after waiving off the client charge.
-     * 
-     * @param outStandingAmount
-     * @param expectedAmount
-     */
-    private void isValidOutstandingAmount(Object outStandingAmount, Object expectedAmount) {
-        Assert.assertEquals((float) outStandingAmount, expectedAmount);
-    }
-
-}


[48/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/api-docs/apidocs.css
----------------------------------------------------------------------
diff --git a/api-docs/apidocs.css b/api-docs/apidocs.css
deleted file mode 100644
index 38b8b9f..0000000
--- a/api-docs/apidocs.css
+++ /dev/null
@@ -1,748 +0,0 @@
-.apiClick {
-	text-decoration: underline;
-	cursor: hand; 
-	cursor: pointer;
-	color: blue;
-}
-
-.apiClickNotPretty {
-    text-decoration: underline;
-    cursor: hand; 
-    cursor: pointer;
-    color: blue;
-}
-
-#jpw {
-	text-decoration: underline;
-	cursor: hand; 
-	cursor: pointer;
-	color: blue;
-}
-
-
-.tocMatrix {
-	font-size: 85%;
-}
-.fullMatrixOuter {
-	margin-right: 20px;
-	margin-left: 20px;
-	margin-bottom: 20px;
-}
-
-.matrixHeading { 
-	font-family: Helvetica, Arial, sans-serif;
-	border-collapse:collapse;
-	border: 3px solid #6eb4db;
-	width:100%;
-}
-
-.matrixHeading td
-{ 
-	//padding:3px 7px 2px 7px;
-
-	padding-right:5px;
-
-	vertical-align:text-top;
-}
-
-.matrixHeading tr:not(:first-child):nth-child(even) {
-    color: #000;
-    background-color: rgb(240, 240, 255);
-}
-
-.matrixHeading tr:not(:first-child):nth-child(odd) {
-    color: #000;
-    background-color: rgba(255, 248, 218, 0.13);
-}
-
-.matrixHeading tr:first-child td table tr {
-    background-color: #6eb4db !important;
-}
-
-.matrixHeadingBG {
-    background-color: #6eb4db;
-}
-
-.matrixHeadingVerbs {
-	color: white;
-	font-weight: bold;
-	font-size: 125%
-}
-
-.matrixHeadingCommands {
-    color: rgb(240, 240, 255) !important;
-    background-color: #6eb4db !important;
-}
-
-.fineractHeading2 {
-	color: white;
-	font-weight: bold;
-	//font-size: 125%
-}
-
-.fieldtype  {
-	padding-right: 40px;
-	padding-left:40px;
-	padding-top:20px;
-	font-size: 85%;
-}
-
-.fielddesc span, .fieldtype {
-    font-style: italic;
-    font-weight: normal;
-}
-
-.fielddesc {
-	padding-bottom:10px;
-	padding-left:20px;
-}
-
-.fielddesc span {
-    font-style: italic;
-    font-weight: normal;
-}
-
-.normalli {list-style:disc outside none;}
-
-
-html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,tdjpw{margin:0;padding:0;}tablejpw{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}
-
-a img { outline: none; border: 0; }
-h1 { font-size: 180%; font-weight: bold; }
-h2 { font-size: 165%; font-weight: bold; }
-h3 { font-size: 145%; font-weight: bold; }
-h4 { font-size: 120%; font-weight: bold; }
-h5 { font-size: 120%; font-weight: bold; }
-h6 { font-size: 110%; font-weight: bold; }
-h1, h2, h3, h4, h5, h6 { margin: 0 0 0.5em 0; line-height: 1.2em; }
-p { margin: 1em 0; }
-em {font-style: italic;}
-
-html {
-    background-color: rgb(240, 240, 255);
-}
-
-body {
-    padding: 0; margin: 0;
-    font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
-    font-size: 15px;
-    line-height: 22px;
-    min-width: 1000px;
-    background-color: gray;
-    border-top: 15px solid black;
-}
-
-#flybar {
-    font-size: 14px;
-    line-height: 20px;
-}
-
-.method-example h1, .method-example h2, .method-example h3, .method-example h4, .method-example h5, .method-example h6, #flybar, .footer {
-    font-family: Helvetica, Arial, sans-serif;
-}
-
-.method-example code {
-    font-family:  Monaco, Consolas, "Lucida Console", monospace;
-    font-size: 12px;
-    line-height: 18px;
-}
-
-#flybar {
-    position: fixed;
-    z-index: 100;
-    height: 40px;
-    min-width: 745px;
-    left: 0; right: 0; top: 0;
-    padding-left: 150px;
-    background: #eee;
-    background: -webkit-gradient(linear, left top, left bottom, from(#6eb4db), to(#dadada));
-    background: -moz-linear-gradient(top, #6eb4db, #dadada);
-    border-top: 3px solid black;
-    border-bottom: 1px solid #888;
-    -webkit-box-shadow: 0 3px 5px rgba(0,0,0,0.1);
-    -moz-box-shadow: 0 3px 5px rgba(0,0,0,0.1);
-    box-shadow: 0 3px 5px rgba(0,0,0,0.1);
-}
-
-#nav-logo {
-    display: block;
-    height: 30px;
-    position: absolute;
-    top: 10px;
-    left: 10px;
-    font-weight: bold;
-    color: black;
-    font-size: 16px;
-    text-decoration: none;
-}
-
-.flybar-button {
-    text-align: center;
-    text-transform: uppercase;
-    font-size: 12px;
-    padding: 0 0.5em;
-    line-height: 40px;
-    border-right: 1px solid transparent;
-    border-left: 1px solid transparent;
-    text-decoration: none;
-    font-weight: bold;
-    color: black;
-}
-
-.flybar-nav {
-    display: block;
-    float: left;
-    min-width: 80px;
-    position: relative;
-}
-
-.flybar-language {
-    display: block;
-    float: left;
-    position: relative;
-}
-
-.flybar-language .flybar-button {
-    float: left;
-    clear: none;
-    border-right: 1px solid transparent;
-    border-left: 1px solid transparent;
-    min-width: 80px;
-    margin-left: -1px;
-}
-
-.flybar-menu {
-    display: none;
-    position: absolute;
-    top: 41px;
-    max-height:550px;
-    overflow:auto;
-    width: 1000px;
-    background-color: rgba(249, 249, 249, 0.99);
-    border: 1px solid rgb(187, 187, 187);
-    border-top: 0;
-    padding: 1em;
-    border-bottom-left-radius: 8px;
-    border-bottom-right-radius: 8px;
-    -webkit-box-shadow: 0 3px 5px rgba(0,0,0,0.1);
-    -moz-box-shadow: 0 3px 5px rgba(0,0,0,0.1);
-    box-shadow: 0 3px 5px rgba(0,0,0,0.1);
-}
-
-.flybar-menu-overview {
-    display: none;
-    position: absolute;
-    top: 41px;
-
-    width: 300px;
-    background-color: rgba(249, 249, 249, 0.99);
-    border: 1px solid rgb(187, 187, 187);
-    border-top: 0;
-    padding: 1em;
-    border-bottom-left-radius: 8px;
-    border-bottom-right-radius: 8px;
-    -webkit-box-shadow: 0 3px 5px rgba(0,0,0,0.1);
-    -moz-box-shadow: 0 3px 5px rgba(0,0,0,0.1);
-    box-shadow: 0 3px 5px rgba(0,0,0,0.1);
-}
-
-
-
-#toc-menu-client {
-	position:absolute;
-	left:-50px;
-}
-#toc-menu-group {
-	position:absolute;
-	left:-130px;
-}
-#toc-menu-loan {
-	position:absolute;
-	left:-210px;
-}
-#toc-menu-savings {
-	position:absolute;
-	left:-290px;
-}
-#toc-menu-accounting {
-	position:absolute;
-	left:-370px;
-}
-#toc-menu-org {
-	position:absolute;
-	left:-450px;
-}
-#toc-menu-user {
-	position:absolute;
-	left:-530px;
-}
-#toc-menu-system {
-	position:absolute;
-	left:-610px;
-}
-#toc-menu-noncore {
-	position:absolute;
-	left:-690px;
-}
-#toc-menu-report {
-	position:absolute;
-	left:-770px;
-}
-#toc-menu-template {
-	position:absolute;
-	left:-850px;
-}
-
-#language-menu {
-    left: -25px;
-}
-
-#language-menu li {
-    display: inline-block;
-    margin-right: 25px;
-}
-
-.flybar-menu h3, .flybar-menu-overview h3, .flybar-menu-convenience h3 {
-    text-transform: uppercase;
-    font-size: 100%;
-}
-
-.flybar-menu h4, .flybar-menu-overview h4, .flybar-menu-convenience h4 {
-    text-transform: uppercase;
-    font-size: 90%;
-    color: rgb(155, 155, 155);
-    margin: 0.5em 0 0.5em 0;
-}
-
-.flybar-menu ul, .flybar-menu-overview ul, .flybar-menu-convenience ul {
-    margin: 0 0 1em 1em;
-}
-
-.flybar-nav:hover .flybar-menu, .flybar-nav:hover .flybar-menu-overview, .flybar-nav:hover .flybar-menu-convenience,
-.flybar-nav.active .flybar-menu, .flybar-nav.active .flybar-menu-overview, .flybar-nav.active .flybar-menu-convenience{
-    display: block;
-}
-
-.flybar-button:hover,
-.flybar-button.active,
-.flybar-nav:hover .flybar-button,
-.flybar-nav.active .flybar-button {
-  background: #eee;
-  background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#6eb4db));
-  background: -moz-linear-gradient(top, #eee, #6eb4db);
-  border-left: 1px solid rgb(187, 187, 187);
-  border-right: 1px solid rgb(187, 187, 187);
-}
-
-.flybar-nav:hover .flybar-menu, .flybar-nav:hover .flybar-menu-overview, .flybar-nav:hover .flybar-menu-convenience,
-.flybar-button.active {
-  margin-right: -1px;
-}
-
-.flybar-nav:hover .flybar-button,
-.flybar-nav.active .flybar-button {
-    height: 51px;
-    color: #000;
-    background: -webkit-gradient(linear, left top, left bottom, from(#e5e5e5), to(#fff));
-    background: -moz-linear-gradient(top, #e5e5e5, #fff);
-}
-
-.toc-column1 {
-    width: 200px;
-}
-
-.toc-column2 {
-    width: 235px;
-}
-
-.toc-column3 {
-    width: 200px;
-}
-
-.toc-column1, .toc-column2, .toc-column3, .toc-column4, .toc-column5, .toc-column6 {
-    float: left;
-}
-
-.toc-section {
-    width: 235px;
-    font-size: 90%;
-}
-
-code {
-    white-space: pre;
-    white-space: -o-pre-wrap;
-    white-space: -moz-pre-wrap;
-    white-space: pre-wrap;
-    display: block;
-    margin: 1em 0;
-    line-height: 1.5em;
-}
-
-.method-section {
-    clear: left;
-    padding: 1em 0;
-    padding-top: 60px;
-    margin-left: -580px;
-}
-
-.method-section:after {
-	visibility: hidden;
-	display: block;
-	font-size: 0;
-	content: " ";
-	clear: both;
-	height: 0;
-}
-
-.method-description {
-    width: 540px;
-    float: left;
-    padding-right: 20px;
-    color: black;
-}
-
-.method-description p {
-}
-
-h1 {
-    text-transform: uppercase;
-}
-
-.method-description h4 {
-    /*font-family: monospace;*/
-}
-
-.method-description h5 {
-    font-size: 110%;
-    color: rgb(155, 155, 155);
-    text-transform: uppercase;
-    clear: both;
-    padding: 0.5em 0;
-}
-
-.method-example {
-    margin-left: 560px;
-    padding-left: 20px;
-    min-width: 380px;
-}
-
-.method-example code {
-    white-space: pre;
-    white-space: -o-pre-wrap;
-    white-space: -moz-pre-wrap;
-    white-space: pre-wrap;
-}
-
-.method-example {
-    color: rgb(105, 105, 125);
-}
-
-.method-example p {
-    font-style: italic;
-    color: rgb(105, 105, 105);
-}
-
-.method-error:before {
-    content: "EXAMPLE ERROR";
-    color: rgb(155, 155, 185);
-    display: block;
-}
-
-.method-declaration:before {
-    content: "DEFINITION";
-    color: rgb(155, 155, 185);
-    display: block;
-}
-
-.method-request:before {
-    content: "EXAMPLE REQUEST";
-    color: rgb(155, 155, 185);
-    display: block;
-}
-
-.method-response:before {
-    content: "EXAMPLE RESPONSE";
-    color: rgb(155, 155, 185);
-    display: block;
-}
-
-.expected-result:before {
-    content: "RESULT";
-    color: rgb(155, 155, 185);
-    display: block;
-}
-
-.method-response, .method-error {
-    font-size: 90%;
-}
-
-.method-example li {
-    font-family: monospace;
-    color: black;
-}
-
-.method-example ul {
-    margin: 1em 0;
-}
-
-.method-example table {
-    font-family: monospace;
-    color: black;
-}
-
-.method-example td {
-    padding-right: 20px;
-    padding-bottom: 5px;
-    vertical-align: top;
-}
-.method-example table th {
-    font-weight: bold;
-}
-
-.method-example code {
-    color: black;
-}
-
-.prompt:after {
-    content: '$ ';
-    color: gray;
-    display: block;
-}
-
-.prompt.curl:after { content: '$ '; }
-.prompt.ruby:after { content: '>> ' }
-.prompt.python:after { content: '>>> ' }
-.prompt.php:after { content: 'php > ' }
-.prompt.java:after { content: '' }
-
-.method-name {
-    font-family: monospace;
-    font-weight: bold;
-}
-
-.notification-request:before {
-    content: "EXAMPLE NOTIFICATION";
-    color: rgb(155, 155, 185);
-    display: block;
-}
-
-.notification-event:before {
-    content: "EVENT";
-    color: rgb(155, 155, 185);
-    display: block;
-}
-
-
-#page-wrapper {
-    background-color: white;
-    color: black;
-}
-
-#main-content-wrapper {
-    background-color: rgb(240, 240, 255);
-
-    margin-left: 579px;
-    padding: 0 20px 40px 20px;
-    border-left: 1px solid rgb(229, 229, 238);
-}
-
-#api-summary-example {
-    margin-top: 48px;
-}
-
-.argument-list {
-    font-size: 90%;
-    line-height: 1.5em;
-}
-
-.argument-list dl {
-    font-size: 95%;
-    padding: 1em 0;
-    line-height: 1.5em;
-}
-
-.argument-list:after {
-	visibility: hidden;
-	display: block;
-	font-size: 0;
-	content: " ";
-	clear: both;
-	height: 0;
-}
-
-.argument-list dl:after {
-	visibility: hidden;
-	display: block;
-	font-size: 0;
-	content: " ";
-	clear: both;
-	height: 0;
-}
-
-.argument-list dt {
-    clear:both;
-    width:34%;
-    float:left;
-    text-align:right;
-    font-weight: bold;
-    margin-top: 8px;
-}
-
-.event-types.argument-list dt {
-    width: 48%;
-}
-
-.event-types.argument-list dd {
-    width: 48%;
-}
-
-.argument-list dt:after {
-    content: ":";
-}
-
-.argument-list dd {
-   float:right;
-   width: 65%;
-}
-
-.argument-list dl dd {
-    width: 65%;
-}
-
-.argument-list dt + dd {
-    margin-top: 8px;
-    font-weight: bold;
-}
-
-.argument-list dd dl dd dl {
-    width: 95%;
-}
-
-.argument-list dd dl dd dl dd {
-    width: 65%;
-}
-.argument-list dd dl dd dl dt {
-    width:31%;
-}
-
-.argument-list dd span {
-    font-style: italic;
-    font-weight: normal;
-}
-
-.old-syle-anchor {display:block;height:0;width:0;}
-strong { font-weight: bold; }
-
-.footer {
-    position: fixed;
-    bottom: 0;
-    height: 30px;
-
-    border-top: 1px solid #ccc;
-    background: #eee;
-    background: -webkit-gradient(linear, left top, left bottom, from(#6eb4db), to(#dadada));
-    background: -moz-linear-gradient(top, #6eb4db, #dadada);
-
-    width: 100%;
-    opacity: 0.95;
-    font-size: 13px;
-}
-
-.footer input[type="text"] {
-    height: 14px;
-    padding: 3px;
-    border: 1px solid #aaa;
-    border-radius: 4px;
-}
-
-.suggestion-box {
-    float: right;
-    padding-top: 3px;
-    padding-right: 10px;
-}
-
-.footer input[type="submit"]:hover {
-    background: -webkit-gradient(
-        linear,
-        center top,
-        center bottom,
-        from(#fefefe),
-        to(#dbdbdb),
-        color-stop(80%, #eeeeee),
-        color-stop(0%, #eeeeee)
-    );
-    background: -moz-linear-gradient(
-        top,
-        #fff,
-        #fff
-    );
-}
-
-.footer input[type="submit"]:active {
-    background: -webkit-gradient(
-        linear,
-        center top,
-        center bottom,
-        from(#c0c0c0),
-        to(#fefefe),
-        color-stop(0%, #e1e1e1),
-        color-stop(30%, #eeeeee),
-        color-stop(80%, #fff)
-    );
-    background: -moz-linear-gradient(
-        top,
-        #c0c0c0,
-        #fefefe
-    );
-
-    border: 1px solid #a3a3a3;
-}
-
-.footer input[type="submit"] {
-    height: 22px;
-    padding: 3px;
-    font-size: 13px;
-
-    font-family: "proxima-nova-1","proxima-nova-2", Helvetica, Arial, sans-serif;
-    color: #454545;
-    text-shadow: 0px 1px 0px #fff;
-    text-align: center;
-
-    border: 1px solid #aaa;
-    background: -webkit-gradient(
-        linear,
-        center top,
-        center bottom,
-        from(#fefefe),
-        to(#dbdbdb),
-        color-stop(50%, #eeeeee)
-    );
-    background: -moz-linear-gradient(
-        top,
-        #fefefe,
-        #dbdbdb
-    );
-
-    border-radius: 5px;
-    -moz-border-radius: 5px;
-    -webkit-border-radius: 5px;
-    -webkit-background-clip: padding-box;
-    -webkit-backface-visibility: hidden;
-}
-
-.stripe-version {
-    float: left;
-}
-
-ul.field {
-    margin: 5px 10px;
-}
-
-ul.field li {
-    list-style: square inside none;
-    font-style: italic;
-}
-
-tt {
-    font-size: 9.5pt;
-}
\ No newline at end of file


[17/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/dependencies.gradle
----------------------------------------------------------------------
diff --git a/fineract-provider/dependencies.gradle b/fineract-provider/dependencies.gradle
deleted file mode 100644
index e40a330..0000000
--- a/fineract-provider/dependencies.gradle
+++ /dev/null
@@ -1,80 +0,0 @@
-dependencies {
-        def tomcatVersion = '7.0.54'
-        tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
-               "org.apache.tomcat.embed:tomcat-embed-logging-log4j:${tomcatVersion}" // NOT tomcat-embed-logging-juli (http://stackoverflow.com/questions/23963049/classcircularityerror-java-util-logging-logrecord-running-gradle-webapp-with-ja)
-        tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
-            exclude group: 'org.eclipse.jdt.core.compiler', module: 'ecj'
-        }
-        tomcat "org.apache.tomcat:tomcat-dbcp:${tomcatVersion}"
-
-    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
-
-    providedCompile(
-//              [group: 'javax.servlet', name: 'servlet-api', version: '2.5'],
-            )
-
-    compile(
-               // [group: 'ch.vorburger.mariaDB4j', name: 'mariaDB4j', version: '2.1.3'],
-
-                [group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: springBootVersion],
-                [group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: springBootVersion],
-                [group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: springBootVersion],
-
-                [group: 'org.springframework', name: 'spring-context-support', version: springVersion],
-				
-	       		[group: 'org.springframework.security.oauth', name: 'spring-security-oauth2', version: springOauthVersion],
-
-                [group: 'javax.ws.rs', name: 'jsr311-api', version: '1.1.1'],
-                [group: 'com.sun.jersey', name: 'jersey-core', version: jerseyVersion],
-                [group: 'com.sun.jersey', name: 'jersey-servlet', version: jerseyVersion],
-                [group: 'com.sun.jersey', name: 'jersey-server', version: jerseyVersion],
-                [group: 'com.sun.jersey', name: 'jersey-json', version: jerseyVersion],
-                [group: 'com.sun.jersey.contribs', name: 'jersey-spring', version: jerseyVersion],
-                [group: 'com.sun.jersey.contribs', name: 'jersey-multipart', version: jerseyVersion],
-
-                [group: 'com.squareup.retrofit', name: 'retrofit', version: '1.6.1'],
-                [group: 'com.squareup.okhttp', name: 'okhttp', version: '2.0.0'],
-                [group: 'com.squareup.okhttp', name: 'okhttp-urlconnection', version: '2.0.0'],
-
-
-                [group: 'com.google.code.gson', name: 'gson', version: '2.2.4'],
-                [group: 'com.google.guava', name: 'guava', version: '15.0'],
-
-                [group: 'joda-time', name: 'joda-time', version: '2.4'],
-                [group: 'net.sourceforge.javacsv', name: 'javacsv', version: '2.0'],
-                [group: 'org.apache.commons', name: 'commons-email', version: '1.3.3'],
-                [group: 'org.apache.commons', name: 'commons-lang3', version: '3.3.2'],
-
-                // no slf4j & logback here (anymore), as spring-boot-starter-logging already brings this now, better assembled (log4j-over-slf4j was originally forgotten here)
-
-                [group: 'mysql', name: 'mysql-connector-java', version: '5.1.27'],
-               // [group: 'org.apache.tomcat', name: 'tomcat-jdbc', version: tomcatVersion],
-
-
-                [group: 'org.apache.poi',name: 'poi', version: '3.9'],
-                [group: 'org.apache.poi',name: 'poi-ooxml', version: '3.9'],
-                [group: 'org.apache.poi',name: 'poi-ooxml-schemas', version: '3.9'],
-
-                [group: 'com.lowagie', name: 'itext', version: '2.1.7'],
-                [group: 'com.lowagie', name: 'itext-rtf', version: '2.1.7'],
-                [group: 'org.mnode.ical4j', name: 'ical4j', version: '1.0.4'],
-                [group: 'com.googlecode.flyway', name: 'flyway-core', version: '2.1.1'],
-                [group: 'org.quartz-scheduler', name: 'quartz', version: '2.1.7'],
-                [group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.2.1'],
-                [group: 'net.sf.ehcache', name: 'ehcache', version: '2.7.2'],
-                [group: 'com.github.spullara.mustache.java', name: 'compiler', version: '0.8.12'],
-                [group: 'com.jayway.jsonpath', name: 'json-path', version: '0.9.1'],
-
-                // Although fineract (at the time of writing) doesn't have any compile time dep. on this,
-                // it's useful to have this for the Spring Boot TestRestTemplate http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-rest-templates-test-utility
-                [group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.5'],
-                // Once we've switched to Java 8 this dep can be removed.
-                [group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0']
-     )
-     testCompile 'junit:junit:4.11',
-                 'junit:junit-dep:4.11',
-                 'org.mockito:mockito-core:1.9.5',
-                 'com.jayway.restassured:rest-assured:2.3.3',
-                 [group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: springBootVersion]
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/dev-dependencies.gradle
----------------------------------------------------------------------
diff --git a/fineract-provider/dev-dependencies.gradle b/fineract-provider/dev-dependencies.gradle
deleted file mode 100644
index 83039f7..0000000
--- a/fineract-provider/dev-dependencies.gradle
+++ /dev/null
@@ -1,79 +0,0 @@
-dependencies {
-        def tomcatVersion = '7.0.54'
-        tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
-               "org.apache.tomcat.embed:tomcat-embed-logging-log4j:${tomcatVersion}" // NOT tomcat-embed-logging-juli (http://stackoverflow.com/questions/23963049/classcircularityerror-java-util-logging-logrecord-running-gradle-webapp-with-ja)
-        tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
-            exclude group: 'org.eclipse.jdt.core.compiler', module: 'ecj'
-        }
-        tomcat "org.apache.tomcat:tomcat-dbcp:${tomcatVersion}"
-
-    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
-
-    providedCompile(
-//              [group: 'javax.servlet', name: 'servlet-api', version: '2.5'],
-            )
-
-    compile(
-                [group: 'ch.vorburger.mariaDB4j', name: 'mariaDB4j', version: '2.1.3'],
-
-                [group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: springBootVersion],
-                [group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: springBootVersion],
-                [group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: springBootVersion],
-
-                [group: 'org.springframework', name: 'spring-context-support', version: springVersion],
-				[group: 'org.springframework.security.oauth', name: 'spring-security-oauth2', version: springOauthVersion],
-
-                [group: 'javax.ws.rs', name: 'jsr311-api', version: '1.1.1'],
-                [group: 'com.sun.jersey', name: 'jersey-core', version: jerseyVersion],
-                [group: 'com.sun.jersey', name: 'jersey-servlet', version: jerseyVersion],
-                [group: 'com.sun.jersey', name: 'jersey-server', version: jerseyVersion],
-                [group: 'com.sun.jersey', name: 'jersey-json', version: jerseyVersion],
-                [group: 'com.sun.jersey.contribs', name: 'jersey-spring', version: jerseyVersion],
-                [group: 'com.sun.jersey.contribs', name: 'jersey-multipart', version: jerseyVersion],
-
-                [group: 'com.squareup.retrofit', name: 'retrofit', version: '1.6.1'],
-                [group: 'com.squareup.okhttp', name: 'okhttp', version: '2.0.0'],
-                [group: 'com.squareup.okhttp', name: 'okhttp-urlconnection', version: '2.0.0'],
-
-
-                [group: 'com.google.code.gson', name: 'gson', version: '2.2.4'],
-                [group: 'com.google.guava', name: 'guava', version: '15.0'],
-
-                [group: 'joda-time', name: 'joda-time', version: '2.4'],
-                [group: 'net.sourceforge.javacsv', name: 'javacsv', version: '2.0'],
-                [group: 'org.apache.commons', name: 'commons-email', version: '1.3.3'],
-                [group: 'org.apache.commons', name: 'commons-lang3', version: '3.3.2'],
-
-                // no slf4j & logback here (anymore), as spring-boot-starter-logging already brings this now, better assembled (log4j-over-slf4j was originally forgotten here)
-
-                [group: 'mysql', name: 'mysql-connector-java', version: '5.1.27'],
-                [group: 'org.apache.tomcat', name: 'tomcat-jdbc', version: tomcatVersion],
-
-               
-                [group: 'org.apache.poi',name: 'poi', version: '3.9'],
-                [group: 'org.apache.poi',name: 'poi-ooxml', version: '3.9'],
-                [group: 'org.apache.poi',name: 'poi-ooxml-schemas', version: '3.9'],
-
-                [group: 'com.lowagie', name: 'itext', version: '2.1.7'],
-                [group: 'com.lowagie', name: 'itext-rtf', version: '2.1.7'],
-                [group: 'org.mnode.ical4j', name: 'ical4j', version: '1.0.4'],
-                [group: 'com.googlecode.flyway', name: 'flyway-core', version: '2.1.1'],
-                [group: 'org.quartz-scheduler', name: 'quartz', version: '2.1.7'],
-                [group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.2.1'],
-                [group: 'net.sf.ehcache', name: 'ehcache', version: '2.7.2'],
-                [group: 'com.github.spullara.mustache.java', name: 'compiler', version: '0.8.12'],
-                [group: 'com.jayway.jsonpath', name: 'json-path', version: '0.9.1'],
-
-                // Although fineract (at the time of writing) doesn't have any compile time dep. on this,
-                // it's useful to have this for the Spring Boot TestRestTemplate http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-rest-templates-test-utility
-                [group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.5'],
-                // Once we've switched to Java 8 this dep can be removed.
-                [group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0']
-     )
-     testCompile 'junit:junit:4.11',
-                 'junit:junit-dep:4.11',
-                 'org.mockito:mockito-core:1.9.5',
-                 'com.jayway.restassured:rest-assured:2.3.3',
-                 [group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: springBootVersion]
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/gradle.properties
----------------------------------------------------------------------
diff --git a/fineract-provider/gradle.properties b/fineract-provider/gradle.properties
deleted file mode 100644
index 706f6ee..0000000
--- a/fineract-provider/gradle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-releaseVersion=16.01.2.RELEASE
-
-

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/gradlew
----------------------------------------------------------------------
diff --git a/fineract-provider/gradlew b/fineract-provider/gradlew
deleted file mode 100755
index 210ae59..0000000
--- a/fineract-provider/gradlew
+++ /dev/null
@@ -1,167 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8005,server=y,suspend=n"
-
-CATALINA_OPTS="-Xms512m -Xmx2048m"
-JAVA_OPTS="-Xms512m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m"
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
-    echo "$*"
-}
-
-die ( ) {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched.
-if $cygwin ; then
-    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >&-
-APP_HOME="`pwd -P`"
-cd "$SAVED" >&-
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
-    JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/gradlew.bat
----------------------------------------------------------------------
diff --git a/fineract-provider/gradlew.bat b/fineract-provider/gradlew.bat
deleted file mode 100644
index 51aaeab..0000000
--- a/fineract-provider/gradlew.bat
+++ /dev/null
@@ -1,93 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8005,server=y,suspend=n
-
-set CATALINA_OPTS=-Xms512m -Xmx512m
-set JAVA_OPTS=-Xms512m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=512m
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/properties/basicauth/application.properties
----------------------------------------------------------------------
diff --git a/fineract-provider/properties/basicauth/application.properties b/fineract-provider/properties/basicauth/application.properties
deleted file mode 100644
index adbef74..0000000
--- a/fineract-provider/properties/basicauth/application.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-
-spring.profiles.default=basicauth
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/properties/oauth/application.properties
----------------------------------------------------------------------
diff --git a/fineract-provider/properties/oauth/application.properties b/fineract-provider/properties/oauth/application.properties
deleted file mode 100644
index 05ef979..0000000
--- a/fineract-provider/properties/oauth/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-
-spring.profiles.default=basicauth
-spring.profiles.active=oauth
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java
deleted file mode 100644
index 97c3fac..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java
+++ /dev/null
@@ -1,486 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.CenterDomain;
-import org.apache.fineract.integrationtests.common.CenterHelper;
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.GroupHelper;
-import org.apache.fineract.integrationtests.common.OfficeHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-import org.apache.fineract.integrationtests.common.system.AccountNumberPreferencesHelper;
-import org.apache.fineract.integrationtests.common.system.CodeHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class AccountNumberPreferencesTest {
-
-    private RequestSpecification requestSpec;
-    private ResponseSpecification responseSpec;
-    private ResponseSpecification responseValidationError;
-    private ResponseSpecification responseNotFoundError;
-    private ResponseSpecification responseForbiddenError;
-    private Integer clientId;
-    private Integer loanProductId;
-    private Integer loanId;
-    private Integer savingsProductId;
-    private Integer savingsId;
-    private final String loanPrincipalAmount = "100000.00";
-    private final String numberOfRepayments = "12";
-    private final String interestRatePerPeriod = "18";
-    private final String dateString = "4 September 2014";
-    private final String minBalanceForInterestCalculation = null;
-    private final String minRequiredBalance = null;
-    private final String enforceMinRequiredBalance = "false";
-    private LoanTransactionHelper loanTransactionHelper;
-    private SavingsAccountHelper savingsAccountHelper;
-    private AccountNumberPreferencesHelper accountNumberPreferencesHelper;
-    private Integer clientAccountNumberPreferenceId;
-    private Integer loanAccountNumberPreferenceId;
-    private Integer savingsAccountNumberPreferenceId;
-    private Integer groupsAccountNumberPreferenceId;
-    private Integer centerAccountNumberPreferenceId;
-    private final String MINIMUM_OPENING_BALANCE = "1000.0";
-    private final String ACCOUNT_TYPE_INDIVIDUAL = "INDIVIDUAL";
-    private Boolean isAccountPreferenceSetUp = false;
-    private Integer clientTypeCodeId;
-    private String clientCodeValueName;
-    private Integer clientCodeValueId;
-    private final String clientTypeName = "CLIENT_TYPE";
-    private final String officeName = "OFFICE_NAME";
-    private final String loanShortName = "LOAN_PRODUCT_SHORT_NAME";
-    private final String savingsShortName = "SAVINGS_PRODUCT_SHORT_NAME";
-    private Integer groupID;
-    private Integer centerId;
-    private String groupAccountNo;
-    
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.responseValidationError = new ResponseSpecBuilder().expectStatusCode(400).build();
-        this.responseNotFoundError = new ResponseSpecBuilder().expectStatusCode(404).build();
-        this.responseForbiddenError = new ResponseSpecBuilder().expectStatusCode(403).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        this.accountNumberPreferencesHelper = new AccountNumberPreferencesHelper(this.requestSpec, this.responseSpec);
-
-    }
-
-    @Test
-    public void testAccountNumberPreferences() {
-
-        /* Create Loan and Savings Product */
-        this.createLoanAndSavingsProduct();
-
-        /* Ensure no account number preferences are present in the system */
-        this.deleteAllAccountNumberPreferences();
-
-        /*
-         * Validate the default account number generation rules for clients,
-         * loans and savings accounts.
-         */
-        this.validateDefaultAccountNumberGeneration();
-
-        /* Create and Validate account number preferences */
-        this.createAccountNumberPreference();
-
-        /*
-         * Validate account number preference rules apply to Clients,Loans and
-         * Saving Accounts
-         */
-        this.validateAccountNumberGenerationWithPreferences();
-
-        /* Validate account number preferences Updation */
-        this.updateAccountNumberPreference();
-
-        /*
-         * Validate account number preference rules apply to Clients,Loans and
-         * Saving Accounts after Updation
-         */
-        this.validateAccountNumberGenerationWithPreferences();
-
-        /* Delete all account number preferences */
-        this.deleteAllAccountNumberPreferences();
-
-    }
-
-    private void createLoanAndSavingsProduct() {
-        this.createLoanProduct();
-        this.createSavingsProduct();
-    }
-
-    private void deleteAllAccountNumberPreferences() {
-        ArrayList<HashMap<String, Object>> preferenceIds = this.accountNumberPreferencesHelper.getAllAccountNumberPreferences();
-        /* Deletion of valid account preference ID */
-        for (HashMap<String, Object> preferenceId : preferenceIds) {
-            Integer id = (Integer) preferenceId.get("id");
-            HashMap<String, Object> delResponse = this.accountNumberPreferencesHelper.deleteAccountNumberPreference(id, this.responseSpec,
-                    "");
-            System.out.println("Successfully deleted account number preference (ID: " + delResponse.get("resourceId") + ")");
-        }
-        /* Deletion of invalid account preference ID should fail */
-        System.out
-                .println("---------------------------------DELETING ACCOUNT NUMBER PREFERENCE WITH INVALID ID------------------------------------------");
-
-        HashMap<String, Object> deletionError = this.accountNumberPreferencesHelper.deleteAccountNumberPreference(10,
-                this.responseNotFoundError, "");
-        Assert.assertEquals("error.msg.resource.not.found", deletionError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-    }
-
-    private void validateDefaultAccountNumberGeneration() {
-        this.createAndValidateClientEntity(this.isAccountPreferenceSetUp);
-        this.createAndValidateLoanEntity(this.isAccountPreferenceSetUp);
-        this.createAndValidateSavingsEntity(this.isAccountPreferenceSetUp);
-        this.createAndValidateGroup(this.isAccountPreferenceSetUp);
-        this.createAndValidateCenter(this.isAccountPreferenceSetUp);
-    }
-
-    private void validateAccountNumberGenerationWithPreferences() {
-        this.isAccountPreferenceSetUp = true;
-        this.createAndValidateClientEntity(this.isAccountPreferenceSetUp);
-        this.createAndValidateLoanEntity(this.isAccountPreferenceSetUp);
-        this.createAndValidateSavingsEntity(this.isAccountPreferenceSetUp);
-        this.createAndValidateGroup(this.isAccountPreferenceSetUp);
-        this.createAndValidateCenter(this.isAccountPreferenceSetUp);
-    }
-
-    private void createAccountNumberPreference() {
-        this.clientAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createClientAccountNumberPreference(
-                this.responseSpec, "resourceId");
-        System.out.println("Successfully created account number preferences for Client (ID: " + this.clientAccountNumberPreferenceId);
-
-        this.loanAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createLoanAccountNumberPreference(
-                this.responseSpec, "resourceId");
-        System.out.println("Successfully created account number preferences for Loan (ID: " + this.loanAccountNumberPreferenceId);
-
-        this.savingsAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createSavingsAccountNumberPreference(
-                this.responseSpec, "resourceId");
-        System.out.println("Successfully created account number preferences for Savings (ID: " + this.savingsAccountNumberPreferenceId);
-        
-        this.groupsAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createGroupsAccountNumberPreference(
-                this.responseSpec, "resourceId");
-        System.out.println("Successfully created account number preferences for Groups (ID: " + this.groupsAccountNumberPreferenceId);
-        
-        this.centerAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createCenterAccountNumberPreference(
-                this.responseSpec, "resourceId");
-        System.out.println("Successfully created account number preferences for Center (ID: " + this.centerAccountNumberPreferenceId);
-
-        this.accountNumberPreferencesHelper.verifyCreationOfAccountNumberPreferences(this.clientAccountNumberPreferenceId,
-                this.loanAccountNumberPreferenceId, this.savingsAccountNumberPreferenceId, this.groupsAccountNumberPreferenceId, 
-                this.centerAccountNumberPreferenceId, this.responseSpec, this.requestSpec);
-
-        this.createAccountNumberPreferenceInvalidData("1000", "1001");
-        this.createAccountNumberPreferenceDuplicateData("1", "101");
-
-    }
-
-    private void createAccountNumberPreferenceDuplicateData(final String accountType, final String prefixType) {
-        /* Creating account Preference with duplicate data should fail */
-        System.out
-                .println("---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH DUPLICATE DATA------------------------------------------");
-
-        HashMap<String, Object> creationError = this.accountNumberPreferencesHelper.createAccountNumberPreferenceWithInvalidData(
-                this.responseForbiddenError, accountType, prefixType, "");
-
-        Assert.assertEquals("error.msg.account.number.format.duplicate.account.type",
-                creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-    }
-
-    private void createAccountNumberPreferenceInvalidData(final String accountType, final String prefixType) {
-
-        /* Creating account Preference with invalid data should fail */
-        System.out
-                .println("---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------");
-
-        HashMap<String, Object> creationError = this.accountNumberPreferencesHelper.createAccountNumberPreferenceWithInvalidData(
-                this.responseValidationError, accountType, prefixType, "");
-
-        if (creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE).equals(
-                "validation.msg.accountNumberFormat.accountType.is.not.within.expected.range")) {
-            Assert.assertEquals("validation.msg.accountNumberFormat.accountType.is.not.within.expected.range",
-                    creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-        } else if (creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE).equals(
-                "validation.msg.accountNumberFormat.prefixType.is.not.one.of.expected.enumerations")) {
-            Assert.assertEquals("validation.msg.accountNumberFormat.prefixType.is.not.one.of.expected.enumerations",
-                    creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-        }
-    }
-
-    private void updateAccountNumberPreference() {
-        HashMap<String, Object> accountNumberPreferences = this.accountNumberPreferencesHelper.updateAccountNumberPreference(
-                this.clientAccountNumberPreferenceId, "101", this.responseSpec, "");
-
-        System.out.println("--------------------------UPDATION SUCCESSFUL FOR ACCOUNT NUMBER PREFERENCE ID "
-                + accountNumberPreferences.get("resourceId"));
-
-        this.accountNumberPreferencesHelper.verifyUpdationOfAccountNumberPreferences((Integer) accountNumberPreferences.get("resourceId"),
-                this.responseSpec, this.requestSpec);
-
-        /* Update invalid account preference id should fail */
-        System.out
-                .println("---------------------------------UPDATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------");
-
-        /* Invalid Account Type */
-        HashMap<String, Object> updationError = this.accountNumberPreferencesHelper.updateAccountNumberPreference(9999, "101",
-                this.responseNotFoundError, "");
-        if (updationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE).equals("error.msg.resource.not.found")) {
-            Assert.assertEquals("error.msg.resource.not.found", updationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-        }
-        /* Invalid Prefix Type */
-        HashMap<String, Object> updationError1 = this.accountNumberPreferencesHelper.updateAccountNumberPreference(
-                this.clientAccountNumberPreferenceId, "103", this.responseValidationError, "");
-
-        Assert.assertEquals("validation.msg.validation.errors.exist", updationError1.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-    }
-
-    private void createAndValidateClientEntity(Boolean isAccountPreferenceSetUp) {
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        if (isAccountPreferenceSetUp) {
-            this.createAndValidateClientBasedOnAccountPreference();
-        } else {
-            this.createAndValidateClientWithoutAccountPreference();
-        }
-    }
-    
-    private void createAndValidateGroup(Boolean isAccountPreferenceSetUp) {
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec);
-        GroupHelper.verifyGroupCreatedOnServer(this.requestSpec, this.responseSpec, groupID);
-
-        this.groupID = GroupHelper.activateGroup(this.requestSpec, this.responseSpec, groupID.toString());
-        GroupHelper.verifyGroupActivatedOnServer(this.requestSpec, this.responseSpec, groupID, true);
-        
-        final String GROUP_URL = "/fineract-provider/api/v1/groups/" + this.groupID + "?" + Utils.TENANT_IDENTIFIER;
-        this.groupAccountNo = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "accountNo");
-        
-        if (isAccountPreferenceSetUp) {
-        	String groupsPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
-                    this.groupsAccountNumberPreferenceId, "prefixType.value");
-        	
-            if (groupsPrefixName.equals(this.officeName)) {
-            	
-                final String groupOfficeName = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "officeName");
-                
-                this.validateAccountNumberLengthAndStartsWithPrefix(this.groupAccountNo, groupOfficeName);
-            }
-        } else {
-            validateAccountNumberLengthAndStartsWithPrefix(this.groupAccountNo, null);
-        }
-    }
-    
-    private void createAndValidateCenter(Boolean isAccountPreferenceSetUp) {
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        Integer officeId = new OfficeHelper(requestSpec, responseSpec).createOffice("01 July 2007");
-
-        String name = "CenterCreation" + new Timestamp(new java.util.Date().getTime());
-        this.centerId = CenterHelper.createCenter(name, officeId, requestSpec, responseSpec);
-        CenterDomain center = CenterHelper.retrieveByID(centerId, requestSpec, responseSpec);
-        Assert.assertNotNull(center);
-        Assert.assertTrue(center.getName().equals(name));
-        
-        if (isAccountPreferenceSetUp) {
-        	String centerPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
-                    this.centerAccountNumberPreferenceId, "prefixType.value");
-            final String CENTER_URL = "/fineract-provider/api/v1/centers/" + this.centerId + "?" + Utils.TENANT_IDENTIFIER;
-        	
-            if (centerPrefixName.equals(this.officeName)) {
-                final String centerOfficeName = Utils.performServerGet(requestSpec, responseSpec, CENTER_URL, "officeName");  
-                this.validateAccountNumberLengthAndStartsWithPrefix(center.getAccountNo(), centerOfficeName);
-            }
-        } else {	
-            validateAccountNumberLengthAndStartsWithPrefix(center.getAccountNo(), null);
-        }
-    }
-    
-
-    private void createAndValidateClientWithoutAccountPreference() {
-        this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(this.clientId);
-        String clientAccountNo = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(), "accountNo");
-        validateAccountNumberLengthAndStartsWithPrefix(clientAccountNo, null);
-    }
-
-    private void createAndValidateClientBasedOnAccountPreference() {
-        final String codeName = "ClientType";
-        String clientAccountNo = null;
-        String clientPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
-                this.clientAccountNumberPreferenceId, "prefixType.value");
-        if (clientPrefixName.equals(this.clientTypeName)) {
-
-            /* Retrieve Code id for the Code "ClientType" */
-            HashMap<String, Object> code = CodeHelper.getCodeByName(this.requestSpec, this.responseSpec, codeName);
-            this.clientTypeCodeId = (Integer) code.get("id");
-
-            /* Retrieve/Create Code Values for the Code "ClientType" */
-            HashMap<String, Object> codeValue = CodeHelper.retrieveOrCreateCodeValue(this.clientTypeCodeId, this.requestSpec,
-                    this.responseSpec);
-
-            this.clientCodeValueName = (String) codeValue.get("name");
-            this.clientCodeValueId = (Integer) codeValue.get("id");
-
-            /* Create Client with Client Type */
-            this.clientId = ClientHelper.createClientForAccountPreference(this.requestSpec, this.responseSpec, this.clientCodeValueId,
-                    "clientId");
-
-            Assert.assertNotNull(clientId);
-
-            clientAccountNo = (String) ClientHelper.getClient(this.requestSpec, this.responseSpec, this.clientId.toString(), "accountNo");
-            this.validateAccountNumberLengthAndStartsWithPrefix(clientAccountNo, this.clientCodeValueName);
-
-        } else if (clientPrefixName.equals(this.officeName)) {
-            this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-            Assert.assertNotNull(clientId);
-            clientAccountNo = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(), "accountNo");
-            String officeName = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(), "officeName");
-            this.validateAccountNumberLengthAndStartsWithPrefix(clientAccountNo, officeName);
-        }
-    }
-
-    private void validateAccountNumberLengthAndStartsWithPrefix(final String accountNumber, final String prefix) {
-        if (prefix != null) {
-            Assert.assertEquals(accountNumber.length(), prefix.length() + 9);
-            Assert.assertTrue(accountNumber.startsWith(prefix));
-        } else {
-            Assert.assertEquals(accountNumber.length(), 9);
-        }
-    }
-
-    private void createLoanProduct() {
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-
-        System.out.println("---------------------------------CREATING LOAN PRODUCT------------------------------------------");
-
-        final String loanProductJSON = new LoanProductTestBuilder().withPrincipal(loanPrincipalAmount)
-                .withNumberOfRepayments(numberOfRepayments).withinterestRatePerPeriod(interestRatePerPeriod)
-                .withInterestRateFrequencyTypeAsYear().build(null);
-
-        this.loanProductId = this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-        System.out.println("Successfully created loan product  (ID: " + this.loanProductId + ")");
-    }
-
-    private void createAndValidateLoanEntity(Boolean isAccountPreferenceSetUp) {
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-
-        System.out.println("---------------------------------NEW LOAN APPLICATION------------------------------------------");
-
-        final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(loanPrincipalAmount)
-                .withLoanTermFrequency(numberOfRepayments).withLoanTermFrequencyAsMonths().withNumberOfRepayments(numberOfRepayments)
-                .withRepaymentEveryAfter("1").withRepaymentFrequencyTypeAsMonths().withAmortizationTypeAsEqualInstallments()
-                .withInterestCalculationPeriodTypeAsDays().withInterestRatePerPeriod(interestRatePerPeriod).withLoanTermFrequencyAsMonths()
-                .withSubmittedOnDate(dateString).withExpectedDisbursementDate(dateString).withPrincipalGrace("2").withInterestGrace("2")
-                .build(this.clientId.toString(), this.loanProductId.toString(), null);
-
-        System.out.println("Loan Application :" + loanApplicationJSON);
-
-        this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-        String loanAccountNo = (String) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec, this.loanId,
-                "accountNo");
-
-        if (isAccountPreferenceSetUp) {
-            String loanPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
-                    this.loanAccountNumberPreferenceId, "prefixType.value");
-            if (loanPrefixName.equals(this.officeName)) {
-                String loanOfficeName = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(), "officeName");
-                this.validateAccountNumberLengthAndStartsWithPrefix(loanAccountNo, loanOfficeName);
-            } else if (loanPrefixName.equals(this.loanShortName)) {
-                String loanShortName = (String) this.loanTransactionHelper.getLoanProductDetail(this.requestSpec, this.responseSpec,
-                        this.loanProductId, "shortName");
-                this.validateAccountNumberLengthAndStartsWithPrefix(loanAccountNo, loanShortName);
-            }
-            System.out.println("SUCCESSFULLY CREATED LOAN APPLICATION BASED ON ACCOUNT PREFERENCES (ID: " + this.loanId + ")");
-        } else {
-            this.validateAccountNumberLengthAndStartsWithPrefix(loanAccountNo, null);
-            System.out.println("SUCCESSFULLY CREATED LOAN APPLICATION (ID: " + loanId + ")");
-        }
-    }
-
-    private void createSavingsProduct() {
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-
-        System.out.println("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------");
-
-        SavingsProductHelper savingsProductHelper = new SavingsProductHelper();
-
-        final String savingsProductJSON = savingsProductHelper
-                //
-                .withInterestCompoundingPeriodTypeAsDaily()
-                //
-                .withInterestPostingPeriodTypeAsMonthly()
-                //
-                .withInterestCalculationPeriodTypeAsDailyBalance()
-                //
-                .withMinBalanceForInterestCalculation(minBalanceForInterestCalculation)
-                //
-                .withMinRequiredBalance(minRequiredBalance).withEnforceMinRequiredBalance(enforceMinRequiredBalance)
-                .withMinimumOpenningBalance(this.MINIMUM_OPENING_BALANCE).build();
-        this.savingsProductId = SavingsProductHelper.createSavingsProduct(savingsProductJSON, this.requestSpec, this.responseSpec);
-        System.out.println("Sucessfully created savings product (ID: " + this.savingsProductId + ")");
-
-    }
-
-    private void createAndValidateSavingsEntity(Boolean isAccountPreferenceSetUp) {
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        this.savingsId = this.savingsAccountHelper
-                .applyForSavingsApplication(this.clientId, this.savingsProductId, ACCOUNT_TYPE_INDIVIDUAL);
-
-        String savingsAccountNo = (String) this.savingsAccountHelper.getSavingsAccountDetail(this.savingsId, "accountNo");
-
-        if (isAccountPreferenceSetUp) {
-            String savingsPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
-                    this.savingsAccountNumberPreferenceId, "prefixType.value");
-
-            if (savingsPrefixName.equals(this.officeName)) {
-                String savingsOfficeName = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(),
-                        "officeName");
-                this.validateAccountNumberLengthAndStartsWithPrefix(savingsAccountNo, savingsOfficeName);
-            } else if (savingsPrefixName.equals(this.savingsShortName)) {
-                String loanShortName = (String) this.savingsAccountHelper.getSavingsAccountDetail(this.savingsId, "shortName");
-                this.validateAccountNumberLengthAndStartsWithPrefix(savingsAccountNo, loanShortName);
-            }
-            System.out.println("SUCCESSFULLY CREATED SAVINGS APPLICATION BASED ON ACCOUNT PREFERENCES (ID: " + this.loanId + ")");
-        } else {
-            this.validateAccountNumberLengthAndStartsWithPrefix(savingsAccountNo, null);
-            System.out.println("SUCCESSFULLY CREATED SAVINGS APPLICATION (ID: " + this.savingsId + ")");
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountTransferTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountTransferTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountTransferTest.java
deleted file mode 100644
index 01399c2..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountTransferTest.java
+++ /dev/null
@@ -1,492 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.OfficeHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.accounting.Account;
-import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
-import org.apache.fineract.integrationtests.common.accounting.FinancialActivityAccountHelper;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntry;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntryHelper;
-import org.apache.fineract.integrationtests.common.accounting.Account.AccountType;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.apache.fineract.integrationtests.common.savings.AccountTransferHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsStatusChecker;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * JUnit Test Cases for Account Transfer for.
- */
-@SuppressWarnings({ "rawtypes", "unused" })
-public class AccountTransferTest {
-
-    public static final String MINIMUM_OPENING_BALANCE = "30000.0";
-    public static final String ACCOUNT_TYPE_INDIVIDUAL = "INDIVIDUAL";
-    public static final String ACCOUNT_TRANSFER_AMOUNT = "15000.0";
-    public static final String ACCOUNT_TRANSFER_AMOUNT_ADJUST = "3000.0";
-    public static final String FROM_LOAN_ACCOUNT_TYPE = "1";
-    public static final String FROM_SAVINGS_ACCOUNT_TYPE = "2";
-    public static final String TO_LOAN_ACCOUNT_TYPE = "1";
-    public static final String TO_SAVINGS_ACCOUNT_TYPE = "2";
-
-    public static final String LOAN_APPROVAL_DATE = "01 March 2013";
-    public static final String LOAN_APPROVAL_DATE_PLUS_ONE = "02 March 2013";
-    public static final String LOAN_DISBURSAL_DATE = "01 March 2013";
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private SavingsAccountHelper savingsAccountHelper;
-    private AccountTransferHelper accountTransferHelper;
-    private LoanTransactionHelper loanTransactionHelper;
-    private AccountHelper accountHelper;
-    private JournalEntryHelper journalEntryHelper;
-
-    Float TRANSFER_AMOUNT = new Float(ACCOUNT_TRANSFER_AMOUNT);
-    Float TRANSFER_AMOUNT_ADJUST = new Float(ACCOUNT_TRANSFER_AMOUNT_ADJUST);
-
-    private FinancialActivityAccountHelper financialActivityAccountHelper;
-    private Integer financialActivityAccountId;
-    private Account liabilityTransferAccount;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.journalEntryHelper = new JournalEntryHelper(this.requestSpec, this.responseSpec);
-        this.financialActivityAccountHelper = new FinancialActivityAccountHelper(this.requestSpec);
-
-        List<HashMap> financialActivities = this.financialActivityAccountHelper.getAllFinancialActivityAccounts(this.responseSpec);
-        if (financialActivities.isEmpty()) {
-            /** Setup liability transfer account **/
-            /** Create a Liability and an Asset Transfer Account **/
-            liabilityTransferAccount = accountHelper.createLiabilityAccount();
-            Assert.assertNotNull(liabilityTransferAccount);
-
-            /*** Create A Financial Activity to Account Mapping **/
-            financialActivityAccountId = (Integer) financialActivityAccountHelper.createFinancialActivityAccount(
-                    FinancialActivityAccountsTest.liabilityTransferFinancialActivityId, liabilityTransferAccount.getAccountID(),
-                    responseSpec, CommonConstants.RESPONSE_RESOURCE_ID);
-            Assert.assertNotNull(financialActivityAccountId);
-        } else {
-            for (HashMap financialActivity : financialActivities) {
-                HashMap financialActivityData = (HashMap) financialActivity.get("financialActivityData");
-                if (financialActivityData.get("id").equals(FinancialActivityAccountsTest.liabilityTransferFinancialActivityId)) {
-                    HashMap glAccountData = (HashMap) financialActivity.get("glAccountData");
-                    liabilityTransferAccount = new Account((Integer) glAccountData.get("id"), AccountType.LIABILITY);
-                    financialActivityAccountId = (Integer) financialActivity.get("id");
-                    break;
-                }
-            }
-        }
-    }
-
-    /**
-     * Delete the Liability transfer account
-     */
-    @After
-    public void tearDown() {
-        Integer deletedFinancialActivityAccountId = financialActivityAccountHelper.deleteFinancialActivityAccount(
-                financialActivityAccountId, responseSpec, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(deletedFinancialActivityAccountId);
-        Assert.assertEquals(financialActivityAccountId, deletedFinancialActivityAccountId);
-    }
-
-    @Test
-    public void testFromSavingsToSavingsAccountTransfer() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.accountTransferHelper = new AccountTransferHelper(this.requestSpec, this.responseSpec);
-
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        OfficeHelper officeHelper = new OfficeHelper(this.requestSpec, this.responseSpec);
-        Integer toOfficeId = officeHelper.createOffice("01 January 2011");
-        Assert.assertNotNull(toOfficeId);
-
-        // Creating Savings Account to which fund to be Transferred
-        final Integer toClientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2011",
-                String.valueOf(toOfficeId));
-        Assert.assertNotNull(toClientID);
-
-        final Integer toSavingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE, assetAccount,
-                incomeAccount, expenseAccount, liabilityAccount);
-        Assert.assertNotNull(toSavingsProductID);
-
-        final Integer toSavingsID = this.savingsAccountHelper.applyForSavingsApplication(toClientID, toSavingsProductID,
-                ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(toSavingsProductID);
-
-        HashMap toSavingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, toSavingsID);
-        SavingsStatusChecker.verifySavingsIsPending(toSavingsStatusHashMap);
-
-        toSavingsStatusHashMap = this.savingsAccountHelper.approveSavings(toSavingsID);
-        SavingsStatusChecker.verifySavingsIsApproved(toSavingsStatusHashMap);
-
-        toSavingsStatusHashMap = this.savingsAccountHelper.activateSavings(toSavingsID);
-        SavingsStatusChecker.verifySavingsIsActive(toSavingsStatusHashMap);
-
-        final HashMap toSavingsSummaryBefore = this.savingsAccountHelper.getSavingsSummary(toSavingsID);
-
-        Integer fromOfficeId = officeHelper.createOffice("01 January 2011");
-        Assert.assertNotNull(fromOfficeId);
-
-        // Creating Savings Account from which the Fund has to be Transferred
-        final Integer fromClientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2011",
-                String.valueOf(fromOfficeId));
-        Assert.assertNotNull(fromClientID);
-
-        final Integer fromSavingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                assetAccount, incomeAccount, expenseAccount, liabilityAccount);
-        Assert.assertNotNull(fromSavingsProductID);
-
-        final Integer fromSavingsID = this.savingsAccountHelper.applyForSavingsApplication(fromClientID, fromSavingsProductID,
-                ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(fromSavingsID);
-
-        HashMap fromSavingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, fromSavingsID);
-        SavingsStatusChecker.verifySavingsIsPending(fromSavingsStatusHashMap);
-
-        fromSavingsStatusHashMap = this.savingsAccountHelper.approveSavings(fromSavingsID);
-        SavingsStatusChecker.verifySavingsIsApproved(fromSavingsStatusHashMap);
-
-        fromSavingsStatusHashMap = this.savingsAccountHelper.activateSavings(fromSavingsID);
-        SavingsStatusChecker.verifySavingsIsActive(fromSavingsStatusHashMap);
-
-        final HashMap fromSavingsSummaryBefore = this.savingsAccountHelper.getSavingsSummary(fromSavingsID);
-
-        Float fromSavingsBalance = new Float(MINIMUM_OPENING_BALANCE);
-        Float toSavingsBalance = new Float(MINIMUM_OPENING_BALANCE);
-
-        this.accountTransferHelper.accountTransfer(fromClientID, fromSavingsID, fromClientID, toSavingsID, FROM_SAVINGS_ACCOUNT_TYPE,
-                TO_SAVINGS_ACCOUNT_TYPE, ACCOUNT_TRANSFER_AMOUNT);
-
-        fromSavingsBalance -= new Float(ACCOUNT_TRANSFER_AMOUNT);
-        toSavingsBalance += new Float(ACCOUNT_TRANSFER_AMOUNT);
-
-        HashMap fromSavingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(fromSavingsID);
-        assertEquals("Verifying From Savings Account Balance after Account Transfer", fromSavingsBalance,
-                fromSavingsSummaryAfter.get("accountBalance"));
-
-        HashMap toSavingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(toSavingsID);
-        assertEquals("Verifying To Savings Account Balance after Account Transfer", toSavingsBalance,
-                toSavingsSummaryAfter.get("accountBalance"));
-        final JournalEntry[] office1LiabilityEntries = { new JournalEntry(new Float(ACCOUNT_TRANSFER_AMOUNT),
-                JournalEntry.TransactionType.CREDIT) };
-        final JournalEntry[] office2LiabilityEntries = { new JournalEntry(new Float(ACCOUNT_TRANSFER_AMOUNT),
-                JournalEntry.TransactionType.DEBIT) };
-
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(fromOfficeId, liabilityTransferAccount,
-                AccountTransferHelper.ACCOUNT_TRANSFER_DATE, office1LiabilityEntries);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(toOfficeId, liabilityTransferAccount,
-                AccountTransferHelper.ACCOUNT_TRANSFER_DATE, office2LiabilityEntries);
-
-    }
-
-    @Test
-    public void testFromSavingsToLoanAccountTransfer() {
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        final Account loanAssetAccount = this.accountHelper.createAssetAccount();
-        final Account loanIncomeAccount = this.accountHelper.createIncomeAccount();
-        final Account loanExpenseAccount = this.accountHelper.createExpenseAccount();
-        final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
-
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        this.accountTransferHelper = new AccountTransferHelper(this.requestSpec, this.responseSpec);
-
-        OfficeHelper officeHelper = new OfficeHelper(this.requestSpec, this.responseSpec);
-        Integer toOfficeId = officeHelper.createOffice("01 January 2011");
-        Assert.assertNotNull(toOfficeId);
-
-        // Creating Loan Account to which fund to be Transferred
-        final Integer toClientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2011",
-                String.valueOf(toOfficeId));
-        Assert.assertNotNull(toClientID);
-
-        Account toTransferAccount = accountHelper.createLiabilityAccount();
-        Assert.assertNotNull(toTransferAccount);
-
-        final Integer toLoanProductID = createLoanProduct(loanAssetAccount, loanIncomeAccount, loanExpenseAccount, overpaymentAccount);
-        Assert.assertNotNull(toLoanProductID);
-
-        final Integer toLoanID = applyForLoanApplication(toClientID, toLoanProductID);
-        Assert.assertNotNull(toLoanID);
-
-        HashMap toLoanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, toLoanID);
-        LoanStatusChecker.verifyLoanIsPending(toLoanStatusHashMap);
-
-        toLoanStatusHashMap = this.loanTransactionHelper.approveLoan(LOAN_APPROVAL_DATE, toLoanID);
-        LoanStatusChecker.verifyLoanIsApproved(toLoanStatusHashMap);
-
-        toLoanStatusHashMap = this.loanTransactionHelper.disburseLoan(LOAN_DISBURSAL_DATE, toLoanID);
-        LoanStatusChecker.verifyLoanIsActive(toLoanStatusHashMap);
-
-        Integer fromOfficeId = officeHelper.createOffice("01 January 2011");
-        Assert.assertNotNull(fromOfficeId);
-
-        // Creating Savings Account from which the Fund has to be Transferred
-        final Integer fromClientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2011",
-                String.valueOf(fromOfficeId));
-        Assert.assertNotNull(fromClientID);
-
-        final Integer fromSavingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                assetAccount, incomeAccount, expenseAccount, liabilityAccount);
-        Assert.assertNotNull(fromSavingsProductID);
-
-        final Integer fromSavingsID = this.savingsAccountHelper.applyForSavingsApplication(fromClientID, fromSavingsProductID,
-                ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(fromSavingsID);
-
-        HashMap fromSavingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, fromSavingsID);
-        SavingsStatusChecker.verifySavingsIsPending(fromSavingsStatusHashMap);
-
-        fromSavingsStatusHashMap = this.savingsAccountHelper.approveSavings(fromSavingsID);
-        SavingsStatusChecker.verifySavingsIsApproved(fromSavingsStatusHashMap);
-
-        fromSavingsStatusHashMap = this.savingsAccountHelper.activateSavings(fromSavingsID);
-        SavingsStatusChecker.verifySavingsIsActive(fromSavingsStatusHashMap);
-
-        final HashMap fromSavingsSummaryBefore = this.savingsAccountHelper.getSavingsSummary(fromSavingsID);
-
-        Float fromSavingsBalance = new Float(MINIMUM_OPENING_BALANCE);
-
-        this.accountTransferHelper.accountTransfer(fromClientID, fromSavingsID, toClientID, toLoanID, FROM_SAVINGS_ACCOUNT_TYPE,
-                TO_LOAN_ACCOUNT_TYPE, ACCOUNT_TRANSFER_AMOUNT_ADJUST);
-
-        fromSavingsBalance -= TRANSFER_AMOUNT_ADJUST;
-
-        HashMap fromSavingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(fromSavingsID);
-        assertEquals("Verifying From Savings Account Balance after Account Transfer", fromSavingsBalance,
-                fromSavingsSummaryAfter.get("accountBalance"));
-
-        HashMap toLoanSummaryAfter = this.loanTransactionHelper.getLoanSummary(requestSpec, responseSpec, toLoanID);
-        assertEquals("Verifying To Loan Repayment Amount after Account Transfer", TRANSFER_AMOUNT_ADJUST,
-                toLoanSummaryAfter.get("totalRepayment"));
-
-        final JournalEntry[] office1LiabilityEntries = { new JournalEntry(new Float(ACCOUNT_TRANSFER_AMOUNT_ADJUST),
-                JournalEntry.TransactionType.CREDIT) };
-        final JournalEntry[] office2LiabilityEntries = { new JournalEntry(new Float(ACCOUNT_TRANSFER_AMOUNT_ADJUST),
-                JournalEntry.TransactionType.DEBIT) };
-
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(fromOfficeId, liabilityTransferAccount,
-                AccountTransferHelper.ACCOUNT_TRANSFER_DATE, office1LiabilityEntries);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(toOfficeId, liabilityTransferAccount,
-                AccountTransferHelper.ACCOUNT_TRANSFER_DATE, office2LiabilityEntries);
-    }
-
-    @Test
-    public void testFromLoanToSavingsAccountTransfer() {
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        final Account loanAssetAccount = this.accountHelper.createAssetAccount();
-        final Account loanIncomeAccount = this.accountHelper.createIncomeAccount();
-        final Account loanExpenseAccount = this.accountHelper.createExpenseAccount();
-        final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
-
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        this.accountTransferHelper = new AccountTransferHelper(this.requestSpec, this.responseSpec);
-
-        OfficeHelper officeHelper = new OfficeHelper(this.requestSpec, this.responseSpec);
-        Integer toOfficeId = officeHelper.createOffice("01 January 2011");
-        Assert.assertNotNull(toOfficeId);
-
-        // Creating Loan Account to which fund to be Transferred
-        final Integer toClientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2011",
-                String.valueOf(toOfficeId));
-        Assert.assertNotNull(toClientID);
-
-        final Integer toSavingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE, assetAccount,
-                incomeAccount, expenseAccount, liabilityAccount);
-        Assert.assertNotNull(toSavingsProductID);
-
-        final Integer toSavingsID = this.savingsAccountHelper.applyForSavingsApplication(toClientID, toSavingsProductID,
-                ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(toSavingsID);
-
-        HashMap toSavingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, toSavingsID);
-        SavingsStatusChecker.verifySavingsIsPending(toSavingsStatusHashMap);
-
-        toSavingsStatusHashMap = this.savingsAccountHelper.approveSavings(toSavingsID);
-        SavingsStatusChecker.verifySavingsIsApproved(toSavingsStatusHashMap);
-
-        toSavingsStatusHashMap = this.savingsAccountHelper.activateSavings(toSavingsID);
-        SavingsStatusChecker.verifySavingsIsActive(toSavingsStatusHashMap);
-
-        Integer fromOfficeId = officeHelper.createOffice("01 January 2011");
-        Assert.assertNotNull(fromOfficeId);
-
-        // Creating Savings Account from which the Fund has to be Transferred
-        final Integer fromClientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2011",
-                String.valueOf(fromOfficeId));
-        Assert.assertNotNull(fromClientID);
-
-        final Integer loanProductID = createLoanProduct(loanAssetAccount, loanIncomeAccount, loanExpenseAccount, overpaymentAccount);
-        Assert.assertNotNull(loanProductID);
-
-        final Integer loanID = applyForLoanApplication(fromClientID, loanProductID);
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(LOAN_APPROVAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(LOAN_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        final Integer fromSavingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                assetAccount, incomeAccount, expenseAccount, liabilityAccount);
-        Assert.assertNotNull(fromSavingsProductID);
-
-        final Integer fromSavingsID = this.savingsAccountHelper.applyForSavingsApplication(fromClientID, fromSavingsProductID,
-                ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(fromSavingsID);
-
-        HashMap fromSavingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, fromSavingsID);
-        SavingsStatusChecker.verifySavingsIsPending(fromSavingsStatusHashMap);
-
-        fromSavingsStatusHashMap = this.savingsAccountHelper.approveSavings(fromSavingsID);
-        SavingsStatusChecker.verifySavingsIsApproved(fromSavingsStatusHashMap);
-
-        fromSavingsStatusHashMap = this.savingsAccountHelper.activateSavings(fromSavingsID);
-        SavingsStatusChecker.verifySavingsIsActive(fromSavingsStatusHashMap);
-
-        final HashMap toSavingsSummaryBefore = this.savingsAccountHelper.getSavingsSummary(toSavingsID);
-
-        Float fromSavingsBalance = new Float(MINIMUM_OPENING_BALANCE);
-
-        this.accountTransferHelper.accountTransfer(fromClientID, fromSavingsID, fromClientID, loanID, FROM_SAVINGS_ACCOUNT_TYPE,
-                TO_LOAN_ACCOUNT_TYPE, ACCOUNT_TRANSFER_AMOUNT);
-
-        fromSavingsBalance -= TRANSFER_AMOUNT;
-
-        HashMap fromSavingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(fromSavingsID);
-
-        // Verifying fromSavings Account Balance after Account Transfer
-        assertEquals("Verifying From Savings Account Balance after Account Transfer", fromSavingsBalance,
-                fromSavingsSummaryAfter.get("accountBalance"));
-
-        Float toSavingsBalance = new Float(MINIMUM_OPENING_BALANCE);
-
-        this.accountTransferHelper.accountTransfer(fromClientID, loanID, toClientID, toSavingsID, FROM_LOAN_ACCOUNT_TYPE,
-                TO_SAVINGS_ACCOUNT_TYPE, ACCOUNT_TRANSFER_AMOUNT_ADJUST);
-
-        toSavingsBalance += TRANSFER_AMOUNT_ADJUST;
-
-        HashMap toSavingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(toSavingsID);
-
-        // Verifying toSavings Account Balance after Account Transfer
-        assertEquals("Verifying From Savings Account Balance after Account Transfer", toSavingsBalance,
-                toSavingsSummaryAfter.get("accountBalance"));
-
-        final JournalEntry[] office1LiabilityEntries = { new JournalEntry(new Float(ACCOUNT_TRANSFER_AMOUNT_ADJUST),
-                JournalEntry.TransactionType.CREDIT) };
-        final JournalEntry[] office2LiabilityEntries = { new JournalEntry(new Float(ACCOUNT_TRANSFER_AMOUNT_ADJUST),
-                JournalEntry.TransactionType.DEBIT) };
-
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(fromOfficeId, liabilityTransferAccount,
-                AccountTransferHelper.ACCOUNT_TRANSFER_DATE, office1LiabilityEntries);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(toOfficeId, liabilityTransferAccount,
-                AccountTransferHelper.ACCOUNT_TRANSFER_DATE, office2LiabilityEntries);
-
-    }
-
-    private Integer createSavingsProduct(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String minOpenningBalance, final Account... accounts) {
-        System.out.println("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------");
-        SavingsProductHelper savingsProductHelper = new SavingsProductHelper();
-        final String savingsProductJSON = savingsProductHelper //
-                .withInterestCompoundingPeriodTypeAsDaily() //
-                .withInterestPostingPeriodTypeAsMonthly() //
-                .withInterestCalculationPeriodTypeAsDailyBalance() //
-                .withMinimumOpenningBalance(minOpenningBalance).withAccountingRuleAsCashBased(accounts).build();
-        return SavingsProductHelper.createSavingsProduct(savingsProductJSON, requestSpec, responseSpec);
-    }
-
-    private Integer createLoanProduct(final Account... accounts) {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        final String loanProductJSON = new LoanProductTestBuilder() //
-                .withPrincipal("8,000.00") //
-                .withNumberOfRepayments("4") //
-                .withRepaymentAfterEvery("1") //
-                .withRepaymentTypeAsMonth() //
-                .withinterestRatePerPeriod("1") //
-                .withInterestRateFrequencyTypeAsMonths() //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withAccountingRuleAsCashBased(accounts)//
-                .build(null);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal("8,000.00") //
-                .withLoanTermFrequency("4") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("4") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withExpectedDisbursementDate("10 January 2013") //
-                .withSubmittedOnDate("10 January 2013") //
-                .build(clientID.toString(), loanProductID.toString(), null);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-}
\ No newline at end of file


[21/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/default-demo/extra-datatables-and-code-values.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/default-demo/extra-datatables-and-code-values.sql b/fineract-db/multi-tenant-demo-backups/default-demo/extra-datatables-and-code-values.sql
deleted file mode 100644
index 7c13cb3..0000000
--- a/fineract-db/multi-tenant-demo-backups/default-demo/extra-datatables-and-code-values.sql
+++ /dev/null
@@ -1,221 +0,0 @@
--- add code and code values for datatables dropdowns
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Male', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "Gender";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Female', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "Gender";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Yes', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "YesNo";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.No', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "YesNo";
-
-INSERT INTO `m_code`
-(`code_name`, `is_system_defined`) 
-VALUES 
-('Education',1);
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'Primary', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "Education";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'Secondary', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "Education";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'University', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "Education";
-
--- ========= datatables=======
-
-DROP TABLE IF EXISTS `extra_client_details`;
-CREATE TABLE `extra_client_details` (
-  `client_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-DROP TABLE IF EXISTS `extra_family_details`;
-CREATE TABLE `extra_family_details` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `Name` varchar(40) DEFAULT NULL,
-  `Date of Birth` date DEFAULT NULL,
-  `Points Score` int(11) DEFAULT NULL,
-  `Education_cd_Highest` int(11) DEFAULT NULL,
-  `Other Notes` text,
-  PRIMARY KEY (`id`),
-  KEY `FK_Extra Family Details Data_1` (`client_id`),
-  CONSTRAINT `FK_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-DROP TABLE IF EXISTS `extra_loan_details`;
-CREATE TABLE `extra_loan_details` (
-  `loan_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
--- datatables mapping
-INSERT INTO `x_registered_table`
-(`registered_table_name`,`application_table_name`)
-VALUES
-('extra_client_details', 'm_client'),
-('extra_family_details', 'm_client'),
-('extra_loan_details', 'm_loan');
-
-
--- make sure permissions created for registered datatables
-/* add a create, read, update and delete permission for each registered datatable */
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('CREATE_', r.registered_table_name), r.registered_table_name, 'CREATE'
-from x_registered_table r;
-
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('READ_', r.registered_table_name), r.registered_table_name, 'READ'
-from x_registered_table r;
-
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('UPDATE_', r.registered_table_name), r.registered_table_name, 'UPDATE'
-from x_registered_table r;
-
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('DELETE_', r.registered_table_name), r.registered_table_name, 'DELETE'
-from x_registered_table r;
-
-
-
--- ==== Chart of Accounts =====
-truncate `acc_gl_account`;
-INSERT INTO `acc_gl_account` VALUES 
-(1,'Petty Cash Balances',NULL,'11100',0,1,2,1,NULL),
-(2,'Cash in Valut 1',NULL,'11101',0,1,1,1,NULL),
-(3,'Bank Balances',NULL,'11200',0,1,2,1,NULL),
-(4,'Centenary Opening Account',NULL,'11201',0,1,1,1,NULL),
-(5,'Centenary Expense Account',NULL,'11202',0,1,1,1,NULL),
-(6,'Centenary USD Account',NULL,'11203',0,1,1,1,NULL),
-(7,'Loans and Advances',NULL,'13100',0,1,2,1,NULL),
-(8,'Loans to Clients',NULL,'13101',0,1,1,1,NULL),
-(9,'Outstanding Interest',NULL,'13102',0,1,1,1,NULL),
-(10,'Outstanding Late Payment Interest',NULL,'13103',0,1,1,1,NULL),
-(11,'Outstanding Bank Fees to be collected',NULL,'13104',0,1,1,1,NULL),
-(12,'WriteOff Accounts',NULL,'13200',0,1,2,1,NULL),
-(13,'Write-offs (use for funds coming in)',NULL,'13201',0,1,1,1,NULL),
-(14,'Write-offs outstanding principal',NULL,'13202',0,1,1,1,NULL),
-(15,'Write-offs outstanding interest',NULL,'13203',0,1,1,1,NULL),
-(16,'Write-offs collected bank fees',NULL,'13204',0,1,1,1,NULL),
-(17,'Write-offs hardware/furniture',NULL,'13205',0,1,1,1,NULL),
-(18,'Fixed Assets',NULL,'14100',0,1,2,1,NULL),
-(19,'Office Equipment',NULL,'14101',0,1,1,1,NULL),
-(20,'Suspense Items (unidentified deposits)',NULL,'15000',0,1,2,1,NULL),
-(21,'Assets',NULL,'10000',0,1,2,1,NULL),
-(22,'Liabilities',NULL,'20000',0,1,2,2,NULL),
-(23,'Shares Account',NULL,'26100',0,1,2,2,NULL),
-(24,'Shares Captial',NULL,'26101',0,1,1,2,NULL),
-(25,'Donated Equity',NULL,'26300',0,1,2,2,NULL),
-(26,'Donated Equity Ameropa Foundation',NULL,'26301',0,1,1,2,NULL),
-(27,'Donated Equity e.h',NULL,'26302',0,1,1,2,NULL),
-(28,'Overpaid Amounts',NULL,'27000',0,1,2,2,NULL),
-(29,'Loss Provision',NULL,'28000',0,1,2,2,NULL),
-(30,'Provision Outstanding Principal',NULL,'28001',0,1,1,2,NULL),
-(31,'Provision Oustanding Interest',NULL,'28002',0,1,1,2,NULL),(32,'Income',NULL,'30000',0,1,2,4,NULL),
-(33,'Interest Income from Loans',NULL,'31100',0,1,2,4,NULL),
-(34,'Interest on Loans',NULL,'31101',0,1,1,4,NULL),
-(35,'Late Payment Interest',NULL,'31102',0,1,1,4,NULL),
-(36,'Income from Micro credit & Lending Activities',NULL,'31300',0,1,2,4,NULL),
-(37,'Collected Bank Fees Receivable',NULL,'6201',0,1,1,4,NULL),
-(38,'Deposits from Loans Write Off',NULL,'31400',0,1,2,4,NULL),
-(39,'Expenditure',NULL,'40000',0,1,2,5,NULL),
-(40,'Office Expenditure Account',NULL,'42100',0,1,2,5,NULL),
-(41,'Water Charges',NULL,'42102',0,1,1,5,NULL),
-(42,'Electricity Charges',NULL,'42103',0,1,1,5,NULL),
-(43,'Printing and Stationary',NULL,'42105',0,1,1,5,NULL),
-(44,'Office Rent',NULL,'42107',0,1,1,5,NULL),
-(45,'Marketing Expense',NULL,'42109',0,1,1,5,NULL),
-(46,'Office utilities',NULL,'42112',0,1,1,5,'(supplies, toiletries, kitchen)'),
-(47,'Furniture',NULL,'42113',0,1,1,5,NULL),
-(48,'CEDA Meeting Expense',NULL,'42114',0,1,1,5,NULL),
-(49,'Employee Personal Expsense Account',NULL,'42200',0,1,2,5,NULL),
-(50,'Salary Alice',NULL,'42201',0,1,1,5,NULL),
-(51,'Salary Irene',NULL,'42202',0,1,1,5,NULL),
-(52,'Salary Richard',NULL,'42203',0,1,1,5,NULL),
-(53,'Salary Loan Officer TBA',NULL,'42204',0,1,1,5,NULL),
-(54,'Medical Insurance Alice & Family',NULL,'42205',0,1,1,5,NULL),
-(55,'Medical Insurance Irene',NULL,'42206',0,1,1,5,NULL),
-(56,'Medical Insurance Richard',NULL,'42207',0,1,1,5,NULL),
-(57,'Medical Insurance Loan Officer TBA',NULL,'42208',0,1,1,5,NULL),
-(58,'PAYE all employees',NULL,'42209',0,1,1,5,NULL),
-(59,'NSSF all employees',NULL,'42210',0,1,1,5,NULL),
-(60,'Lunch Allowances all employees',NULL,'42211',0,1,1,5,NULL),
-(61,'IT software and maintenance',NULL,'42300',0,1,2,5,NULL),
-(62,'Mifos maintenance contract 12 months',NULL,'42301',0,1,1,5,NULL),
-(63,'VPS Contract 12 months',NULL,'42302',0,1,1,5,NULL),
-(64,'Bulk SMS Service',NULL,'42303',0,1,1,5,NULL),
-(65,'Support Accounting Software',NULL,'42304',0,1,1,5,NULL),
-(66,'Mifos Instance Setup',NULL,'42305',0,1,1,5,NULL),
-(67,'Misc support expense',NULL,'42306',0,1,1,5,NULL),
-(68,'Warid Mobile Line',NULL,'42307',0,1,1,5,NULL),
-(69,'Landline',NULL,'42308',0,1,1,5,NULL),
-(70,'Modem Alice',NULL,'42309',0,1,1,5,NULL),
-(71,'Modem Irene',NULL,'42310',0,1,1,5,NULL),
-(72,'Modem Richard',NULL,'42311',0,1,1,5,NULL),
-(73,'Repairs',NULL,'42312',0,1,1,5,NULL),
-(74,'Airtime Expenses',NULL,'42400',0,1,2,5,NULL),
-(75,'Airtime Alice',NULL,'42401',0,1,1,5,NULL),
-(76,'Airtime Richard',NULL,'42402',0,1,1,5,NULL),
-(77,'Airtime Loan Office TBA',NULL,'42403',0,1,1,5,NULL),
-(78,'Special Airtime Alice',NULL,'42404',0,1,1,5,NULL),
-(79,'Transportation',NULL,'42500',0,1,2,5,NULL),
-(80,'Flat monthly transportation cost',NULL,'42501',0,1,1,5,NULL),
-(81,'Faciliation cost for Richard',NULL,'42502',0,1,1,5,NULL),
-(82,'Faciliation cost for Loan Officer TBA',NULL,'42503',0,1,1,5,NULL),
-(83,'Consultancy Expenses',NULL,'42600',0,1,2,5,NULL),
-(84,'Audit Fees',NULL,'42601',0,1,1,5,NULL),
-(85,'Legal Fees',NULL,'42602',0,1,1,5,NULL),
-(86,'Miscellaneous Expenses Account',NULL,'42700',0,1,2,5,NULL),
-(87,'MFI License',NULL,'42703',0,1,1,5,NULL),
-(88,'Sundy Expenses',NULL,'42704',0,1,1,5,NULL),
-(89,'Bank Fees',NULL,'42800',0,1,2,5,NULL),
-(90,'Bank Charges Operating Account',NULL,'42801',0,1,1,5,NULL),
-(91,'Bank Charges Expense Account',NULL,'42802',0,1,1,5,NULL),
-(92,'E.H Account',NULL,'42900',0,1,2,5,NULL),
-(93,'Airtime',NULL,'42901',0,1,1,5,NULL),
-(94,'Modem',NULL,'42902',0,1,1,5,NULL),
-(95,'Meals',NULL,'42903',0,1,1,5,NULL),
-(96,'Transportation',NULL,'42904',0,1,1,5,NULL),
-(97,'Miscellaneous',NULL,'42905',0,1,1,5,NULL);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/gk-maarg/0001b-gk-datatables.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/gk-maarg/0001b-gk-datatables.sql b/fineract-db/multi-tenant-demo-backups/gk-maarg/0001b-gk-datatables.sql
deleted file mode 100644
index 63d463b..0000000
--- a/fineract-db/multi-tenant-demo-backups/gk-maarg/0001b-gk-datatables.sql
+++ /dev/null
@@ -1,39 +0,0 @@
-DROP TABLE IF EXISTS `risk_analysis`;
-CREATE TABLE `risk_analysis` (
-  `client_id` bigint(20) NOT NULL,
-  `proposed_loan_amount` decimal(19,6) DEFAULT NULL,
-  `assets_cash` decimal(19,6) DEFAULT NULL,
-  `assets_bank_accounts` decimal(19,6) DEFAULT NULL,
-  `assets_accounts_receivable` decimal(19,6) DEFAULT NULL,
-  `assets_inventory` decimal(19,6) DEFAULT NULL,
-  `assets_total_fixed_business` decimal(19,6) DEFAULT NULL,
-  `assets_total_business` decimal(19,6) DEFAULT NULL,
-  `assets_total_household` decimal(19,6) DEFAULT NULL,
-  `liabilities_accounts_payable` decimal(19,6) DEFAULT NULL,
-  `liabilities_business_debts` decimal(19,6) DEFAULT NULL,
-  `liabilities_total_business` decimal(19,6) DEFAULT NULL,
-  `liabilities_equity_working_capital` decimal(19,6) DEFAULT NULL,
-  `liabilities_total_household` decimal(19,6) DEFAULT NULL,
-  `liabilities_household_equity` decimal(19,6) DEFAULT NULL,
-  `cashflow_cash_sales` decimal(19,6) DEFAULT NULL,
-  `cashflow_cash_sales2` decimal(19,6) DEFAULT NULL,
-  `cashflow_cost_goods_sold` decimal(19,6) DEFAULT NULL,
-  `cashflow_cost_goods_sold2` decimal(19,6) DEFAULT NULL,
-  `cashflow_gross_profit` decimal(19,6) DEFAULT NULL,
-  `cashflow_other_income1` decimal(19,6) DEFAULT NULL,
-  `cashflow_total_income2` decimal(19,6) DEFAULT NULL,
-  `cashflow_household_expense` decimal(19,6) DEFAULT NULL,
-  `cashflow_payments_to_savings` decimal(19,6) DEFAULT NULL,
-  `cashflow_operational_expenses` decimal(19,6) DEFAULT NULL,
-  `cashflow_disposable_income` decimal(19,6) DEFAULT NULL,
-  `cashflow_amount_loan_installment` decimal(19,6) DEFAULT NULL,
-  `cashflow_available_surplus` decimal(19,6) DEFAULT NULL,
-  `fi_inventory_turnover` decimal(19,6) DEFAULT NULL,
-  `fi_gross_margin` decimal(19,6) DEFAULT NULL,
-  `fi_indebtedness` decimal(19,6) DEFAULT NULL,
-  `fi_loan_recommendation` decimal(19,6) DEFAULT NULL,
-  `fi_roe` decimal(19,6) DEFAULT NULL,
-  `fi_repayment_capacity` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_risk_analysis_1` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/latam-demo/README.md
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/latam-demo/README.md b/fineract-db/multi-tenant-demo-backups/latam-demo/README.md
deleted file mode 100644
index f75fffe..0000000
--- a/fineract-db/multi-tenant-demo-backups/latam-demo/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-latam Demo
-======
-
-This demo database contains:
-
-- DDL of latest schema
-- Minimum reference data required for deployment of platform which is:
-  -  Its mandatory to have one selected currency so we default to several of latin-america currencies
-  -  Its mandatory to have one root or head office, so we have one created by default called a 'Latam HO'
-  -  Permissions supported/needed by latest release of software are setup
-  -  Its mandatory to have at least one role when creating new users so we have one role created by default called 'Super user' which has the special permission 'Full Authorisation'. Any user with this role can do anything in the system.
-  -  Its required to have at least one application user setup so remaining setup can be done through ui so we have on application user created by default with username 'quipo' with a password of 'quipo'. Application users must be associated with an office and a role so this user is associated with 'Latam HO' and 'Super user' role allowing this user to do any operation in any office(branch).
-- Configuration
-  - No 'additional data' through the 'datatables' approach is setup
-  - One 'code' is setup called 'Client Identifier' with default values of {'Passport number'} - (required for Client Identity Document functionalty)
-  - Enable/Disable configuration has one entry named 'maker-checker' to allow people to enable disable this feature at global level. It is off or disabled by default.
\ No newline at end of file


[29/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/modernizr-2.6.2.min.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/modernizr-2.6.2.min.js b/docs/system-architecture/js/vendor/modernizr-2.6.2.min.js
deleted file mode 100644
index f65d479..0000000
--- a/docs/system-architecture/js/vendor/modernizr-2.6.2.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
- * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
- */
-;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:
 absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,
 "</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.
 call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=funct
 ion(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=fun
 ction(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("
 transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayTy
 pe("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L 
 in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var 
 d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.create
 Element("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){functio
 n d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.load
 er={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,
 i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.
 addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/toc-0.1.2/jquery.toc.min.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/toc-0.1.2/jquery.toc.min.js b/docs/system-architecture/js/vendor/toc-0.1.2/jquery.toc.min.js
deleted file mode 100644
index 53a2c62..0000000
--- a/docs/system-architecture/js/vendor/toc-0.1.2/jquery.toc.min.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*!
- * toc - jQuery Table of Contents Plugin
- * v0.1.2
- * http://projects.jga.me/toc/
- * copyright Greg Allen 2013
- * MIT License
-*/
-(function(t){t.fn.toc=function(e){var n,i=this,r=t.extend({},jQuery.fn.toc.defaults,e),o=t(r.container),a=t(r.selectors,o),l=[],h=r.prefix+"-active",s=function(e){if(r.smoothScrolling){e.preventDefault();var n=t(e.target).attr("href"),o=t(n);t("body,html").animate({scrollTop:o.offset().top},400,"swing",function(){location.hash=n})}t("li",i).removeClass(h),t(e.target).parent().addClass(h)},c=function(){n&&clearTimeout(n),n=setTimeout(function(){for(var e,n=t(window).scrollTop(),o=0,a=l.length;a>o;o++)if(l[o]>=n){t("li",i).removeClass(h),e=t("li:eq("+(o-1)+")",i).addClass(h),r.onHighlight(e);break}},50)};return r.highlightOnScroll&&(t(window).bind("scroll",c),c()),this.each(function(){var e=t(this),n=t("<ul/>");a.each(function(i,o){var a=t(o);l.push(a.offset().top-r.highlightOffset),t("<span/>").attr("id",r.anchorName(i,o,r.prefix)).insertBefore(a);var h=t("<a/>").text(r.headerText(i,o,a)).attr("href","#"+r.anchorName(i,o,r.prefix)).bind("click",function(n){s(n),e.trigger("selected",t
 (this).attr("href"))}),c=t("<li/>").addClass(r.itemClass(i,o,a,r.prefix)).append(h);n.append(c)}),e.html(n)})},jQuery.fn.toc.defaults={container:"body",selectors:"h1,h2,h3",smoothScrolling:!0,prefix:"toc",onHighlight:function(){},highlightOnScroll:!0,highlightOffset:100,anchorName:function(t,e,n){return n+t},headerText:function(t,e,n){return n.text()},itemClass:function(t,e,n,i){return i+"-"+n[0].tagName.toLowerCase()}}})(jQuery);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/robots.txt
----------------------------------------------------------------------
diff --git a/docs/system-architecture/robots.txt b/docs/system-architecture/robots.txt
deleted file mode 100644
index ee2cc21..0000000
--- a/docs/system-architecture/robots.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# robotstxt.org/
-
-User-agent: *

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/mifospltaform-tenants-first-time-install.sql
----------------------------------------------------------------------
diff --git a/fineract-db/mifospltaform-tenants-first-time-install.sql b/fineract-db/mifospltaform-tenants-first-time-install.sql
deleted file mode 100644
index 38f4c89..0000000
--- a/fineract-db/mifospltaform-tenants-first-time-install.sql
+++ /dev/null
@@ -1,140 +0,0 @@
--- MySQL dump 10.13  Distrib 5.1.60, for Win32 (ia32)
---
--- Host: localhost    Database: mifosplatform-tenants
--- ------------------------------------------------------
--- Server version	5.1.60-community
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `schema_version`
---
-
-DROP TABLE IF EXISTS `schema_version`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `schema_version` (
-  `version_rank` int(11) NOT NULL,
-  `installed_rank` int(11) NOT NULL,
-  `version` varchar(50) NOT NULL,
-  `description` varchar(200) NOT NULL,
-  `type` varchar(20) NOT NULL,
-  `script` varchar(1000) NOT NULL,
-  `checksum` int(11) DEFAULT NULL,
-  `installed_by` varchar(100) NOT NULL,
-  `installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
-  `execution_time` int(11) NOT NULL,
-  `success` tinyint(1) NOT NULL,
-  PRIMARY KEY (`version`),
-  KEY `schema_version_vr_idx` (`version_rank`),
-  KEY `schema_version_ir_idx` (`installed_rank`),
-  KEY `schema_version_s_idx` (`success`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `schema_version`
---
-
-LOCK TABLES `schema_version` WRITE;
-/*!40000 ALTER TABLE `schema_version` DISABLE KEYS */;
-INSERT INTO `schema_version` (`version_rank`, `installed_rank`, `version`, `description`, `type`, `script`, `checksum`, `installed_by`, `installed_on`, `execution_time`, `success`) VALUES
-  (1, 1, '1', 'mifos-platform-shared-tenants', 'SQL', 'V1__mifos-platform-shared-tenants.sql', -486745552, 'root', '2014-10-12 22:13:50', 896, 1),
-  (2, 2, '2', 'externalize-connection-properties', 'SQL', 'V2__externalize-connection-properties.sql', 210473669, 'root', '2014-10-12 22:13:51', 661, 1);/*!40000 ALTER TABLE `schema_version` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `tenants`
---
-
-DROP TABLE IF EXISTS `tenants`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `tenants` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `identifier` varchar(100) NOT NULL,
-  `name` varchar(100) NOT NULL,
-  `schema_name` varchar(100) NOT NULL,
-  `timezone_id` varchar(100) NOT NULL,
-  `country_id` int(11) DEFAULT NULL,
-  `joined_date` date DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `schema_server` varchar(100) NOT NULL DEFAULT 'localhost',
-  `schema_server_port` varchar(10) NOT NULL DEFAULT '3306',
-  `schema_username` varchar(100) NOT NULL DEFAULT 'root',
-  `schema_password` varchar(100) NOT NULL DEFAULT 'mysql',
-  `auto_update` tinyint(1) NOT NULL DEFAULT '1',
-  `pool_initial_size` int(5) DEFAULT 5,
-  `pool_validation_interval` int(11) DEFAULT 30000,
-  `pool_remove_abandoned` tinyint(1) DEFAULT 1,
-  `pool_remove_abandoned_timeout` int(5) DEFAULT 60,
-  `pool_log_abandoned` tinyint(1) DEFAULT 1,
-  `pool_abandon_when_percentage_full` int(5) DEFAULT 50,
-  `pool_test_on_borrow` tinyint(1) DEFAULT 1,
-  `pool_max_active` int(5) DEFAULT 40,
-  `pool_min_idle` int(5) DEFAULT 20,
-  `pool_max_idle` int(5) DEFAULT 10,
-  `pool_suspect_timeout` int(5) DEFAULT 60,
-  `pool_time_between_eviction_runs_millis` int(11) DEFAULT 34000,
-  `pool_min_evictable_idle_time_millis` int(11) DEFAULT 60000,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `tenants`
---
-
-LOCK TABLES `tenants` WRITE;
-/*!40000 ALTER TABLE `tenants` DISABLE KEYS */;
-INSERT INTO `tenants` VALUES 
-(1,'default','default','mifostenant-default','Asia/Kolkata',NULL,NULL,NULL,NULL,'localhost','3306','root','mysql',1,5,30000,1,60,1,50,1,40,20,10,60,34000,60000);
-/*!40000 ALTER TABLE `tenants` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `timezones`
---
-
-DROP TABLE IF EXISTS `timezones`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `timezones` (
-  `id` int(3) NOT NULL AUTO_INCREMENT,
-  `country_code` varchar(2) NOT NULL,
-  `timezonename` varchar(100) NOT NULL,
-  `comments` varchar(150) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=416 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `timezones`
---
-
-LOCK TABLES `timezones` WRITE;
-/*!40000 ALTER TABLE `timezones` DISABLE KEYS */;
-INSERT INTO `timezones` VALUES (1,'AD','Europe/Andorra',NULL),(2,'AE','Asia/Dubai',''),(3,'AF','Asia/Kabul',''),(4,'AG','America/Antigua',''),(5,'AI','America/Anguilla',''),(6,'AL','Europe/Tirane',''),(7,'AM','Asia/Yerevan',''),(8,'AO','Africa/Luanda',''),(9,'AQ','Antarctica/McMurdo','McMurdo Station, Ross Island'),(10,'AQ','Antarctica/South_Pole','Amundsen-Scott Station, South Pole'),(11,'AQ','Antarctica/Rothera','Rothera Station, Adelaide Island'),(12,'AQ','Antarctica/Palmer','Palmer Station, Anvers Island'),(13,'AQ','Antarctica/Mawson','Mawson Station, Holme Bay'),(14,'AQ','Antarctica/Davis','Davis Station, Vestfold Hills'),(15,'AQ','Antarctica/Casey','Casey Station, Bailey Peninsula'),(16,'AQ','Antarctica/Vostok','Vostok Station, Lake Vostok'),(17,'AQ','Antarctica/DumontDUrville','Dumont-dUrville Station, Terre Adelie'),(18,'AQ','Antarctica/Syowa','Syowa Station, E Ongul I'),(19,'AQ','Antarctica/Macquarie','Macquarie Island Station, Macquarie Island'),(20,'AR','America/Argentina
 /Buenos_Aires','Buenos Aires (BA, CF)'),(21,'AR','America/Argentina/Cordoba','most locations (CB, CC, CN, ER, FM, MN, SE, SF)'),(22,'AR','America/Argentina/Salta','(SA, LP, NQ, RN)'),(23,'AR','America/Argentina/Jujuy','Jujuy (JY)'),(24,'AR','America/Argentina/Tucuman','Tucuman (TM)'),(25,'AR','America/Argentina/Catamarca','Catamarca (CT), Chubut (CH)'),(26,'AR','America/Argentina/La_Rioja','La Rioja (LR)'),(27,'AR','America/Argentina/San_Juan','San Juan (SJ)'),(28,'AR','America/Argentina/Mendoza','Mendoza (MZ)'),(29,'AR','America/Argentina/San_Luis','San Luis (SL)'),(30,'AR','America/Argentina/Rio_Gallegos','Santa Cruz (SC)'),(31,'AR','America/Argentina/Ushuaia','Tierra del Fuego (TF)'),(32,'AS','Pacific/Pago_Pago',''),(33,'AT','Europe/Vienna',''),(34,'AU','Australia/Lord_Howe','Lord Howe Island'),(35,'AU','Australia/Hobart','Tasmania - most locations'),(36,'AU','Australia/Currie','Tasmania - King Island'),(37,'AU','Australia/Melbourne','Victoria'),(38,'AU','Australia/Sydney','New S
 outh Wales - most locations'),(39,'AU','Australia/Broken_Hill','New South Wales - Yancowinna'),(40,'AU','Australia/Brisbane','Queensland - most locations'),(41,'AU','Australia/Lindeman','Queensland - Holiday Islands'),(42,'AU','Australia/Adelaide','South Australia'),(43,'AU','Australia/Darwin','Northern Territory'),(44,'AU','Australia/Perth','Western Australia - most locations'),(45,'AU','Australia/Eucla','Western Australia - Eucla area'),(46,'AW','America/Aruba',''),(47,'AX','Europe/Mariehamn',''),(48,'AZ','Asia/Baku',''),(49,'BA','Europe/Sarajevo',''),(50,'BB','America/Barbados',''),(51,'BD','Asia/Dhaka',''),(52,'BE','Europe/Brussels',''),(53,'BF','Africa/Ouagadougou',''),(54,'BG','Europe/Sofia',''),(55,'BH','Asia/Bahrain',''),(56,'BI','Africa/Bujumbura',''),(57,'BJ','Africa/Porto-Novo',''),(58,'BL','America/St_Barthelemy',''),(59,'BM','Atlantic/Bermuda',''),(60,'BN','Asia/Brunei',''),(61,'BO','America/La_Paz',''),(62,'BQ','America/Kralendijk',''),(63,'BR','America/Noronha','Atlan
 tic islands'),(64,'BR','America/Belem','Amapa, E Para'),(65,'BR','America/Fortaleza','NE Brazil (MA, PI, CE, RN, PB)'),(66,'BR','America/Recife','Pernambuco'),(67,'BR','America/Araguaina','Tocantins'),(68,'BR','America/Maceio','Alagoas, Sergipe'),(69,'BR','America/Bahia','Bahia'),(70,'BR','America/Sao_Paulo','S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)'),(71,'BR','America/Campo_Grande','Mato Grosso do Sul'),(72,'BR','America/Cuiaba','Mato Grosso'),(73,'BR','America/Santarem','W Para'),(74,'BR','America/Porto_Velho','Rondonia'),(75,'BR','America/Boa_Vista','Roraima'),(76,'BR','America/Manaus','E Amazonas'),(77,'BR','America/Eirunepe','W Amazonas'),(78,'BR','America/Rio_Branco','Acre'),(79,'BS','America/Nassau',''),(80,'BT','Asia/Thimphu',''),(81,'BW','Africa/Gaborone',''),(82,'BY','Europe/Minsk',''),(83,'BZ','America/Belize',''),(84,'CA','America/St_Johns','Newfoundland Time, including SE Labrador'),(85,'CA','America/Halifax','Atlantic Time - Nova Scotia (most places), PEI'),(
 86,'CA','America/Glace_Bay','Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971'),(87,'CA','America/Moncton','Atlantic Time - New Brunswick'),(88,'CA','America/Goose_Bay','Atlantic Time - Labrador - most locations'),(89,'CA','America/Blanc-Sablon','Atlantic Standard Time - Quebec - Lower North Shore'),(90,'CA','America/Montreal','Eastern Time - Quebec - most locations'),(91,'CA','America/Toronto','Eastern Time - Ontario - most locations'),(92,'CA','America/Nipigon','Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973'),(93,'CA','America/Thunder_Bay','Eastern Time - Thunder Bay, Ontario'),(94,'CA','America/Iqaluit','Eastern Time - east Nunavut - most locations'),(95,'CA','America/Pangnirtung','Eastern Time - Pangnirtung, Nunavut'),(96,'CA','America/Resolute','Central Standard Time - Resolute, Nunavut'),(97,'CA','America/Atikokan','Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut'),(98,'CA','America/Rankin_Inlet','Centra
 l Time - central Nunavut'),(99,'CA','America/Winnipeg','Central Time - Manitoba & west Ontario'),(100,'CA','America/Rainy_River','Central Time - Rainy River & Fort Frances, Ontario'),(101,'CA','America/Regina','Central Standard Time - Saskatchewan - most locations'),(102,'CA','America/Swift_Current','Central Standard Time - Saskatchewan - midwest'),(103,'CA','America/Edmonton','Mountain Time - Alberta, east British Columbia & west Saskatchewan'),(104,'CA','America/Cambridge_Bay','Mountain Time - west Nunavut'),(105,'CA','America/Yellowknife','Mountain Time - central Northwest Territories'),(106,'CA','America/Inuvik','Mountain Time - west Northwest Territories'),(107,'CA','America/Creston','Mountain Standard Time - Creston, British Columbia'),(108,'CA','America/Dawson_Creek','Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia'),(109,'CA','America/Vancouver','Pacific Time - west British Columbia'),(110,'CA','America/Whitehorse','Pacific Time - south Yukon'),(111
 ,'CA','America/Dawson','Pacific Time - north Yukon'),(112,'CC','Indian/Cocos',''),(113,'CD','Africa/Kinshasa','west Dem. Rep. of Congo'),(114,'CD','Africa/Lubumbashi','east Dem. Rep. of Congo'),(115,'CF','Africa/Bangui',''),(116,'CG','Africa/Brazzaville',''),(117,'CH','Europe/Zurich',''),(118,'CI','Africa/Abidjan',''),(119,'CK','Pacific/Rarotonga',''),(120,'CL','America/Santiago','most locations'),(121,'CL','Pacific/Easter','Easter Island & Sala y Gomez'),(122,'CM','Africa/Douala',''),(123,'CN','Asia/Shanghai','east China - Beijing, Guangdong, Shanghai, etc.'),(124,'CN','Asia/Harbin','Heilongjiang (except Mohe), Jilin'),(125,'CN','Asia/Chongqing','central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.'),(126,'CN','Asia/Urumqi','most of Tibet & Xinjiang'),(127,'CN','Asia/Kashgar','west Tibet & Xinjiang'),(128,'CO','America/Bogota',''),(129,'CR','America/Costa_Rica',''),(130,'CU','America/Havana',''),(131,'CV','Atlantic/Cape_Verde',''),(132,'CW','America/Curacao',''),(133,'C
 X','Indian/Christmas',''),(134,'CY','Asia/Nicosia',''),(135,'CZ','Europe/Prague',''),(136,'DE','Europe/Berlin',''),(137,'DJ','Africa/Djibouti',''),(138,'DK','Europe/Copenhagen',''),(139,'DM','America/Dominica',''),(140,'DO','America/Santo_Domingo',''),(141,'DZ','Africa/Algiers',''),(142,'EC','America/Guayaquil','mainland'),(143,'EC','Pacific/Galapagos','Galapagos Islands'),(144,'EE','Europe/Tallinn',''),(145,'EG','Africa/Cairo',''),(146,'EH','Africa/El_Aaiun',''),(147,'ER','Africa/Asmara',''),(148,'ES','Europe/Madrid','mainland'),(149,'ES','Africa/Ceuta','Ceuta & Melilla'),(150,'ES','Atlantic/Canary','Canary Islands'),(151,'ET','Africa/Addis_Ababa',''),(152,'FI','Europe/Helsinki',''),(153,'FJ','Pacific/Fiji',''),(154,'FK','Atlantic/Stanley',''),(155,'FM','Pacific/Chuuk','Chuuk (Truk) and Yap'),(156,'FM','Pacific/Pohnpei','Pohnpei (Ponape)'),(157,'FM','Pacific/Kosrae','Kosrae'),(158,'FO','Atlantic/Faroe',''),(159,'FR','Europe/Paris',''),(160,'GA','Africa/Libreville',''),(161,'GB','Eu
 rope/London',''),(162,'GD','America/Grenada',''),(163,'GE','Asia/Tbilisi',''),(164,'GF','America/Cayenne',''),(165,'GG','Europe/Guernsey',''),(166,'GH','Africa/Accra',''),(167,'GI','Europe/Gibraltar',''),(168,'GL','America/Godthab','most locations'),(169,'GL','America/Danmarkshavn','east coast, north of Scoresbysund'),(170,'GL','America/Scoresbysund','Scoresbysund / Ittoqqortoormiit'),(171,'GL','America/Thule','Thule / Pituffik'),(172,'GM','Africa/Banjul',''),(173,'GN','Africa/Conakry',''),(174,'GP','America/Guadeloupe',''),(175,'GQ','Africa/Malabo',''),(176,'GR','Europe/Athens',''),(177,'GS','Atlantic/South_Georgia',''),(178,'GT','America/Guatemala',''),(179,'GU','Pacific/Guam',''),(180,'GW','Africa/Bissau',''),(181,'GY','America/Guyana',''),(182,'HK','Asia/Hong_Kong',''),(183,'HN','America/Tegucigalpa',''),(184,'HR','Europe/Zagreb',''),(185,'HT','America/Port-au-Prince',''),(186,'HU','Europe/Budapest',''),(187,'ID','Asia/Jakarta','Java & Sumatra'),(188,'ID','Asia/Pontianak','west 
 & central Borneo'),(189,'ID','Asia/Makassar','east & south Borneo, Sulawesi (Celebes), Bali, Nusa Tengarra, west Timor'),(190,'ID','Asia/Jayapura','west New Guinea (Irian Jaya) & Malukus (Moluccas)'),(191,'IE','Europe/Dublin',''),(192,'IL','Asia/Jerusalem',''),(193,'IM','Europe/Isle_of_Man',''),(194,'IN','Asia/Kolkata',''),(195,'IO','Indian/Chagos',''),(196,'IQ','Asia/Baghdad',''),(197,'IR','Asia/Tehran',''),(198,'IS','Atlantic/Reykjavik',''),(199,'IT','Europe/Rome',''),(200,'JE','Europe/Jersey',''),(201,'JM','America/Jamaica',''),(202,'JO','Asia/Amman',''),(203,'JP','Asia/Tokyo',''),(204,'KE','Africa/Nairobi',''),(205,'KG','Asia/Bishkek',''),(206,'KH','Asia/Phnom_Penh',''),(207,'KI','Pacific/Tarawa','Gilbert Islands'),(208,'KI','Pacific/Enderbury','Phoenix Islands'),(209,'KI','Pacific/Kiritimati','Line Islands'),(210,'KM','Indian/Comoro',''),(211,'KN','America/St_Kitts',''),(212,'KP','Asia/Pyongyang',''),(213,'KR','Asia/Seoul',''),(214,'KW','Asia/Kuwait',''),(215,'KY','America/Caym
 an',''),(216,'KZ','Asia/Almaty','most locations'),(217,'KZ','Asia/Qyzylorda','Qyzylorda (Kyzylorda, Kzyl-Orda)'),(218,'KZ','Asia/Aqtobe','Aqtobe (Aktobe)'),(219,'KZ','Asia/Aqtau','Atyrau (Atirau, Guryev), Mangghystau (Mankistau)'),(220,'KZ','Asia/Oral','West Kazakhstan'),(221,'LA','Asia/Vientiane',''),(222,'LB','Asia/Beirut',''),(223,'LC','America/St_Lucia',''),(224,'LI','Europe/Vaduz',''),(225,'LK','Asia/Colombo',''),(226,'LR','Africa/Monrovia',''),(227,'LS','Africa/Maseru',''),(228,'LT','Europe/Vilnius',''),(229,'LU','Europe/Luxembourg',''),(230,'LV','Europe/Riga',''),(231,'LY','Africa/Tripoli',''),(232,'MA','Africa/Casablanca',''),(233,'MC','Europe/Monaco',''),(234,'MD','Europe/Chisinau',''),(235,'ME','Europe/Podgorica',''),(236,'MF','America/Marigot',''),(237,'MG','Indian/Antananarivo',''),(238,'MH','Pacific/Majuro','most locations'),(239,'MH','Pacific/Kwajalein','Kwajalein'),(240,'MK','Europe/Skopje',''),(241,'ML','Africa/Bamako',''),(242,'MM','Asia/Rangoon',''),(243,'MN','Asia
 /Ulaanbaatar','most locations'),(244,'MN','Asia/Hovd','Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan'),(245,'MN','Asia/Choibalsan','Dornod, Sukhbaatar'),(246,'MO','Asia/Macau',''),(247,'MP','Pacific/Saipan',''),(248,'MQ','America/Martinique',''),(249,'MR','Africa/Nouakchott',''),(250,'MS','America/Montserrat',''),(251,'MT','Europe/Malta',''),(252,'MU','Indian/Mauritius',''),(253,'MV','Indian/Maldives',''),(254,'MW','Africa/Blantyre',''),(255,'MX','America/Mexico_City','Central Time - most locations'),(256,'MX','America/Cancun','Central Time - Quintana Roo'),(257,'MX','America/Merida','Central Time - Campeche, Yucatan'),(258,'MX','America/Monterrey','Mexican Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas away from US border'),(259,'MX','America/Matamoros','US Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas near US border'),(260,'MX','America/Mazatlan','Mountain Time - S Baja, Nayarit, Sinaloa'),(261,'MX','America/Chihuahua','Mexican Mountain Time - Chihuahua away fro
 m US border'),(262,'MX','America/Ojinaga','US Mountain Time - Chihuahua near US border'),(263,'MX','America/Hermosillo','Mountain Standard Time - Sonora'),(264,'MX','America/Tijuana','US Pacific Time - Baja California near US border'),(265,'MX','America/Santa_Isabel','Mexican Pacific Time - Baja California away from US border'),(266,'MX','America/Bahia_Banderas','Mexican Central Time - Bahia de Banderas'),(267,'MY','Asia/Kuala_Lumpur','peninsular Malaysia'),(268,'MY','Asia/Kuching','Sabah & Sarawak'),(269,'MZ','Africa/Maputo',''),(270,'NA','Africa/Windhoek',''),(271,'NC','Pacific/Noumea',''),(272,'NE','Africa/Niamey',''),(273,'NF','Pacific/Norfolk',''),(274,'NG','Africa/Lagos',''),(275,'NI','America/Managua',''),(276,'NL','Europe/Amsterdam',''),(277,'NO','Europe/Oslo',''),(278,'NP','Asia/Kathmandu',''),(279,'NR','Pacific/Nauru',''),(280,'NU','Pacific/Niue',''),(281,'NZ','Pacific/Auckland','most locations'),(282,'NZ','Pacific/Chatham','Chatham Islands'),(283,'OM','Asia/Muscat',''),(2
 84,'PA','America/Panama',''),(285,'PE','America/Lima',''),(286,'PF','Pacific/Tahiti','Society Islands'),(287,'PF','Pacific/Marquesas','Marquesas Islands'),(288,'PF','Pacific/Gambier','Gambier Islands'),(289,'PG','Pacific/Port_Moresby',''),(290,'PH','Asia/Manila',''),(291,'PK','Asia/Karachi',''),(292,'PL','Europe/Warsaw',''),(293,'PM','America/Miquelon',''),(294,'PN','Pacific/Pitcairn',''),(295,'PR','America/Puerto_Rico',''),(296,'PS','Asia/Gaza','Gaza Strip'),(297,'PS','Asia/Hebron','West Bank'),(298,'PT','Europe/Lisbon','mainland'),(299,'PT','Atlantic/Madeira','Madeira Islands'),(300,'PT','Atlantic/Azores','Azores'),(301,'PW','Pacific/Palau',''),(302,'PY','America/Asuncion',''),(303,'QA','Asia/Qatar',''),(304,'RE','Indian/Reunion',''),(305,'RO','Europe/Bucharest',''),(306,'RS','Europe/Belgrade',''),(307,'RU','Europe/Kaliningrad','Moscow-01 - Kaliningrad'),(308,'RU','Europe/Moscow','Moscow+00 - west Russia'),(309,'RU','Europe/Volgograd','Moscow+00 - Caspian Sea'),(310,'RU','Europe/S
 amara','Moscow+00 - Samara, Udmurtia'),(311,'RU','Asia/Yekaterinburg','Moscow+02 - Urals'),(312,'RU','Asia/Omsk','Moscow+03 - west Siberia'),(313,'RU','Asia/Novosibirsk','Moscow+03 - Novosibirsk'),(314,'RU','Asia/Novokuznetsk','Moscow+03 - Novokuznetsk'),(315,'RU','Asia/Krasnoyarsk','Moscow+04 - Yenisei River'),(316,'RU','Asia/Irkutsk','Moscow+05 - Lake Baikal'),(317,'RU','Asia/Yakutsk','Moscow+06 - Lena River'),(318,'RU','Asia/Vladivostok','Moscow+07 - Amur River'),(319,'RU','Asia/Sakhalin','Moscow+07 - Sakhalin Island'),(320,'RU','Asia/Magadan','Moscow+08 - Magadan'),(321,'RU','Asia/Kamchatka','Moscow+08 - Kamchatka'),(322,'RU','Asia/Anadyr','Moscow+08 - Bering Sea'),(323,'RW','Africa/Kigali',''),(324,'SA','Asia/Riyadh',''),(325,'SB','Pacific/Guadalcanal',''),(326,'SC','Indian/Mahe',''),(327,'SD','Africa/Khartoum',''),(328,'SE','Europe/Stockholm',''),(329,'SG','Asia/Singapore',''),(330,'SH','Atlantic/St_Helena',''),(331,'SI','Europe/Ljubljana',''),(332,'SJ','Arctic/Longyearbyen','
 '),(333,'SK','Europe/Bratislava',''),(334,'SL','Africa/Freetown',''),(335,'SM','Europe/San_Marino',''),(336,'SN','Africa/Dakar',''),(337,'SO','Africa/Mogadishu',''),(338,'SR','America/Paramaribo',''),(339,'SS','Africa/Juba',''),(340,'ST','Africa/Sao_Tome',''),(341,'SV','America/El_Salvador',''),(342,'SX','America/Lower_Princes',''),(343,'SY','Asia/Damascus',''),(344,'SZ','Africa/Mbabane',''),(345,'TC','America/Grand_Turk',''),(346,'TD','Africa/Ndjamena',''),(347,'TF','Indian/Kerguelen',''),(348,'TG','Africa/Lome',''),(349,'TH','Asia/Bangkok',''),(350,'TJ','Asia/Dushanbe',''),(351,'TK','Pacific/Fakaofo',''),(352,'TL','Asia/Dili',''),(353,'TM','Asia/Ashgabat',''),(354,'TN','Africa/Tunis',''),(355,'TO','Pacific/Tongatapu',''),(356,'TR','Europe/Istanbul',''),(357,'TT','America/Port_of_Spain',''),(358,'TV','Pacific/Funafuti',''),(359,'TW','Asia/Taipei',''),(360,'TZ','Africa/Dar_es_Salaam',''),(361,'UA','Europe/Kiev','most locations'),(362,'UA','Europe/Uzhgorod','Ruthenia'),(363,'UA','Eur
 ope/Zaporozhye','Zaporozhye, E Lugansk / Zaporizhia, E Luhansk'),(364,'UA','Europe/Simferopol','central Crimea'),(365,'UG','Africa/Kampala',''),(366,'UM','Pacific/Johnston','Johnston Atoll'),(367,'UM','Pacific/Midway','Midway Islands'),(368,'UM','Pacific/Wake','Wake Island'),(369,'US','America/New_York','Eastern Time'),(370,'US','America/Detroit','Eastern Time - Michigan - most locations'),(371,'US','America/Kentucky/Louisville','Eastern Time - Kentucky - Louisville area'),(372,'US','America/Kentucky/Monticello','Eastern Time - Kentucky - Wayne County'),(373,'US','America/Indiana/Indianapolis','Eastern Time - Indiana - most locations'),(374,'US','America/Indiana/Vincennes','Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties'),(375,'US','America/Indiana/Winamac','Eastern Time - Indiana - Pulaski County'),(376,'US','America/Indiana/Marengo','Eastern Time - Indiana - Crawford County'),(377,'US','America/Indiana/Petersburg','Eastern Time - Indiana - Pike County'),(378,'US'
 ,'America/Indiana/Vevay','Eastern Time - Indiana - Switzerland County'),(379,'US','America/Chicago','Central Time'),(380,'US','America/Indiana/Tell_City','Central Time - Indiana - Perry County'),(381,'US','America/Indiana/Knox','Central Time - Indiana - Starke County'),(382,'US','America/Menominee','Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties'),(383,'US','America/North_Dakota/Center','Central Time - North Dakota - Oliver County'),(384,'US','America/North_Dakota/New_Salem','Central Time - North Dakota - Morton County (except Mandan area)'),(385,'US','America/North_Dakota/Beulah','Central Time - North Dakota - Mercer County'),(386,'US','America/Denver','Mountain Time'),(387,'US','America/Boise','Mountain Time - south Idaho & east Oregon'),(388,'US','America/Shiprock','Mountain Time - Navajo'),(389,'US','America/Phoenix','Mountain Standard Time - Arizona'),(390,'US','America/Los_Angeles','Pacific Time'),(391,'US','America/Anchorage','Alaska Time'),(392,'US',
 'America/Juneau','Alaska Time - Alaska panhandle'),(393,'US','America/Sitka','Alaska Time - southeast Alaska panhandle'),(394,'US','America/Yakutat','Alaska Time - Alaska panhandle neck'),(395,'US','America/Nome','Alaska Time - west Alaska'),(396,'US','America/Adak','Aleutian Islands'),(397,'US','America/Metlakatla','Metlakatla Time - Annette Island'),(398,'US','Pacific/Honolulu','Hawaii'),(399,'UY','America/Montevideo',''),(400,'UZ','Asia/Samarkand','west Uzbekistan'),(401,'UZ','Asia/Tashkent','east Uzbekistan'),(402,'VA','Europe/Vatican',''),(403,'VC','America/St_Vincent',''),(404,'VE','America/Caracas',''),(405,'VG','America/Tortola',''),(406,'VI','America/St_Thomas',''),(407,'VN','Asia/Ho_Chi_Minh',''),(408,'VU','Pacific/Efate',''),(409,'WF','Pacific/Wallis',''),(410,'WS','Pacific/Apia',''),(411,'YE','Asia/Aden',''),(412,'YT','Indian/Mayotte',''),(413,'ZA','Africa/Johannesburg',''),(414,'ZM','Africa/Lusaka',''),(415,'ZW','Africa/Harare','');
-/*!40000 ALTER TABLE `timezones` ENABLE KEYS */;
-UNLOCK TABLES;
-/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-
-/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
-/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
-/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-
--- Dump completed on 2013-05-07 12:22:12

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/0001-mifos-platform-shared-tenants.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/0001-mifos-platform-shared-tenants.sql b/fineract-db/multi-tenant-demo-backups/0001-mifos-platform-shared-tenants.sql
deleted file mode 100644
index 922e3f3..0000000
--- a/fineract-db/multi-tenant-demo-backups/0001-mifos-platform-shared-tenants.sql
+++ /dev/null
@@ -1,89 +0,0 @@
--- MySQL dump 10.13  Distrib 5.1.60, for Win32 (ia32)
---
--- Host: localhost    Database: mifosplatform-tenants
--- ------------------------------------------------------
--- Server version	5.1.60-community
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `tenants`
---
-
-DROP TABLE IF EXISTS `tenants`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `tenants` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `identifier` varchar(100) NOT NULL,
-  `name` varchar(100) NOT NULL,
-  `schema_name` varchar(100) NOT NULL,
-  `timezone_id` varchar(100) NOT NULL,
-  `country_id` int(11) DEFAULT NULL,
-  `joined_date` date DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `schema_server` varchar(100) NOT NULL DEFAULT 'localhost',
-  `schema_server_port` varchar(10) NOT NULL DEFAULT '3306',
-  `schema_username` varchar(100) NOT NULL DEFAULT 'root',
-  `schema_password` varchar(100) NOT NULL DEFAULT 'mysql',
-  `auto_update` tinyint(1) NOT NULL DEFAULT '1',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `tenants`
---
-
-LOCK TABLES `tenants` WRITE;
-/*!40000 ALTER TABLE `tenants` DISABLE KEYS */;
-INSERT INTO `tenants` VALUES (1,'default','Default Demo Tenant','mifostenant-default','Asia/Kolkata',NULL,NULL,NULL,NULL,'localhost','3306','root','mysql',1);
-/*!40000 ALTER TABLE `tenants` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `timezones`
---
-
-DROP TABLE IF EXISTS `timezones`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `timezones` (
-  `id` int(3) NOT NULL AUTO_INCREMENT,
-  `country_code` varchar(2) NOT NULL,
-  `timezonename` varchar(100) NOT NULL,
-  `comments` varchar(150) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=416 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `timezones`
---
-
-LOCK TABLES `timezones` WRITE;
-/*!40000 ALTER TABLE `timezones` DISABLE KEYS */;
-INSERT INTO `timezones` VALUES (1,'AD','Europe/Andorra',NULL),(2,'AE','Asia/Dubai',''),(3,'AF','Asia/Kabul',''),(4,'AG','America/Antigua',''),(5,'AI','America/Anguilla',''),(6,'AL','Europe/Tirane',''),(7,'AM','Asia/Yerevan',''),(8,'AO','Africa/Luanda',''),(9,'AQ','Antarctica/McMurdo','McMurdo Station, Ross Island'),(10,'AQ','Antarctica/South_Pole','Amundsen-Scott Station, South Pole'),(11,'AQ','Antarctica/Rothera','Rothera Station, Adelaide Island'),(12,'AQ','Antarctica/Palmer','Palmer Station, Anvers Island'),(13,'AQ','Antarctica/Mawson','Mawson Station, Holme Bay'),(14,'AQ','Antarctica/Davis','Davis Station, Vestfold Hills'),(15,'AQ','Antarctica/Casey','Casey Station, Bailey Peninsula'),(16,'AQ','Antarctica/Vostok','Vostok Station, Lake Vostok'),(17,'AQ','Antarctica/DumontDUrville','Dumont-dUrville Station, Terre Adelie'),(18,'AQ','Antarctica/Syowa','Syowa Station, E Ongul I'),(19,'AQ','Antarctica/Macquarie','Macquarie Island Station, Macquarie Island'),(20,'AR','America/Argentina
 /Buenos_Aires','Buenos Aires (BA, CF)'),(21,'AR','America/Argentina/Cordoba','most locations (CB, CC, CN, ER, FM, MN, SE, SF)'),(22,'AR','America/Argentina/Salta','(SA, LP, NQ, RN)'),(23,'AR','America/Argentina/Jujuy','Jujuy (JY)'),(24,'AR','America/Argentina/Tucuman','Tucuman (TM)'),(25,'AR','America/Argentina/Catamarca','Catamarca (CT), Chubut (CH)'),(26,'AR','America/Argentina/La_Rioja','La Rioja (LR)'),(27,'AR','America/Argentina/San_Juan','San Juan (SJ)'),(28,'AR','America/Argentina/Mendoza','Mendoza (MZ)'),(29,'AR','America/Argentina/San_Luis','San Luis (SL)'),(30,'AR','America/Argentina/Rio_Gallegos','Santa Cruz (SC)'),(31,'AR','America/Argentina/Ushuaia','Tierra del Fuego (TF)'),(32,'AS','Pacific/Pago_Pago',''),(33,'AT','Europe/Vienna',''),(34,'AU','Australia/Lord_Howe','Lord Howe Island'),(35,'AU','Australia/Hobart','Tasmania - most locations'),(36,'AU','Australia/Currie','Tasmania - King Island'),(37,'AU','Australia/Melbourne','Victoria'),(38,'AU','Australia/Sydney','New S
 outh Wales - most locations'),(39,'AU','Australia/Broken_Hill','New South Wales - Yancowinna'),(40,'AU','Australia/Brisbane','Queensland - most locations'),(41,'AU','Australia/Lindeman','Queensland - Holiday Islands'),(42,'AU','Australia/Adelaide','South Australia'),(43,'AU','Australia/Darwin','Northern Territory'),(44,'AU','Australia/Perth','Western Australia - most locations'),(45,'AU','Australia/Eucla','Western Australia - Eucla area'),(46,'AW','America/Aruba',''),(47,'AX','Europe/Mariehamn',''),(48,'AZ','Asia/Baku',''),(49,'BA','Europe/Sarajevo',''),(50,'BB','America/Barbados',''),(51,'BD','Asia/Dhaka',''),(52,'BE','Europe/Brussels',''),(53,'BF','Africa/Ouagadougou',''),(54,'BG','Europe/Sofia',''),(55,'BH','Asia/Bahrain',''),(56,'BI','Africa/Bujumbura',''),(57,'BJ','Africa/Porto-Novo',''),(58,'BL','America/St_Barthelemy',''),(59,'BM','Atlantic/Bermuda',''),(60,'BN','Asia/Brunei',''),(61,'BO','America/La_Paz',''),(62,'BQ','America/Kralendijk',''),(63,'BR','America/Noronha','Atlan
 tic islands'),(64,'BR','America/Belem','Amapa, E Para'),(65,'BR','America/Fortaleza','NE Brazil (MA, PI, CE, RN, PB)'),(66,'BR','America/Recife','Pernambuco'),(67,'BR','America/Araguaina','Tocantins'),(68,'BR','America/Maceio','Alagoas, Sergipe'),(69,'BR','America/Bahia','Bahia'),(70,'BR','America/Sao_Paulo','S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)'),(71,'BR','America/Campo_Grande','Mato Grosso do Sul'),(72,'BR','America/Cuiaba','Mato Grosso'),(73,'BR','America/Santarem','W Para'),(74,'BR','America/Porto_Velho','Rondonia'),(75,'BR','America/Boa_Vista','Roraima'),(76,'BR','America/Manaus','E Amazonas'),(77,'BR','America/Eirunepe','W Amazonas'),(78,'BR','America/Rio_Branco','Acre'),(79,'BS','America/Nassau',''),(80,'BT','Asia/Thimphu',''),(81,'BW','Africa/Gaborone',''),(82,'BY','Europe/Minsk',''),(83,'BZ','America/Belize',''),(84,'CA','America/St_Johns','Newfoundland Time, including SE Labrador'),(85,'CA','America/Halifax','Atlantic Time - Nova Scotia (most places), PEI'),(
 86,'CA','America/Glace_Bay','Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971'),(87,'CA','America/Moncton','Atlantic Time - New Brunswick'),(88,'CA','America/Goose_Bay','Atlantic Time - Labrador - most locations'),(89,'CA','America/Blanc-Sablon','Atlantic Standard Time - Quebec - Lower North Shore'),(90,'CA','America/Montreal','Eastern Time - Quebec - most locations'),(91,'CA','America/Toronto','Eastern Time - Ontario - most locations'),(92,'CA','America/Nipigon','Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973'),(93,'CA','America/Thunder_Bay','Eastern Time - Thunder Bay, Ontario'),(94,'CA','America/Iqaluit','Eastern Time - east Nunavut - most locations'),(95,'CA','America/Pangnirtung','Eastern Time - Pangnirtung, Nunavut'),(96,'CA','America/Resolute','Central Standard Time - Resolute, Nunavut'),(97,'CA','America/Atikokan','Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut'),(98,'CA','America/Rankin_Inlet','Centra
 l Time - central Nunavut'),(99,'CA','America/Winnipeg','Central Time - Manitoba & west Ontario'),(100,'CA','America/Rainy_River','Central Time - Rainy River & Fort Frances, Ontario'),(101,'CA','America/Regina','Central Standard Time - Saskatchewan - most locations'),(102,'CA','America/Swift_Current','Central Standard Time - Saskatchewan - midwest'),(103,'CA','America/Edmonton','Mountain Time - Alberta, east British Columbia & west Saskatchewan'),(104,'CA','America/Cambridge_Bay','Mountain Time - west Nunavut'),(105,'CA','America/Yellowknife','Mountain Time - central Northwest Territories'),(106,'CA','America/Inuvik','Mountain Time - west Northwest Territories'),(107,'CA','America/Creston','Mountain Standard Time - Creston, British Columbia'),(108,'CA','America/Dawson_Creek','Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia'),(109,'CA','America/Vancouver','Pacific Time - west British Columbia'),(110,'CA','America/Whitehorse','Pacific Time - south Yukon'),(111
 ,'CA','America/Dawson','Pacific Time - north Yukon'),(112,'CC','Indian/Cocos',''),(113,'CD','Africa/Kinshasa','west Dem. Rep. of Congo'),(114,'CD','Africa/Lubumbashi','east Dem. Rep. of Congo'),(115,'CF','Africa/Bangui',''),(116,'CG','Africa/Brazzaville',''),(117,'CH','Europe/Zurich',''),(118,'CI','Africa/Abidjan',''),(119,'CK','Pacific/Rarotonga',''),(120,'CL','America/Santiago','most locations'),(121,'CL','Pacific/Easter','Easter Island & Sala y Gomez'),(122,'CM','Africa/Douala',''),(123,'CN','Asia/Shanghai','east China - Beijing, Guangdong, Shanghai, etc.'),(124,'CN','Asia/Harbin','Heilongjiang (except Mohe), Jilin'),(125,'CN','Asia/Chongqing','central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.'),(126,'CN','Asia/Urumqi','most of Tibet & Xinjiang'),(127,'CN','Asia/Kashgar','west Tibet & Xinjiang'),(128,'CO','America/Bogota',''),(129,'CR','America/Costa_Rica',''),(130,'CU','America/Havana',''),(131,'CV','Atlantic/Cape_Verde',''),(132,'CW','America/Curacao',''),(133,'C
 X','Indian/Christmas',''),(134,'CY','Asia/Nicosia',''),(135,'CZ','Europe/Prague',''),(136,'DE','Europe/Berlin',''),(137,'DJ','Africa/Djibouti',''),(138,'DK','Europe/Copenhagen',''),(139,'DM','America/Dominica',''),(140,'DO','America/Santo_Domingo',''),(141,'DZ','Africa/Algiers',''),(142,'EC','America/Guayaquil','mainland'),(143,'EC','Pacific/Galapagos','Galapagos Islands'),(144,'EE','Europe/Tallinn',''),(145,'EG','Africa/Cairo',''),(146,'EH','Africa/El_Aaiun',''),(147,'ER','Africa/Asmara',''),(148,'ES','Europe/Madrid','mainland'),(149,'ES','Africa/Ceuta','Ceuta & Melilla'),(150,'ES','Atlantic/Canary','Canary Islands'),(151,'ET','Africa/Addis_Ababa',''),(152,'FI','Europe/Helsinki',''),(153,'FJ','Pacific/Fiji',''),(154,'FK','Atlantic/Stanley',''),(155,'FM','Pacific/Chuuk','Chuuk (Truk) and Yap'),(156,'FM','Pacific/Pohnpei','Pohnpei (Ponape)'),(157,'FM','Pacific/Kosrae','Kosrae'),(158,'FO','Atlantic/Faroe',''),(159,'FR','Europe/Paris',''),(160,'GA','Africa/Libreville',''),(161,'GB','Eu
 rope/London',''),(162,'GD','America/Grenada',''),(163,'GE','Asia/Tbilisi',''),(164,'GF','America/Cayenne',''),(165,'GG','Europe/Guernsey',''),(166,'GH','Africa/Accra',''),(167,'GI','Europe/Gibraltar',''),(168,'GL','America/Godthab','most locations'),(169,'GL','America/Danmarkshavn','east coast, north of Scoresbysund'),(170,'GL','America/Scoresbysund','Scoresbysund / Ittoqqortoormiit'),(171,'GL','America/Thule','Thule / Pituffik'),(172,'GM','Africa/Banjul',''),(173,'GN','Africa/Conakry',''),(174,'GP','America/Guadeloupe',''),(175,'GQ','Africa/Malabo',''),(176,'GR','Europe/Athens',''),(177,'GS','Atlantic/South_Georgia',''),(178,'GT','America/Guatemala',''),(179,'GU','Pacific/Guam',''),(180,'GW','Africa/Bissau',''),(181,'GY','America/Guyana',''),(182,'HK','Asia/Hong_Kong',''),(183,'HN','America/Tegucigalpa',''),(184,'HR','Europe/Zagreb',''),(185,'HT','America/Port-au-Prince',''),(186,'HU','Europe/Budapest',''),(187,'ID','Asia/Jakarta','Java & Sumatra'),(188,'ID','Asia/Pontianak','west 
 & central Borneo'),(189,'ID','Asia/Makassar','east & south Borneo, Sulawesi (Celebes), Bali, Nusa Tengarra, west Timor'),(190,'ID','Asia/Jayapura','west New Guinea (Irian Jaya) & Malukus (Moluccas)'),(191,'IE','Europe/Dublin',''),(192,'IL','Asia/Jerusalem',''),(193,'IM','Europe/Isle_of_Man',''),(194,'IN','Asia/Kolkata',''),(195,'IO','Indian/Chagos',''),(196,'IQ','Asia/Baghdad',''),(197,'IR','Asia/Tehran',''),(198,'IS','Atlantic/Reykjavik',''),(199,'IT','Europe/Rome',''),(200,'JE','Europe/Jersey',''),(201,'JM','America/Jamaica',''),(202,'JO','Asia/Amman',''),(203,'JP','Asia/Tokyo',''),(204,'KE','Africa/Nairobi',''),(205,'KG','Asia/Bishkek',''),(206,'KH','Asia/Phnom_Penh',''),(207,'KI','Pacific/Tarawa','Gilbert Islands'),(208,'KI','Pacific/Enderbury','Phoenix Islands'),(209,'KI','Pacific/Kiritimati','Line Islands'),(210,'KM','Indian/Comoro',''),(211,'KN','America/St_Kitts',''),(212,'KP','Asia/Pyongyang',''),(213,'KR','Asia/Seoul',''),(214,'KW','Asia/Kuwait',''),(215,'KY','America/Caym
 an',''),(216,'KZ','Asia/Almaty','most locations'),(217,'KZ','Asia/Qyzylorda','Qyzylorda (Kyzylorda, Kzyl-Orda)'),(218,'KZ','Asia/Aqtobe','Aqtobe (Aktobe)'),(219,'KZ','Asia/Aqtau','Atyrau (Atirau, Guryev), Mangghystau (Mankistau)'),(220,'KZ','Asia/Oral','West Kazakhstan'),(221,'LA','Asia/Vientiane',''),(222,'LB','Asia/Beirut',''),(223,'LC','America/St_Lucia',''),(224,'LI','Europe/Vaduz',''),(225,'LK','Asia/Colombo',''),(226,'LR','Africa/Monrovia',''),(227,'LS','Africa/Maseru',''),(228,'LT','Europe/Vilnius',''),(229,'LU','Europe/Luxembourg',''),(230,'LV','Europe/Riga',''),(231,'LY','Africa/Tripoli',''),(232,'MA','Africa/Casablanca',''),(233,'MC','Europe/Monaco',''),(234,'MD','Europe/Chisinau',''),(235,'ME','Europe/Podgorica',''),(236,'MF','America/Marigot',''),(237,'MG','Indian/Antananarivo',''),(238,'MH','Pacific/Majuro','most locations'),(239,'MH','Pacific/Kwajalein','Kwajalein'),(240,'MK','Europe/Skopje',''),(241,'ML','Africa/Bamako',''),(242,'MM','Asia/Rangoon',''),(243,'MN','Asia
 /Ulaanbaatar','most locations'),(244,'MN','Asia/Hovd','Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan'),(245,'MN','Asia/Choibalsan','Dornod, Sukhbaatar'),(246,'MO','Asia/Macau',''),(247,'MP','Pacific/Saipan',''),(248,'MQ','America/Martinique',''),(249,'MR','Africa/Nouakchott',''),(250,'MS','America/Montserrat',''),(251,'MT','Europe/Malta',''),(252,'MU','Indian/Mauritius',''),(253,'MV','Indian/Maldives',''),(254,'MW','Africa/Blantyre',''),(255,'MX','America/Mexico_City','Central Time - most locations'),(256,'MX','America/Cancun','Central Time - Quintana Roo'),(257,'MX','America/Merida','Central Time - Campeche, Yucatan'),(258,'MX','America/Monterrey','Mexican Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas away from US border'),(259,'MX','America/Matamoros','US Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas near US border'),(260,'MX','America/Mazatlan','Mountain Time - S Baja, Nayarit, Sinaloa'),(261,'MX','America/Chihuahua','Mexican Mountain Time - Chihuahua away fro
 m US border'),(262,'MX','America/Ojinaga','US Mountain Time - Chihuahua near US border'),(263,'MX','America/Hermosillo','Mountain Standard Time - Sonora'),(264,'MX','America/Tijuana','US Pacific Time - Baja California near US border'),(265,'MX','America/Santa_Isabel','Mexican Pacific Time - Baja California away from US border'),(266,'MX','America/Bahia_Banderas','Mexican Central Time - Bahia de Banderas'),(267,'MY','Asia/Kuala_Lumpur','peninsular Malaysia'),(268,'MY','Asia/Kuching','Sabah & Sarawak'),(269,'MZ','Africa/Maputo',''),(270,'NA','Africa/Windhoek',''),(271,'NC','Pacific/Noumea',''),(272,'NE','Africa/Niamey',''),(273,'NF','Pacific/Norfolk',''),(274,'NG','Africa/Lagos',''),(275,'NI','America/Managua',''),(276,'NL','Europe/Amsterdam',''),(277,'NO','Europe/Oslo',''),(278,'NP','Asia/Kathmandu',''),(279,'NR','Pacific/Nauru',''),(280,'NU','Pacific/Niue',''),(281,'NZ','Pacific/Auckland','most locations'),(282,'NZ','Pacific/Chatham','Chatham Islands'),(283,'OM','Asia/Muscat',''),(2
 84,'PA','America/Panama',''),(285,'PE','America/Lima',''),(286,'PF','Pacific/Tahiti','Society Islands'),(287,'PF','Pacific/Marquesas','Marquesas Islands'),(288,'PF','Pacific/Gambier','Gambier Islands'),(289,'PG','Pacific/Port_Moresby',''),(290,'PH','Asia/Manila',''),(291,'PK','Asia/Karachi',''),(292,'PL','Europe/Warsaw',''),(293,'PM','America/Miquelon',''),(294,'PN','Pacific/Pitcairn',''),(295,'PR','America/Puerto_Rico',''),(296,'PS','Asia/Gaza','Gaza Strip'),(297,'PS','Asia/Hebron','West Bank'),(298,'PT','Europe/Lisbon','mainland'),(299,'PT','Atlantic/Madeira','Madeira Islands'),(300,'PT','Atlantic/Azores','Azores'),(301,'PW','Pacific/Palau',''),(302,'PY','America/Asuncion',''),(303,'QA','Asia/Qatar',''),(304,'RE','Indian/Reunion',''),(305,'RO','Europe/Bucharest',''),(306,'RS','Europe/Belgrade',''),(307,'RU','Europe/Kaliningrad','Moscow-01 - Kaliningrad'),(308,'RU','Europe/Moscow','Moscow+00 - west Russia'),(309,'RU','Europe/Volgograd','Moscow+00 - Caspian Sea'),(310,'RU','Europe/S
 amara','Moscow+00 - Samara, Udmurtia'),(311,'RU','Asia/Yekaterinburg','Moscow+02 - Urals'),(312,'RU','Asia/Omsk','Moscow+03 - west Siberia'),(313,'RU','Asia/Novosibirsk','Moscow+03 - Novosibirsk'),(314,'RU','Asia/Novokuznetsk','Moscow+03 - Novokuznetsk'),(315,'RU','Asia/Krasnoyarsk','Moscow+04 - Yenisei River'),(316,'RU','Asia/Irkutsk','Moscow+05 - Lake Baikal'),(317,'RU','Asia/Yakutsk','Moscow+06 - Lena River'),(318,'RU','Asia/Vladivostok','Moscow+07 - Amur River'),(319,'RU','Asia/Sakhalin','Moscow+07 - Sakhalin Island'),(320,'RU','Asia/Magadan','Moscow+08 - Magadan'),(321,'RU','Asia/Kamchatka','Moscow+08 - Kamchatka'),(322,'RU','Asia/Anadyr','Moscow+08 - Bering Sea'),(323,'RW','Africa/Kigali',''),(324,'SA','Asia/Riyadh',''),(325,'SB','Pacific/Guadalcanal',''),(326,'SC','Indian/Mahe',''),(327,'SD','Africa/Khartoum',''),(328,'SE','Europe/Stockholm',''),(329,'SG','Asia/Singapore',''),(330,'SH','Atlantic/St_Helena',''),(331,'SI','Europe/Ljubljana',''),(332,'SJ','Arctic/Longyearbyen','
 '),(333,'SK','Europe/Bratislava',''),(334,'SL','Africa/Freetown',''),(335,'SM','Europe/San_Marino',''),(336,'SN','Africa/Dakar',''),(337,'SO','Africa/Mogadishu',''),(338,'SR','America/Paramaribo',''),(339,'SS','Africa/Juba',''),(340,'ST','Africa/Sao_Tome',''),(341,'SV','America/El_Salvador',''),(342,'SX','America/Lower_Princes',''),(343,'SY','Asia/Damascus',''),(344,'SZ','Africa/Mbabane',''),(345,'TC','America/Grand_Turk',''),(346,'TD','Africa/Ndjamena',''),(347,'TF','Indian/Kerguelen',''),(348,'TG','Africa/Lome',''),(349,'TH','Asia/Bangkok',''),(350,'TJ','Asia/Dushanbe',''),(351,'TK','Pacific/Fakaofo',''),(352,'TL','Asia/Dili',''),(353,'TM','Asia/Ashgabat',''),(354,'TN','Africa/Tunis',''),(355,'TO','Pacific/Tongatapu',''),(356,'TR','Europe/Istanbul',''),(357,'TT','America/Port_of_Spain',''),(358,'TV','Pacific/Funafuti',''),(359,'TW','Asia/Taipei',''),(360,'TZ','Africa/Dar_es_Salaam',''),(361,'UA','Europe/Kiev','most locations'),(362,'UA','Europe/Uzhgorod','Ruthenia'),(363,'UA','Eur
 ope/Zaporozhye','Zaporozhye, E Lugansk / Zaporizhia, E Luhansk'),(364,'UA','Europe/Simferopol','central Crimea'),(365,'UG','Africa/Kampala',''),(366,'UM','Pacific/Johnston','Johnston Atoll'),(367,'UM','Pacific/Midway','Midway Islands'),(368,'UM','Pacific/Wake','Wake Island'),(369,'US','America/New_York','Eastern Time'),(370,'US','America/Detroit','Eastern Time - Michigan - most locations'),(371,'US','America/Kentucky/Louisville','Eastern Time - Kentucky - Louisville area'),(372,'US','America/Kentucky/Monticello','Eastern Time - Kentucky - Wayne County'),(373,'US','America/Indiana/Indianapolis','Eastern Time - Indiana - most locations'),(374,'US','America/Indiana/Vincennes','Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties'),(375,'US','America/Indiana/Winamac','Eastern Time - Indiana - Pulaski County'),(376,'US','America/Indiana/Marengo','Eastern Time - Indiana - Crawford County'),(377,'US','America/Indiana/Petersburg','Eastern Time - Indiana - Pike County'),(378,'US'
 ,'America/Indiana/Vevay','Eastern Time - Indiana - Switzerland County'),(379,'US','America/Chicago','Central Time'),(380,'US','America/Indiana/Tell_City','Central Time - Indiana - Perry County'),(381,'US','America/Indiana/Knox','Central Time - Indiana - Starke County'),(382,'US','America/Menominee','Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties'),(383,'US','America/North_Dakota/Center','Central Time - North Dakota - Oliver County'),(384,'US','America/North_Dakota/New_Salem','Central Time - North Dakota - Morton County (except Mandan area)'),(385,'US','America/North_Dakota/Beulah','Central Time - North Dakota - Mercer County'),(386,'US','America/Denver','Mountain Time'),(387,'US','America/Boise','Mountain Time - south Idaho & east Oregon'),(388,'US','America/Shiprock','Mountain Time - Navajo'),(389,'US','America/Phoenix','Mountain Standard Time - Arizona'),(390,'US','America/Los_Angeles','Pacific Time'),(391,'US','America/Anchorage','Alaska Time'),(392,'US',
 'America/Juneau','Alaska Time - Alaska panhandle'),(393,'US','America/Sitka','Alaska Time - southeast Alaska panhandle'),(394,'US','America/Yakutat','Alaska Time - Alaska panhandle neck'),(395,'US','America/Nome','Alaska Time - west Alaska'),(396,'US','America/Adak','Aleutian Islands'),(397,'US','America/Metlakatla','Metlakatla Time - Annette Island'),(398,'US','Pacific/Honolulu','Hawaii'),(399,'UY','America/Montevideo',''),(400,'UZ','Asia/Samarkand','west Uzbekistan'),(401,'UZ','Asia/Tashkent','east Uzbekistan'),(402,'VA','Europe/Vatican',''),(403,'VC','America/St_Vincent',''),(404,'VE','America/Caracas',''),(405,'VG','America/Tortola',''),(406,'VI','America/St_Thomas',''),(407,'VN','Asia/Ho_Chi_Minh',''),(408,'VU','Pacific/Efate',''),(409,'WF','Pacific/Wallis',''),(410,'WS','Pacific/Apia',''),(411,'YE','Asia/Aden',''),(412,'YT','Indian/Mayotte',''),(413,'ZA','Africa/Johannesburg',''),(414,'ZM','Africa/Lusaka',''),(415,'ZW','Africa/Harare','');
-/*!40000 ALTER TABLE `timezones` ENABLE KEYS */;
-UNLOCK TABLES;
-/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-
-/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
-/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
-/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-
--- Dump completed on 2013-04-03 18:11:34

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/bare-bones-demo/README.md
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/bare-bones-demo/README.md b/fineract-db/multi-tenant-demo-backups/bare-bones-demo/README.md
deleted file mode 100644
index 7a0d8a7..0000000
--- a/fineract-db/multi-tenant-demo-backups/bare-bones-demo/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-Bare Bones Demo
-======
-
-This demo database contains:
-
-- DDL of latest schema
-- Minimum reference data required for deployment of platform which is:
-  -  Its mandatory to have one selected currency so we default to US Dollar
-  -  Its mandatory to have one root or head office, so we have one created by default called a 'Head Office'
-  -  Permissions supported/needed by latest release of software are setup
-  -  Its mandatory to have at least one role when creating new users so we have one role created by default called 'Super user' which has the special permission 'Full Authorisation'. Any user with this role can do anything in the system.
-  -  Its required to have at least one application user setup so remaining setup can be done through ui so we have on application user created by default with username 'mifos' with a password of 'password'. Application users must be associated with an office and a role so this user is associated with 'Head office' and 'Super user' role allowing this user to do any operation in any office(branch).
-- Configuration
-  - No 'additional data' through the 'datatables' approach is setup
-  - One 'code' is setup called 'Client Identifier' with default values of {'Passport number'} - (required for Client Identity Document functionalty)
-  - Enable/Disable configuration has one entry named 'maker-checker' to allow people to enable disable this feature at global level. It is off or disabled by default.
-- No products (loans, deposit, savings) are setup
-- No Charges (fees or penalties) are setup
-- No Staff (employees) are setup (loan officers are optional when submiting new loan application)
-- No Portfolio data (no clients, groups, loan accounts, deposit accounts, savings accounts)
-- No Accounting data (no chart of accounts is setup, by default accounting with respect to portfolio items is off unless enabled when creating a loan product.)


[41/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/README.md
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/README.md b/docs/system-architecture/css/toc-0.1.2/README.md
deleted file mode 100644
index 176f0b9..0000000
--- a/docs/system-architecture/css/toc-0.1.2/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-#TOC
-
-[TOC](http://projects.jga.me/toc/) is a jQuery plugin for automatically generating a table of contents. 
-
-For more information, check out the [documentation](http://projects.jga.me/toc/).

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/component.json
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/component.json b/docs/system-architecture/css/toc-0.1.2/component.json
deleted file mode 100644
index b71fcd7..0000000
--- a/docs/system-architecture/css/toc-0.1.2/component.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "name": "toc",
-  "description": "jQuery Table of Contents Plugin",
-  "version": "0.1.2",
-  "homepage": "http://projects.jga.me/toc/",
-  "license": "MIT",
-  "copyright": "Greg Allen",
-  "main": "dist/toc.js",
-  "dependencies": {
-  },
-  "devDependencies": {
-    "assert": "*"
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.js b/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.js
deleted file mode 100644
index 9fe5055..0000000
--- a/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.js
+++ /dev/null
@@ -1,107 +0,0 @@
-/*!
- * toc - jQuery Table of Contents Plugin
- * v0.1.2
- * http://projects.jga.me/toc/
- * copyright Greg Allen 2013
- * MIT License
-*/
-(function($) {
-$.fn.toc = function(options) {
-  var self = this;
-  var opts = $.extend({}, jQuery.fn.toc.defaults, options);
-
-  var container = $(opts.container);
-  var headings = $(opts.selectors, container);
-  var headingOffsets = [];
-  var activeClassName = opts.prefix+'-active';
-
-  var scrollTo = function(e) {
-    if (opts.smoothScrolling) {
-      e.preventDefault();
-      var elScrollTo = $(e.target).attr('href');
-      var $el = $(elScrollTo);
-
-      $('body,html').animate({ scrollTop: $el.offset().top }, 400, 'swing', function() {
-        location.hash = elScrollTo;
-      });
-    }
-    $('li', self).removeClass(activeClassName);
-    $(e.target).parent().addClass(activeClassName);
-  };
-
-  //highlight on scroll
-  var timeout;
-  var highlightOnScroll = function(e) {
-    if (timeout) {
-      clearTimeout(timeout);
-    }
-    timeout = setTimeout(function() {
-      var top = $(window).scrollTop(),
-        highlighted;
-      for (var i = 0, c = headingOffsets.length; i < c; i++) {
-        if (headingOffsets[i] >= top) {
-          $('li', self).removeClass(activeClassName);
-          highlighted = $('li:eq('+(i-1)+')', self).addClass(activeClassName);
-          opts.onHighlight(highlighted);
-          break;
-        }
-      }
-    }, 50);
-  };
-  if (opts.highlightOnScroll) {
-    $(window).bind('scroll', highlightOnScroll);
-    highlightOnScroll();
-  }
-
-  return this.each(function() {
-    //build TOC
-    var el = $(this);
-    var ul = $('<ul/>');
-    headings.each(function(i, heading) {
-      var $h = $(heading);
-      headingOffsets.push($h.offset().top - opts.highlightOffset);
-
-      //add anchor
-      var anchor = $('<span/>').attr('id', opts.anchorName(i, heading, opts.prefix)).insertBefore($h);
-
-      //build TOC item
-      var a = $('<a/>')
-        .text(opts.headerText(i, heading, $h))
-        .attr('href', '#' + opts.anchorName(i, heading, opts.prefix))
-        .bind('click', function(e) { 
-          scrollTo(e);
-          el.trigger('selected', $(this).attr('href'));
-        });
-
-      var li = $('<li/>')
-        .addClass(opts.itemClass(i, heading, $h, opts.prefix))
-        .append(a);
-
-      ul.append(li);
-    });
-    el.html(ul);
-  });
-};
-
-
-jQuery.fn.toc.defaults = {
-  container: 'body',
-  selectors: 'h1,h2,h3',
-  smoothScrolling: true,
-  prefix: 'toc',
-  onHighlight: function() {},
-  highlightOnScroll: true,
-  highlightOffset: 100,
-  anchorName: function(i, heading, prefix) {
-    return prefix+i;
-  },
-  headerText: function(i, heading, $heading) {
-    return $heading.text();
-  },
-  itemClass: function(i, heading, $heading, prefix) {
-    return prefix + '-' + $heading[0].tagName.toLowerCase();
-  }
-
-};
-
-})(jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.min.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.min.js b/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.min.js
deleted file mode 100644
index 53a2c62..0000000
--- a/docs/system-architecture/css/toc-0.1.2/dist/jquery.toc.min.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*!
- * toc - jQuery Table of Contents Plugin
- * v0.1.2
- * http://projects.jga.me/toc/
- * copyright Greg Allen 2013
- * MIT License
-*/
-(function(t){t.fn.toc=function(e){var n,i=this,r=t.extend({},jQuery.fn.toc.defaults,e),o=t(r.container),a=t(r.selectors,o),l=[],h=r.prefix+"-active",s=function(e){if(r.smoothScrolling){e.preventDefault();var n=t(e.target).attr("href"),o=t(n);t("body,html").animate({scrollTop:o.offset().top},400,"swing",function(){location.hash=n})}t("li",i).removeClass(h),t(e.target).parent().addClass(h)},c=function(){n&&clearTimeout(n),n=setTimeout(function(){for(var e,n=t(window).scrollTop(),o=0,a=l.length;a>o;o++)if(l[o]>=n){t("li",i).removeClass(h),e=t("li:eq("+(o-1)+")",i).addClass(h),r.onHighlight(e);break}},50)};return r.highlightOnScroll&&(t(window).bind("scroll",c),c()),this.each(function(){var e=t(this),n=t("<ul/>");a.each(function(i,o){var a=t(o);l.push(a.offset().top-r.highlightOffset),t("<span/>").attr("id",r.anchorName(i,o,r.prefix)).insertBefore(a);var h=t("<a/>").text(r.headerText(i,o,a)).attr("href","#"+r.anchorName(i,o,r.prefix)).bind("click",function(n){s(n),e.trigger("selected",t
 (this).attr("href"))}),c=t("<li/>").addClass(r.itemClass(i,o,a,r.prefix)).append(h);n.append(c)}),e.html(n)})},jQuery.fn.toc.defaults={container:"body",selectors:"h1,h2,h3",smoothScrolling:!0,prefix:"toc",onHighlight:function(){},highlightOnScroll:!0,highlightOffset:100,anchorName:function(t,e,n){return n+t},headerText:function(t,e,n){return n.text()},itemClass:function(t,e,n,i){return i+"-"+n[0].tagName.toLowerCase()}}})(jQuery);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/docs/index.md
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/docs/index.md b/docs/system-architecture/css/toc-0.1.2/docs/index.md
deleted file mode 100644
index 06380d7..0000000
--- a/docs/system-architecture/css/toc-0.1.2/docs/index.md
+++ /dev/null
@@ -1,101 +0,0 @@
-#TOC
-
-TOC is a jQuery plugin that will automatically generate a table of contents for your page. You can see an example of it on the left side of the page.
-
-##Features
-- Completely customizable
-- Click to smooth scroll to that spot on the page
-- Automatically highlight the current section
-- Extremely lightweight (744 bytes gzipped)
-- Can have multiple on a page
-
-##Download
-
-- [Production](https://raw.github.com/jgallen23/toc/master/dist/jquery.toc.min.js)
-- [Development](https://raw.github.com/jgallen23/toc/master/dist/jquery.toc.js)
-- [Source](http://github.com/jgallen23/toc)
-
-##Usage
-
-	`javascript
-	$('#toc').toc();
-
-###Options
-Defaults shown below
-
-	`javascript
-	$('#toc').toc({
-		'selectors': 'h1,h2,h3', //elements to use as headings
-		'container': 'body', //element to find all selectors in
-		'smoothScrolling': true, //enable or disable smooth scrolling on click
-		'prefix': 'toc', //prefix for anchor tags and class names
-		'onHighlight': function(el) {}, //called when a new section is highlighted 
-		'highlightOnScroll': true, //add class to heading that is currently in focus
-		'highlightOffset': 100, //offset to trigger the next headline
-		'anchorName': function(i, heading, prefix) { //custom function for anchor name
-			return prefix+i;
-		},
-		'headerText': function(i, heading, $heading) { //custom function building the header-item text
-			return $heading.text();
-		},
-		'itemClass': function(i, heading, $heading, prefix) { // custom function for item class
-			return $heading[0].tagName.toLowerCase();
-		}
-	});
-
-##Example CSS
-
-	`css
-	#toc {
-		top: 0px;
-		left: 0px;
-		height: 100%;
-		position: fixed;
-		background: #333;
-		box-shadow: inset -5px 0 5px 0px #000;
-		width: 150px;
-		padding-top: 20px;
-		color: #fff;
-	}
-
-	#toc ul {
-		margin: 0;
-		padding: 0;
-		list-style: none;
-	}
-
-	#toc li {
-		padding: 5px 10px;
-	}
-
-	#toc a {
-		color: #fff;
-		text-decoration: none;
-		display: block;
-	}
-
-	#toc .toc-h2 {
-		padding-left: 10px;
-	}
-
-	#toc .toc-h3 {
-		padding-left: 20px;
-	}
-
-	#toc .toc-active {
-		background: #336699;
-		box-shadow: inset -5px 0px 10px -5px #000;
-	}
-
-##History
-
-[View](https://raw.github.com/jgallen23/toc/master/History.md)
-
-##Future
-- Figure out how to handle headlines on bottom of page
-- Zepto.js support (should work, need to verify)
-- Ender support
-
-
-##Contributors
-- Greg Allen ([@jgaui](http://twitter.com/jgaui)) [jga.me](http://jga.me)

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/docs/jquery-deps.md
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/docs/jquery-deps.md b/docs/system-architecture/css/toc-0.1.2/docs/jquery-deps.md
deleted file mode 100644
index cf9b01b..0000000
--- a/docs/system-architecture/css/toc-0.1.2/docs/jquery-deps.md
+++ /dev/null
@@ -1,10 +0,0 @@
-#jQuery Dependencies
-- $.extend
-- bind
-- addClass
-- removeClass
-- animate
-- attr
-- text
-- append
-- createElement

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/example/index.html
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/example/index.html b/docs/system-architecture/css/toc-0.1.2/example/index.html
deleted file mode 100644
index ff1b7cf..0000000
--- a/docs/system-architecture/css/toc-0.1.2/example/index.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-  <head>
-    <title></title>
-    <script src="live.js"></script>
-    <style>
-      body {
-        font-family: Helvetica, Arial;
-      }
-      #wrapper { 
-        width: 980px;
-        margin: 0 auto;
-        margin-bottom: 300px;
-      }
-      .toc {
-        background: #fefefe;
-        width: 200px;
-        position: fixed;
-        border: 1px solid #ddd;
-        color: #333;
-      }
-      .toc a {
-        color: #333;
-      }
-      .toc .tocH2 {
-        margin-left: 10px
-      }
-      .toc .tocH3 {
-        margin-left: 20px
-      }
-      .toc-active {
-        color: #000;
-        font-weight: bold;
-      }
-      .toc.right {
-        right: 0
-      }
-    </style>
-  </head>
-  <body>
-    <div class="toc">
-    </div>
-    <div class="toc right">
-    </div>
-    <div id="wrapper">
-      <h1>Page Title</h1>
-      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.</p>
-      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.</p>
-      <h2>Sub Heading</h2>
-      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.</p>
-      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.</p>
-      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.</p>
-      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.</p>
-      <h2>Sub Heading</h2>
-      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.</p>
-      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.</p>
-      <h3>SubSub Heading</h3>
-      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.</p>
-      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.</p>
-      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.</p>
-    </div>
-    <script src="jquery.js"></script>
-    <script src="../lib/toc.js"></script>
-    <script>
-      $('.toc').toc({
-      });
-    </script>
-  </body>
-</html>


[36/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/json2.js.htm
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/json2.js.htm b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/json2.js.htm
deleted file mode 100644
index ff9313e..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/json2.js.htm
+++ /dev/null
@@ -1,1171 +0,0 @@
-
-
-
-<!DOCTYPE html>
-<html>
-  <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
-    <meta charset='utf-8'>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-        <title>JSON-js/json2.js at master · douglascrockford/JSON-js</title>
-    <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
-    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
-    <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png" />
-    <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png" />
-    <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png" />
-    <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png" />
-    <link rel="logo" type="image/svg" href="https://github-media-downloads.s3.amazonaws.com/github-logo.svg" />
-    <meta property="og:image" content="https://github.global.ssl.fastly.net/images/modules/logos_page/Octocat.png">
-    <meta name="hostname" content="github-fe128-cp1-prd.iad.github.net">
-    <meta name="ruby" content="ruby 1.9.3p194-tcs-github-tcmalloc (2012-05-25, TCS patched 2012-05-27, GitHub v1.0.36) [x86_64-linux]">
-    <link rel="assets" href="https://github.global.ssl.fastly.net/">
-    <link rel="xhr-socket" href="/_sockets" />
-    
-    
-
-
-    <meta name="msapplication-TileImage" content="/windows-tile.png" />
-    <meta name="msapplication-TileColor" content="#ffffff" />
-    <meta name="selected-link" value="repo_source" data-pjax-transient />
-    <meta content="collector.githubapp.com" name="octolytics-host" /><meta content="github" name="octolytics-app-id" /><meta content="e2f86eeb-559e-407b-8639-44e195876131" name="octolytics-dimension-request_id" /><meta content="1131294" name="octolytics-actor-id" /><meta content="keithwoodlock" name="octolytics-actor-login" /><meta content="c6488d14c2dcaeb3bdf0928f03bee95a636030b9df88e5d33a400b4d96bb9417" name="octolytics-actor-hash" />
-    
-
-    
-    
-    <link rel="icon" type="image/x-icon" href="/favicon.ico" />
-
-    <meta content="authenticity_token" name="csrf-param" />
-<meta content="0zjVjO5n9NwMnMOEQRpCSBtTXf0LBDGgN0xSPTeqIRQ=" name="csrf-token" />
-
-    <link href="https://github.global.ssl.fastly.net/assets/github-2acccfdeaa48ea23ecdc42addc34669f048ecab8.css" media="all" rel="stylesheet" type="text/css" />
-    <link href="https://github.global.ssl.fastly.net/assets/github2-d75c750a6b14571dc070b6570d9224acd7b6795e.css" media="all" rel="stylesheet" type="text/css" />
-    
-
-
-      <script src="https://github.global.ssl.fastly.net/assets/frameworks-f86a2975a82dceee28e5afe598d1ebbfd7109d79.js" type="text/javascript"></script>
-      <script src="https://github.global.ssl.fastly.net/assets/github-be76400731d26146fc825df9f879385b669bd2fc.js" type="text/javascript"></script>
-      
-      <meta http-equiv="x-pjax-version" content="d7f2425c90b626cc14a2574d53f2c301">
-
-        <link data-pjax-transient rel='permalink' href='/douglascrockford/JSON-js/blob/e39db4b7e6249f04a195e7dd0840e610cc9e941e/json2.js'>
-  <meta property="og:title" content="JSON-js"/>
-  <meta property="og:type" content="githubog:gitrepository"/>
-  <meta property="og:url" content="https://github.com/douglascrockford/JSON-js"/>
-  <meta property="og:image" content="https://github.global.ssl.fastly.net/images/gravatars/gravatar-user-420.png"/>
-  <meta property="og:site_name" content="GitHub"/>
-  <meta property="og:description" content="JSON-js - JSON in JavaScript"/>
-
-  <meta name="description" content="JSON-js - JSON in JavaScript" />
-
-  <meta content="262641" name="octolytics-dimension-user_id" /><meta content="douglascrockford" name="octolytics-dimension-user_login" /><meta content="1092277" name="octolytics-dimension-repository_id" /><meta content="douglascrockford/JSON-js" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="1092277" name="octolytics-dimension-repository_network_root_id" /><meta content="douglascrockford/JSON-js" name="octolytics-dimension-repository_network_root_nwo" />
-  <link href="https://github.com/douglascrockford/JSON-js/commits/master.atom" rel="alternate" title="Recent Commits to JSON-js:master" type="application/atom+xml" />
-
-  </head>
-
-
-  <body class="logged_in  env-production windows vis-public page-blob">
-    <div class="wrapper">
-      
-      
-      
-
-
-      <div class="header header-logged-in true">
-  <div class="container clearfix">
-
-    <a class="header-logo-invertocat" href="https://github.com/organizations/openMF">
-  <span class="mega-octicon octicon-mark-github"></span>
-</a>
-
-    <div class="divider-vertical"></div>
-
-    
-    <a href="/notifications" class="notification-indicator tooltipped downwards" data-gotokey="n" title="You have unread notifications">
-        <span class="mail-status unread"></span>
-</a>    <div class="divider-vertical"></div>
-
-
-      <div class="command-bar js-command-bar  in-repository">
-          <form accept-charset="UTF-8" action="/search" class="command-bar-form" id="top_search_form" method="get">
-
-<input type="text" data-hotkey=" s" name="q" id="js-command-bar-field" placeholder="Search or type a command" tabindex="1" autocapitalize="off"
-    
-    data-username="keithwoodlock"
-      data-repo="douglascrockford/JSON-js"
-      data-branch="master"
-      data-sha="ca9b65d1e9e0bc104ca6e4fa9047cc035f27a637"
-  >
-
-    <input type="hidden" name="nwo" value="douglascrockford/JSON-js" />
-
-    <div class="select-menu js-menu-container js-select-menu search-context-select-menu">
-      <span class="minibutton select-menu-button js-menu-target">
-        <span class="js-select-button">This repository</span>
-      </span>
-
-      <div class="select-menu-modal-holder js-menu-content js-navigation-container">
-        <div class="select-menu-modal">
-
-          <div class="select-menu-item js-navigation-item js-this-repository-navigation-item selected">
-            <span class="select-menu-item-icon octicon octicon-check"></span>
-            <input type="radio" class="js-search-this-repository" name="search_target" value="repository" checked="checked" />
-            <div class="select-menu-item-text js-select-button-text">This repository</div>
-          </div> <!-- /.select-menu-item -->
-
-          <div class="select-menu-item js-navigation-item js-all-repositories-navigation-item">
-            <span class="select-menu-item-icon octicon octicon-check"></span>
-            <input type="radio" name="search_target" value="global" />
-            <div class="select-menu-item-text js-select-button-text">All repositories</div>
-          </div> <!-- /.select-menu-item -->
-
-        </div>
-      </div>
-    </div>
-
-  <span class="octicon help tooltipped downwards" title="Show command bar help">
-    <span class="octicon octicon-question"></span>
-  </span>
-
-
-  <input type="hidden" name="ref" value="cmdform">
-
-</form>
-        <ul class="top-nav">
-          <li class="explore"><a href="/explore">Explore</a></li>
-            <li><a href="https://gist.github.com">Gist</a></li>
-            <li><a href="/blog">Blog</a></li>
-          <li><a href="https://help.github.com">Help</a></li>
-        </ul>
-      </div>
-
-    
-
-
-  <ul id="user-links">
-    <li>
-      <a href="/keithwoodlock" class="name">
-        <img height="20" src="https://2.gravatar.com/avatar/7cb9ea82bf508b3cb43f39d9a3f1c8a3?d=https%3A%2F%2Fidenticons.github.com%2F5d64743571857aa2599a532187a6aa02.png&amp;s=140" width="20" /> keithwoodlock
-      </a>
-    </li>
-
-      <li>
-        <a href="/new" id="new_repo" class="tooltipped downwards" title="Create a new repo" aria-label="Create a new repo">
-          <span class="octicon octicon-repo-create"></span>
-        </a>
-      </li>
-
-      <li>
-        <a href="/settings/profile" id="account_settings"
-          class="tooltipped downwards"
-          aria-label="Account settings "
-          title="Account settings ">
-          <span class="octicon octicon-tools"></span>
-        </a>
-      </li>
-      <li>
-        <a class="tooltipped downwards" href="/logout" data-method="post" id="logout" title="Sign out" aria-label="Sign out">
-          <span class="octicon octicon-log-out"></span>
-        </a>
-      </li>
-
-  </ul>
-
-<div class="js-new-dropdown-contents hidden">
-  
-
-<ul class="dropdown-menu">
-  <li>
-    <a href="/new"><span class="octicon octicon-repo-create"></span> New repository</a>
-  </li>
-  <li>
-    <a href="/organizations/new"><span class="octicon octicon-organization"></span> New organization</a>
-  </li>
-
-
-
-    <li class="section-title">
-      <span title="douglascrockford/JSON-js">This repository</span>
-    </li>
-    <li>
-      <a href="/douglascrockford/JSON-js/issues/new"><span class="octicon octicon-issue-opened"></span> New issue</a>
-    </li>
-</ul>
-
-</div>
-
-
-    
-  </div>
-</div>
-
-      
-
-      
-
-
-
-
-          <div class="site" itemscope itemtype="http://schema.org/WebPage">
-    
-    <div class="pagehead repohead instapaper_ignore readability-menu">
-      <div class="container">
-        
-
-<ul class="pagehead-actions">
-
-    <li class="subscription">
-      <form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="0zjVjO5n9NwMnMOEQRpCSBtTXf0LBDGgN0xSPTeqIRQ=" /></div>  <input id="repository_id" name="repository_id" type="hidden" value="1092277" />
-
-    <div class="select-menu js-menu-container js-select-menu">
-        <a class="social-count js-social-count" href="/douglascrockford/JSON-js/watchers">
-          303
-        </a>
-      <span class="minibutton select-menu-button with-count js-menu-target" role="button" tabindex="0">
-        <span class="js-select-button">
-          <span class="octicon octicon-eye-watch"></span>
-          Watch
-        </span>
-      </span>
-
-      <div class="select-menu-modal-holder">
-        <div class="select-menu-modal subscription-menu-modal js-menu-content">
-          <div class="select-menu-header">
-            <span class="select-menu-title">Notification status</span>
-            <span class="octicon octicon-remove-close js-menu-close"></span>
-          </div> <!-- /.select-menu-header -->
-
-          <div class="select-menu-list js-navigation-container" role="menu">
-
-            <div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <div class="select-menu-item-text">
-                <input checked="checked" id="do_included" name="do" type="radio" value="included" />
-                <h4>Not watching</h4>
-                <span class="description">You only receive notifications for discussions in which you participate or are @mentioned.</span>
-                <span class="js-select-button-text hidden-select-button-text">
-                  <span class="octicon octicon-eye-watch"></span>
-                  Watch
-                </span>
-              </div>
-            </div> <!-- /.select-menu-item -->
-
-            <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
-              <span class="select-menu-item-icon octicon octicon octicon-check"></span>
-              <div class="select-menu-item-text">
-                <input id="do_subscribed" name="do" type="radio" value="subscribed" />
-                <h4>Watching</h4>
-                <span class="description">You receive notifications for all discussions in this repository.</span>
-                <span class="js-select-button-text hidden-select-button-text">
-                  <span class="octicon octicon-eye-unwatch"></span>
-                  Unwatch
-                </span>
-              </div>
-            </div> <!-- /.select-menu-item -->
-
-            <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <div class="select-menu-item-text">
-                <input id="do_ignore" name="do" type="radio" value="ignore" />
-                <h4>Ignoring</h4>
-                <span class="description">You do not receive any notifications for discussions in this repository.</span>
-                <span class="js-select-button-text hidden-select-button-text">
-                  <span class="octicon octicon-mute"></span>
-                  Stop ignoring
-                </span>
-              </div>
-            </div> <!-- /.select-menu-item -->
-
-          </div> <!-- /.select-menu-list -->
-
-        </div> <!-- /.select-menu-modal -->
-      </div> <!-- /.select-menu-modal-holder -->
-    </div> <!-- /.select-menu -->
-
-</form>
-    </li>
-
-  <li>
-  
-<div class="js-toggler-container js-social-container starring-container ">
-  <a href="/douglascrockford/JSON-js/unstar" class="minibutton with-count js-toggler-target star-button starred upwards" title="Unstar this repo" data-remote="true" data-method="post" rel="nofollow">
-    <span class="octicon octicon-star-delete"></span><span class="text">Unstar</span>
-  </a>
-  <a href="/douglascrockford/JSON-js/star" class="minibutton with-count js-toggler-target star-button unstarred upwards" title="Star this repo" data-remote="true" data-method="post" rel="nofollow">
-    <span class="octicon octicon-star"></span><span class="text">Star</span>
-  </a>
-  <a class="social-count js-social-count" href="/douglascrockford/JSON-js/stargazers">3,637</a>
-</div>
-
-  </li>
-
-
-        <li>
-          <a href="/douglascrockford/JSON-js/fork" class="minibutton with-count js-toggler-target fork-button lighter upwards" title="Fork this repo" rel="facebox nofollow">
-            <span class="octicon octicon-git-branch-create"></span><span class="text">Fork</span>
-          </a>
-          <a href="/douglascrockford/JSON-js/network" class="social-count">1,962</a>
-        </li>
-
-
-</ul>
-
-        <h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
-          <span class="repo-label"><span>public</span></span>
-          <span class="mega-octicon octicon-repo"></span>
-          <span class="author">
-            <a href="/douglascrockford" class="url fn" itemprop="url" rel="author"><span itemprop="title">douglascrockford</span></a></span
-          ><span class="repohead-name-divider">/</span><strong
-          ><a href="/douglascrockford/JSON-js" class="js-current-repository js-repo-home-link">JSON-js</a></strong>
-
-          <span class="page-context-loader">
-            <img alt="Octocat-spinner-32" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
-          </span>
-
-        </h1>
-      </div><!-- /.container -->
-    </div><!-- /.repohead -->
-
-    <div class="container">
-
-      <div class="repository-with-sidebar repo-container ">
-
-        <div class="repository-sidebar">
-            
-
-<div class="repo-nav repo-nav-full js-repository-container-pjax js-octicon-loaders">
-  <div class="repo-nav-contents">
-    <ul class="repo-menu">
-      <li class="tooltipped leftwards" title="Code">
-        <a href="/douglascrockford/JSON-js" aria-label="Code" class="js-selected-navigation-item selected" data-gotokey="c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_tags repo_branches /douglascrockford/JSON-js">
-          <span class="octicon octicon-code"></span> <span class="full-word">Code</span>
-          <img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>      </li>
-
-
-      <li class="tooltipped leftwards" title="Pull Requests"><a href="/douglascrockford/JSON-js/pulls" aria-label="Pull Requests" class="js-selected-navigation-item js-disable-pjax" data-gotokey="p" data-selected-links="repo_pulls /douglascrockford/JSON-js/pulls">
-            <span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
-            <span class='counter'>0</span>
-            <img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>      </li>
-
-
-        <li class="tooltipped leftwards" title="Wiki">
-          <a href="/douglascrockford/JSON-js/wiki" aria-label="Wiki" class="js-selected-navigation-item " data-pjax="true" data-selected-links="repo_wiki /douglascrockford/JSON-js/wiki">
-            <span class="octicon octicon-book"></span> <span class="full-word">Wiki</span>
-            <img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>        </li>
-    </ul>
-    <div class="repo-menu-separator"></div>
-    <ul class="repo-menu">
-
-      <li class="tooltipped leftwards" title="Pulse">
-        <a href="/douglascrockford/JSON-js/pulse" aria-label="Pulse" class="js-selected-navigation-item " data-pjax="true" data-selected-links="pulse /douglascrockford/JSON-js/pulse">
-          <span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
-          <img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>      </li>
-
-      <li class="tooltipped leftwards" title="Graphs">
-        <a href="/douglascrockford/JSON-js/graphs" aria-label="Graphs" class="js-selected-navigation-item " data-pjax="true" data-selected-links="repo_graphs repo_contributors /douglascrockford/JSON-js/graphs">
-          <span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
-          <img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>      </li>
-
-      <li class="tooltipped leftwards" title="Network">
-        <a href="/douglascrockford/JSON-js/network" aria-label="Network" class="js-selected-navigation-item js-disable-pjax" data-selected-links="repo_network /douglascrockford/JSON-js/network">
-          <span class="octicon octicon-git-branch"></span> <span class="full-word">Network</span>
-          <img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>      </li>
-    </ul>
-
-
-  </div>
-</div>
-
-            <div class="only-with-full-nav">
-              
-
-  
-
-<div class="clone-url open"
-  data-protocol-type="http"
-  data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=clone">
-  <h3><strong>HTTPS</strong> clone URL</h3>
-
-  <div class="clone-url-box">
-    <input type="text" class="clone js-url-field"
-           value="https://github.com/douglascrockford/JSON-js.git" readonly="readonly">
-
-    <span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/douglascrockford/JSON-js.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
-  </div>
-</div>
-
-  
-
-<div class="clone-url "
-  data-protocol-type="ssh"
-  data-url="/users/set_protocol?protocol_selector=ssh&amp;protocol_type=clone">
-  <h3><strong>SSH</strong> clone URL</h3>
-
-  <div class="clone-url-box">
-    <input type="text" class="clone js-url-field"
-           value="git@github.com:douglascrockford/JSON-js.git" readonly="readonly">
-
-    <span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="git@github.com:douglascrockford/JSON-js.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
-  </div>
-</div>
-
-  
-
-<div class="clone-url "
-  data-protocol-type="subversion"
-  data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=clone">
-  <h3><strong>Subversion</strong> checkout URL</h3>
-
-  <div class="clone-url-box">
-    <input type="text" class="clone js-url-field"
-           value="https://github.com/douglascrockford/JSON-js" readonly="readonly">
-
-    <span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/douglascrockford/JSON-js" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
-  </div>
-</div>
-
-
-
-<p class="clone-options">You can clone with
-    <a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>,
-    <a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>,
-    <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>,
-  and <a href="https://help.github.com/articles/which-remote-url-should-i-use">other methods.</a>
-</p>
-
-
-  <a href="http://windows.github.com" class="minibutton sidebar-button">
-    <span class="octicon octicon-device-desktop"></span>
-    Clone in Desktop
-  </a>
-
-                <a href="/douglascrockford/JSON-js/archive/master.zip"
-                   class="minibutton sidebar-button"
-                   title="Download this repository as a zip file"
-                   rel="nofollow">
-                  <span class="octicon octicon-cloud-download"></span>
-                  Download ZIP
-                </a>
-            </div>
-        </div><!-- /.repository-sidebar -->
-
-        <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
-          
-
-
-<!-- blob contrib key: blob_contributors:v21:5be543a0fd9a5d2d52ee291de4bb4b6a -->
-<!-- blob contrib frag key: views10/v8/blob_contributors:v21:5be543a0fd9a5d2d52ee291de4bb4b6a -->
-
-<p title="This is a placeholder element" class="js-history-link-replace hidden"></p>
-
-<a href="/douglascrockford/JSON-js/find/master" data-pjax data-hotkey="t" style="display:none">Show File Finder</a>
-
-<div class="file-navigation">
-  
-
-
-<div class="select-menu js-menu-container js-select-menu" >
-  <span class="minibutton select-menu-button js-menu-target" data-hotkey="w"
-    data-master-branch="master"
-    data-ref="master"
-    role="button" aria-label="Switch branches or tags" tabindex="0">
-    <span class="octicon octicon-git-branch"></span>
-    <i>branch:</i>
-    <span class="js-select-button">master</span>
-  </span>
-
-  <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
-
-    <div class="select-menu-modal">
-      <div class="select-menu-header">
-        <span class="select-menu-title">Switch branches/tags</span>
-        <span class="octicon octicon-remove-close js-menu-close"></span>
-      </div> <!-- /.select-menu-header -->
-
-      <div class="select-menu-filters">
-        <div class="select-menu-text-filter">
-          <input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Filter branches/tags">
-        </div>
-        <div class="select-menu-tabs">
-          <ul>
-            <li class="select-menu-tab">
-              <a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
-            </li>
-            <li class="select-menu-tab">
-              <a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
-            </li>
-          </ul>
-        </div><!-- /.select-menu-tabs -->
-      </div><!-- /.select-menu-filters -->
-
-      <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
-
-        <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
-
-
-            <div class="select-menu-item js-navigation-item selected">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/douglascrockford/JSON-js/blob/master/json2.js" class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target" data-name="master" data-skip-pjax="true" rel="nofollow" title="master">master</a>
-            </div> <!-- /.select-menu-item -->
-        </div>
-
-          <div class="select-menu-no-results">Nothing to show</div>
-      </div> <!-- /.select-menu-list -->
-
-      <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
-        <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
-
-
-        </div>
-
-        <div class="select-menu-no-results">Nothing to show</div>
-      </div> <!-- /.select-menu-list -->
-
-    </div> <!-- /.select-menu-modal -->
-  </div> <!-- /.select-menu-modal-holder -->
-</div> <!-- /.select-menu -->
-
-  <div class="breadcrumb">
-    <span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/douglascrockford/JSON-js" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">JSON-js</span></a></span></span><span class="separator"> / </span><strong class="final-path">json2.js</strong> <span class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="json2.js" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
-  </div>
-</div>
-
-
-  
-  <div class="commit file-history-tease">
-    <img class="main-avatar" height="24" src="https://secure.gravatar.com/avatar/e56473600eaf21d901269f09f63bd7db?s=140&amp;d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" width="24" />
-    <span class="author"><span rel="author">Douglas Crockford</span></span>
-    <time class="js-relative-date" datetime="2013-05-26T07:58:04-07:00" title="2013-05-26 07:58:04">May 26, 2013</time>
-    <div class="commit-title">
-        <a href="/douglascrockford/JSON-js/commit/e39db4b7e6249f04a195e7dd0840e610cc9e941e" class="message" data-pjax="true" title="hygiene">hygiene</a>
-    </div>
-
-    <div class="participation">
-      <p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>1</strong> contributor</a></p>
-      
-    </div>
-    <div id="blob_contributors_box" style="display:none">
-      <h2 class="facebox-header">Users who have contributed to this file</h2>
-      <ul class="facebox-user-list">
-        <li class="facebox-user-list-item">
-          <img height="24" src="https://secure.gravatar.com/avatar/b871de839c31ddb1d9db8e33e0cb88a6?s=140&amp;d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" width="24" />
-          <a href="/douglascrockford">douglascrockford</a>
-        </li>
-      </ul>
-    </div>
-  </div>
-
-
-<div id="files" class="bubble">
-  <div class="file">
-    <div class="meta">
-      <div class="info">
-        <span class="icon"><b class="octicon octicon-file-text"></b></span>
-        <span class="mode" title="File Mode">file</span>
-          <span>487 lines (369 sloc)</span>
-        <span>17.524 kb</span>
-      </div>
-      <div class="actions">
-        <div class="button-group">
-                <a class="minibutton tooltipped leftwards"
-                   title="Clicking this button will automatically fork this project so you can edit the file"
-                   href="/douglascrockford/JSON-js/edit/master/json2.js"
-                   data-method="post" rel="nofollow">Edit</a>
-          <a href="/douglascrockford/JSON-js/raw/master/json2.js" class="button minibutton " id="raw-url">Raw</a>
-            <a href="/douglascrockford/JSON-js/blame/master/json2.js" class="button minibutton ">Blame</a>
-          <a href="/douglascrockford/JSON-js/commits/master/json2.js" class="button minibutton " rel="nofollow">History</a>
-        </div><!-- /.button-group -->
-            <a class="minibutton danger empty-icon tooltipped downwards"
-               href="/douglascrockford/JSON-js/delete/master/json2.js"
-               title="Fork this project and delete file"
-               data-method="post" data-test-id="delete-blob-file" rel="nofollow">
-            Delete
-          </a>
-      </div><!-- /.actions -->
-
-    </div>
-        <div class="blob-wrapper data type-javascript js-blob-data">
-        <table class="file-code file-diff">
-          <tr class="file-code-line">
-            <td class="blob-line-nums">
-              <span id="L1" rel="#L1">1</span>
-<span id="L2" rel="#L2">2</span>
-<span id="L3" rel="#L3">3</span>
-<span id="L4" rel="#L4">4</span>
-<span id="L5" rel="#L5">5</span>
-<span id="L6" rel="#L6">6</span>
-<span id="L7" rel="#L7">7</span>
-<span id="L8" rel="#L8">8</span>
-<span id="L9" rel="#L9">9</span>
-<span id="L10" rel="#L10">10</span>
-<span id="L11" rel="#L11">11</span>
-<span id="L12" rel="#L12">12</span>
-<span id="L13" rel="#L13">13</span>
-<span id="L14" rel="#L14">14</span>
-<span id="L15" rel="#L15">15</span>
-<span id="L16" rel="#L16">16</span>
-<span id="L17" rel="#L17">17</span>
-<span id="L18" rel="#L18">18</span>
-<span id="L19" rel="#L19">19</span>
-<span id="L20" rel="#L20">20</span>
-<span id="L21" rel="#L21">21</span>
-<span id="L22" rel="#L22">22</span>
-<span id="L23" rel="#L23">23</span>
-<span id="L24" rel="#L24">24</span>
-<span id="L25" rel="#L25">25</span>
-<span id="L26" rel="#L26">26</span>
-<span id="L27" rel="#L27">27</span>
-<span id="L28" rel="#L28">28</span>
-<span id="L29" rel="#L29">29</span>
-<span id="L30" rel="#L30">30</span>
-<span id="L31" rel="#L31">31</span>
-<span id="L32" rel="#L32">32</span>
-<span id="L33" rel="#L33">33</span>
-<span id="L34" rel="#L34">34</span>
-<span id="L35" rel="#L35">35</span>
-<span id="L36" rel="#L36">36</span>
-<span id="L37" rel="#L37">37</span>
-<span id="L38" rel="#L38">38</span>
-<span id="L39" rel="#L39">39</span>
-<span id="L40" rel="#L40">40</span>
-<span id="L41" rel="#L41">41</span>
-<span id="L42" rel="#L42">42</span>
-<span id="L43" rel="#L43">43</span>
-<span id="L44" rel="#L44">44</span>
-<span id="L45" rel="#L45">45</span>
-<span id="L46" rel="#L46">46</span>
-<span id="L47" rel="#L47">47</span>
-<span id="L48" rel="#L48">48</span>
-<span id="L49" rel="#L49">49</span>
-<span id="L50" rel="#L50">50</span>
-<span id="L51" rel="#L51">51</span>
-<span id="L52" rel="#L52">52</span>
-<span id="L53" rel="#L53">53</span>
-<span id="L54" rel="#L54">54</span>
-<span id="L55" rel="#L55">55</span>
-<span id="L56" rel="#L56">56</span>
-<span id="L57" rel="#L57">57</span>
-<span id="L58" rel="#L58">58</span>
-<span id="L59" rel="#L59">59</span>
-<span id="L60" rel="#L60">60</span>
-<span id="L61" rel="#L61">61</span>
-<span id="L62" rel="#L62">62</span>
-<span id="L63" rel="#L63">63</span>
-<span id="L64" rel="#L64">64</span>
-<span id="L65" rel="#L65">65</span>
-<span id="L66" rel="#L66">66</span>
-<span id="L67" rel="#L67">67</span>
-<span id="L68" rel="#L68">68</span>
-<span id="L69" rel="#L69">69</span>
-<span id="L70" rel="#L70">70</span>
-<span id="L71" rel="#L71">71</span>
-<span id="L72" rel="#L72">72</span>
-<span id="L73" rel="#L73">73</span>
-<span id="L74" rel="#L74">74</span>
-<span id="L75" rel="#L75">75</span>
-<span id="L76" rel="#L76">76</span>
-<span id="L77" rel="#L77">77</span>
-<span id="L78" rel="#L78">78</span>
-<span id="L79" rel="#L79">79</span>
-<span id="L80" rel="#L80">80</span>
-<span id="L81" rel="#L81">81</span>
-<span id="L82" rel="#L82">82</span>
-<span id="L83" rel="#L83">83</span>
-<span id="L84" rel="#L84">84</span>
-<span id="L85" rel="#L85">85</span>
-<span id="L86" rel="#L86">86</span>
-<span id="L87" rel="#L87">87</span>
-<span id="L88" rel="#L88">88</span>
-<span id="L89" rel="#L89">89</span>
-<span id="L90" rel="#L90">90</span>
-<span id="L91" rel="#L91">91</span>
-<span id="L92" rel="#L92">92</span>
-<span id="L93" rel="#L93">93</span>
-<span id="L94" rel="#L94">94</span>
-<span id="L95" rel="#L95">95</span>
-<span id="L96" rel="#L96">96</span>
-<span id="L97" rel="#L97">97</span>
-<span id="L98" rel="#L98">98</span>
-<span id="L99" rel="#L99">99</span>
-<span id="L100" rel="#L100">100</span>
-<span id="L101" rel="#L101">101</span>
-<span id="L102" rel="#L102">102</span>
-<span id="L103" rel="#L103">103</span>
-<span id="L104" rel="#L104">104</span>
-<span id="L105" rel="#L105">105</span>
-<span id="L106" rel="#L106">106</span>
-<span id="L107" rel="#L107">107</span>
-<span id="L108" rel="#L108">108</span>
-<span id="L109" rel="#L109">109</span>
-<span id="L110" rel="#L110">110</span>
-<span id="L111" rel="#L111">111</span>
-<span id="L112" rel="#L112">112</span>
-<span id="L113" rel="#L113">113</span>
-<span id="L114" rel="#L114">114</span>
-<span id="L115" rel="#L115">115</span>
-<span id="L116" rel="#L116">116</span>
-<span id="L117" rel="#L117">117</span>
-<span id="L118" rel="#L118">118</span>
-<span id="L119" rel="#L119">119</span>
-<span id="L120" rel="#L120">120</span>
-<span id="L121" rel="#L121">121</span>
-<span id="L122" rel="#L122">122</span>
-<span id="L123" rel="#L123">123</span>
-<span id="L124" rel="#L124">124</span>
-<span id="L125" rel="#L125">125</span>
-<span id="L126" rel="#L126">126</span>
-<span id="L127" rel="#L127">127</span>
-<span id="L128" rel="#L128">128</span>
-<span id="L129" rel="#L129">129</span>
-<span id="L130" rel="#L130">130</span>
-<span id="L131" rel="#L131">131</span>
-<span id="L132" rel="#L132">132</span>
-<span id="L133" rel="#L133">133</span>
-<span id="L134" rel="#L134">134</span>
-<span id="L135" rel="#L135">135</span>
-<span id="L136" rel="#L136">136</span>
-<span id="L137" rel="#L137">137</span>
-<span id="L138" rel="#L138">138</span>
-<span id="L139" rel="#L139">139</span>
-<span id="L140" rel="#L140">140</span>
-<span id="L141" rel="#L141">141</span>
-<span id="L142" rel="#L142">142</span>
-<span id="L143" rel="#L143">143</span>
-<span id="L144" rel="#L144">144</span>
-<span id="L145" rel="#L145">145</span>
-<span id="L146" rel="#L146">146</span>
-<span id="L147" rel="#L147">147</span>
-<span id="L148" rel="#L148">148</span>
-<span id="L149" rel="#L149">149</span>
-<span id="L150" rel="#L150">150</span>
-<span id="L151" rel="#L151">151</span>
-<span id="L152" rel="#L152">152</span>
-<span id="L153" rel="#L153">153</span>
-<span id="L154" rel="#L154">154</span>
-<span id="L155" rel="#L155">155</span>
-<span id="L156" rel="#L156">156</span>
-<span id="L157" rel="#L157">157</span>
-<span id="L158" rel="#L158">158</span>
-<span id="L159" rel="#L159">159</span>
-<span id="L160" rel="#L160">160</span>
-<span id="L161" rel="#L161">161</span>
-<span id="L162" rel="#L162">162</span>
-<span id="L163" rel="#L163">163</span>
-<span id="L164" rel="#L164">164</span>
-<span id="L165" rel="#L165">165</span>
-<span id="L166" rel="#L166">166</span>
-<span id="L167" rel="#L167">167</span>
-<span id="L168" rel="#L168">168</span>
-<span id="L169" rel="#L169">169</span>
-<span id="L170" rel="#L170">170</span>
-<span id="L171" rel="#L171">171</span>
-<span id="L172" rel="#L172">172</span>
-<span id="L173" rel="#L173">173</span>
-<span id="L174" rel="#L174">174</span>
-<span id="L175" rel="#L175">175</span>
-<span id="L176" rel="#L176">176</span>
-<span id="L177" rel="#L177">177</span>
-<span id="L178" rel="#L178">178</span>
-<span id="L179" rel="#L179">179</span>
-<span id="L180" rel="#L180">180</span>
-<span id="L181" rel="#L181">181</span>
-<span id="L182" rel="#L182">182</span>
-<span id="L183" rel="#L183">183</span>
-<span id="L184" rel="#L184">184</span>
-<span id="L185" rel="#L185">185</span>
-<span id="L186" rel="#L186">186</span>
-<span id="L187" rel="#L187">187</span>
-<span id="L188" rel="#L188">188</span>
-<span id="L189" rel="#L189">189</span>
-<span id="L190" rel="#L190">190</span>
-<span id="L191" rel="#L191">191</span>
-<span id="L192" rel="#L192">192</span>
-<span id="L193" rel="#L193">193</span>
-<span id="L194" rel="#L194">194</span>
-<span id="L195" rel="#L195">195</span>
-<span id="L196" rel="#L196">196</span>
-<span id="L197" rel="#L197">197</span>
-<span id="L198" rel="#L198">198</span>
-<span id="L199" rel="#L199">199</span>
-<span id="L200" rel="#L200">200</span>
-<span id="L201" rel="#L201">201</span>
-<span id="L202" rel="#L202">202</span>
-<span id="L203" rel="#L203">203</span>
-<span id="L204" rel="#L204">204</span>
-<span id="L205" rel="#L205">205</span>
-<span id="L206" rel="#L206">206</span>
-<span id="L207" rel="#L207">207</span>
-<span id="L208" rel="#L208">208</span>
-<span id="L209" rel="#L209">209</span>
-<span id="L210" rel="#L210">210</span>
-<span id="L211" rel="#L211">211</span>
-<span id="L212" rel="#L212">212</span>
-<span id="L213" rel="#L213">213</span>
-<span id="L214" rel="#L214">214</span>
-<span id="L215" rel="#L215">215</span>
-<span id="L216" rel="#L216">216</span>
-<span id="L217" rel="#L217">217</span>
-<span id="L218" rel="#L218">218</span>
-<span id="L219" rel="#L219">219</span>
-<span id="L220" rel="#L220">220</span>
-<span id="L221" rel="#L221">221</span>
-<span id="L222" rel="#L222">222</span>
-<span id="L223" rel="#L223">223</span>
-<span id="L224" rel="#L224">224</span>
-<span id="L225" rel="#L225">225</span>
-<span id="L226" rel="#L226">226</span>
-<span id="L227" rel="#L227">227</span>
-<span id="L228" rel="#L228">228</span>
-<span id="L229" rel="#L229">229</span>
-<span id="L230" rel="#L230">230</span>
-<span id="L231" rel="#L231">231</span>
-<span id="L232" rel="#L232">232</span>
-<span id="L233" rel="#L233">233</span>
-<span id="L234" rel="#L234">234</span>
-<span id="L235" rel="#L235">235</span>
-<span id="L236" rel="#L236">236</span>
-<span id="L237" rel="#L237">237</span>
-<span id="L238" rel="#L238">238</span>
-<span id="L239" rel="#L239">239</span>
-<span id="L240" rel="#L240">240</span>
-<span id="L241" rel="#L241">241</span>
-<span id="L242" rel="#L242">242</span>
-<span id="L243" rel="#L243">243</span>
-<span id="L244" rel="#L244">244</span>
-<span id="L245" rel="#L245">245</span>
-<span id="L246" rel="#L246">246</span>
-<span id="L247" rel="#L247">247</span>
-<span id="L248" rel="#L248">248</span>
-<span id="L249" rel="#L249">249</span>
-<span id="L250" rel="#L250">250</span>
-<span id="L251" rel="#L251">251</span>
-<span id="L252" rel="#L252">252</span>
-<span id="L253" rel="#L253">253</span>
-<span id="L254" rel="#L254">254</span>
-<span id="L255" rel="#L255">255</span>
-<span id="L256" rel="#L256">256</span>
-<span id="L257" rel="#L257">257</span>
-<span id="L258" rel="#L258">258</span>
-<span id="L259" rel="#L259">259</span>
-<span id="L260" rel="#L260">260</span>
-<span id="L261" rel="#L261">261</span>
-<span id="L262" rel="#L262">262</span>
-<span id="L263" rel="#L263">263</span>
-<span id="L264" rel="#L264">264</span>
-<span id="L265" rel="#L265">265</span>
-<span id="L266" rel="#L266">266</span>
-<span id="L267" rel="#L267">267</span>
-<span id="L268" rel="#L268">268</span>
-<span id="L269" rel="#L269">269</span>
-<span id="L270" rel="#L270">270</span>
-<span id="L271" rel="#L271">271</span>
-<span id="L272" rel="#L272">272</span>
-<span id="L273" rel="#L273">273</span>
-<span id="L274" rel="#L274">274</span>
-<span id="L275" rel="#L275">275</span>
-<span id="L276" rel="#L276">276</span>
-<span id="L277" rel="#L277">277</span>
-<span id="L278" rel="#L278">278</span>
-<span id="L279" rel="#L279">279</span>
-<span id="L280" rel="#L280">280</span>
-<span id="L281" rel="#L281">281</span>
-<span id="L282" rel="#L282">282</span>
-<span id="L283" rel="#L283">283</span>
-<span id="L284" rel="#L284">284</span>
-<span id="L285" rel="#L285">285</span>
-<span id="L286" rel="#L286">286</span>
-<span id="L287" rel="#L287">287</span>
-<span id="L288" rel="#L288">288</span>
-<span id="L289" rel="#L289">289</span>
-<span id="L290" rel="#L290">290</span>
-<span id="L291" rel="#L291">291</span>
-<span id="L292" rel="#L292">292</span>
-<span id="L293" rel="#L293">293</span>
-<span id="L294" rel="#L294">294</span>
-<span id="L295" rel="#L295">295</span>
-<span id="L296" rel="#L296">296</span>
-<span id="L297" rel="#L297">297</span>
-<span id="L298" rel="#L298">298</span>
-<span id="L299" rel="#L299">299</span>
-<span id="L300" rel="#L300">300</span>
-<span id="L301" rel="#L301">301</span>
-<span id="L302" rel="#L302">302</span>
-<span id="L303" rel="#L303">303</span>
-<span id="L304" rel="#L304">304</span>
-<span id="L305" rel="#L305">305</span>
-<span id="L306" rel="#L306">306</span>
-<span id="L307" rel="#L307">307</span>
-<span id="L308" rel="#L308">308</span>
-<span id="L309" rel="#L309">309</span>
-<span id="L310" rel="#L310">310</span>
-<span id="L311" rel="#L311">311</span>
-<span id="L312" rel="#L312">312</span>
-<span id="L313" rel="#L313">313</span>
-<span id="L314" rel="#L314">314</span>
-<span id="L315" rel="#L315">315</span>
-<span id="L316" rel="#L316">316</span>
-<span id="L317" rel="#L317">317</span>
-<span id="L318" rel="#L318">318</span>
-<span id="L319" rel="#L319">319</span>
-<span id="L320" rel="#L320">320</span>
-<span id="L321" rel="#L321">321</span>
-<span id="L322" rel="#L322">322</span>
-<span id="L323" rel="#L323">323</span>
-<span id="L324" rel="#L324">324</span>
-<span id="L325" rel="#L325">325</span>
-<span id="L326" rel="#L326">326</span>
-<span id="L327" rel="#L327">327</span>
-<span id="L328" rel="#L328">328</span>
-<span id="L329" rel="#L329">329</span>
-<span id="L330" rel="#L330">330</span>
-<span id="L331" rel="#L331">331</span>
-<span id="L332" rel="#L332">332</span>
-<span id="L333" rel="#L333">333</span>
-<span id="L334" rel="#L334">334</span>
-<span id="L335" rel="#L335">335</span>
-<span id="L336" rel="#L336">336</span>
-<span id="L337" rel="#L337">337</span>
-<span id="L338" rel="#L338">338</span>
-<span id="L339" rel="#L339">339</span>
-<span id="L340" rel="#L340">340</span>
-<span id="L341" rel="#L341">341</span>
-<span id="L342" rel="#L342">342</span>
-<span id="L343" rel="#L343">343</span>
-<span id="L344" rel="#L344">344</span>
-<span id="L345" rel="#L345">345</span>
-<span id="L346" rel="#L346">346</span>
-<span id="L347" rel="#L347">347</span>
-<span id="L348" rel="#L348">348</span>
-<span id="L349" rel="#L349">349</span>
-<span id="L350" rel="#L350">350</span>
-<span id="L351" rel="#L351">351</span>
-<span id="L352" rel="#L352">352</span>
-<span id="L353" rel="#L353">353</span>
-<span id="L354" rel="#L354">354</span>
-<span id="L355" rel="#L355">355</span>
-<span id="L356" rel="#L356">356</span>
-<span id="L357" rel="#L357">357</span>
-<span id="L358" rel="#L358">358</span>
-<span id="L359" rel="#L359">359</span>
-<span id="L360" rel="#L360">360</span>
-<span id="L361" rel="#L361">361</span>
-<span id="L362" rel="#L362">362</span>
-<span id="L363" rel="#L363">363</span>
-<span id="L364" rel="#L364">364</span>
-<span id="L365" rel="#L365">365</span>
-<span id="L366" rel="#L366">366</span>
-<span id="L367" rel="#L367">367</span>
-<span id="L368" rel="#L368">368</span>
-<span id="L369" rel="#L369">369</span>
-<span id="L370" rel="#L370">370</span>
-<span id="L371" rel="#L371">371</span>
-<span id="L372" rel="#L372">372</span>
-<span id="L373" rel="#L373">373</span>
-<span id="L374" rel="#L374">374</span>
-<span id="L375" rel="#L375">375</span>
-<span id="L376" rel="#L376">376</span>
-<span id="L377" rel="#L377">377</span>
-<span id="L378" rel="#L378">378</span>
-<span id="L379" rel="#L379">379</span>
-<span id="L380" rel="#L380">380</span>
-<span id="L381" rel="#L381">381</span>
-<span id="L382" rel="#L382">382</span>
-<span id="L383" rel="#L383">383</span>
-<span id="L384" rel="#L384">384</span>
-<span id="L385" rel="#L385">385</span>
-<span id="L386" rel="#L386">386</span>
-<span id="L387" rel="#L387">387</span>
-<span id="L388" rel="#L388">388</span>
-<span id="L389" rel="#L389">389</span>
-<span id="L390" rel="#L390">390</span>
-<span id="L391" rel="#L391">391</span>
-<span id="L392" rel="#L392">392</span>
-<span id="L393" rel="#L393">393</span>
-<span id="L394" rel="#L394">394</span>
-<span id="L395" rel="#L395">395</span>
-<span id="L396" rel="#L396">396</span>
-<span id="L397" rel="#L397">397</span>
-<span id="L398" rel="#L398">398</span>
-<span id="L399" rel="#L399">399</span>
-<span id="L400" rel="#L400">400</span>
-<span id="L401" rel="#L401">401</span>
-<span id="L402" rel="#L402">402</span>
-<span id="L403" rel="#L403">403</span>
-<span id="L404" rel="#L404">404</span>
-<span id="L405" rel="#L405">405</span>
-<span id="L406" rel="#L406">406</span>
-<span id="L407" rel="#L407">407</span>
-<span id="L408" rel="#L408">408</span>
-<span id="L409" rel="#L409">409</span>
-<span id="L410" rel="#L410">410</span>
-<span id="L411" rel="#L411">411</span>
-<span id="L412" rel="#L412">412</span>
-<span id="L413" rel="#L413">413</span>
-<span id="L414" rel="#L414">414</span>
-<span id="L415" rel="#L415">415</span>
-<span id="L416" rel="#L416">416</span>
-<span id="L417" rel="#L417">417</span>
-<span id="L418" rel="#L418">418</span>
-<span id="L419" rel="#L419">419</span>
-<span id="L420" rel="#L420">420</span>
-<span id="L421" rel="#L421">421</span>
-<span id="L422" rel="#L422">422</span>
-<span id="L423" rel="#L423">423</span>
-<span id="L424" rel="#L424">424</span>
-<span id="L425" rel="#L425">425</span>
-<span id="L426" rel="#L426">426</span>
-<span id="L427" rel="#L427">427</span>
-<span id="L428" rel="#L428">428</span>
-<span id="L429" rel="#L429">429</span>
-<span id="L430" rel="#L430">430</span>
-<span id="L431" rel="#L431">431</span>
-<span id="L432" rel="#L432">432</span>
-<span id="L433" rel="#L433">433</span>
-<span id="L434" rel="#L434">434</span>
-<span id="L435" rel="#L435">435</span>
-<span id="L436" rel="#L436">436</span>
-<span id="L437" rel="#L437">437</span>
-<span id="L438" rel="#L438">438</span>
-<span id="L439" rel="#L439">439</span>
-<span id="L440" rel="#L440">440</span>
-<span id="L441" rel="#L441">441</span>
-<span id="L442" rel="#L442">442</span>
-<span id="L443" rel="#L443">443</span>
-<span id="L444" rel="#L444">444</span>
-<span id="L445" rel="#L445">445</span>
-<span id="L446" rel="#L446">446</span>
-<span id="L447" rel="#L447">447</span>
-<span id="L448" rel="#L448">448</span>
-<span id="L449" rel="#L449">449</span>
-<span id="L450" rel="#L450">450</span>
-<span id="L451" rel="#L451">451</span>
-<span id="L452" rel="#L452">452</span>
-<span id="L453" rel="#L453">453</span>
-<span id="L454" rel="#L454">454</span>
-<span id="L455" rel="#L455">455</span>
-<span id="L456" rel="#L456">456</span>
-<span id="L457" rel="#L457">457</span>
-<span id="L458" rel="#L458">458</span>
-<span id="L459" rel="#L459">459</span>
-<span id="L460" rel="#L460">460</span>
-<span id="L461" rel="#L461">461</span>
-<span id="L462" rel="#L462">462</span>
-<span id="L463" rel="#L463">463</span>
-<span id="L464" rel="#L464">464</span>
-<span id="L465" rel="#L465">465</span>
-<span id="L466" rel="#L466">466</span>
-<span id="L467" rel="#L467">467</span>
-<span id="L468" rel="#L468">468</span>
-<span id="L469" rel="#L469">469</span>
-<span id="L470" rel="#L470">470</span>
-<span id="L471" rel="#L471">471</span>
-<span id="L472" rel="#L472">472</span>
-<span id="L473" rel="#L473">473</span>
-<span id="L474" rel="#L474">474</span>
-<span id="L475" rel="#L475">475</span>
-<span id="L476" rel="#L476">476</span>
-<span id="L477" rel="#L477">477</span>
-<span id="L478" rel="#L478">478</span>
-<span id="L479" rel="#L479">479</span>
-<span id="L480" rel="#L480">480</span>
-<span id="L481" rel="#L481">481</span>
-<span id="L482" rel="#L482">482</span>
-<span id="L483" rel="#L483">483</span>
-<span id="L484" rel="#L484">484</span>
-<span id="L485" rel="#L485">485</span>
-<span id="L486" rel="#L486">486</span>
-
-            </td>
-            <td class="blob-line-code">
-                    <div class="highlight"><pre><div class='line' id='LC1'><span class="cm">/*</span></div><div class='line' id='LC2'><span class="cm">    json2.js</span></div><div class='line' id='LC3'><span class="cm">    2013-05-26</span></div><div class='line' id='LC4'><br/></div><div class='line' id='LC5'><span class="cm">    Public Domain.</span></div><div class='line' id='LC6'><br/></div><div class='line' id='LC7'><span class="cm">    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.</span></div><div class='line' id='LC8'><br/></div><div class='line' id='LC9'><span class="cm">    See http://www.JSON.org/js.html</span></div><div class='line' id='LC10'><br/></div><div class='line' id='LC11'><br/></div><div class='line' id='LC12'><span class="cm">    This code should be minified before deployment.</span></div><div class='line' id='LC13'><span class="cm">    See http://javascript.crockford.com/jsmin.html</span></div><div class='line' id='LC14'><br/></div><div class='line' i
 d='LC15'><span class="cm">    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO</span></div><div class='line' id='LC16'><span class="cm">    NOT CONTROL.</span></div><div class='line' id='LC17'><br/></div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'><span class="cm">    This file creates a global JSON object containing two methods: stringify</span></div><div class='line' id='LC20'><span class="cm">    and parse.</span></div><div class='line' id='LC21'><br/></div><div class='line' id='LC22'><span class="cm">        JSON.stringify(value, replacer, space)</span></div><div class='line' id='LC23'><span class="cm">            value       any JavaScript value, usually an object or array.</span></div><div class='line' id='LC24'><br/></div><div class='line' id='LC25'><span class="cm">            replacer    an optional parameter that determines how object</span></div><div class='line' id='LC26'><span class="cm">                        values are
  stringified for objects. It can be a</span></div><div class='line' id='LC27'><span class="cm">                        function or an array of strings.</span></div><div class='line' id='LC28'><br/></div><div class='line' id='LC29'><span class="cm">            space       an optional parameter that specifies the indentation</span></div><div class='line' id='LC30'><span class="cm">                        of nested structures. If it is omitted, the text will</span></div><div class='line' id='LC31'><span class="cm">                        be packed without extra whitespace. If it is a number,</span></div><div class='line' id='LC32'><span class="cm">                        it will specify the number of spaces to indent at each</span></div><div class='line' id='LC33'><span class="cm">                        level. If it is a string (such as &#39;\t&#39; or &#39;&amp;nbsp;&#39;),</span></div><div class='line' id='LC34'><span class="cm">                        it contains the characters use
 d to indent at each level.</span></div><div class='line' id='LC35'><br/></div><div class='line' id='LC36'><span class="cm">            This method produces a JSON text from a JavaScript value.</span></div><div class='line' id='LC37'><br/></div><div class='line' id='LC38'><span class="cm">            When an object value is found, if the object contains a toJSON</span></div><div class='line' id='LC39'><span class="cm">            method, its toJSON method will be called and the result will be</span></div><div class='line' id='LC40'><span class="cm">            stringified. A toJSON method does not serialize: it returns the</span></div><div class='line' id='LC41'><span class="cm">            value represented by the name/value pair that should be serialized,</span></div><div class='line' id='LC42'><span class="cm">            or undefined if nothing should be serialized. The toJSON method</span></div><div class='line' id='LC43'><span class="cm">            will be passed the key assoc
 iated with the value, and this will be</span></div><div class='line' id='LC44'><span class="cm">            bound to the value</span></div><div class='line' id='LC45'><br/></div><div class='line' id='LC46'><span class="cm">            For example, this would serialize Dates as ISO strings.</span></div><div class='line' id='LC47'><br/></div><div class='line' id='LC48'><span class="cm">                Date.prototype.toJSON = function (key) {</span></div><div class='line' id='LC49'><span class="cm">                    function f(n) {</span></div><div class='line' id='LC50'><span class="cm">                        // Format integers to have at least two digits.</span></div><div class='line' id='LC51'><span class="cm">                        return n &lt; 10 ? &#39;0&#39; + n : n;</span></div><div class='line' id='LC52'><span class="cm">                    }</span></div><div class='line' id='LC53'><br/></div><div class='line' id='LC54'><span class="cm">                    return this.get
 UTCFullYear()   + &#39;-&#39; +</span></div><div class='line' id='LC55'><span class="cm">                         f(this.getUTCMonth() + 1) + &#39;-&#39; +</span></div><div class='line' id='LC56'><span class="cm">                         f(this.getUTCDate())      + &#39;T&#39; +</span></div><div class='line' id='LC57'><span class="cm">                         f(this.getUTCHours())     + &#39;:&#39; +</span></div><div class='line' id='LC58'><span class="cm">                         f(this.getUTCMinutes())   + &#39;:&#39; +</span></div><div class='line' id='LC59'><span class="cm">                         f(this.getUTCSeconds())   + &#39;Z&#39;;</span></div><div class='line' id='LC60'><span class="cm">                };</span></div><div class='line' id='LC61'><br/></div><div class='line' id='LC62'><span class="cm">            You can provide an optional replacer method. It will be passed the</span></div><div class='line' id='LC63'><span class="cm">            key and value of each memb
 er, with this bound to the containing</span></div><div class='line' id='LC64'><span class="cm">            object. The value that is returned from your method will be</span></div><div class='line' id='LC65'><span class="cm">            serialized. If your method returns undefined, then the member will</span></div><div class='line' id='LC66'><span class="cm">            be excluded from the serialization.</span></div><div class='line' id='LC67'><br/></div><div class='line' id='LC68'><span class="cm">            If the replacer parameter is an array of strings, then it will be</span></div><div class='line' id='LC69'><span class="cm">            used to select the members to be serialized. It filters the results</span></div><div class='line' id='LC70'><span class="cm">            such that only members with keys listed in the replacer array are</span></div><div class='line' id='LC71'><span class="cm">            stringified.</span></div><div class='line' id='LC72'><br/></div><div class
 ='line' id='LC73'><span class="cm">            Values that do not have JSON representations, such as undefined or</span></div><div class='line' id='LC74'><span class="cm">            functions, will not be serialized. Such values in objects will be</span></div><div class='line' id='LC75'><span class="cm">            dropped; in arrays they will be replaced with null. You can use</span></div><div class='line' id='LC76'><span class="cm">            a replacer function to replace those with JSON values.</span></div><div class='line' id='LC77'><span class="cm">            JSON.stringify(undefined) returns undefined.</span></div><div class='line' id='LC78'><br/></div><div class='line' id='LC79'><span class="cm">            The optional space parameter produces a stringification of the</span></div><div class='line' id='LC80'><span class="cm">            value that is filled with line breaks and indentation to make it</span></div><div class='line' id='LC81'><span class="cm">            eas
 ier to read.</span></div><div class='line' id='LC82'><br/></div><div class='line' id='LC83'><span class="cm">            If the space parameter is a non-empty string, then that string will</span></div><div class='line' id='LC84'><span class="cm">            be used for indentation. If the space parameter is a number, then</span></div><div class='line' id='LC85'><span class="cm">            the indentation will be that many spaces.</span></div><div class='line' id='LC86'><br/></div><div class='line' id='LC87'><span class="cm">            Example:</span></div><div class='line' id='LC88'><br/></div><div class='line' id='LC89'><span class="cm">            text = JSON.stringify([&#39;e&#39;, {pluribus: &#39;unum&#39;}]);</span></div><div class='line' id='LC90'><span class="cm">            // text is &#39;[&quot;e&quot;,{&quot;pluribus&quot;:&quot;unum&quot;}]&#39;</span></div><div class='line' id='LC91'><br/></div><div class='line' id='LC92'><br/></div><div class='line' id='LC93'><span c
 lass="cm">            text = JSON.stringify([&#39;e&#39;, {pluribus: &#39;unum&#39;}], null, &#39;\t&#39;);</span></div><div class='line' id='LC94'><span class="cm">            // text is &#39;[\n\t&quot;e&quot;,\n\t{\n\t\t&quot;pluribus&quot;: &quot;unum&quot;\n\t}\n]&#39;</span></div><div class='line' id='LC95'><br/></div><div class='line' id='LC96'><span class="cm">            text = JSON.stringify([new Date()], function (key, value) {</span></div><div class='line' id='LC97'><span class="cm">                return this[key] instanceof Date ?</span></div><div class='line' id='LC98'><span class="cm">                    &#39;Date(&#39; + this[key] + &#39;)&#39; : value;</span></div><div class='line' id='LC99'><span class="cm">            });</span></div><div class='line' id='LC100'><span class="cm">            // text is &#39;[&quot;Date(---current time---)&quot;]&#39;</span></div><div class='line' id='LC101'><br/></div><div class='line' id='LC102'><br/></div><div class='line' id='L
 C103'><span class="cm">        JSON.parse(text, reviver)</span></div><div class='line' id='LC104'><span class="cm">            This method parses a JSON text to produce an object or array.</span></div><div class='line' id='LC105'><span class="cm">            It can throw a SyntaxError exception.</span></div><div class='line' id='LC106'><br/></div><div class='line' id='LC107'><span class="cm">            The optional reviver parameter is a function that can filter and</span></div><div class='line' id='LC108'><span class="cm">            transform the results. It receives each of the keys and values,</span></div><div class='line' id='LC109'><span class="cm">            and its return value is used instead of the original value.</span></div><div class='line' id='LC110'><span class="cm">            If it returns what it received, then the structure is not modified.</span></div><div class='line' id='LC111'><span class="cm">            If it returns undefined then the member is deleted.</
 span></div><div class='line' id='LC112'><br/></div><div class='line' id='LC113'><span class="cm">            Example:</span></div><div class='line' id='LC114'><br/></div><div class='line' id='LC115'><span class="cm">            // Parse the text. Values that look like ISO date strings will</span></div><div class='line' id='LC116'><span class="cm">            // be converted to Date objects.</span></div><div class='line' id='LC117'><br/></div><div class='line' id='LC118'><span class="cm">            myData = JSON.parse(text, function (key, value) {</span></div><div class='line' id='LC119'><span class="cm">                var a;</span></div><div class='line' id='LC120'><span class="cm">                if (typeof value === &#39;string&#39;) {</span></div><div class='line' id='LC121'><span class="cm">                    a =</span></div><div class='line' id='LC122'><span class="cm">/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);</span></div><div class='line' i
 d='LC123'><span class="cm">                    if (a) {</span></div><div class='line' id='LC124'><span class="cm">                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],</span></div><div class='line' id='LC125'><span class="cm">                            +a[5], +a[6]));</span></div><div class='line' id='LC126'><span class="cm">                    }</span></div><div class='line' id='LC127'><span class="cm">                }</span></div><div class='line' id='LC128'><span class="cm">                return value;</span></div><div class='line' id='LC129'><span class="cm">            });</span></div><div class='line' id='LC130'><br/></div><div class='line' id='LC131'><span class="cm">            myData = JSON.parse(&#39;[&quot;Date(09/09/2001)&quot;]&#39;, function (key, value) {</span></div><div class='line' id='LC132'><span class="cm">                var d;</span></div><div class='line' id='LC133'><span class="cm">                if (typeof value === &#39;strin
 g&#39; &amp;&amp;</span></div><div class='line' id='LC134'><span class="cm">                        value.slice(0, 5) === &#39;Date(&#39; &amp;&amp;</span></div><div class='line' id='LC135'><span class="cm">                        value.slice(-1) === &#39;)&#39;) {</span></div><div class='line' id='LC136'><span class="cm">                    d = new Date(value.slice(5, -1));</span></div><div class='line' id='LC137'><span class="cm">                    if (d) {</span></div><div class='line' id='LC138'><span class="cm">                        return d;</span></div><div class='line' id='LC139'><span class="cm">                    }</span></div><div class='line' id='LC140'><span class="cm">                }</span></div><div class='line' id='LC141'><span class="cm">                return value;</span></div><div class='line' id='LC142'><span class="cm">            });</span></div><div class='line' id='LC143'><br/></div><div class='line' id='LC144'><br/></div><div class='line' id='LC145'><
 span class="cm">    This is a reference implementation. You are free to copy, modify, or</span></div><div class='line' id='LC146'><span class="cm">    redistribute.</span></div><div class='line' id='LC147'><span class="cm">*/</span></div><div class='line' id='LC148'><br/></div><div class='line' id='LC149'><span class="cm">/*jslint evil: true, regexp: true */</span></div><div class='line' id='LC150'><br/></div><div class='line' id='LC151'><span class="cm">/*members &quot;&quot;, &quot;\b&quot;, &quot;\t&quot;, &quot;\n&quot;, &quot;\f&quot;, &quot;\r&quot;, &quot;\&quot;&quot;, JSON, &quot;\\&quot;, apply,</span></div><div class='line' id='LC152'><span class="cm">    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,</span></div><div class='line' id='LC153'><span class="cm">    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,</span></div><div class='line' id='LC154'><span class="cm">    lastIndex, length, parse, prototype, push, replace, slice, stringify,</spa
 n></div><div class='line' id='LC155'><span class="cm">    test, toJSON, toString, valueOf</span></div><div class='line' id='LC156'><span class="cm">*/</span></div><div class='line' id='LC157'><br/></div><div class='line' id='LC158'><br/></div><div class='line' id='LC159'><span class="c1">// Create a JSON object only if one does not already exist. We create the</span></div><div class='line' id='LC160'><span class="c1">// methods in a closure to avoid creating global variables.</span></div><div class='line' id='LC161'><br/></div><div class='line' id='LC162'><span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">JSON</span> <span class="o">!==</span> <span class="s1">&#39;object&#39;</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC163'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">JSON</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC164'><span class="p">}</span></div><div c
 lass='line' id='LC165'><br/></div><div class='line' id='LC166'><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC167'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="s1">&#39;use strict&#39;</span><span class="p">;</span></div><div class='line' id='LC168'><br/></div><div class='line' id='LC169'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kd">function</span> <span class="nx">f</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC170'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// Format integers to have at least two digits.</span></div><div class='line' id='LC171'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="nx">n</span> <span class="o">&lt;</span> <span class="mi">10</span> <span class="o">?</span> <span class="s1">&#39;0&#39;</span> <span class="o">+</span> <span class
 ="nx">n</span> <span class="o">:</span> <span class="nx">n</span><span class="p">;</span></div><div class='line' id='LC172'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC173'><br/></div><div class='line' id='LC174'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nb">Date</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toJSON</span> <span class="o">!==</span> <span class="s1">&#39;function&#39;</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC175'><br/></div><div class='line' id='LC176'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nb">Date</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toJSON</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class=
 'line' id='LC177'><br/></div><div class='line' id='LC178'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="nb">isFinite</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">valueOf</span><span class="p">())</span></div><div class='line' id='LC179'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="o">?</span> <span class="k">this</span><span class="p">.</span><span class="nx">getUTCFullYear</span><span class="p">()</span>     <span class="o">+</span> <span class="s1">&#39;-&#39;</span> <span class="o">+</span></div><div class='line' id='LC180'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">f</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">getUTCMonth</span><span class="p">()</spa
 n> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;-&#39;</span> <span class="o">+</span></div><div class='line' id='LC181'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">f</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">getUTCDate</span><span class="p">())</span>      <span class="o">+</span> <span class="s1">&#39;T&#39;</span> <span class="o">+</span></div><div class='line' id='LC182'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">f</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">getUTCHours</span><span class="p">())</span>     <span class="o">+</span> <span class="s1">&#39;:&#39;</span> <span class="o">+</span></div><div class='line
 ' id='LC183'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">f</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">getUTCMinutes</span><span class="p">())</span>   <span class="o">+</span> <span class="s1">&#39;:&#39;</span> <span class="o">+</span></div><div class='line' id='LC184'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">f</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">getUTCSeconds</span><span class="p">())</span>   <span class="o">+</span> <span class="s1">&#39;Z&#39;</span></div><div class='line' id='LC185'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="o">:</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' 
 id='LC186'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">};</span></div><div class='line' id='LC187'><br/></div><div class='line' id='LC188'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nb">String</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toJSON</span>      <span class="o">=</span></div><div class='line' id='LC189'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nb">Number</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toJSON</span>  <span class="o">=</span></div><div class='line' id='LC190'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nb">Boolean</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toJSON</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class
 ="p">{</span></div><div class='line' id='LC191'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">valueOf</span><span class="p">();</span></div><div class='line' id='LC192'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">};</span></div><div class='line' id='LC193'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC194'><br/></div><div class='line' id='LC195'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kd">var</span> <span class="nx">cx</span> <span class="o">=</span> <span class="sr">/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g</span><span class="p">,</span></div><div class='line' id='LC196'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">escapable</span> <span class="o">=</span> <span class="sr">/[\\\&qu
 ot;\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g</span><span class="p">,</span></div><div class='line' id='LC197'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">gap</span><span class="p">,</span></div><div class='line' id='LC198'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">indent</span><span class="p">,</span></div><div class='line' id='LC199'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">meta</span> <span class="o">=</span> <span class="p">{</span>    <span class="c1">// table of character substitutions</span></div><div class='line' id='LC200'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s1">&#39;\b&#39;</span><span class="o">:</span> <span class="s1">&#39;\\b&#39;</span><span class="p">,</span></div><div class='line' id='LC201'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s1"
 >&#39;\t&#39;</span><span class="o">:</span> <span class="s1">&#39;\\t&#39;</span><span class="p">,</span></div><div class='line' id='LC202'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s1">&#39;\n&#39;</span><span class="o">:</span> <span class="s1">&#39;\\n&#39;</span><span class="p">,</span></div><div class='line' id='LC203'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s1">&#39;\f&#39;</span><span class="o">:</span> <span class="s1">&#39;\\f&#39;</span><span class="p">,</span></div><div class='line' id='LC204'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s1">&#39;\r&#39;</span><span class="o">:</span> <span class="s1">&#39;\\r&#39;</span><span class="p">,</span></div><div class='line' id='LC205'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s1">&#39;&quot;&#39;</span> <span class="o">:</span> <span class="s1">&#39;\\&quot;&
 #39;</span><span class="p">,</span></div><div class='line' id='LC206'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="s1">&#39;\\&#39;</span><span class="o">:</span> <span class="s1">&#39;\\\\&#39;</span></div><div class='line' id='LC207'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">},</span></div><div class='line' id='LC208'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">rep</span><span class="p">;</span></div><div class='line' id='LC209'><br/></div><div class='line' id='LC210'><br/></div><div class='line' id='LC211'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kd">function</span> <span class="nx">quote</span><span class="p">(</span><span class="nx">string</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC212'><br/></div><div class='line' id='LC213'><span class="c1">// If the string contains no control characters, no quote characters, and no</span></div><div class='line' id='LC214'>
 <span class="c1">// backslash characters, then we can safely slap some quotes around it.</span></div><div class='line' id='LC215'><span class="c1">// Otherwise we must also replace the offending characters with safe escape</span></div><div class='line' id='LC216'><span class="c1">// sequences.</span></div><div class='line' id='LC217'><br/></div><div class='line' id='LC218'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">escapable</span><span class="p">.</span><span class="nx">lastIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC219'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="nx">escapable</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">string</span><span class="p">)</span> <span class="o">?</span> <span class="s1">&#39;&quot;&#39;</span> <span class="o">+</span> <span class="nx">string</span><span clas
 s="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="nx">escapable</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">a</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC220'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kd">var</span> <span class="nx">c</span> <span class="o">=</span> <span class="nx">meta</span><span class="p">[</span><span class="nx">a</span><span class="p">];</span></div><div class='line' id='LC221'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="k">typeof</span> <span class="nx">c</span> <span class="o">===</span> <span class="s1">&#39;string&#39;</span></div><div class='line' id='LC222'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="o">?</span> <span class="nx">c</span></div><div
  class='line' id='LC223'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="o">:</span> <span class="s1">&#39;\\u&#39;</span> <span class="o">+</span> <span class="p">(</span><span class="s1">&#39;0000&#39;</span> <span class="o">+</span> <span class="nx">a</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="mi">0</span><span class="p">).</span><span class="nx">toString</span><span class="p">(</span><span class="mi">16</span><span class="p">)).</span><span class="nx">slice</span><span class="p">(</span><span class="o">-</span><span class="mi">4</span><span class="p">);</span></div><div class='line' id='LC224'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">})</span> <span class="o">+</span> <span class="s1">&#39;&quot;&#39;</span> <span class="o">:</span> <span class="s1">&#39;&quot;&#39;</span> <span class="o">+</span> <span class="nx">string</span> <span class
 ="o">+</span> <span class="s1">&#39;&quot;&#39;</span><span class="p">;</span></div><div class='line' id='LC225'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC226'><br/></div><div class='line' id='LC227'><br/></div><div class='line' id='LC228'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="kd">function</span> <span class="nx">str</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">holder</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC229'><br/></div><div class='line' id='LC230'><span class="c1">// Produce a string from holder[key].</span></div><div class='line' id='LC231'><br/></div><div class='line' id='LC232'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kd">var</span> <span class="nx">i</span><span class="p">,</span>          <span class="c1">// The loop counter.</span></div><div class='line' id='LC233'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb
 sp;&nbsp;&nbsp;<span class="nx">k</span><span class="p">,</span>          <span class="c1">// The member key.</span></div><div class='line' id='LC234'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">v</span><span class="p">,</span>          <span class="c1">// The member value.</span></div><div class='line' id='LC235'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">length</span><span class="p">,</span></div><div class='line' id='LC236'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">mind</span> <span class="o">=</span> <span class="nx">gap</span><span class="p">,</span></div><div class='line' id='LC237'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">partial</span><span class="p">,</span></div><div class='line' id='LC238'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">value</span>
  <span class="o">=</span> <span class="nx">holder</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span></div><div class='line' id='LC239'><br/></div><div class='line' id='LC240'><span class="c1">// If the value has a toJSON method, call it to obtain a replacement value.</span></div><div class='line' id='LC241'><br/></div><div class='line' id='LC242'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">&amp;&amp;</span> <span class="k">typeof</span> <span class="nx">value</span> <span class="o">===</span> <span class="s1">&#39;object&#39;</span> <span class="o">&amp;&amp;</span></div><div class='line' id='LC243'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">typeof</span> <span class="nx">value</span><span class="p">.</span><span class="nx">toJSON</span> <span class="o">===</span> <span class="s1">&#39
 ;function&#39;</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC244'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">value</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">toJSON</span><span class="p">(</span><span class="nx">key</span><span class="p">);</span></div><div class='line' id='LC245'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC246'><br/></div><div class='line' id='LC247'><span class="c1">// If we were called with a replacer function, then call the replacer to</span></div><div class='line' id='LC248'><span class="c1">// obtain a replacement value.</span></div><div class='line' id='LC249'><br/></div><div class='line' id='LC250'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">rep</span> <span cl
 ass="o">===</span> <span class="s1">&#39;function&#39;</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC251'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">value</span> <span class="o">=</span> <span class="nx">rep</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">holder</span><span class="p">,</span> <span class="nx">key</span><span class="p">,</span> <span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC252'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC253'><br/></div><div class='line' id='LC254'><span class="c1">// What happens next depends on the value&#39;s type.</span></div><div class='line' id='LC255'><br/></div><div class='line' id='LC256'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">switch</span> <span class="p">(</span><span class="k">typeof</s
 pan> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC257'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">case</span> <span class="s1">&#39;string&#39;</span><span class="o">:</span></div><div class='line' id='LC258'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="nx">quote</span><span class="p">(</span><span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC259'><br/></div><div class='line' id='LC260'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">case</span> <span class="s1">&#39;number&#39;</span><span class="o">:</span></div><div class='line' id='LC261'><br/></div><div class='line' id='LC262'><span class="c1">// JSON numbers must be finite. Encode non-finite numbers as null.</span></div><div class='line' id='LC263'><br/></div><div class='line' id='LC264'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs
 p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="nb">isFinite</span><span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="o">?</span> <span class="nb">String</span><span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="o">:</span> <span class="s1">&#39;null&#39;</span><span class="p">;</span></div><div class='line' id='LC265'><br/></div><div class='line' id='LC266'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">case</span> <span class="s1">&#39;boolean&#39;</span><span class="o">:</span></div><div class='line' id='LC267'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">case</span> <span class="s1">&#39;null&#39;</span><span class="o">:</span></div><div class='line' id='LC268'><br/></div><div class='line' id='LC269'><span class="c1">// If the value is a boolean or null, convert it to a string. Note:</span></div><div class='line' id='LC270'><span class="c1
 ">// typeof null does not produce &#39;null&#39;. The case is included here in</span></div><div class='line' id='LC271'><span class="c1">// the remote chance that this gets fixed someday.</span></div><div class='line' id='LC272'><br/></div><div class='line' id='LC273'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="nb">String</span><span class="p">(</span><span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC274'><br/></div><div class='line' id='LC275'><span class="c1">// If the type is &#39;object&#39;, we might be dealing with an object or an array or</span></div><div class='line' id='LC276'><span class="c1">// null.</span></div><div class='line' id='LC277'><br/></div><div class='line' id='LC278'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">case</span> <span class="s1">&#39;object&#39;</span><span class="o">:</span></div><div class='line' id='LC279'><br/></div><div c
 lass='line' id='LC280'><span class="c1">// Due to a specification blunder in ECMAScript, typeof null is &#39;object&#39;,</span></div><div class='line' id='LC281'><span class="c1">// so watch out for that case.</span></div><div class='line' id='LC282'><br/></div><div class='line' id='LC283'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">value</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC284'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;null&#39;</span><span class="p">;</span></div><div class='line' id='LC285'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC286'><br/></div><div class='line' id='LC287'><span class="c1">// Make an array to hold the partia
 l results of stringifying this object value.</span></div><div class='line' id='LC288'><br/></div><div class='line' id='LC289'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">gap</span> <span class="o">+=</span> <span class="nx">indent</span><span class="p">;</span></div><div class='line' id='LC290'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">partial</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC291'><br/></div><div class='line' id='LC292'><span class="c1">// Is the value an array?</span></div><div class='line' id='LC293'><br/></div><div class='line' id='LC294'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="
 nx">apply</span><span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="o">===</span> <span class="s1">&#39;[object Array]&#39;</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC295'><br/></div><div class='line' id='LC296'><span class="c1">// The value is an array. Stringify every element. Use null as a placeholder</span></div><div class='line' id='LC297'><span class="c1">// for non-JSON values.</span></div><div class='line' id='LC298'><br/></div><div class='line' id='LC299'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">length</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC300'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> <span class="p">(</span><span 
 class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC301'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">partial</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">str</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="o">||</span> <span class="s1">&#39;null&#39;</span><span class="p">;</span></div><div class='line

<TRUNCATED>


[34/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/less.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/less.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/less.js
deleted file mode 100644
index f4aa7cb..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/less.js
+++ /dev/null
@@ -1,9 +0,0 @@
-//
-// LESS - Leaner CSS v1.3.3
-// http://lesscss.org
-//
-// Copyright (c) 2009-2013, Alexis Sellier
-// Licensed under the Apache 2.0 License.
-//
-(function(e,t){function n(t){return e.less[t.split("/")[1]]}function f(){r.env==="development"?(r.optimization=0,r.watchTimer=setInterval(function(){r.watchMode&&g(function(e,t,n,r,i){t&&S(t.toCSS(),r,i.lastModified)})},r.poll)):r.optimization=3}function m(){var e=document.getElementsByTagName("style");for(var t=0;t<e.length;t++)e[t].type.match(p)&&(new r.Parser({filename:document.location.href.replace(/#.*$/,""),dumpLineNumbers:r.dumpLineNumbers})).parse(e[t].innerHTML||"",function(n,r){var i=r.toCSS(),s=e[t];s.type="text/css",s.styleSheet?s.styleSheet.cssText=i:s.innerHTML=i})}function g(e,t){for(var n=0;n<r.sheets.length;n++)w(r.sheets[n],e,t,r.sheets.length-(n+1))}function y(e,t){var n=b(e),r=b(t),i,s,o,u,a="";if(n.hostPart!==r.hostPart)return"";s=Math.max(r.directories.length,n.directories.length);for(i=0;i<s;i++)if(r.directories[i]!==n.directories[i])break;u=r.directories.slice(i),o=n.directories.slice(i);for(i=0;i<u.length-1;i++)a+="../";for(i=0;i<o.length-1;i++)a+=o[i]+"/";r
 eturn a}function b(e,t){var n=/^((?:[a-z-]+:)?\/\/(?:[^\/\?#]*\/)|([\/\\]))?((?:[^\/\\\?#]*[\/\\])*)([^\/\\\?#]*)([#\?].*)?$/,r=e.match(n),i={},s=[],o,u;if(!r)throw new Error("Could not parse sheet href - '"+e+"'");if(!r[1]||r[2]){u=t.match(n);if(!u)throw new Error("Could not parse page url - '"+t+"'");r[1]=u[1],r[2]||(r[3]=u[3]+r[3])}if(r[3]){s=r[3].replace("\\","/").split("/");for(o=0;o<s.length;o++)s[o]===".."&&o>0&&(s.splice(o-1,2),o-=2)}return i.hostPart=r[1],i.directories=s,i.path=r[1]+s.join("/"),i.fileUrl=i.path+(r[4]||""),i.url=i.fileUrl+(r[5]||""),i}function w(t,n,i,s){var o=t.contents||{},u=t.files||{},a=b(t.href,e.location.href),f=a.url,c=l&&l.getItem(f),h=l&&l.getItem(f+":timestamp"),p={css:c,timestamp:h},d;r.relativeUrls?r.rootpath?t.entryPath?d=b(r.rootpath+y(a.path,t.entryPath)).path:d=r.rootpath:d=a.path:r.rootpath?d=r.rootpath:t.entryPath?d=t.entryPath:d=a.path,x(f,t.type,function(e,l){v+=e.replace(/@import .+?;/ig,"");if(!i&&p&&l&&(new Date(l)).valueOf()===(new Da
 te(p.timestamp)).valueOf())S(p.css,t),n(null,null,e,t,{local:!0,remaining:s},f);else try{o[f]=e,(new r.Parser({optimization:r.optimization,paths:[a.path],entryPath:t.entryPath||a.path,mime:t.type,filename:f,rootpath:d,relativeUrls:t.relativeUrls,contents:o,files:u,dumpLineNumbers:r.dumpLineNumbers})).parse(e,function(r,i){if(r)return k(r,f);try{n(r,i,e,t,{local:!1,lastModified:l,remaining:s},f),N(document.getElementById("less-error-message:"+E(f)))}catch(r){k(r,f)}})}catch(c){k(c,f)}},function(e,t){throw new Error("Couldn't load "+t+" ("+e+")")})}function E(e){return e.replace(/^[a-z]+:\/\/?[^\/]+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function S(e,t,n){var r,i=t.href||"",s="less:"+(t.title||E(i));if((r=document.getElementById(s))===null){r=document.createElement("style"),r.type="text/css",t.media&&(r.media=t.media),r.id=s;var o=t&&t.nextSibling||null;(o||document.getElementsByTagName("head")[0]).parentNode.insertBefore(r,o)}if
 (r.styleSheet)try{r.styleSheet.cssText=e}catch(u){throw new Error("Couldn't reassign styleSheet.cssText.")}else(function(e){r.childNodes.length>0?r.firstChild.nodeValue!==e.nodeValue&&r.replaceChild(e,r.firstChild):r.appendChild(e)})(document.createTextNode(e));if(n&&l){C("saving "+i+" to cache.");try{l.setItem(i,e),l.setItem(i+":timestamp",n)}catch(u){C("failed to save")}}}function x(e,t,n,i){function a(t,n,r){t.status>=200&&t.status<300?n(t.responseText,t.getResponseHeader("Last-Modified")):typeof r=="function"&&r(t.status,e)}var s=T(),u=o?r.fileAsync:r.async;typeof s.overrideMimeType=="function"&&s.overrideMimeType("text/css"),s.open("GET",e,u),s.setRequestHeader("Accept",t||"text/x-less, text/css; q=0.9, */*; q=0.5"),s.send(null),o&&!r.fileAsync?s.status===0||s.status>=200&&s.status<300?n(s.responseText):i(s.status,e):u?s.onreadystatechange=function(){s.readyState==4&&a(s,n,i)}:a(s,n,i)}function T(){if(e.XMLHttpRequest)return new XMLHttpRequest;try{return new ActiveXObject("MSXM
 L2.XMLHTTP.3.0")}catch(t){return C("browser doesn't support AJAX."),null}}function N(e){return e&&e.parentNode.removeChild(e)}function C(e){r.env=="development"&&typeof console!="undefined"&&console.log("less: "+e)}function k(e,t){var n="less-error-message:"+E(t),i='<li><label>{line}</label><pre class="{class}">{content}</pre></li>',s=document.createElement("div"),o,u,a=[],f=e.filename||t,l=f.match(/([^\/]+(\?.*)?)$/)[1];s.id=n,s.className="less-error-message",u="<h3>"+(e.message||"There is an error in your .less file")+"</h3>"+'<p>in <a href="'+f+'">'+l+"</a> ";var c=function(e,t,n){e.extract[t]&&a.push(i.replace(/\{line\}/,parseInt(e.line)+(t-1)).replace(/\{class\}/,n).replace(/\{content\}/,e.extract[t]))};e.stack?u+="<br/>"+e.stack.split("\n").slice(1).join("<br/>"):e.extract&&(c(e,0,""),c(e,1,"line"),c(e,2,""),u+="on line "+e.line+", column "+(e.column+1)+":</p>"+"<ul>"+a.join("")+"</ul>"),s.innerHTML=u,S([".less-error-message ul, .less-error-message li {","list-style-type: none
 ;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),s.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),r.env=="development"&&(o=setInterval(function(){document.body&&(document.getElementById(n)?document.body.repla
 ceChild(s,document.getElementById(n)):document.body.insertBefore(s,document.body.firstChild),clearInterval(o))},10))}Array.isArray||(Array.isArray=function(e){return Object.prototype.toString.call(e)==="[object Array]"||e instanceof Array}),Array.prototype.forEach||(Array.prototype.forEach=function(e,t){var n=this.length>>>0;for(var r=0;r<n;r++)r in this&&e.call(t,this[r],r,this)}),Array.prototype.map||(Array.prototype.map=function(e){var t=this.length>>>0,n=new Array(t),r=arguments[1];for(var i=0;i<t;i++)i in this&&(n[i]=e.call(r,this[i],i,this));return n}),Array.prototype.filter||(Array.prototype.filter=function(e){var t=[],n=arguments[1];for(var r=0;r<this.length;r++)e.call(n,this[r])&&t.push(this[r]);return t}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=this.length>>>0,n=0;if(t===0&&arguments.length===1)throw new TypeError;if(arguments.length>=2)var r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n<t;n++)
 n in this&&(r=e.call(null,r,this[n],n,this));return r}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e){var t=this.length,n=arguments[1]||0;if(!t)return-1;if(n>=t)return-1;n<0&&(n+=t);for(;n<t;n++){if(!Object.prototype.hasOwnProperty.call(this,n))continue;if(e===this[n])return n}return-1}),Object.keys||(Object.keys=function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}),String.prototype.trim||(String.prototype.trim=function(){return String(this).replace(/^\s\s*/,"").replace(/\s\s*$/,"")});var r,i,s;typeof environment=="object"&&{}.toString.call(environment)==="[object Environment]"?(typeof e=="undefined"?r={}:r=e.less={},i=r.tree={},r.mode="rhino"):typeof e=="undefined"?(r=exports,i=n("./tree"),r.mode="node"):(typeof e.less=="undefined"&&(e.less={}),r=e.less,i=e.less.tree={},r.mode="browser"),r.Parser=function(t){function g(){a=c[u],f=o,h=o}function y(){c[u]=a,o=f,h=o}function b(){o>h&&(c[u]=c[u].slice(o-h),h=o)}function w(e)
 {var t=e.charCodeAt(0);return t===32||t===10||t===9}function E(e){var t,n,r,i,a;if(e instanceof Function)return e.call(p.parsers);if(typeof e=="string")t=s.charAt(o)===e?e:null,r=1,b();else{b();if(!(t=e.exec(c[u])))return null;r=t[0].length}if(t)return S(r),typeof t=="string"?t:t.length===1?t[0]:t}function S(e){var t=o,n=u,r=o+c[u].length,i=o+=e;while(o<r){if(!w(s.charAt(o)))break;o++}return c[u]=c[u].slice(e+(o-i)),h=o,c[u].length===0&&u<c.length-1&&u++,t!==o||n!==u}function x(e,t){var n=E(e);if(!!n)return n;T(t||(typeof e=="string"?"expected '"+e+"' got '"+s.charAt(o)+"'":"unexpected token"))}function T(e,t){var n=new Error(e);throw n.index=o,n.type=t||"Syntax",n}function N(e){return typeof e=="string"?s.charAt(o)===e:e.test(c[u])?!0:!1}function C(e,t){return e.filename&&t.filename&&e.filename!==t.filename?p.imports.contents[e.filename]:s}function k(e,t){for(var n=e,r=-1;n>=0&&t.charAt(n)!=="\n";n--)r++;return{line:typeof e=="number"?(t.slice(0,e).match(/\n/g)||"").length:null,col
 umn:r}}function L(e){return r.mode==="browser"||r.mode==="rhino"?e.filename:n("path").resolve(e.filename)}function A(e,t,n){return{lineNumber:k(e,t).line+1,fileName:L(n)}}function O(e,t){var n=C(e,t),r=k(e.index,n),i=r.line,s=r.column,o=n.split("\n");this.type=e.type||"Syntax",this.message=e.message,this.filename=e.filename||t.filename,this.index=e.index,this.line=typeof i=="number"?i+1:null,this.callLine=e.call&&k(e.call,n).line+1,this.callExtract=o[k(e.call,n).line],this.stack=e.stack,this.column=s,this.extract=[o[i-1],o[i],o[i+1]]}var s,o,u,a,f,l,c,h,p,d=this,t=t||{};t.contents||(t.contents={}),t.rootpath=t.rootpath||"",t.files||(t.files={});var v=function(){},m=this.imports={paths:t.paths||[],queue:[],files:t.files,contents:t.contents,mime:t.mime,error:null,push:function(e,n){var i=this;this.queue.push(e),r.Parser.importer(e,this.paths,function(t,r,s){i.queue.splice(i.queue.indexOf(e),1);var o=s in i.files;i.files[s]=r,t&&!i.error&&(i.error=t),n(t,r,o),i.queue.length===0&&v(i.er
 ror)},t)}};return this.env=t=t||{},this.optimization="optimization"in this.env?this.env.optimization:1,this.env.filename=this.env.filename||null,p={imports:m,parse:function(e,a){var f,d,m,g,y,b,w=[],S,x=null;o=u=h=l=0,s=e.replace(/\r\n/g,"\n"),s=s.replace(/^\uFEFF/,""),c=function(e){var n=0,r=/(?:@\{[\w-]+\}|[^"'`\{\}\/\(\)\\])+/g,i=/\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,o=/"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'|`((?:[^`]|\\.)*)`/g,u=0,a,f=e[0],l;for(var c=0,h,p;c<s.length;){r.lastIndex=c,(a=r.exec(s))&&a.index===c&&(c+=a[0].length,f.push(a[0])),h=s.charAt(c),i.lastIndex=o.lastIndex=c;if(a=o.exec(s))if(a.index===c){c+=a[0].length,f.push(a[0]);continue}if(!l&&h==="/"){p=s.charAt(c+1);if(p==="/"||p==="*")if(a=i.exec(s))if(a.index===c){c+=a[0].length,f.push(a[0]);continue}}switch(h){case"{":if(!l){u++,f.push(h);break};case"}":if(!l){u--,f.push(h),e[++n]=f=[];break};case"(":if(!l){l=!0,f.push(h);break};case")":if(l){l=!1,f.push(h);break};default:f.push(h)}c++}return u!=0&&(x=ne
 w O({index:c-1,type:"Parse",message:u>0?"missing closing `}`":"missing opening `{`",filename:t.filename},t)),e.map(function(e){return e.join("")})}([[]]);if(x)return a(x,t);try{f=new i.Ruleset([],E(this.parsers.primary)),f.root=!0}catch(T){return a(new O(T,t))}f.toCSS=function(e){var s,o,u;return function(s,o){var u=[],a;s=s||{},typeof o=="object"&&!Array.isArray(o)&&(o=Object.keys(o).map(function(e){var t=o[e];return t instanceof i.Value||(t instanceof i.Expression||(t=new i.Expression([t])),t=new i.Value([t])),new i.Rule("@"+e,t,!1,0)}),u=[new i.Ruleset(null,o)]);try{var f=e.call(this,{frames:u}).toCSS([],{compress:s.compress||!1,dumpLineNumbers:t.dumpLineNumbers})}catch(l){throw new O(l,t)}if(a=p.imports.error)throw a instanceof O?a:new O(a,t);return s.yuicompress&&r.mode==="node"?n("ycssmin").cssmin(f):s.compress?f.replace(/(\s)+/g,"$1"):f}}(f.eval);if(o<s.length-1){o=l,b=s.split("\n"),y=(s.slice(0,o).match(/\n/g)||"").length+1;for(var N=o,C=-1;N>=0&&s.charAt(N)!=="\n";N--)C++;x
 ={type:"Parse",message:"Syntax Error on line "+y,index:o,filename:t.filename,line:y,column:C,extract:[b[y-2],b[y-1],b[y]]}}this.imports.queue.length>0?v=function(e){e=x||e,e?a(e):a(null,f)}:a(x,f)},parsers:{primary:function(){var e,t=[];while((e=E(this.mixin.definition)||E(this.rule)||E(this.ruleset)||E(this.mixin.call)||E(this.comment)||E(this.directive))||E(/^[\s\n]+/)||E(/^;+/))e&&t.push(e);return t},comment:function(){var e;if(s.charAt(o)!=="/")return;if(s.charAt(o+1)==="/")return new i.Comment(E(/^\/\/.*/),!0);if(e=E(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/))return new i.Comment(e)},entities:{quoted:function(){var e,t=o,n;s.charAt(t)==="~"&&(t++,n=!0);if(s.charAt(t)!=='"'&&s.charAt(t)!=="'")return;n&&E("~");if(e=E(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/))return new i.Quoted(e[0],e[1]||e[2],n)},keyword:function(){var e;if(e=E(/^[_A-Za-z-][_A-Za-z0-9-]*/))return i.colors.hasOwnProperty(e)?new i.Color(i.colors[e].slice(1)):new i.Keyword(e)},call:function(){var e,n,r,s,a=o;if(
 !(e=/^([\w-]+|%|progid:[\w\.]+)\(/.exec(c[u])))return;e=e[1],n=e.toLowerCase();if(n==="url")return null;o+=e.length;if(n==="alpha"){s=E(this.alpha);if(typeof s!="undefined")return s}E("("),r=E(this.entities.arguments);if(!E(")"))return;if(e)return new i.Call(e,r,a,t.filename)},arguments:function(){var e=[],t;while(t=E(this.entities.assignment)||E(this.expression)){e.push(t);if(!E(","))break}return e},literal:function(){return E(this.entities.ratio)||E(this.entities.dimension)||E(this.entities.color)||E(this.entities.quoted)||E(this.entities.unicodeDescriptor)},assignment:function(){var e,t;if((e=E(/^\w+(?=\s?=)/i))&&E("=")&&(t=E(this.entity)))return new i.Assignment(e,t)},url:function(){var e;if(s.charAt(o)!=="u"||!E(/^url\(/))return;return e=E(this.entities.quoted)||E(this.entities.variable)||E(/^(?:(?:\\[\(\)'"])|[^\(\)'"])+/)||"",x(")"),new i.URL(e.value!=null||e instanceof i.Variable?e:new i.Anonymous(e),t.rootpath)},variable:function(){var e,n=o;if(s.charAt(o)==="@"&&(e=E(/^@@?
 [\w-]+/)))return new i.Variable(e,n,t.filename)},variableCurly:function(){var e,n,r=o;if(s.charAt(o)==="@"&&(n=E(/^@\{([\w-]+)\}/)))return new i.Variable("@"+n[1],r,t.filename)},color:function(){var e;if(s.charAt(o)==="#"&&(e=E(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/)))return new i.Color(e[1])},dimension:function(){var e,t=s.charCodeAt(o);if(t>57||t<43||t===47||t==44)return;if(e=E(/^([+-]?\d*\.?\d+)(px|%|em|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn|dpi|dpcm|dppx|rem|vw|vh|vmin|vm|ch)?/))return new i.Dimension(e[1],e[2])},ratio:function(){var e,t=s.charCodeAt(o);if(t>57||t<48)return;if(e=E(/^(\d+\/\d+)/))return new i.Ratio(e[1])},unicodeDescriptor:function(){var e;if(e=E(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/))return new i.UnicodeDescriptor(e[0])},javascript:function(){var e,t=o,n;s.charAt(t)==="~"&&(t++,n=!0);if(s.charAt(t)!=="`")return;n&&E("~");if(e=E(/^`([^`]*)`/))return new i.JavaScript(e[1],o,n)}},variable:function(){var e;if(s.charAt(o)==="@"&&(e=E(/^(@[\w-]+)\s*:/)))return e[1]},sh
 orthand:function(){var e,t;if(!N(/^[@\w.%-]+\/[@\w.-]+/))return;g();if((e=E(this.entity))&&E("/")&&(t=E(this.entity)))return new i.Shorthand(e,t);y()},mixin:{call:function(){var e=[],n,r,u=[],a=[],f,l,c,h,p,d,v,m=o,b=s.charAt(o),w,S,C=!1;if(b!=="."&&b!=="#")return;g();while(n=E(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/))e.push(new i.Element(r,n,o)),r=E(">");if(E("(")){p=[];while(c=E(this.expression)){h=null,S=c;if(c.value.length==1){var k=c.value[0];k instanceof i.Variable&&E(":")&&(p.length>0&&(d&&T("Cannot mix ; and , as delimiter types"),v=!0),S=x(this.expression),h=w=k.name)}p.push(S),a.push({name:h,value:S});if(E(","))continue;if(E(";")||d)v&&T("Cannot mix ; and , as delimiter types"),d=!0,p.length>1&&(S=new i.Value(p)),u.push({name:w,value:S}),w=null,p=[],v=!1}x(")")}f=d?u:a,E(this.important)&&(C=!0);if(e.length>0&&(E(";")||N("}")))return new i.mixin.Call(e,f,m,t.filename,C);y()},definition:function(){var e,t=[],n,r,u,a,f,c=!1;if(s.charAt(o)!=="."&&s.charAt(o)!==
 "#"||N(/^[^{]*\}/))return;g();if(n=E(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){e=n[1];do{E(this.comment);if(s.charAt(o)==="."&&E(/^\.{3}/)){c=!0,t.push({variadic:!0});break}if(!(u=E(this.entities.variable)||E(this.entities.literal)||E(this.entities.keyword)))break;if(u instanceof i.Variable)if(E(":"))a=x(this.expression,"expected expression"),t.push({name:u.name,value:a});else{if(E(/^\.{3}/)){t.push({name:u.name,variadic:!0}),c=!0;break}t.push({name:u.name})}else t.push({value:u})}while(E(",")||E(";"));E(")")||(l=o,y()),E(this.comment),E(/^when/)&&(f=x(this.conditions,"expected condition")),r=E(this.block);if(r)return new i.mixin.Definition(e,t,r,f,c);y()}}},entity:function(){return E(this.entities.literal)||E(this.entities.variable)||E(this.entities.url)||E(this.entities.call)||E(this.entities.keyword)||E(this.entities.javascript)||E(this.comment)},end:function(){return E(";")||N("}")},alpha:function(){var e;if(!E(/^\(opacity=/i))return;if(e=E(/^\d+/)||E(this
 .entities.variable))return x(")"),new i.Alpha(e)},element:function(){var e,t,n,r;n=E(this.combinator),e=E(/^(?:\d+\.\d+|\d+)%/)||E(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||E("*")||E("&")||E(this.attribute)||E(/^\([^()@]+\)/)||E(/^[\.#](?=@)/)||E(this.entities.variableCurly),e||E("(")&&(r=E(this.entities.variableCurly)||E(this.entities.variable)||E(this.selector))&&E(")")&&(e=new i.Paren(r));if(e)return new i.Element(n,e,o)},combinator:function(){var e,t=s.charAt(o);if(t===">"||t==="+"||t==="~"||t==="|"){o++;while(s.charAt(o).match(/\s/))o++;return new i.Combinator(t)}return s.charAt(o-1).match(/\s/)?new i.Combinator(" "):new i.Combinator(null)},selector:function(){var e,t,n=[],r,u;if(E("("))return e=E(this.entity),E(")")?new i.Selector([new i.Element("",e,o)]):null;while(t=E(this.element)){r=s.charAt(o),n.push(t);if(r==="{"||r==="}"||r===";"||r===","||r===")")break}if(n.length>0)return new i.Selector(n)},attribute:function(){var e="",t,n,r;if(!E
 ("["))return;if(t=E(/^(?:[_A-Za-z0-9-]|\\.)+/)||E(this.entities.quoted))(r=E(/^[|~*$^]?=/))&&(n=E(this.entities.quoted)||E(/^[\w-]+/))?e=[t,r,n.toCSS?n.toCSS():n].join(""):e=t;if(!E("]"))return;if(e)return"["+e+"]"},block:function(){var e;if(E("{")&&(e=E(this.primary))&&E("}"))return e},ruleset:function(){var e=[],n,r,u,a;g(),t.dumpLineNumbers&&(a=A(o,s,t));while(n=E(this.selector)){e.push(n),E(this.comment);if(!E(","))break;E(this.comment)}if(e.length>0&&(r=E(this.block))){var f=new i.Ruleset(e,r,t.strictImports);return t.dumpLineNumbers&&(f.debugInfo=a),f}l=o,y()},rule:function(){var e,t,n=s.charAt(o),r,a;g();if(n==="."||n==="#"||n==="&")return;if(e=E(this.variable)||E(this.property)){e.charAt(0)!="@"&&(a=/^([^@+\/'"*`(;{}-]*);/.exec(c[u]))?(o+=a[0].length-1,t=new i.Anonymous(a[1])):e==="font"?t=E(this.font):t=E(this.value),r=E(this.important);if(t&&E(this.end))return new i.Rule(e,t,r,f);l=o,y()}},"import":function(){var e,n,r=o;g();var s=E(/^@import(?:-(once))?\s+/);if(s&&(e=E(th
 is.entities.quoted)||E(this.entities.url))){n=E(this.mediaFeatures);if(E(";"))return new i.Import(e,m,n,s[1]==="once",r,t.rootpath)}y()},mediaFeature:function(){var e,t,n=[];do if(e=E(this.entities.keyword))n.push(e);else if(E("(")){t=E(this.property),e=E(this.entity);if(!E(")"))return null;if(t&&e)n.push(new i.Paren(new i.Rule(t,e,null,o,!0)));else{if(!e)return null;n.push(new i.Paren(e))}}while(e);if(n.length>0)return new i.Expression(n)},mediaFeatures:function(){var e,t=[];do if(e=E(this.mediaFeature)){t.push(e);if(!E(","))break}else if(e=E(this.entities.variable)){t.push(e);if(!E(","))break}while(e);return t.length>0?t:null},media:function(){var e,n,r,u;t.dumpLineNumbers&&(u=A(o,s,t));if(E(/^@media/)){e=E(this.mediaFeatures);if(n=E(this.block))return r=new i.Media(n,e),t.dumpLineNumbers&&(r.debugInfo=u),r}},directive:function(){var e,n,r,u,a,f,l,c,h,p;if(s.charAt(o)!=="@")return;if(n=E(this["import"])||E(this.media))return n;g(),e=E(/^@[a-z-]+/);if(!e)return;l=e,e.charAt(1)=="-"
 &&e.indexOf("-",2)>0&&(l="@"+e.slice(e.indexOf("-",2)+1));switch(l){case"@font-face":c=!0;break;case"@viewport":case"@top-left":case"@top-left-corner":case"@top-center":case"@top-right":case"@top-right-corner":case"@bottom-left":case"@bottom-left-corner":case"@bottom-center":case"@bottom-right":case"@bottom-right-corner":case"@left-top":case"@left-middle":case"@left-bottom":case"@right-top":case"@right-middle":case"@right-bottom":c=!0;break;case"@page":case"@document":case"@supports":case"@keyframes":c=!0,h=!0;break;case"@namespace":p=!0}h&&(e+=" "+(E(/^[^{]+/)||"").trim());if(c){if(r=E(this.block))return new i.Directive(e,r)}else if((n=p?E(this.expression):E(this.entity))&&E(";")){var d=new i.Directive(e,n);return t.dumpLineNumbers&&(d.debugInfo=A(o,s,t)),d}y()},font:function(){var e=[],t=[],n,r,s,o;while(o=E(this.shorthand)||E(this.entity))t.push(o);e.push(new i.Expression(t));if(E(","))while(o=E(this.expression)){e.push(o);if(!E(","))break}return new i.Value(e)},value:function(){
 var e,t=[],n;while(e=E(this.expression)){t.push(e);if(!E(","))break}if(t.length>0)return new i.Value(t)},important:function(){if(s.charAt(o)==="!")return E(/^! *important/)},sub:function(){var e;if(E("(")&&(e=E(this.expression))&&E(")"))return e},multiplication:function(){var e,t,n,r;if(e=E(this.operand)){while(!N(/^\/[*\/]/)&&(n=E("/")||E("*"))&&(t=E(this.operand)))r=new i.Operation(n,[r||e,t]);return r||e}},addition:function(){var e,t,n,r;if(e=E(this.multiplication)){while((n=E(/^[-+]\s+/)||!w(s.charAt(o-1))&&(E("+")||E("-")))&&(t=E(this.multiplication)))r=new i.Operation(n,[r||e,t]);return r||e}},conditions:function(){var e,t,n=o,r;if(e=E(this.condition)){while(E(",")&&(t=E(this.condition)))r=new i.Condition("or",r||e,t,n);return r||e}},condition:function(){var e,t,n,r,s=o,u=!1;E(/^not/)&&(u=!0),x("(");if(e=E(this.addition)||E(this.entities.keyword)||E(this.entities.quoted))return(r=E(/^(?:>=|=<|[<=>])/))?(t=E(this.addition)||E(this.entities.keyword)||E(this.entities.quoted))?n=n
 ew i.Condition(r,e,t,s,u):T("expected expression"):n=new i.Condition("=",e,new i.Keyword("true"),s,u),x(")"),E(/^and/)?new i.Condition("and",n,E(this.condition)):n},operand:function(){var e,t=s.charAt(o+1);s.charAt(o)==="-"&&(t==="@"||t==="(")&&(e=E("-"));var n=E(this.sub)||E(this.entities.dimension)||E(this.entities.color)||E(this.entities.variable)||E(this.entities.call);return e?new i.Operation("*",[new i.Dimension(-1),n]):n},expression:function(){var e,t,n=[],r;while(e=E(this.addition)||E(this.entity))n.push(e);if(n.length>0)return new i.Expression(n)},property:function(){var e;if(e=E(/^(\*?-?[_a-z0-9-]+)\s*:/))return e[1]}}}};if(r.mode==="browser"||r.mode==="rhino")r.Parser.importer=function(e,t,n,r){!/^([a-z-]+:)?\//.test(e)&&t.length>0&&(e=t[0]+e),w({href:e,title:e,type:r.mime,contents:r.contents,files:r.files,rootpath:r.rootpath,entryPath:r.entryPath,relativeUrls:r.relativeUrls},function(e,i,s,o,u,a){e&&typeof r.errback=="function"?r.errback.call(null,a,t,n,r):n.call(null,e,
 i,a)},!0)};(function(e){function t(t){return e.functions.hsla(t.h,t.s,t.l,t.a)}function n(t,n){return t instanceof e.Dimension&&t.unit=="%"?parseFloat(t.value*n/100):r(t)}function r(t){if(t instanceof e.Dimension)return parseFloat(t.unit=="%"?t.value/100:t.value);if(typeof t=="number")return t;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function i(e){return Math.min(1,Math.max(0,e))}e.functions={rgb:function(e,t,n){return this.rgba(e,t,n,1)},rgba:function(t,i,s,o){var u=[t,i,s].map(function(e){return n(e,256)});return o=r(o),new e.Color(u,o)},hsl:function(e,t,n){return this.hsla(e,t,n,1)},hsla:function(e,t,n,i){function u(e){return e=e<0?e+1:e>1?e-1:e,e*6<1?o+(s-o)*e*6:e*2<1?s:e*3<2?o+(s-o)*(2/3-e)*6:o}e=r(e)%360/360,t=r(t),n=r(n),i=r(i);var s=n<=.5?n*(t+1):n+t-n*t,o=n*2-s;return this.rgba(u(e+1/3)*255,u(e)*255,u(e-1/3)*255,i)},hsv:function(e,t,n){return this.hsva(e,t,n,1)},hsva:function(e,t,n,i){e=r(e)%360/360*360,t=r(t),n=r(n),i=r(i);var s,o;s=
 Math.floor(e/60%6),o=e/60-s;var u=[n,n*(1-t),n*(1-o*t),n*(1-(1-o)*t)],a=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return this.rgba(u[a[s][0]]*255,u[a[s][1]]*255,u[a[s][2]]*255,i)},hue:function(t){return new e.Dimension(Math.round(t.toHSL().h))},saturation:function(t){return new e.Dimension(Math.round(t.toHSL().s*100),"%")},lightness:function(t){return new e.Dimension(Math.round(t.toHSL().l*100),"%")},red:function(t){return new e.Dimension(t.rgb[0])},green:function(t){return new e.Dimension(t.rgb[1])},blue:function(t){return new e.Dimension(t.rgb[2])},alpha:function(t){return new e.Dimension(t.toHSL().a)},luma:function(t){return new e.Dimension(Math.round((.2126*(t.rgb[0]/255)+.7152*(t.rgb[1]/255)+.0722*(t.rgb[2]/255))*t.alpha*100),"%")},saturate:function(e,n){var r=e.toHSL();return r.s+=n.value/100,r.s=i(r.s),t(r)},desaturate:function(e,n){var r=e.toHSL();return r.s-=n.value/100,r.s=i(r.s),t(r)},lighten:function(e,n){var r=e.toHSL();return r.l+=n.value/100,r.l=i(r.l),t(r)},d
 arken:function(e,n){var r=e.toHSL();return r.l-=n.value/100,r.l=i(r.l),t(r)},fadein:function(e,n){var r=e.toHSL();return r.a+=n.value/100,r.a=i(r.a),t(r)},fadeout:function(e,n){var r=e.toHSL();return r.a-=n.value/100,r.a=i(r.a),t(r)},fade:function(e,n){var r=e.toHSL();return r.a=n.value/100,r.a=i(r.a),t(r)},spin:function(e,n){var r=e.toHSL(),i=(r.h+n.value)%360;return r.h=i<0?360+i:i,t(r)},mix:function(t,n,r){r||(r=new e.Dimension(50));var i=r.value/100,s=i*2-1,o=t.toHSL().a-n.toHSL().a,u=((s*o==-1?s:(s+o)/(1+s*o))+1)/2,a=1-u,f=[t.rgb[0]*u+n.rgb[0]*a,t.rgb[1]*u+n.rgb[1]*a,t.rgb[2]*u+n.rgb[2]*a],l=t.alpha*i+n.alpha*(1-i);return new e.Color(f,l)},greyscale:function(t){return this.desaturate(t,new e.Dimension(100))},contrast:function(e,t,n,r){return e.rgb?(typeof n=="undefined"&&(n=this.rgba(255,255,255,1)),typeof t=="undefined"&&(t=this.rgba(0,0,0,1)),typeof r=="undefined"?r=.43:r=r.value,(.2126*(e.rgb[0]/255)+.7152*(e.rgb[1]/255)+.0722*(e.rgb[2]/255))*e.alpha<r?n:t):null},e:function(
 t){return new e.Anonymous(t instanceof e.JavaScript?t.evaluated:t)},escape:function(t){return new e.Anonymous(encodeURI(t.value).replace(/=/g,"%3D").replace(/:/g,"%3A").replace(/#/g,"%23").replace(/;/g,"%3B").replace(/\(/g,"%28").replace(/\)/g,"%29"))},"%":function(t){var n=Array.prototype.slice.call(arguments,1),r=t.value;for(var i=0;i<n.length;i++)r=r.replace(/%[sda]/i,function(e){var t=e.match(/s/i)?n[i].value:n[i].toCSS();return e.match(/[A-Z]$/)?encodeURIComponent(t):t});return r=r.replace(/%%/g,"%"),new e.Quoted('"'+r+'"',r)},unit:function(t,n){return new e.Dimension(t.value,n?n.toCSS():"")},round:function(e,t){var n=typeof t=="undefined"?0:t.value;return this._math(function(e){return e.toFixed(n)},e)},ceil:function(e){return this._math(Math.ceil,e)},floor:function(e){return this._math(Math.floor,e)},_math:function(t,n){if(n instanceof e.Dimension)return new e.Dimension(t(parseFloat(n.value)),n.unit);if(typeof n=="number")return t(n);throw{type:"Argument",message:"argument mus
 t be a number"}},argb:function(t){return new e.Anonymous(t.toARGB())},percentage:function(t){return new e.Dimension(t.value*100,"%")},color:function(t){if(t instanceof e.Quoted)return new e.Color(t.value.slice(1));throw{type:"Argument",message:"argument must be a string"}},iscolor:function(t){return this._isa(t,e.Color)},isnumber:function(t){return this._isa(t,e.Dimension)},isstring:function(t){return this._isa(t,e.Quoted)},iskeyword:function(t){return this._isa(t,e.Keyword)},isurl:function(t){return this._isa(t,e.URL)},ispixel:function(t){return t instanceof e.Dimension&&t.unit==="px"?e.True:e.False},ispercentage:function(t){return t instanceof e.Dimension&&t.unit==="%"?e.True:e.False},isem:function(t){return t instanceof e.Dimension&&t.unit==="em"?e.True:e.False},_isa:function(t,n){return t instanceof n?e.True:e.False},multiply:function(e,t){var n=e.rgb[0]*t.rgb[0]/255,r=e.rgb[1]*t.rgb[1]/255,i=e.rgb[2]*t.rgb[2]/255;return this.rgb(n,r,i)},screen:function(e,t){var n=255-(255-e.rgb
 [0])*(255-t.rgb[0])/255,r=255-(255-e.rgb[1])*(255-t.rgb[1])/255,i=255-(255-e.rgb[2])*(255-t.rgb[2])/255;return this.rgb(n,r,i)},overlay:function(e,t){var n=e.rgb[0]<128?2*e.rgb[0]*t.rgb[0]/255:255-2*(255-e.rgb[0])*(255-t.rgb[0])/255,r=e.rgb[1]<128?2*e.rgb[1]*t.rgb[1]/255:255-2*(255-e.rgb[1])*(255-t.rgb[1])/255,i=e.rgb[2]<128?2*e.rgb[2]*t.rgb[2]/255:255-2*(255-e.rgb[2])*(255-t.rgb[2])/255;return this.rgb(n,r,i)},softlight:function(e,t){var n=t.rgb[0]*e.rgb[0]/255,r=n+e.rgb[0]*(255-(255-e.rgb[0])*(255-t.rgb[0])/255-n)/255;n=t.rgb[1]*e.rgb[1]/255;var i=n+e.rgb[1]*(255-(255-e.rgb[1])*(255-t.rgb[1])/255-n)/255;n=t.rgb[2]*e.rgb[2]/255;var s=n+e.rgb[2]*(255-(255-e.rgb[2])*(255-t.rgb[2])/255-n)/255;return this.rgb(r,i,s)},hardlight:function(e,t){var n=t.rgb[0]<128?2*t.rgb[0]*e.rgb[0]/255:255-2*(255-t.rgb[0])*(255-e.rgb[0])/255,r=t.rgb[1]<128?2*t.rgb[1]*e.rgb[1]/255:255-2*(255-t.rgb[1])*(255-e.rgb[1])/255,i=t.rgb[2]<128?2*t.rgb[2]*e.rgb[2]/255:255-2*(255-t.rgb[2])*(255-e.rgb[2])/255;return t
 his.rgb(n,r,i)},difference:function(e,t){var n=Math.abs(e.rgb[0]-t.rgb[0]),r=Math.abs(e.rgb[1]-t.rgb[1]),i=Math.abs(e.rgb[2]-t.rgb[2]);return this.rgb(n,r,i)},exclusion:function(e,t){var n=e.rgb[0]+t.rgb[0]*(255-e.rgb[0]-e.rgb[0])/255,r=e.rgb[1]+t.rgb[1]*(255-e.rgb[1]-e.rgb[1])/255,i=e.rgb[2]+t.rgb[2]*(255-e.rgb[2]-e.rgb[2])/255;return this.rgb(n,r,i)},average:function(e,t){var n=(e.rgb[0]+t.rgb[0])/2,r=(e.rgb[1]+t.rgb[1])/2,i=(e.rgb[2]+t.rgb[2])/2;return this.rgb(n,r,i)},negation:function(e,t){var n=255-Math.abs(255-t.rgb[0]-e.rgb[0]),r=255-Math.abs(255-t.rgb[1]-e.rgb[1]),i=255-Math.abs(255-t.rgb[2]-e.rgb[2]);return this.rgb(n,r,i)},tint:function(e,t){return this.mix(this.rgb(255,255,255),e,t)},shade:function(e,t){return this.mix(this.rgb(0,0,0),e,t)}}})(n("./tree")),function(e){e.colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"
 #8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#
 4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da
 70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen
-:"#9acd32"}}(n("./tree")),function(e){e.Alpha=function(e){this.value=e},e.Alpha.prototype={toCSS:function(){return"alpha(opacity="+(this.value.toCSS?this.value.toCSS():this.value)+")"},eval:function(e){return this.value.eval&&(this.value=this.value.eval(e)),this}}}(n("../tree")),function(e){e.Anonymous=function(e){this.value=e.value||e},e.Anonymous.prototype={toCSS:function(){return this.value},eval:function(){return this},compare:function(e){if(!e.toCSS)return-1;var t=this.toCSS(),n=e.toCSS();return t===n?0:t<n?-1:1}}}(n("../tree")),function(e){e.Assignment=function(e,t){this.key=e,this.value=t},e.Assignment.prototype={toCSS:function(){return this.key+"="+(this.value.toCSS?this.value.toCSS():this.value)},eval:function(t){return this.value.eval?new e.Assignment(this.key,this.value.eval(t)):this}}}(n("../tree")),function(e){e.Call=function(e,t,n,r){this.name=e,this.args=t,this.index=n,this.filename=r},e.Call.prototype={eval:function(t){var n=this.args.map(function(e){return e.eval(t)
 }),r;if(this.name in e.functions)try{r=e.functions[this.name].apply(e.functions,n);if(r!=null)return r}catch(i){throw{type:i.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(i.message?": "+i.message:""),index:this.index,filename:this.filename}}return new e.Anonymous(this.name+"("+n.map(function(e){return e.toCSS(t)}).join(", ")+")")},toCSS:function(e){return this.eval(e).toCSS()}}}(n("../tree")),function(e){e.Color=function(e,t){Array.isArray(e)?this.rgb=e:e.length==6?this.rgb=e.match(/.{2}/g).map(function(e){return parseInt(e,16)}):this.rgb=e.split("").map(function(e){return parseInt(e+e,16)}),this.alpha=typeof t=="number"?t:1},e.Color.prototype={eval:function(){return this},toCSS:function(){return this.alpha<1?"rgba("+this.rgb.map(function(e){return Math.round(e)}).concat(this.alpha).join(", ")+")":"#"+this.rgb.map(function(e){return e=Math.round(e),e=(e>255?255:e<0?0:e).toString(16),e.length===1?"0"+e:e}).join("")},operate:function(t,n){var r=[];n instanceof e
 .Color||(n=n.toColor());for(var i=0;i<3;i++)r[i]=e.operate(t,this.rgb[i],n.rgb[i]);return new e.Color(r,this.alpha+n.alpha)},toHSL:function(){var e=this.rgb[0]/255,t=this.rgb[1]/255,n=this.rgb[2]/255,r=this.alpha,i=Math.max(e,t,n),s=Math.min(e,t,n),o,u,a=(i+s)/2,f=i-s;if(i===s)o=u=0;else{u=a>.5?f/(2-i-s):f/(i+s);switch(i){case e:o=(t-n)/f+(t<n?6:0);break;case t:o=(n-e)/f+2;break;case n:o=(e-t)/f+4}o/=6}return{h:o*360,s:u,l:a,a:r}},toARGB:function(){var e=[Math.round(this.alpha*255)].concat(this.rgb);return"#"+e.map(function(e){return e=Math.round(e),e=(e>255?255:e<0?0:e).toString(16),e.length===1?"0"+e:e}).join("")},compare:function(e){return e.rgb?e.rgb[0]===this.rgb[0]&&e.rgb[1]===this.rgb[1]&&e.rgb[2]===this.rgb[2]&&e.alpha===this.alpha?0:-1:-1}}}(n("../tree")),function(e){e.Comment=function(e,t){this.value=e,this.silent=!!t},e.Comment.prototype={toCSS:function(e){return e.compress?"":this.value},eval:function(){return this}}}(n("../tree")),function(e){e.Condition=function(e,t,n,
 r,i){this.op=e.trim(),this.lvalue=t,this.rvalue=n,this.index=r,this.negate=i},e.Condition.prototype.eval=function(e){var t=this.lvalue.eval(e),n=this.rvalue.eval(e),r=this.index,i,i=function(e){switch(e){case"and":return t&&n;case"or":return t||n;default:if(t.compare)i=t.compare(n);else{if(!n.compare)throw{type:"Type",message:"Unable to perform comparison",index:r};i=n.compare(t)}switch(i){case-1:return e==="<"||e==="=<";case 0:return e==="="||e===">="||e==="=<";case 1:return e===">"||e===">="}}}(this.op);return this.negate?!i:i}}(n("../tree")),function(e){e.Dimension=function(e,t){this.value=parseFloat(e),this.unit=t||null},e.Dimension.prototype={eval:function(){return this},toColor:function(){return new e.Color([this.value,this.value,this.value])},toCSS:function(){var e=this.value+this.unit;return e},operate:function(t,n){return new e.Dimension(e.operate(t,this.value,n.value),this.unit||n.unit)},compare:function(t){return t instanceof e.Dimension?t.value>this.value?-1:t.value<this
 .value?1:t.unit&&this.unit!==t.unit?-1:0:-1}}}(n("../tree")),function(e){e.Directive=function(t,n){this.name=t,Array.isArray(n)?(this.ruleset=new e.Ruleset([],n),this.ruleset.allowImports=!0):this.value=n},e.Directive.prototype={toCSS:function(e,t){return this.ruleset?(this.ruleset.root=!0,this.name+(t.compress?"{":" {\n  ")+this.ruleset.toCSS(e,t).trim().replace(/\n/g,"\n  ")+(t.compress?"}":"\n}\n")):this.name+" "+this.value.toCSS()+";\n"},eval:function(t){var n=this;return this.ruleset&&(t.frames.unshift(this),n=new e.Directive(this.name),n.ruleset=this.ruleset.eval(t),t.frames.shift()),n},variable:function(t){return e.Ruleset.prototype.variable.call(this.ruleset,t)},find:function(){return e.Ruleset.prototype.find.apply(this.ruleset,arguments)},rulesets:function(){return e.Ruleset.prototype.rulesets.apply(this.ruleset)}}}(n("../tree")),function(e){e.Element=function(t,n,r){this.combinator=t instanceof e.Combinator?t:new e.Combinator(t),typeof n=="string"?this.value=n.trim():n?thi
 s.value=n:this.value="",this.index=r},e.Element.prototype.eval=function(t){return new e.Element(this.combinator,this.value.eval?this.value.eval(t):this.value,this.index)},e.Element.prototype.toCSS=function(e){var t=this.value.toCSS?this.value.toCSS(e):this.value;return t==""&&this.combinator.value.charAt(0)=="&"?"":this.combinator.toCSS(e||{})+t},e.Combinator=function(e){e===" "?this.value=" ":this.value=e?e.trim():""},e.Combinator.prototype.toCSS=function(e){return{"":""," ":" ",":":" :","+":e.compress?"+":" + ","~":e.compress?"~":" ~ ",">":e.compress?">":" > ","|":e.compress?"|":" | "}[this.value]}}(n("../tree")),function(e){e.Expression=function(e){this.value=e},e.Expression.prototype={eval:function(t){return this.value.length>1?new e.Expression(this.value.map(function(e){return e.eval(t)})):this.value.length===1?this.value[0].eval(t):this},toCSS:function(e){return this.value.map(function(t){return t.toCSS?t.toCSS(e):""}).join(" ")}}}(n("../tree")),function(e){e.Import=function(t
 ,n,r,i,s,o){var u=this;this.once=i,this.index=s,this._path=t,this.features=r&&new e.Value(r),this.rootpath=o,t instanceof e.Quoted?this.path=/(\.[a-z]*$)|([\?;].*)$/.test(t.value)?t.value:t.value+".less":this.path=t.value.value||t.value,this.css=/css([\?;].*)?$/.test(this.path),this.css||n.push(this.path,function(t,n,r){t&&(t.index=s),r&&u.once&&(u.skip=r),u.root=n||new e.Ruleset([],[])})},e.Import.prototype={toCSS:function(e){var t=this.features?" "+this.features.toCSS(e):"";return this.css?(typeof this._path.value=="string"&&!/^(?:[a-z-]+:|\/)/.test(this._path.value)&&(this._path.value=this.rootpath+this._path.value),"@import "+this._path.toCSS()+t+";\n"):""},eval:function(t){var n,r=this.features&&this.features.eval(t);return this.skip?[]:this.css?this:(n=new e.Ruleset([],this.root.rules.slice(0)),n.evalImports(t),this.features?new e.Media(n.rules,this.features.value):n.rules)}}}(n("../tree")),function(e){e.JavaScript=function(e,t,n){this.escaped=n,this.expression=e,this.index=t}
 ,e.JavaScript.prototype={eval:function(t){var n,r=this,i={},s=this.expression.replace(/@\{([\w-]+)\}/g,function(n,i){return e.jsify((new e.Variable("@"+i,r.index)).eval(t))});try{s=new Function("return ("+s+")")}catch(o){throw{message:"JavaScript evaluation error: `"+s+"`",index:this.index}}for(var u in t.frames[0].variables())i[u.slice(1)]={value:t.frames[0].variables()[u].value,toJS:function(){return this.value.eval(t).toCSS()}};try{n=s.call(i)}catch(o){throw{message:"JavaScript evaluation error: '"+o.name+": "+o.message+"'",index:this.index}}return typeof n=="string"?new e.Quoted('"'+n+'"',n,this.escaped,this.index):Array.isArray(n)?new e.Anonymous(n.join(", ")):new e.Anonymous(n)}}}(n("../tree")),function(e){e.Keyword=function(e){this.value=e},e.Keyword.prototype={eval:function(){return this},toCSS:function(){return this.value},compare:function(t){return t instanceof e.Keyword?t.value===this.value?0:1:-1}},e.True=new e.Keyword("true"),e.False=new e.Keyword("false")}(n("../tree")
 ),function(e){e.Media=function(t,n){var r=this.emptySelectors();this.features=new e.Value(n),this.ruleset=new e.Ruleset(r,t),this.ruleset.allowImports=!0},e.Media.prototype={toCSS:function(e,t){var n=this.features.toCSS(t);return this.ruleset.root=e.length===0||e[0].multiMedia,"@media "+n+(t.compress?"{":" {\n  ")+this.ruleset.toCSS(e,t).trim().replace(/\n/g,"\n  ")+(t.compress?"}":"\n}\n")},eval:function(t){t.mediaBlocks||(t.mediaBlocks=[],t.mediaPath=[]);var n=new e.Media([],[]);return this.debugInfo&&(this.ruleset.debugInfo=this.debugInfo,n.debugInfo=this.debugInfo),n.features=this.features.eval(t),t.mediaPath.push(n),t.mediaBlocks.push(n),t.frames.unshift(this.ruleset),n.ruleset=this.ruleset.eval(t),t.frames.shift(),t.mediaPath.pop(),t.mediaPath.length===0?n.evalTop(t):n.evalNested(t)},variable:function(t){return e.Ruleset.prototype.variable.call(this.ruleset,t)},find:function(){return e.Ruleset.prototype.find.apply(this.ruleset,arguments)},rulesets:function(){return e.Ruleset.p
 rototype.rulesets.apply(this.ruleset)},emptySelectors:function(){var t=new e.Element("","&",0);return[new e.Selector([t])]},evalTop:function(t){var n=this;if(t.mediaBlocks.length>1){var r=this.emptySelectors();n=new e.Ruleset(r,t.mediaBlocks),n.multiMedia=!0}return delete t.mediaBlocks,delete t.mediaPath,n},evalNested:function(t){var n,r,i=t.mediaPath.concat([this]);for(n=0;n<i.length;n++)r=i[n].features instanceof e.Value?i[n].features.value:i[n].features,i[n]=Array.isArray(r)?r:[r];return this.features=new e.Value(this.permute(i).map(function(t){t=t.map(function(t){return t.toCSS?t:new e.Anonymous(t)});for(n=t.length-1;n>0;n--)t.splice(n,0,new e.Anonymous("and"));return new e.Expression(t)})),new e.Ruleset([],[])},permute:function(e){if(e.length===0)return[];if(e.length===1)return e[0];var t=[],n=this.permute(e.slice(1));for(var r=0;r<n.length;r++)for(var i=0;i<e[0].length;i++)t.push([e[0][i]].concat(n[r]));return t},bubbleSelectors:function(t){this.ruleset=new e.Ruleset(t.slice(0
 ),[this.ruleset])}}}(n("../tree")),function(e){e.mixin={},e.mixin.Call=function(t,n,r,i,s){this.selector=new e.Selector(t),this.arguments=n,this.index=r,this.filename=i,this.important=s},e.mixin.Call.prototype={eval:function(t){var n,r,i,s=[],o=!1,u,a,f,l,c;i=this.arguments&&this.arguments.map(function(e){return{name:e.name,value:e.value.eval(t)}});for(u=0;u<t.frames.length;u++)if((n=t.frames[u].find(this.selector)).length>0){c=!0;for(a=0;a<n.length;a++){r=n[a],l=!1;for(f=0;f<t.frames.length;f++)if(!(r instanceof e.mixin.Definition)&&r===(t.frames[f].originalRuleset||t.frames[f])){l=!0;break}if(l)continue;if(r.matchArgs(i,t)){if(!r.matchCondition||r.matchCondition(i,t))try{Array.prototype.push.apply(s,r.eval(t,i,this.important).rules)}catch(h){throw{message:h.message,index:this.index,filename:this.filename,stack:h.stack}}o=!0}}if(o)return s}throw c?{type:"Runtime",message:"No matching definition was found for `"+this.selector.toCSS().trim()+"("+(i?i.map(function(e){var t="";return e
 .name&&(t+=e.name+":"),e.value.toCSS?t+=e.value.toCSS():t+="???",t}).join(", "):"")+")`",index:this.index,filename:this.filename}:{type:"Name",message:this.selector.toCSS().trim()+" is undefined",index:this.index,filename:this.filename}}},e.mixin.Definition=function(t,n,r,i,s){this.name=t,this.selectors=[new e.Selector([new e.Element(null,t)])],this.params=n,this.condition=i,this.variadic=s,this.arity=n.length,this.rules=r,this._lookups={},this.required=n.reduce(function(e,t){return!t.name||t.name&&!t.value?e+1:e},0),this.parent=e.Ruleset.prototype,this.frames=[]},e.mixin.Definition.prototype={toCSS:function(){return""},variable:function(e){return this.parent.variable.call(this,e)},variables:function(){return this.parent.variables.call(this)},find:function(){return this.parent.find.apply(this,arguments)},rulesets:function(){return this.parent.rulesets.apply(this)},evalParams:function(t,n,r,i){var s=new e.Ruleset(null,[]),o,u,a=this.params.slice(0),f,l,c,h,p,d;if(r){r=r.slice(0);for(
 f=0;f<r.length;f++){u=r[f];if(h=u&&u.name){p=!1;for(l=0;l<a.length;l++)if(!i[l]&&h===a[l].name){i[l]=u.value.eval(t),s.rules.unshift(new e.Rule(h,u.value.eval(t))),p=!0;break}if(p){r.splice(f,1),f--;continue}throw{type:"Runtime",message:"Named argument for "+this.name+" "+r[f].name+" not found"}}}}d=0;for(f=0;f<a.length;f++){if(i[f])continue;u=r&&r[d];if(h=a[f].name)if(a[f].variadic&&r){o=[];for(l=d;l<r.length;l++)o.push(r[l].value.eval(t));s.rules.unshift(new e.Rule(h,(new e.Expression(o)).eval(t)))}else{c=u&&u.value;if(c)c=c.eval(t);else{if(!a[f].value)throw{type:"Runtime",message:"wrong number of arguments for "+this.name+" ("+r.length+" for "+this.arity+")"};c=a[f].value.eval(n)}s.rules.unshift(new e.Rule(h,c)),i[f]=c}if(a[f].variadic&&r)for(l=d;l<r.length;l++)i[l]=r[l].value.eval(t);d++}return s},eval:function(t,n,r){var i=[],s=this.frames.concat(t.frames),o=this.evalParams(t,{frames:s},n,i),u,a,f,l;return o.rules.unshift(new e.Rule("@arguments",(new e.Expression(i)).eval(t))),
 a=r?this.parent.makeImportant.apply(this).rules:this.rules.slice(0),l=(new e.Ruleset(null,a)).eval({frames:[this,o].concat(s)}),l.originalRuleset=this,l},matchCondition:function(e,t){return this.condition&&!this.condition.eval({frames:[this.evalParams(t,{frames:this.frames.concat(t.frames)},e,[])].concat(t.frames)})?!1:!0},matchArgs:function(e,t){var n=e&&e.length||0,r,i;if(!this.variadic){if(n<this.required)return!1;if(n>this.params.length)return!1;if(this.required>0&&n>this.params.length)return!1}r=Math.min(n,this.arity);for(var s=0;s<r;s++)if(!this.params[s].name&&!this.params[s].variadic&&e[s].value.eval(t).toCSS()!=this.params[s].value.eval(t).toCSS())return!1;return!0}}}(n("../tree")),function(e){e.Operation=function(e,t){this.op=e.trim(),this.operands=t},e.Operation.prototype.eval=function(t){var n=this.operands[0].eval(t),r=this.operands[1].eval(t),i;if(n instanceof e.Dimension&&r instanceof e.Color){if(this.op!=="*"&&this.op!=="+")throw{name:"OperationError",message:"Can't 
 substract or divide a color from a number"};i=r,r=n,n=i}if(!n.operate)throw{name:"OperationError",message:"Operation on an invalid type"};return n.operate(this.op,r)},e.operate=function(e,t,n){switch(e){case"+":return t+n;case"-":return t-n;case"*":return t*n;case"/":return t/n}}}(n("../tree")),function(e){e.Paren=function(e){this.value=e},e.Paren.prototype={toCSS:function(e){return"("+this.value.toCSS(e)+")"},eval:function(t){return new e.Paren(this.value.eval(t))}}}(n("../tree")),function(e){e.Quoted=function(e,t,n,r){this.escaped=n,this.value=t||"",this.quote=e.charAt(0),this.index=r},e.Quoted.prototype={toCSS:function(){return this.escaped?this.value:this.quote+this.value+this.quote},eval:function(t){var n=this,r=this.value.replace(/`([^`]+)`/g,function(r,i){return(new e.JavaScript(i,n.index,!0)).eval(t).value}).replace(/@\{([\w-]+)\}/g,function(r,i){var s=(new e.Variable("@"+i,n.index)).eval(t);return s instanceof e.Quoted?s.value:s.toCSS()});return new e.Quoted(this.quote+r+th
 is.quote,r,this.escaped,this.index)},compare:function(e){if(!e.toCSS)return-1;var t=this.toCSS(),n=e.toCSS();return t===n?0:t<n?-1:1}}}(n("../tree")),function(e){e.Ratio=function(e){this.value=e},e.Ratio.prototype={toCSS:function(e){return this.value},eval:function(){return this}}}(n("../tree")),function(e){e.Rule=function(t,n,r,i,s){this.name=t,this.value=n instanceof e.Value?n:new e.Value([n]),this.important=r?" "+r.trim():"",this.index=i,this.inline=s||!1,t.charAt(0)==="@"?this.variable=!0:this.variable=!1},e.Rule.prototype.toCSS=function(e){return this.variable?"":this.name+(e.compress?":":": ")+this.value.toCSS(e)+this.important+(this.inline?"":";")},e.Rule.prototype.eval=function(t){return new e.Rule(this.name,this.value.eval(t),this.important,this.index,this.inline)},e.Rule.prototype.makeImportant=function(){return new e.Rule(this.name,this.value,"!important",this.index,this.inline)},e.Shorthand=function(e,t){this.a=e,this.b=t},e.Shorthand.prototype={toCSS:function(e){return 
 this.a.toCSS(e)+"/"+this.b.toCSS(e)},eval:function(){return this}}}(n("../tree")),function(e){e.Ruleset=function(e,t,n){this.selectors=e,this.rules=t,this._lookups={},this.strictImports=n},e.Ruleset.prototype={eval:function(t){var n=this.selectors&&this.selectors.map(function(e){return e.eval(t)}),r=new e.Ruleset(n,this.rules.slice(0),this.strictImports),i;r.originalRuleset=this,r.root=this.root,r.allowImports=this.allowImports,this.debugInfo&&(r.debugInfo=this.debugInfo),t.frames.unshift(r),(r.root||r.allowImports||!r.strictImports)&&r.evalImports(t);for(var s=0;s<r.rules.length;s++)r.rules[s]instanceof e.mixin.Definition&&(r.rules[s].frames=t.frames.slice(0));var o=t.mediaBlocks&&t.mediaBlocks.length||0;for(var s=0;s<r.rules.length;s++)r.rules[s]instanceof e.mixin.Call&&(i=r.rules[s].eval(t),r.rules.splice.apply(r.rules,[s,1].concat(i)),s+=i.length-1,r.resetCache());for(var s=0,u;s<r.rules.length;s++)u=r.rules[s],u instanceof e.mixin.Definition||(r.rules[s]=u.eval?u.eval(t):u);t.f
 rames.shift();if(t.mediaBlocks)for(var s=o;s<t.mediaBlocks.length;s++)t.mediaBlocks[s].bubbleSelectors(n);return r},evalImports:function(t){var n,r;for(n=0;n<this.rules.length;n++)this.rules[n]instanceof e.Import&&(r=this.rules[n].eval(t),typeof r.length=="number"?(this.rules.splice.apply(this.rules,[n,1].concat(r)),n+=r.length-1):this.rules.splice(n,1,r),this.resetCache())},makeImportant:function(){return new e.Ruleset(this.selectors,this.rules.map(function(e){return e.makeImportant?e.makeImportant():e}),this.strictImports)},matchArgs:function(e){return!e||e.length===0},resetCache:function(){this._rulesets=null,this._variables=null,this._lookups={}},variables:function(){return this._variables?this._variables:this._variables=this.rules.reduce(function(t,n){return n instanceof e.Rule&&n.variable===!0&&(t[n.name]=n),t},{})},variable:function(e){return this.variables()[e]},rulesets:function(){return this._rulesets?this._rulesets:this._rulesets=this.rules.filter(function(t){return t ins
 tanceof e.Ruleset||t instanceof e.mixin.Definition})},find:function(t,n){n=n||this;var r=[],i,s,o=t.toCSS();return o in this._lookups?this._lookups[o]:(this.rulesets().forEach(function(i){if(i!==n)for(var o=0;o<i.selectors.length;o++)if(s=t.match(i.selectors[o])){t.elements.length>i.selectors[o].elements.length?Array.prototype.push.apply(r,i.find(new e.Selector(t.elements.slice(1)),n)):r.push(i);break}}),this._lookups[o]=r)},toCSS:function(t,n){var r=[],i=[],s=[],o=[],u=[],a,f,l;this.root||this.joinSelectors(u,t,this.selectors);for(var c=0;c<this.rules.length;c++){l=this.rules[c];if(l.rules||l instanceof e.Media)o.push(l.toCSS(u,n));else if(l instanceof e.Directive){var h=l.toCSS(u,n);if(l.name==="@charset"){if(n.charset){l.debugInfo&&(o.push(e.debugInfo(n,l)),o.push((new e.Comment("/* "+h.replace(/\n/g,"")+" */\n")).toCSS(n)));continue}n.charset=!0}o.push(h)}else l instanceof e.Comment?l.silent||(this.root?o.push(l.toCSS(n)):i.push(l.toCSS(n))):l.toCSS&&!l.variable?i.push(l.toCSS(n
 )):l.value&&!l.variable&&i.push(l.value.toString())}o=o.join("");if(this.root)r.push(i.join(n.compress?"":"\n"));else if(i.length>0){f=e.debugInfo(n,this),a=u.map(function(e){return e.map(function(e){return e.toCSS(n)}).join("").trim()}).join(n.compress?",":",\n");for(var c=i.length-1;c>=0;c--)s.indexOf(i[c])===-1&&s.unshift(i[c]);i=s,r.push(f+a+(n.compress?"{":" {\n  ")+i.join(n.compress?"":"\n  ")+(n.compress?"}":"\n}\n"))}return r.push(o),r.join("")+(n.compress?"\n":"")},joinSelectors:function(e,t,n){for(var r=0;r<n.length;r++)this.joinSelector(e,t,n[r])},joinSelector:function(t,n,r){var i,s,o,u,a,f,l,c,h,p,d,v,m,g,y;for(i=0;i<r.elements.length;i++)f=r.elements[i],f.value==="&"&&(u=!0);if(!u){if(n.length>0)for(i=0;i<n.length;i++)t.push(n[i].concat(r));else t.push([r]);return}g=[],a=[[]];for(i=0;i<r.elements.length;i++){f=r.elements[i];if(f.value!=="&")g.push(f);else{y=[],g.length>0&&this.mergeElementsOnToSelectors(g,a);for(s=0;s<a.length;s++){l=a[s];if(n.length==0)l.length>0&&(l[
 0].elements=l[0].elements.slice(0),l[0].elements.push(new e.Element(f.combinator,"",0))),y.push(l);else for(o=0;o<n.length;o++)c=n[o],h=[],p=[],v=!0,l.length>0?(h=l.slice(0),m=h.pop(),d=new e.Selector(m.elements.slice(0)),v=!1):d=new e.Selector([]),c.length>1&&(p=p.concat(c.slice(1))),c.length>0&&(v=!1,d.elements.push(new e.Element(f.combinator,c[0].elements[0].value,0)),d.elements=d.elements.concat(c[0].elements.slice(1))),v||h.push(d),h=h.concat(p),y.push(h)}a=y,g=[]}}g.length>0&&this.mergeElementsOnToSelectors(g,a);for(i=0;i<a.length;i++)t.push(a[i])},mergeElementsOnToSelectors:function(t,n){var r,i;if(n.length==0){n.push([new e.Selector(t)]);return}for(r=0;r<n.length;r++)i=n[r],i.length>0?i[i.length-1]=new e.Selector(i[i.length-1].elements.concat(t)):i.push(new e.Selector(t))}}}(n("../tree")),function(e){e.Selector=function(e){this.elements=e},e.Selector.prototype.match=function(e){var t=this.elements,n=t.length,r,i,s,o;r=e.elements.slice(e.elements.length&&e.elements[0].value==
 ="&"?1:0),i=r.length,s=Math.min(n,i);if(i===0||n<i)return!1;for(o=0;o<s;o++)if(t[o].value!==r[o].value)return!1;return!0},e.Selector.prototype.eval=function(t){return new e.Selector(this.elements.map(function(e){return e.eval(t)}))},e.Selector.prototype.toCSS=function(e){return this._css?this._css:(this.elements[0].combinator.value===""?this._css=" ":this._css="",this._css+=this.elements.map(function(t){return typeof t=="string"?" "+t.trim():t.toCSS(e)}).join(""),this._css)}}(n("../tree")),function(e){e.UnicodeDescriptor=function(e){this.value=e},e.UnicodeDescriptor.prototype={toCSS:function(e){return this.value},eval:function(){return this}}}(n("../tree")),function(e){e.URL=function(e,t){this.value=e,this.rootpath=t},e.URL.prototype={toCSS:function(){return"url("+this.value.toCSS()+")"},eval:function(t){var n=this.value.eval(t),r;return typeof n.value=="string"&&!/^(?:[a-z-]+:|\/)/.test(n.value)&&(r=this.rootpath,n.quote||(r=r.replace(/[\(\)'"\s]/g,function(e){return"\\"+e})),n.val
 ue=r+n.value),new e.URL(n,this.rootpath)}}}(n("../tree")),function(e){e.Value=function(e){this.value=e,this.is="value"},e.Value.prototype={eval:function(t){return this.value.length===1?this.value[0].eval(t):new e.Value(this.value.map(function(e){return e.eval(t)}))},toCSS:function(e){return this.value.map(function(t){return t.toCSS(e)}).join(e.compress?",":", ")}}}(n("../tree")),function(e){e.Variable=function(e,t,n){this.name=e,this.index=t,this.file=n},e.Variable.prototype={eval:function(t){var n,r,i=this.name;i.indexOf("@@")==0&&(i="@"+(new e.Variable(i.slice(1))).eval(t).value);if(this.evaluating)throw{type:"Name",message:"Recursive variable definition for "+i,filename:this.file,index:this.index};this.evaluating=!0;if(n=e.find(t.frames,function(e){if(r=e.variable(i))return r.value.eval(t)}))return this.evaluating=!1,n;throw{type:"Name",message:"variable "+i+" is undefined",filename:this.file,index:this.index}}}}(n("../tree")),function(e){e.debugInfo=function(t,n){var r="";if(t.d
 umpLineNumbers&&!t.compress)switch(t.dumpLineNumbers){case"comments":r=e.debugInfo.asComment(n);break;case"mediaquery":r=e.debugInfo.asMediaQuery(n);break;case"all":r=e.debugInfo.asComment(n)+e.debugInfo.asMediaQuery(n)}return r},e.debugInfo.asComment=function(e){return"/* line "+e.debugInfo.lineNumber+", "+e.debugInfo.fileName+" */\n"},e.debugInfo.asMediaQuery=function(e){return"@media -sass-debug-info{filename{font-family:"+("file://"+e.debugInfo.fileName).replace(/[\/:.]/g,"\\$&")+"}line{font-family:\\00003"+e.debugInfo.lineNumber+"}}\n"},e.find=function(e,t){for(var n=0,r;n<e.length;n++)if(r=t.call(e,e[n]))return r;return null},e.jsify=function(e){return Array.isArray(e.value)&&e.value.length>1?"["+e.value.map(function(e){return e.toCSS(!1)}).join(", ")+"]":e.toCSS(!1)}}(n("./tree"));var o=/^(file|chrome(-extension)?|resource|qrc|app):/.test(location.protocol);r.env=r.env||(location.hostname=="127.0.0.1"||location.hostname=="0.0.0.0"||location.hostname=="localhost"||location.por
 t.length>0||o?"development":"production"),r.async=r.async||!1,r.fileAsync=r.fileAsync||!1,r.poll=r.poll||(o?1e3:1500);if(r.functions)for(var u in r.functions)r.tree.functions[u]=r.functions[u];var a=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(location.hash);a&&(r.dumpLineNumbers=a[1]),r.watch=function(){return r.watchMode||(r.env="development",f()),this.watchMode=!0},r.unwatch=function(){return clearInterval(r.watchTimer),this.watchMode=!1},/!watch/.test(location.hash)&&r.watch();var l=null;if(r.env!="development")try{l=typeof e.localStorage=="undefined"?null:e.localStorage}catch(c){}var h=document.getElementsByTagName("link"),p=/^text\/(x-)?less$/;r.sheets=[];for(var d=0;d<h.length;d++)(h[d].rel==="stylesheet/less"||h[d].rel.match(/stylesheet/)&&h[d].type.match(p))&&r.sheets.push(h[d]);var v="";r.modifyVars=function(e){var t=v;for(name in e)t+=(name.slice(0,1)==="@"?"":"@")+name+": "+(e[name].slice(-1)===";"?e[name]:e[name]+";");(new r.Parser).parse(t,function(e,t){S(t.toCSS(
 ),r.sheets[r.sheets.length-1])})},r.refresh=function(e){var t,n;t=n=new Date,g(function(e,r,i,s,o){o.local?C("loading "+s.href+" from cache."):(C("parsed "+s.href+" successfully."),S(r.toCSS(),s,o.lastModified)),C("css for "+s.href+" generated in "+(new Date-n)+"ms"),o.remaining===0&&C("css generated in "+(new Date-t)+"ms"),n=new Date},e),m()},r.refreshStyles=m,r.refresh(r.env==="development"),typeof define=="function"&&define.amd&&define("less",[],function(){return r})})(window);
\ No newline at end of file


[50/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/LICENSE.md
----------------------------------------------------------------------
diff --git a/LICENSE.md b/LICENSE.md
deleted file mode 100644
index cfdff80..0000000
--- a/LICENSE.md
+++ /dev/null
@@ -1,16 +0,0 @@
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
deleted file mode 100644
index 9f2324c..0000000
--- a/README.md
+++ /dev/null
@@ -1,72 +0,0 @@
-Apache Fineract: A Platform for Microfinance
-======
-
-The next evolution of fineract focussing being faster, lighter and cheaper to change (than existing mifos) so that it is more responsive to the needs of MFI’s and Integrators
-
-Build Status
-============
-
-Travis
-
-[![Build
-Status](https://travis-ci.org/openMF/mifosx.png?branch=master)](https://travis-ci.org/openMF/mifosx)
-
-Cloudbees Jenkins
-
-[![Build
-Status](https://openmf.ci.cloudbees.com/job/MIFOSX%20INTEGRATION%20TEST/badge/icon)](https://openmf.ci.cloudbees.com/job/MIFOSX%20INTEGRATION%20TEST/)
-
-<a target="_blank" href="https://openmf.ci.cloudbees.com/job/MIFOSX%20INTEGRATION%20TEST/"  title="Jenkins@CloudBees">Jenkins@CloudBees Unit + Integration Tests</a>
-
-
-Version
-==========
-
-The API for the fineract-platform (project named 'Apache Fineract')is documented in the api-docs under <b>Full API Matrix</b> and can be viewed <a target="_blank" href="https://demo.openmf.org/api-docs/apiLive.htm" title="API Documentation"> here
-</a>
-
-Latest stable release can always been viewed on master branch: <a target="_blank" href="https://github.com/openMF/mifosx/tree/master" title="Latest Release">Latest Release on Master</a>, <a target="_blank" href="https://github.com/openMF/mifosx/blob/master/CHANGELOG.md" title="Latest release change log">View change log</a>
-
-License
-=============
-
-This project is licensed under the open source MPL V2. See https://github.com/openMF/mifosx/blob/master/LICENSE.md
-
-Fineract Platform API
-=====================
-
-<a target="_blank" href="https://demo.openmf.org/api-docs/apiLive.htm" title="fineract platform api">API Documentation (Demo Server)</a>
-
-
-Online Demos
-=============================
-
-* <a target="_blank" href="https://demo.openmf.org" title="Reference Client App">Community App</a>
-* ~~<a target="_blank" href="https://demo.openmf.org/old/" title="Community App">Reference Client App (Deprecated)</a>~~
-
-Developers
-==========
-see https://mifosforge.jira.com/wiki/display/MIFOSX/MifosX+Technical - Developers Wiki Page
-
-see https://mifosforge.jira.com/wiki/display/MIFOSX/Getting+started+-+Contributing+to+MifosX  - Getting Started.
-
-see https://mifosforge.jira.com/wiki/display/MIFOSX/The+Basic+Design - Overview of Platform Implementation
-
-see https://github.com/openMF/mifosx/wiki/Screen-Based-Reporting for info around reporting
-
-see https://github.com/openMF/mifosx/wiki/Git-Usuage for info around using git
-
-see https://www.ohloh.net/p/mifosx for activity overview and basic code analysis.
-
-Roadmap
-==============
-
-<a target="_blank" href="http://goo.gl/IXS9Q" title="Community Roadmap (High Level)">Community Roadmap (High Level)</a>
-
-<a target="_blank" href="https://mifosforge.jira.com/browse/MIFOSX#selectedTab=com.atlassian.jira.plugin.system.project%3Aroadmap-panel" 
-   title="Project Release Roadmap on JIRA (Detailed View)">Project Release Roadmap on JIRA (Detailed View)</a>
-
-Video Demonstration
-===============
-
-Demonstration of first Prototype of this platform with browser App (April 2012) - http://www.youtube.com/watch?v=zN5Dn1Lc_js


[43/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.min.css
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.min.css b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.min.css
deleted file mode 100644
index a553c4f..0000000
--- a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * Bootstrap v3.0.0
- *
- * Copyright 2013 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world by @mdo and @fat.
- *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 
 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decorati
 on: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:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select
 ,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-w
 idth:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0
  20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-
 size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pr
 e.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,
 .col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col
 -sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11
 {right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.
 col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin
 -left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-
 1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.3333
 3333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.t
 able .table{background-color:#fff}.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>t
 foot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.tabl
 e>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.table-responsive>
 .table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-respo
 nsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[typ
 e="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0
  1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inl
 ine[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0
  6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .in
 put-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal
  .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow
 :none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.
 active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropd
 own-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[di
 sabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.d
 isabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46
 b8da}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .1
 5s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:befo
 re{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-r
 oad:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-print:before{content:"\e045"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.gly
 phicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphi
 con-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-re
 size-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{cont
 ent:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.
 glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-sa
 ve:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{conte
 nt:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1
 px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTr
 ansform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-
 group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-
 radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size
 :18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.bt
 n,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radi
 o"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-gr
 oup-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-
 child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{posit
 ion:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-botto
 m:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.t
 abbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left
 }}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-widt
 h:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768p
 x){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:
 inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-n
 av>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default 
 .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdow
 n-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hov
 er,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropd
 own>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a
 :focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.
 pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px
 }.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:
 .25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;back
 ground-color:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:bl
 ock;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-dang
 er{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progr
 ess-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress
 -bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,tra
 nsparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,
 transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.p
 rogress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{di
 splay:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-it
 em.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:
 last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f
 5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel
 -footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px
 }.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-inde
 x:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.m
 odal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:so
 lid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border
 :1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .ar
 row{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:
 block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right
 ,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyp
 hicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.c
 arousel-control .icon-next{width

<TRUNCATED>


[28/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/bare-bones-demo/bk_bare_bones_demo.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/bare-bones-demo/bk_bare_bones_demo.sql b/fineract-db/multi-tenant-demo-backups/bare-bones-demo/bk_bare_bones_demo.sql
deleted file mode 100644
index fab47a1..0000000
--- a/fineract-db/multi-tenant-demo-backups/bare-bones-demo/bk_bare_bones_demo.sql
+++ /dev/null
@@ -1,1933 +0,0 @@
--- MySQL dump 10.13  Distrib 5.1.60, for Win32 (ia32)
---
--- Host: localhost    Database: mifostenant-default
--- ------------------------------------------------------
--- Server version	5.1.60-community
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `acc_gl_account`
---
-
-DROP TABLE IF EXISTS `acc_gl_account`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_account` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(45) NOT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `gl_code` varchar(45) NOT NULL,
-  `disabled` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1',
-  `account_usage` tinyint(1) NOT NULL DEFAULT '2',
-  `classification_enum` smallint(5) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `acc_gl_code` (`gl_code`),
-  KEY `FK_ACC_0000000001` (`parent_id`),
-  CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_account`
---
-
-LOCK TABLES `acc_gl_account` WRITE;
-/*!40000 ALTER TABLE `acc_gl_account` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_account` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_closure`
---
-
-DROP TABLE IF EXISTS `acc_gl_closure`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_closure` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `closing_date` date NOT NULL,
-  `is_deleted` int(20) NOT NULL DEFAULT '0',
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `comments` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `office_id_closing_date` (`office_id`,`closing_date`),
-  KEY `FK_acc_gl_closure_m_office` (`office_id`),
-  KEY `FK_acc_gl_closure_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_closure_m_appuser_2` (`lastmodifiedby_id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_closure`
---
-
-LOCK TABLES `acc_gl_closure` WRITE;
-/*!40000 ALTER TABLE `acc_gl_closure` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_closure` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_journal_entry`
---
-
-DROP TABLE IF EXISTS `acc_gl_journal_entry`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_journal_entry` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_id` bigint(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `reversal_id` bigint(20) DEFAULT NULL,
-  `transaction_id` varchar(50) NOT NULL,
-  `reversed` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_entry` tinyint(1) NOT NULL DEFAULT '0',
-  `entry_date` date NOT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `entity_type_enum` smallint(5) DEFAULT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `createdby_id` bigint(20) NOT NULL,
-  `lastmodifiedby_id` bigint(20) NOT NULL,
-  `created_date` datetime NOT NULL,
-  `lastmodified_date` datetime NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_acc_gl_journal_entry_m_office` (`office_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser_2` (`lastmodifiedby_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_journal_entry` (`reversal_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_account` (`account_id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_account` FOREIGN KEY (`account_id`) REFERENCES `acc_gl_account` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_journal_entry` FOREIGN KEY (`reversal_id`) REFERENCES `acc_gl_journal_entry` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_journal_entry`
---
-
-LOCK TABLES `acc_gl_journal_entry` WRITE;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_product_mapping`
---
-
-DROP TABLE IF EXISTS `acc_product_mapping`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_product_mapping` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `gl_account_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `product_type` smallint(5) DEFAULT NULL,
-  `financial_account_type` smallint(5) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_product_mapping`
---
-
-LOCK TABLES `acc_product_mapping` WRITE;
-/*!40000 ALTER TABLE `acc_product_mapping` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_product_mapping` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `c_configuration`
---
-
-DROP TABLE IF EXISTS `c_configuration`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `c_configuration` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(50) DEFAULT NULL,
-  `enabled` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `c_configuration`
---
-
-LOCK TABLES `c_configuration` WRITE;
-/*!40000 ALTER TABLE `c_configuration` DISABLE KEYS */;
-INSERT INTO `c_configuration` VALUES (1,'maker-checker',0);
-/*!40000 ALTER TABLE `c_configuration` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `client additional data`
---
-
-DROP TABLE IF EXISTS `client additional data`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `client additional data` (
-  `client_id` bigint(20) NOT NULL,
-  `Gender_cd` int(11) NOT NULL,
-  `Date of Birth` date NOT NULL,
-  `Home address` text NOT NULL,
-  `Telephone number` varchar(20) NOT NULL,
-  `Telephone number (2nd)` varchar(20) NOT NULL,
-  `Email address` varchar(50) NOT NULL,
-  `EducationLevel_cd` int(11) NOT NULL,
-  `MaritalStatus_cd` int(11) NOT NULL,
-  `Number of children` int(11) NOT NULL,
-  `Citizenship` varchar(50) NOT NULL,
-  `PovertyStatus_cd` int(11) NOT NULL,
-  `YesNo_cd_Employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL,
-  `Employer name` varchar(50) DEFAULT NULL,
-  `Number of years` int(11) DEFAULT NULL,
-  `Monthly salary` decimal(19,6) DEFAULT NULL,
-  `YesNo_cd_Self employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL,
-  `Business address` text,
-  `Number of employees` int(11) DEFAULT NULL,
-  `Monthly salaries paid` decimal(19,6) DEFAULT NULL,
-  `Monthly net income of business activity` decimal(19,6) DEFAULT NULL,
-  `Monthly rent` decimal(19,6) DEFAULT NULL,
-  `Other income generating activities` varchar(100) DEFAULT NULL,
-  `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL,
-  `YesNo_cd_Loans with other institutions` int(11) NOT NULL,
-  `From whom` varchar(100) DEFAULT NULL,
-  `Amount` decimal(19,6) DEFAULT NULL,
-  `Interest rate pa` decimal(19,6) DEFAULT NULL,
-  `Number of people depending on overal income` int(11) NOT NULL,
-  `YesNo_cd_Bank account` int(11) NOT NULL,
-  `YesNo_cd_Business plan provided` int(11) NOT NULL,
-  `YesNo_cd_Access to internet` int(11) DEFAULT NULL,
-  `Introduced by` varchar(100) DEFAULT NULL,
-  `Known to introducer since` varchar(100) NOT NULL,
-  `Last visited by` varchar(100) DEFAULT NULL,
-  `Last visited on` date NOT NULL,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `client additional data`
---
-
-LOCK TABLES `client additional data` WRITE;
-/*!40000 ALTER TABLE `client additional data` DISABLE KEYS */;
-/*!40000 ALTER TABLE `client additional data` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_client_details`
---
-
-DROP TABLE IF EXISTS `extra_client_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_client_details` (
-  `client_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_client_details`
---
-
-LOCK TABLES `extra_client_details` WRITE;
-/*!40000 ALTER TABLE `extra_client_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_client_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_family_details`
---
-
-DROP TABLE IF EXISTS `extra_family_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_family_details` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `Name` varchar(40) DEFAULT NULL,
-  `Date of Birth` date DEFAULT NULL,
-  `Points Score` int(11) DEFAULT NULL,
-  `Education_cd_Highest` int(11) DEFAULT NULL,
-  `Other Notes` text,
-  PRIMARY KEY (`id`),
-  KEY `FK_Extra Family Details Data_1` (`client_id`),
-  CONSTRAINT `FK_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_family_details`
---
-
-LOCK TABLES `extra_family_details` WRITE;
-/*!40000 ALTER TABLE `extra_family_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_family_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_loan_details`
---
-
-DROP TABLE IF EXISTS `extra_loan_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_loan_details` (
-  `loan_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_loan_details`
---
-
-LOCK TABLES `extra_loan_details` WRITE;
-/*!40000 ALTER TABLE `extra_loan_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_loan_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `impact measurement`
---
-
-DROP TABLE IF EXISTS `impact measurement`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `impact measurement` (
-  `loan_id` bigint(20) NOT NULL,
-  `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL,
-  `ReasonNotRepaidOnSchedule` text,
-  `How was Loan Amount Invested` text NOT NULL,
-  `Additional Income Generated` decimal(19,6) NOT NULL,
-  `Additional Income Used For` text NOT NULL,
-  `YesNo_cd_NewJobsCreated` int(11) NOT NULL,
-  `Number of Jobs Created` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `impact measurement`
---
-
-LOCK TABLES `impact measurement` WRITE;
-/*!40000 ALTER TABLE `impact measurement` DISABLE KEYS */;
-/*!40000 ALTER TABLE `impact measurement` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `loan additional data`
---
-
-DROP TABLE IF EXISTS `loan additional data`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `loan additional data` (
-  `loan_id` bigint(20) NOT NULL,
-  `PurposeOfLoan_cd` int(11) NOT NULL,
-  `CollateralType_cd` int(11) NOT NULL,
-  `Collateral notes` text NOT NULL,
-  `YesNo_cd_Guarantor` int(11) NOT NULL,
-  `Guarantor name` varchar(100) DEFAULT NULL,
-  `Guarantor relation` varchar(100) DEFAULT NULL,
-  `Guarantor address` varchar(100) DEFAULT NULL,
-  `Guarantor telephone number` varchar(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `loan additional data`
---
-
-LOCK TABLES `loan additional data` WRITE;
-/*!40000 ALTER TABLE `loan additional data` DISABLE KEYS */;
-/*!40000 ALTER TABLE `loan additional data` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser`
---
-
-DROP TABLE IF EXISTS `m_appuser`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `office_id` bigint(20) DEFAULT NULL,
-  `username` varchar(100) NOT NULL,
-  `firstname` varchar(100) NOT NULL,
-  `lastname` varchar(100) NOT NULL,
-  `password` varchar(255) NOT NULL,
-  `email` varchar(100) NOT NULL,
-  `firsttime_login_remaining` bit(1) NOT NULL,
-  `nonexpired` bit(1) NOT NULL,
-  `nonlocked` bit(1) NOT NULL,
-  `nonexpired_credentials` bit(1) NOT NULL,
-  `enabled` bit(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `username_org` (`username`),
-  KEY `FKB3D587CE0DD567A` (`office_id`),
-  CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser`
---
-
-LOCK TABLES `m_appuser` WRITE;
-/*!40000 ALTER TABLE `m_appuser` DISABLE KEYS */;
-INSERT INTO `m_appuser` VALUES (1,0,1,'mifos','App','Administrator','5787039480429368bf94732aacc771cd0a3ea02bcf504ffe1185ab94213bc63a','demomfi@mifos.org','\0','','','','');
-/*!40000 ALTER TABLE `m_appuser` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser_role`
---
-
-DROP TABLE IF EXISTS `m_appuser_role`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser_role` (
-  `appuser_id` bigint(20) NOT NULL,
-  `role_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`appuser_id`,`role_id`),
-  KEY `FK7662CE59B4100309` (`appuser_id`),
-  KEY `FK7662CE5915CEC7AB` (`role_id`),
-  CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`),
-  CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser_role`
---
-
-LOCK TABLES `m_appuser_role` WRITE;
-/*!40000 ALTER TABLE `m_appuser_role` DISABLE KEYS */;
-INSERT INTO `m_appuser_role` VALUES (1,1);
-/*!40000 ALTER TABLE `m_appuser_role` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_calendar`
---
-
-DROP TABLE IF EXISTS `m_calendar`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_calendar` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `title` varchar(50) NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  `location` varchar(50) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `duration` smallint(6) DEFAULT NULL,
-  `calendar_type_enum` smallint(5) NOT NULL,
-  `repeating` tinyint(1) NOT NULL DEFAULT '0',
-  `recurrence` varchar(100) DEFAULT NULL,
-  `remind_by_enum` smallint(5) DEFAULT NULL,
-  `first_reminder` smallint(11) DEFAULT NULL,
-  `second_reminder` smallint(11) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_calendar`
---
-
-LOCK TABLES `m_calendar` WRITE;
-/*!40000 ALTER TABLE `m_calendar` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_calendar` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_calendar_instance`
---
-
-DROP TABLE IF EXISTS `m_calendar_instance`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_calendar_instance` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `calendar_id` bigint(20) NOT NULL,
-  `entity_id` bigint(20) NOT NULL,
-  `entity_type_enum` smallint(5) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`),
-  CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_calendar_instance`
---
-
-LOCK TABLES `m_calendar_instance` WRITE;
-/*!40000 ALTER TABLE `m_calendar_instance` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_calendar_instance` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_charge`
---
-
-DROP TABLE IF EXISTS `m_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `charge_applies_to_enum` smallint(5) NOT NULL,
-  `charge_time_enum` smallint(5) NOT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `is_active` tinyint(1) NOT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_charge`
---
-
-LOCK TABLES `m_charge` WRITE;
-/*!40000 ALTER TABLE `m_charge` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client`
---
-
-DROP TABLE IF EXISTS `m_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `middlename` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `fullname` varchar(100) DEFAULT NULL,
-  `display_name` varchar(100) NOT NULL,
-  `image_key` varchar(500) DEFAULT NULL,
-  `joined_date` date DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `external_id` (`external_id`),
-  KEY `FKCE00CAB3E0DD567A` (`office_id`),
-  CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client`
---
-
-LOCK TABLES `m_client` WRITE;
-/*!40000 ALTER TABLE `m_client` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client_identifier`
---
-
-DROP TABLE IF EXISTS `m_client_identifier`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client_identifier` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `document_type_id` int(11) NOT NULL,
-  `document_key` varchar(50) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `unique_identifier_key` (`document_type_id`,`document_key`),
-  UNIQUE KEY `unique_client_identifier` (`client_id`,`document_type_id`),
-  KEY `FK_m_client_document_m_client` (`client_id`),
-  KEY `FK_m_client_document_m_code_value` (`document_type_id`),
-  CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client_identifier`
---
-
-LOCK TABLES `m_client_identifier` WRITE;
-/*!40000 ALTER TABLE `m_client_identifier` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_client_identifier` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code`
---
-
-DROP TABLE IF EXISTS `m_code`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_name` varchar(100) DEFAULT NULL,
-  `is_system_defined` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_name` (`code_name`)
-) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code`
---
-
-LOCK TABLES `m_code` WRITE;
-/*!40000 ALTER TABLE `m_code` DISABLE KEYS */;
-INSERT INTO `m_code` VALUES (1,'Customer Identifier',1),(2,'LoanCollateral',1),(3,'LoanPurpose',1),(4,'Gender',1),(5,'YesNo',1);
-/*!40000 ALTER TABLE `m_code` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code_value`
---
-
-DROP TABLE IF EXISTS `m_code_value`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code_value` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_id` int(11) NOT NULL,
-  `code_value` varchar(100) DEFAULT NULL,
-  `order_position` int(11) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_value` (`code_id`,`code_value`),
-  KEY `FKCFCEA42640BE071Z` (`code_id`),
-  CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code_value`
---
-
-LOCK TABLES `m_code_value` WRITE;
-/*!40000 ALTER TABLE `m_code_value` DISABLE KEYS */;
-INSERT INTO `m_code_value` VALUES (1,1,'Passport',1),(2,1,'Id',1),(3,1,'Drivers License',2),(4,1,'Any Other Id Type',3);
-/*!40000 ALTER TABLE `m_code_value` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_currency`
---
-
-DROP TABLE IF EXISTS `m_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_currency`
---
-
-LOCK TABLES `m_currency` WRITE;
-/*!40000 ALTER TABLE `m_currency` DISABLE KEYS */;
-INSERT INTO `m_currency` VALUES (1,'AED',2,NULL,'UAE Dirham','currency.AED'),(2,'AFN',2,NULL,'Afghanistan Afghani','currency.AFN'),(3,'ALL',2,NULL,'Albanian Lek','currency.ALL'),(4,'AMD',2,NULL,'Armenian Dram','currency.AMD'),(5,'ANG',2,NULL,'Netherlands Antillian Guilder','currency.ANG'),(6,'AOA',2,NULL,'Angolan Kwanza','currency.AOA'),(7,'ARS',2,'$','Argentine Peso','currency.ARS'),(8,'AUD',2,'A$','Australian Dollar','currency.AUD'),(9,'AWG',2,NULL,'Aruban Guilder','currency.AWG'),(10,'AZM',2,NULL,'Azerbaijanian Manat','currency.AZM'),(11,'BAM',2,NULL,'Bosnia and Herzegovina Convertible Marks','currency.BAM'),(12,'BBD',2,NULL,'Barbados Dollar','currency.BBD'),(13,'BDT',2,NULL,'Bangladesh Taka','currency.BDT'),(14,'BGN',2,NULL,'Bulgarian Lev','currency.BGN'),(15,'BHD',3,NULL,'Bahraini Dinar','currency.BHD'),(16,'BIF',0,NULL,'Burundi Franc','currency.BIF'),(17,'BMD',2,NULL,'Bermudian Dollar','currency.BMD'),(18,'BND',2,'B$','Brunei Dollar','currency.BND'),(19,'BOB',2,'Bs.','Bolivian
  Boliviano','currency.BOB'),(20,'BRL',2,'R$','Brazilian Real','currency.BRL'),(21,'BSD',2,NULL,'Bahamian Dollar','currency.BSD'),(22,'BTN',2,NULL,'Bhutan Ngultrum','currency.BTN'),(23,'BWP',2,NULL,'Botswana Pula','currency.BWP'),(24,'BYR',0,NULL,'Belarussian Ruble','currency.BYR'),(25,'BZD',2,'BZ$','Belize Dollar','currency.BZD'),(26,'CAD',2,NULL,'Canadian Dollar','currency.CAD'),(27,'CDF',2,NULL,'Franc Congolais','currency.CDF'),(28,'CHF',2,NULL,'Swiss Franc','currency.CHF'),(29,'CLP',0,'$','Chilean Peso','currency.CLP'),(30,'CNY',2,NULL,'Chinese Yuan Renminbi','currency.CNY'),(31,'COP',2,'$','Colombian Peso','currency.COP'),(32,'CRC',2,'₡','Costa Rican Colon','currency.CRC'),(33,'CSD',2,NULL,'Serbian Dinar','currency.CSD'),(34,'CUP',2,'$MN','Cuban Peso','currency.CUP'),(35,'CVE',2,NULL,'Cape Verde Escudo','currency.CVE'),(36,'CYP',2,NULL,'Cyprus Pound','currency.CYP'),(37,'CZK',2,NULL,'Czech Koruna','currency.CZK'),(38,'DJF',0,NULL,'Djibouti Franc','currency.DJF'),(39,'DKK',2,NU
 LL,'Danish Krone','currency.DKK'),(40,'DOP',2,'RD$','Dominican Peso','currency.DOP'),(41,'DZD',2,NULL,'Algerian Dinar','currency.DZD'),(42,'EEK',2,NULL,'Estonian Kroon','currency.EEK'),(43,'EGP',2,NULL,'Egyptian Pound','currency.EGP'),(44,'ERN',2,NULL,'Eritrea Nafka','currency.ERN'),(45,'ETB',2,NULL,'Ethiopian Birr','currency.ETB'),(46,'EUR',2,'€','Euro','currency.EUR'),(47,'FJD',2,NULL,'Fiji Dollar','currency.FJD'),(48,'FKP',2,NULL,'Falkland Islands Pound','currency.FKP'),(49,'GBP',2,NULL,'Pound Sterling','currency.GBP'),(50,'GEL',2,NULL,'Georgian Lari','currency.GEL'),(51,'GHC',2,'GHc','Ghana Cedi','currency.GHC'),(52,'GIP',2,NULL,'Gibraltar Pound','currency.GIP'),(53,'GMD',2,NULL,'Gambian Dalasi','currency.GMD'),(54,'GNF',0,NULL,'Guinea Franc','currency.GNF'),(55,'GTQ',2,'Q','Guatemala Quetzal','currency.GTQ'),(56,'GYD',2,NULL,'Guyana Dollar','currency.GYD'),(57,'HKD',2,NULL,'Hong Kong Dollar','currency.HKD'),(58,'HNL',2,'L','Honduras Lempira','currency.HNL'),(59,'HRK',2,NULL,'
 Croatian Kuna','currency.HRK'),(60,'HTG',2,'G','Haiti Gourde','currency.HTG'),(61,'HUF',2,NULL,'Hungarian Forint','currency.HUF'),(62,'IDR',2,NULL,'Indonesian Rupiah','currency.IDR'),(63,'ILS',2,NULL,'New Israeli Shekel','currency.ILS'),(64,'INR',2,'₹','Indian Rupee','currency.INR'),(65,'IQD',3,NULL,'Iraqi Dinar','currency.IQD'),(66,'IRR',2,NULL,'Iranian Rial','currency.IRR'),(67,'ISK',0,NULL,'Iceland Krona','currency.ISK'),(68,'JMD',2,NULL,'Jamaican Dollar','currency.JMD'),(69,'JOD',3,NULL,'Jordanian Dinar','currency.JOD'),(70,'JPY',0,NULL,'Japanese Yen','currency.JPY'),(71,'KES',2,'KSh','Kenyan Shilling','currency.KES'),(72,'KGS',2,NULL,'Kyrgyzstan Som','currency.KGS'),(73,'KHR',2,NULL,'Cambodia Riel','currency.KHR'),(74,'KMF',0,NULL,'Comoro Franc','currency.KMF'),(75,'KPW',2,NULL,'North Korean Won','currency.KPW'),(76,'KRW',0,NULL,'Korean Won','currency.KRW'),(77,'KWD',3,NULL,'Kuwaiti Dinar','currency.KWD'),(78,'KYD',2,NULL,'Cayman Islands Dollar','currency.KYD'),(79,'KZT',2,NU
 LL,'Kazakhstan Tenge','currency.KZT'),(80,'LAK',2,NULL,'Lao Kip','currency.LAK'),(81,'LBP',2,'L£','Lebanese Pound','currency.LBP'),(82,'LKR',2,NULL,'Sri Lanka Rupee','currency.LKR'),(83,'LRD',2,NULL,'Liberian Dollar','currency.LRD'),(84,'LSL',2,NULL,'Lesotho Loti','currency.LSL'),(85,'LTL',2,NULL,'Lithuanian Litas','currency.LTL'),(86,'LVL',2,NULL,'Latvian Lats','currency.LVL'),(87,'LYD',3,NULL,'Libyan Dinar','currency.LYD'),(88,'MAD',2,NULL,'Moroccan Dirham','currency.MAD'),(89,'MDL',2,NULL,'Moldovan Leu','currency.MDL'),(90,'MGA',2,NULL,'Malagasy Ariary','currency.MGA'),(91,'MKD',2,NULL,'Macedonian Denar','currency.MKD'),(92,'MMK',2,'K','Myanmar Kyat','currency.MMK'),(93,'MNT',2,NULL,'Mongolian Tugrik','currency.MNT'),(94,'MOP',2,NULL,'Macau Pataca','currency.MOP'),(95,'MRO',2,NULL,'Mauritania Ouguiya','currency.MRO'),(96,'MTL',2,NULL,'Maltese Lira','currency.MTL'),(97,'MUR',2,NULL,'Mauritius Rupee','currency.MUR'),(98,'MVR',2,NULL,'Maldives Rufiyaa','currency.MVR'),(99,'MWK',2,N
 ULL,'Malawi Kwacha','currency.MWK'),(100,'MXN',2,'$','Mexican Peso','currency.MXN'),(101,'MYR',2,NULL,'Malaysian Ringgit','currency.MYR'),(102,'MZM',2,NULL,'Mozambique Metical','currency.MZM'),(103,'NAD',2,NULL,'Namibia Dollar','currency.NAD'),(104,'NGN',2,NULL,'Nigerian Naira','currency.NGN'),(105,'NIO',2,'C$','Nicaragua Cordoba Oro','currency.NIO'),(106,'NOK',2,NULL,'Norwegian Krone','currency.NOK'),(107,'NPR',2,NULL,'Nepalese Rupee','currency.NPR'),(108,'NZD',2,NULL,'New Zealand Dollar','currency.NZD'),(109,'OMR',3,NULL,'Rial Omani','currency.OMR'),(110,'PAB',2,'B/.','Panama Balboa','currency.PAB'),(111,'PEN',2,'S/.','Peruvian Nuevo Sol','currency.PEN'),(112,'PGK',2,NULL,'Papua New Guinea Kina','currency.PGK'),(113,'PHP',2,NULL,'Philippine Peso','currency.PHP'),(114,'PKR',2,NULL,'Pakistan Rupee','currency.PKR'),(115,'PLN',2,NULL,'Polish Zloty','currency.PLN'),(116,'PYG',0,'₲','Paraguayan Guarani','currency.PYG'),(117,'QAR',2,NULL,'Qatari Rial','currency.QAR'),(118,'RON',2,NULL,
 'Romanian Leu','currency.RON'),(119,'RUB',2,NULL,'Russian Ruble','currency.RUB'),(120,'RWF',0,NULL,'Rwanda Franc','currency.RWF'),(121,'SAR',2,NULL,'Saudi Riyal','currency.SAR'),(122,'SBD',2,NULL,'Solomon Islands Dollar','currency.SBD'),(123,'SCR',2,NULL,'Seychelles Rupee','currency.SCR'),(124,'SDD',2,NULL,'Sudanese Dinar','currency.SDD'),(125,'SEK',2,NULL,'Swedish Krona','currency.SEK'),(126,'SGD',2,NULL,'Singapore Dollar','currency.SGD'),(127,'SHP',2,NULL,'St Helena Pound','currency.SHP'),(128,'SIT',2,NULL,'Slovenian Tolar','currency.SIT'),(129,'SKK',2,NULL,'Slovak Koruna','currency.SKK'),(130,'SLL',2,NULL,'Sierra Leone Leone','currency.SLL'),(131,'SOS',2,NULL,'Somali Shilling','currency.SOS'),(132,'SRD',2,NULL,'Surinam Dollar','currency.SRD'),(133,'STD',2,NULL,'Sao Tome and Principe Dobra','currency.STD'),(134,'SVC',2,NULL,'El Salvador Colon','currency.SVC'),(135,'SYP',2,NULL,'Syrian Pound','currency.SYP'),(136,'SZL',2,NULL,'Swaziland Lilangeni','currency.SZL'),(137,'THB',2,NULL,
 'Thai Baht','currency.THB'),(138,'TJS',2,NULL,'Tajik Somoni','currency.TJS'),(139,'TMM',2,NULL,'Turkmenistan Manat','currency.TMM'),(140,'TND',3,'DT','Tunisian Dinar','currency.TND'),(141,'TOP',2,NULL,'Tonga Pa\'anga','currency.TOP'),(142,'TRY',2,NULL,'Turkish Lira','currency.TRY'),(143,'TTD',2,NULL,'Trinidad and Tobago Dollar','currency.TTD'),(144,'TWD',2,NULL,'New Taiwan Dollar','currency.TWD'),(145,'TZS',2,NULL,'Tanzanian Shilling','currency.TZS'),(146,'UAH',2,NULL,'Ukraine Hryvnia','currency.UAH'),(147,'UGX',2,'USh','Uganda Shilling','currency.UGX'),(148,'USD',2,'$','US Dollar','currency.USD'),(149,'UYU',2,'$U','Peso Uruguayo','currency.UYU'),(150,'UZS',2,NULL,'Uzbekistan Sum','currency.UZS'),(151,'VEB',2,'Bs.F.','Venezuelan Bolivar','currency.VEB'),(152,'VND',2,NULL,'Vietnamese Dong','currency.VND'),(153,'VUV',0,NULL,'Vanuatu Vatu','currency.VUV'),(154,'WST',2,NULL,'Samoa Tala','currency.WST'),(155,'XAF',0,NULL,'CFA Franc BEAC','currency.XAF'),(156,'XCD',2,NULL,'East Caribbean 
 Dollar','currency.XCD'),(157,'XDR',5,NULL,'SDR (Special Drawing Rights)','currency.XDR'),(158,'XOF',0,'CFA','CFA Franc BCEAO','currency.XOF'),(159,'XPF',0,NULL,'CFP Franc','currency.XPF'),(160,'YER',2,NULL,'Yemeni Rial','currency.YER'),(161,'ZAR',2,'R','South African Rand','currency.ZAR'),(162,'ZMK',2,NULL,'Zambian Kwacha','currency.ZMK'),(163,'ZWD',2,NULL,'Zimbabwe Dollar','currency.ZWD');
-/*!40000 ALTER TABLE `m_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_document`
---
-
-DROP TABLE IF EXISTS `m_document`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_document` (
-  `id` int(20) NOT NULL AUTO_INCREMENT,
-  `parent_entity_type` varchar(50) NOT NULL,
-  `parent_entity_id` int(20) NOT NULL DEFAULT '0',
-  `name` varchar(250) NOT NULL,
-  `file_name` varchar(250) NOT NULL,
-  `size` int(20) DEFAULT '0',
-  `type` varchar(50) DEFAULT NULL,
-  `description` varchar(1000) DEFAULT NULL,
-  `location` varchar(500) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_document`
---
-
-LOCK TABLES `m_document` WRITE;
-/*!40000 ALTER TABLE `m_document` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_document` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_fund`
---
-
-DROP TABLE IF EXISTS `m_fund`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_fund` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(255) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `fund_name_org` (`name`),
-  UNIQUE KEY `fund_externalid_org` (`external_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_fund`
---
-
-LOCK TABLES `m_fund` WRITE;
-/*!40000 ALTER TABLE `m_fund` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_fund` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group`
---
-
-DROP TABLE IF EXISTS `m_group`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `staff_id` bigint(20) DEFAULT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `level_Id` int(11) NOT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `name` varchar(100) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`,`level_Id`),
-  UNIQUE KEY `external_id` (`external_id`,`level_Id`),
-  KEY `office_id` (`office_id`),
-  KEY `staff_id` (`staff_id`),
-  KEY `Parent_Id_reference` (`parent_id`),
-  KEY `FK_m_group_level` (`level_Id`),
-  CONSTRAINT `m_group_ibfk_1` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`),
-  CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group`
---
-
-LOCK TABLES `m_group` WRITE;
-/*!40000 ALTER TABLE `m_group` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group_client`
---
-
-DROP TABLE IF EXISTS `m_group_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group_client` (
-  `group_id` bigint(20) NOT NULL,
-  `client_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`group_id`,`client_id`),
-  KEY `client_id` (`client_id`),
-  CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group_client`
---
-
-LOCK TABLES `m_group_client` WRITE;
-/*!40000 ALTER TABLE `m_group_client` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group_level`
---
-
-DROP TABLE IF EXISTS `m_group_level`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group_level` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `parent_id` int(11) DEFAULT NULL,
-  `super_parent` tinyint(1) NOT NULL,
-  `level_name` varchar(100) NOT NULL,
-  `recursable` tinyint(1) NOT NULL,
-  `can_have_clients` tinyint(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `Parent_levelId_reference` (`parent_id`),
-  CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group_level`
---
-
-LOCK TABLES `m_group_level` WRITE;
-/*!40000 ALTER TABLE `m_group_level` DISABLE KEYS */;
-INSERT INTO `m_group_level` VALUES (1,NULL,1,'Center',1,0),(2,1,0,'Group',0,1);
-/*!40000 ALTER TABLE `m_group_level` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_guarantor`
---
-
-DROP TABLE IF EXISTS `m_guarantor`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_guarantor` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `dob` date DEFAULT NULL,
-  `address_line_1` varchar(500) DEFAULT NULL,
-  `address_line_2` varchar(500) DEFAULT NULL,
-  `city` varchar(50) DEFAULT NULL,
-  `state` varchar(50) DEFAULT NULL,
-  `country` varchar(50) DEFAULT NULL,
-  `zip` varchar(20) DEFAULT NULL,
-  `house_phone_number` varchar(20) DEFAULT NULL,
-  `mobile_number` varchar(20) DEFAULT NULL,
-  `comment` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_guarantor_m_loan` (`loan_id`),
-  CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_guarantor`
---
-
-LOCK TABLES `m_guarantor` WRITE;
-/*!40000 ALTER TABLE `m_guarantor` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_guarantor` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan`
---
-
-DROP TABLE IF EXISTS `m_loan`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `fund_id` bigint(20) DEFAULT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `loanpurpose_cv_id` int(11) DEFAULT NULL,
-  `loan_status_id` smallint(5) NOT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) NOT NULL,
-  `arrearstolerance_amount` decimal(19,6) DEFAULT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `interest_period_frequency_enum` smallint(5) NOT NULL,
-  `annual_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `interest_method_enum` smallint(5) NOT NULL,
-  `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1',
-  `term_frequency` smallint(5) NOT NULL DEFAULT '0',
-  `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2',
-  `repay_every` smallint(5) NOT NULL,
-  `repayment_period_frequency_enum` smallint(5) NOT NULL,
-  `number_of_repayments` smallint(5) NOT NULL,
-  `amortization_method_enum` smallint(5) NOT NULL,
-  `submittedon_date` date DEFAULT NULL,
-  `submittedon_userid` bigint(20) DEFAULT NULL,
-  `approvedon_date` date DEFAULT NULL,
-  `approvedon_userid` bigint(20) DEFAULT NULL,
-  `expected_disbursedon_date` date DEFAULT NULL,
-  `expected_firstrepaymenton_date` date DEFAULT NULL,
-  `interest_calculated_from_date` date DEFAULT NULL,
-  `disbursedon_date` date DEFAULT NULL,
-  `disbursedon_userid` bigint(20) DEFAULT NULL,
-  `expected_maturedon_date` date DEFAULT NULL,
-  `maturedon_date` date DEFAULT NULL,
-  `closedon_date` date DEFAULT NULL,
-  `closedon_userid` bigint(20) DEFAULT NULL,
-  `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL,
-  `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `rejectedon_date` date DEFAULT NULL,
-  `rejectedon_userid` bigint(20) DEFAULT NULL,
-  `rescheduledon_date` date DEFAULT NULL,
-  `withdrawnon_date` date DEFAULT NULL,
-  `withdrawnon_userid` bigint(20) DEFAULT NULL,
-  `writtenoffon_date` date DEFAULT NULL,
-  `loan_transaction_strategy_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`),
-  KEY `FKB6F935D87179A0CB` (`client_id`),
-  KEY `FKB6F935D8C8D4B434` (`product_id`),
-  KEY `FK7C885877240145` (`fund_id`),
-  KEY `FK_loan_ltp_strategy` (`loan_transaction_strategy_id`),
-  KEY `FK_m_loan_m_staff` (`loan_officer_id`),
-  KEY `group_id` (`group_id`),
-  KEY `FK_m_loanpurpose_codevalue` (`loanpurpose_cv_id`),
-  KEY `FK_submittedon_userid` (`submittedon_userid`),
-  KEY `FK_approvedon_userid` (`approvedon_userid`),
-  KEY `FK_rejectedon_userid` (`rejectedon_userid`),
-  KEY `FK_withdrawnon_userid` (`withdrawnon_userid`),
-  KEY `FK_disbursedon_userid` (`disbursedon_userid`),
-  KEY `FK_closedon_userid` (`closedon_userid`),
-  CONSTRAINT `FK7C885877240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`),
-  CONSTRAINT `FKB6F935D87179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FKB6F935D8C8D4B434` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`),
-  CONSTRAINT `FK_approvedon_userid` FOREIGN KEY (`approvedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_closedon_userid` FOREIGN KEY (`closedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_disbursedon_userid` FOREIGN KEY (`disbursedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_loan_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`),
-  CONSTRAINT `FK_m_loanpurpose_codevalue` FOREIGN KEY (`loanpurpose_cv_id`) REFERENCES `m_code_value` (`id`),
-  CONSTRAINT `FK_m_loan_m_staff` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`),
-  CONSTRAINT `FK_rejectedon_userid` FOREIGN KEY (`rejectedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan`
---
-
-LOCK TABLES `m_loan` WRITE;
-/*!40000 ALTER TABLE `m_loan` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_arrears_aging`
---
-
-DROP TABLE IF EXISTS `m_loan_arrears_aging`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_arrears_aging` (
-  `loan_id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `overdue_since_date_derived` date DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_arrears_aging`
---
-
-LOCK TABLES `m_loan_arrears_aging` WRITE;
-/*!40000 ALTER TABLE `m_loan_arrears_aging` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_arrears_aging` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_charge`
---
-
-DROP TABLE IF EXISTS `m_loan_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `charge_id` bigint(20) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `charge_time_enum` smallint(5) NOT NULL,
-  `due_for_collection_as_of_date` date DEFAULT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `calculation_percentage` decimal(19,6) DEFAULT NULL,
-  `calculation_on_amount` decimal(19,6) DEFAULT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `amount_paid_derived` decimal(19,6) DEFAULT NULL,
-  `amount_waived_derived` decimal(19,6) DEFAULT NULL,
-  `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0',
-  `waived` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  KEY `charge_id` (`charge_id`),
-  KEY `m_loan_charge_ibfk_2` (`loan_id`),
-  CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`),
-  CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_charge`
---
-
-LOCK TABLES `m_loan_charge` WRITE;
-/*!40000 ALTER TABLE `m_loan_charge` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_collateral`
---
-
-DROP TABLE IF EXISTS `m_loan_collateral`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_collateral` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `type_cv_id` int(11) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_collateral_m_loan` (`loan_id`),
-  KEY `FK_collateral_code_value` (`type_cv_id`),
-  CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_collateral`
---
-
-LOCK TABLES `m_loan_collateral` WRITE;
-/*!40000 ALTER TABLE `m_loan_collateral` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_collateral` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_officer_assignment_history`
---
-
-DROP TABLE IF EXISTS `m_loan_officer_assignment_history`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_officer_assignment_history` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`),
-  KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_officer_assignment_history`
---
-
-LOCK TABLES `m_loan_officer_assignment_history` WRITE;
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_repayment_schedule`
---
-
-DROP TABLE IF EXISTS `m_loan_repayment_schedule`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_repayment_schedule` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `fromdate` date DEFAULT NULL,
-  `duedate` date NOT NULL,
-  `installment` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) DEFAULT NULL,
-  `principal_completed_derived` decimal(19,6) DEFAULT NULL,
-  `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `interest_amount` decimal(19,6) DEFAULT NULL,
-  `interest_completed_derived` decimal(19,6) DEFAULT NULL,
-  `interest_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_amount` decimal(19,6) DEFAULT NULL,
-  `fee_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_amount` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `completed_derived` bit(1) NOT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `interest_waived_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK488B92AA40BE0710` (`loan_id`),
-  CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_repayment_schedule`
---
-
-LOCK TABLES `m_loan_repayment_schedule` WRITE;
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_transaction`
---
-
-DROP TABLE IF EXISTS `m_loan_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `is_reversed` tinyint(1) NOT NULL,
-  `transaction_type_enum` smallint(5) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `principal_portion_derived` decimal(19,6) DEFAULT NULL,
-  `interest_portion_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKCFCEA42640BE0710` (`loan_id`),
-  CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_transaction`
---
-
-LOCK TABLES `m_loan_transaction` WRITE;
-/*!40000 ALTER TABLE `m_loan_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_note`
---
-
-DROP TABLE IF EXISTS `m_note`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_note` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `loan_id` bigint(20) DEFAULT NULL,
-  `loan_transaction_id` bigint(20) DEFAULT NULL,
-  `note_type_enum` smallint(5) NOT NULL,
-  `note` varchar(1000) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK7C9708924D26803` (`loan_transaction_id`),
-  KEY `FK7C97089541F0A56` (`createdby_id`),
-  KEY `FK7C970897179A0CB` (`client_id`),
-  KEY `FK_m_note_m_group` (`group_id`),
-  KEY `FK7C970898F889C3F` (`lastmodifiedby_id`),
-  KEY `FK7C9708940BE0710` (`loan_id`),
-  CONSTRAINT `FK7C9708924D26803` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`),
-  CONSTRAINT `FK7C9708940BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK7C97089541F0A56` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_note`
---
-
-LOCK TABLES `m_note` WRITE;
-/*!40000 ALTER TABLE `m_note` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_note` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office`
---
-
-DROP TABLE IF EXISTS `m_office`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `opening_date` date NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name_org` (`name`),
-  UNIQUE KEY `externalid_org` (`external_id`),
-  KEY `FK2291C477E2551DCC` (`parent_id`),
-  CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office`
---
-
-LOCK TABLES `m_office` WRITE;
-/*!40000 ALTER TABLE `m_office` DISABLE KEYS */;
-INSERT INTO `m_office` VALUES (1,NULL,'.','1','Head Office','2009-01-01');
-/*!40000 ALTER TABLE `m_office` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office_transaction`
---
-
-DROP TABLE IF EXISTS `m_office_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `from_office_id` bigint(20) DEFAULT NULL,
-  `to_office_id` bigint(20) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` int(11) NOT NULL,
-  `transaction_amount` decimal(19,6) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK1E37728B93C6C1B6` (`to_office_id`),
-  KEY `FK1E37728B783C5C25` (`from_office_id`),
-  CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office_transaction`
---
-
-LOCK TABLES `m_office_transaction` WRITE;
-/*!40000 ALTER TABLE `m_office_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_office_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_organisation_currency`
---
-
-DROP TABLE IF EXISTS `m_organisation_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_organisation_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `name` varchar(50) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_organisation_currency`
---
-
-LOCK TABLES `m_organisation_currency` WRITE;
-/*!40000 ALTER TABLE `m_organisation_currency` DISABLE KEYS */;
-INSERT INTO `m_organisation_currency` VALUES (21,'USD',2,'US Dollar','$','currency.USD');
-/*!40000 ALTER TABLE `m_organisation_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_permission`
---
-
-DROP TABLE IF EXISTS `m_permission`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_permission` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `grouping` varchar(45) DEFAULT NULL,
-  `code` varchar(100) NOT NULL,
-  `entity_name` varchar(100) DEFAULT NULL,
-  `action_name` varchar(100) DEFAULT NULL,
-  `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=287 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_permission`
---
-
-LOCK TABLES `m_permission` WRITE;
-/*!40000 ALTER TABLE `m_permission` DISABLE KEYS */;
-INSERT INTO `m_permission` VALUES (1,'special','ALL_FUNCTIONS',NULL,NULL,0),(2,'special','ALL_FUNCTIONS_READ',NULL,NULL,0),(3,'special','CHECKER_SUPER_USER',NULL,NULL,0),(4,'special','REPORTING_SUPER_USER',NULL,NULL,0),(5,'authorisation','READ_PERMISSION','PERMISSION','READ',0),(6,'authorisation','PERMISSIONS_ROLE','ROLE','PERMISSIONS',0),(7,'authorisation','CREATE_ROLE','ROLE','CREATE',0),(8,'authorisation','CREATE_ROLE_CHECKER','ROLE','CREATE',0),(9,'authorisation','READ_ROLE','ROLE','READ',0),(10,'authorisation','UPDATE_ROLE','ROLE','UPDATE',0),(11,'authorisation','UPDATE_ROLE_CHECKER','ROLE','UPDATE',0),(12,'authorisation','DELETE_ROLE','ROLE','DELETE',0),(13,'authorisation','DELETE_ROLE_CHECKER','ROLE','DELETE',0),(14,'authorisation','CREATE_USER','USER','CREATE',0),(15,'authorisation','CREATE_USER_CHECKER','USER','CREATE',0),(16,'authorisation','READ_USER','USER','READ',0),(17,'authorisation','UPDATE_USER','USER','UPDATE',0),(18,'authorisation','UPDATE_USER_CHECKER','USER','UP
 DATE',0),(19,'authorisation','DELETE_USER','USER','DELETE',0),(20,'authorisation','DELETE_USER_CHECKER','USER','DELETE',0),(21,'configuration','READ_CONFIGURATION','CONFIGURATION','READ',0),(22,'configuration','UPDATE_CONFIGURATION','CONFIGURATION','UPDATE',0),(23,'configuration','UPDATE_CONFIGURATION_CHECKER','CONFIGURATION','UPDATE',0),(24,'configuration','READ_CODE','CODE','READ',0),(25,'configuration','CREATE_CODE','CODE','CREATE',0),(26,'configuration','CREATE_CODE_CHECKER','CODE','CREATE',0),(27,'configuration','UPDATE_CODE','CODE','UPDATE',0),(28,'configuration','UPDATE_CODE_CHECKER','CODE','UPDATE',0),(29,'configuration','DELETE_CODE','CODE','DELETE',0),(30,'configuration','DELETE_CODE_CHECKER','CODE','DELETE',0),(31,'configuration','READ_CODEVALUE','CODEVALUE','READ',0),(32,'configuration','CREATE_CODEVALUE','CODEVALUE','CREATE',0),(33,'configuration','CREATE_CODEVALUE_CHECKER','CODEVALUE','CREATE',0),(34,'configuration','UPDATE_CODEVALUE','CODEVALUE','UPDATE',0),(35,'confi
 guration','UPDATE_CODEVALUE_CHECKER','CODEVALUE','UPDATE',0),(36,'configuration','DELETE_CODEVALUE','CODEVALUE','DELETE',0),(37,'configuration','DELETE_CODEVALUE_CHECKER','CODEVALUE','DELETE',0),(38,'configuration','READ_CURRENCY','CURRENCY','READ',0),(39,'configuration','UPDATE_CURRENCY','CURRENCY','UPDATE',0),(40,'configuration','UPDATE_CURRENCY_CHECKER','CURRENCY','UPDATE',0),(41,'configuration','UPDATE_PERMISSION','PERMISSION','UPDATE',0),(42,'configuration','UPDATE_PERMISSION_CHECKER','PERMISSION','UPDATE',0),(43,'configuration','READ_DATATABLE','DATATABLE','READ',0),(44,'configuration','REGISTER_DATATABLE','DATATABLE','REGISTER',0),(45,'configuration','REGISTER_DATATABLE_CHECKER','DATATABLE','REGISTER',0),(46,'configuration','DEREGISTER_DATATABLE','DATATABLE','DEREGISTER',0),(47,'configuration','DEREGISTER_DATATABLE_CHECKER','DATATABLE','DEREGISTER',0),(48,'configuration','READ_AUDIT','AUDIT','READ',0),(49,'configuration','CREATE_CALENDAR','CALENDAR','CREATE',0),(50,'configura
 tion','READ_CALENDAR','CALENDAR','READ',0),(51,'configuration','UPDATE_CALENDAR','CALENDAR','UPDATE',0),(52,'configuration','DELETE_CALENDAR','CALENDAR','DELETE',0),(53,'configuration','CREATE_CALENDAR_CHECKER','CALENDAR','CREATE',0),(54,'configuration','UPDATE_CALENDAR_CHECKER','CALENDAR','UPDATE',0),(55,'configuration','DELETE_CALENDAR_CHECKER','CALENDAR','DELETE',0),(56,'organisation','READ_MAKERCHECKER','MAKERCHECKER','READ',0),(57,'organisation','READ_CHARGE','CHARGE','READ',0),(58,'organisation','CREATE_CHARGE','CHARGE','CREATE',0),(59,'organisation','CREATE_CHARGE_CHECKER','CHARGE','CREATE',0),(60,'organisation','UPDATE_CHARGE','CHARGE','UPDATE',0),(61,'organisation','UPDATE_CHARGE_CHECKER','CHARGE','UPDATE',0),(62,'organisation','DELETE_CHARGE','CHARGE','DELETE',0),(63,'organisation','DELETE_CHARGE_CHECKER','CHARGE','DELETE',0),(64,'organisation','READ_FUND','FUND','READ',0),(65,'organisation','CREATE_FUND','FUND','CREATE',0),(66,'organisation','CREATE_FUND_CHECKER','FUND','
 CREATE',0),(67,'organisation','UPDATE_FUND','FUND','UPDATE',0),(68,'organisation','UPDATE_FUND_CHECKER','FUND','UPDATE',0),(69,'organisation','DELETE_FUND','FUND','DELETE',0),(70,'organisation','DELETE_FUND_CHECKER','FUND','DELETE',0),(71,'organisation','READ_LOANPRODUCT','LOANPRODUCT','READ',0),(72,'organisation','CREATE_LOANPRODUCT','LOANPRODUCT','CREATE',0),(73,'organisation','CREATE_LOANPRODUCT_CHECKER','LOANPRODUCT','CREATE',0),(74,'organisation','UPDATE_LOANPRODUCT','LOANPRODUCT','UPDATE',0),(75,'organisation','UPDATE_LOANPRODUCT_CHECKER','LOANPRODUCT','UPDATE',0),(76,'organisation','DELETE_LOANPRODUCT','LOANPRODUCT','DELETE',0),(77,'organisation','DELETE_LOANPRODUCT_CHECKER','LOANPRODUCT','DELETE',0),(78,'organisation','READ_OFFICE','OFFICE','READ',0),(79,'organisation','CREATE_OFFICE','OFFICE','CREATE',0),(80,'organisation','CREATE_OFFICE_CHECKER','OFFICE','CREATE',0),(81,'organisation','UPDATE_OFFICE','OFFICE','UPDATE',0),(82,'organisation','UPDATE_OFFICE_CHECKER','OFFICE',
 'UPDATE',0),(83,'organisation','READ_OFFICETRANSACTION','OFFICETRANSACTION','READ',0),(84,'organisation','DELETE_OFFICE_CHECKER','OFFICE','DELETE',0),(85,'organisation','CREATE_OFFICETRANSACTION','OFFICETRANSACTION','CREATE',0),(86,'organisation','CREATE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','CREATE',0),(87,'organisation','DELETE_OFFICETRANSACTION','OFFICETRANSACTION','DELETE',0),(88,'organisation','DELETE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','DELETE',0),(89,'organisation','READ_STAFF','STAFF','READ',0),(90,'organisation','CREATE_STAFF','STAFF','CREATE',0),(91,'organisation','CREATE_STAFF_CHECKER','STAFF','CREATE',0),(92,'organisation','UPDATE_STAFF','STAFF','UPDATE',0),(93,'organisation','UPDATE_STAFF_CHECKER','STAFF','UPDATE',0),(94,'organisation','DELETE_STAFF','STAFF','DELETE',0),(95,'organisation','DELETE_STAFF_CHECKER','STAFF','DELETE',0),(96,'organisation','READ_SAVINGSPRODUCT','SAVINGSPRODUCT','READ',0),(97,'organisation','CREATE_SAVINGSPRODUCT','SAVINGSPR
 ODUCT','CREATE',0),(98,'organisation','CREATE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','CREATE',0),(99,'organisation','UPDATE_SAVINGSPRODUCT','SAVINGSPRODUCT','UPDATE',0),(100,'organisation','UPDATE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','UPDATE',0),(101,'organisation','DELETE_SAVINGSPRODUCT','SAVINGSPRODUCT','DELETE',0),(102,'organisation','DELETE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','DELETE',0),(103,'portfolio','READ_LOAN','LOAN','READ',0),(104,'portfolio','CREATE_LOAN','LOAN','CREATE',0),(105,'portfolio','CREATE_LOAN_CHECKER','LOAN','CREATE',0),(106,'portfolio','UPDATE_LOAN','LOAN','UPDATE',0),(107,'portfolio','UPDATE_LOAN_CHECKER','LOAN','UPDATE',0),(108,'portfolio','DELETE_LOAN','LOAN','DELETE',0),(109,'portfolio','DELETE_LOAN_CHECKER','LOAN','DELETE',0),(110,'portfolio','READ_CLIENT','CLIENT','READ',0),(111,'portfolio','CREATE_CLIENT','CLIENT','CREATE',0),(112,'portfolio','CREATE_CLIENT_CHECKER','CLIENT','CREATE',0),(113,'portfolio','UPDATE_CLIENT','CLIENT','UPDATE',0),(
 114,'portfolio','UPDATE_CLIENT_CHECKER','CLIENT','UPDATE',0),(115,'portfolio','DELETE_CLIENT','CLIENT','DELETE',0),(116,'portfolio','DELETE_CLIENT_CHECKER','CLIENT','DELETE',0),(117,'portfolio','READ_CLIENTIMAGE','CLIENTIMAGE','READ',0),(118,'portfolio','CREATE_CLIENTIMAGE','CLIENTIMAGE','CREATE',0),(119,'portfolio','CREATE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','CREATE',0),(120,'portfolio','DELETE_CLIENTIMAGE','CLIENTIMAGE','DELETE',0),(121,'portfolio','DELETE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','DELETE',0),(122,'portfolio','READ_CLIENTNOTE','CLIENTNOTE','READ',0),(123,'portfolio','CREATE_CLIENTNOTE','CLIENTNOTE','CREATE',0),(124,'portfolio','CREATE_CLIENTNOTE_CHECKER','CLIENTNOTE','CREATE',0),(125,'portfolio','UPDATE_CLIENTNOTE','CLIENTNOTE','UPDATE',0),(126,'portfolio','UPDATE_CLIENTNOTE_CHECKER','CLIENTNOTE','UPDATE',0),(127,'portfolio','DELETE_CLIENTNOTE','CLIENTNOTE','DELETE',0),(128,'portfolio','DELETE_CLIENTNOTE_CHECKER','CLIENTNOTE','DELETE',0),(129,'portfolio','READ_GROUPNOTE',
 'GROUPNOTE','READ',0),(130,'portfolio','CREATE_GROUPNOTE','GROUPNOTE','CREATE',0),(131,'portfolio','UPDATE_GROUPNOTE','GROUPNOTE','UPDATE',0),(132,'portfolio','DELETE_GROUPNOTE','GROUPNOTE','DELETE',0),(133,'portfolio','CREATE_GROUPNOTE_CHECKER','GROUPNOTE','CREATE',0),(134,'portfolio','UPDATE_GROUPNOTE_CHECKER','GROUPNOTE','UPDATE',0),(135,'portfolio','DELETE_GROUPNOTE_CHECKER','GROUPNOTE','DELETE',0),(136,'portfolio','READ_LOANNOTE','LOANNOTE','READ',0),(137,'portfolio','CREATE_LOANNOTE','LOANNOTE','CREATE',0),(138,'portfolio','UPDATE_LOANNOTE','LOANNOTE','UPDATE',0),(139,'portfolio','DELETE_LOANNOTE','LOANNOTE','DELETE',0),(140,'portfolio','CREATE_LOANNOTE_CHECKER','LOANNOTE','CREATE',0),(141,'portfolio','UPDATE_LOANNOTE_CHECKER','LOANNOTE','UPDATE',0),(142,'portfolio','DELETE_LOANNOTE_CHECKER','LOANNOTE','DELETE',0),(143,'portfolio','READ_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','READ',0),(144,'portfolio','CREATE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','CREATE',0),(145,'por
 tfolio','UPDATE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','UPDATE',0),(146,'portfolio','DELETE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','DELETE',0),(147,'portfolio','CREATE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','CREATE',0),(148,'portfolio','UPDATE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','UPDATE',0),(149,'portfolio','DELETE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','DELETE',0),(150,'portfolio','READ_SAVINGNOTE','SAVINGNOTE','READ',0),(151,'portfolio','CREATE_SAVINGNOTE','SAVINGNOTE','CREATE',0),(152,'portfolio','UPDATE_SAVINGNOTE','SAVINGNOTE','UPDATE',0),(153,'portfolio','DELETE_SAVINGNOTE','SAVINGNOTE','DELETE',0),(154,'portfolio','CREATE_SAVINGNOTE_CHECKER','SAVINGNOTE','CREATE',0),(155,'portfolio','UPDATE_SAVINGNOTE_CHECKER','SAVINGNOTE','UPDATE',0),(156,'portfolio','DELETE_SAVINGNOTE_CHECKER','SAVINGNOTE','DELETE',0),(157,'portfolio','READ_CLIENTIDENTIFIER','CLIENTIDENTIFIER','READ',0),(158,'portfolio','CREATE_CLIENTIDENTIFIER','CLIENTIDENTIFI
 ER','CREATE',0),(159,'portfolio','CREATE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','CREATE',0),(160,'portfolio','UPDATE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','UPDATE',0),(161,'portfolio','UPDATE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','UPDATE',0),(162,'portfolio','DELETE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','DELETE',0),(163,'portfolio','DELETE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','DELETE',0),(164,'portfolio','READ_DOCUMENT','DOCUMENT','READ',0),(165,'portfolio','CREATE_DOCUMENT','DOCUMENT','CREATE',0),(166,'portfolio','CREATE_DOCUMENT_CHECKER','DOCUMENT','CREATE',0),(167,'portfolio','UPDATE_DOCUMENT','DOCUMENT','UPDATE',0),(168,'portfolio','UPDATE_DOCUMENT_CHECKER','DOCUMENT','UPDATE',0),(169,'portfolio','DELETE_DOCUMENT','DOCUMENT','DELETE',0),(170,'portfolio','DELETE_DOCUMENT_CHECKER','DOCUMENT','DELETE',0),(171,'portfolio','READ_GROUP','GROUP','READ',0),(172,'portfolio','CREATE_GROUP','GROUP','CREATE',0),(173,'portfolio','CREATE_GROUP_CHECKER','GROUP','CREATE',0),(
 174,'portfolio','UPDATE_GROUP','GROUP','UPDATE',0),(175,'portfolio','UPDATE_GROUP_CHECKER','GROUP','UPDATE',0),(176,'portfolio','DELETE_GROUP','GROUP','DELETE',0),(177,'portfolio','DELETE_GROUP_CHECKER','GROUP','DELETE',0),(178,'portfolio','UNASSIGNSTAFF_GROUP','GROUP','UNASSIGNSTAFF',0),(179,'portfolio','UNASSIGNSTAFF_GROUP_CHECKER','GROUP','UNASSIGNSTAFF',0),(180,'portfolio','CREATE_LOANCHARGE','LOANCHARGE','CREATE',0),(181,'portfolio','CREATE_LOANCHARGE_CHECKER','LOANCHARGE','CREATE',0),(182,'portfolio','UPDATE_LOANCHARGE','LOANCHARGE','UPDATE',0),(183,'portfolio','UPDATE_LOANCHARGE_CHECKER','LOANCHARGE','UPDATE',0),(184,'portfolio','DELETE_LOANCHARGE','LOANCHARGE','DELETE',0),(185,'portfolio','DELETE_LOANCHARGE_CHECKER','LOANCHARGE','DELETE',0),(186,'portfolio','WAIVE_LOANCHARGE','LOANCHARGE','WAIVE',0),(187,'portfolio','WAIVE_LOANCHARGE_CHECKER','LOANCHARGE','WAIVE',0),(188,'portfolio','READ_SAVINGSACCOUNT','SAVINGSACCOUNT','READ',0),(189,'portfolio','CREATE_SAVINGSACCOUNT','SA
 VINGSACCOUNT','CREATE',0),(190,'portfolio','CREATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','CREATE',0),(191,'portfolio','UPDATE_SAVINGSACCOUNT','SAVINGSACCOUNT','UPDATE',0),(192,'portfolio','UPDATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','UPDATE',0),(193,'portfolio','DELETE_SAVINGSACCOUNT','SAVINGSACCOUNT','DELETE',0),(194,'portfolio','DELETE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','DELETE',0),(195,'portfolio','READ_GUARANTOR','GUARANTOR','READ',0),(196,'portfolio','CREATE_GUARANTOR','GUARANTOR','CREATE',0),(197,'portfolio','CREATE_GUARANTOR_CHECKER','GUARANTOR','CREATE',0),(198,'portfolio','UPDATE_GUARANTOR','GUARANTOR','UPDATE',0),(199,'portfolio','UPDATE_GUARANTOR_CHECKER','GUARANTOR','UPDATE',0),(200,'portfolio','DELETE_GUARANTOR','GUARANTOR','DELETE',0),(201,'portfolio','DELETE_GUARANTOR_CHECKER','GUARANTOR','DELETE',0),(202,'transaction_loan','APPROVE_LOAN','LOAN','APPROVE',0),(203,'transaction_loan','APPROVEINPAST_LOAN','LOAN','APPROVEINPAST',0),(204,'transaction_loan','RE
 JECT_LOAN','LOAN','REJECT',0),(205,'transaction_loan','REJECTINPAST_LOAN','LOAN','REJECTINPAST',0),(206,'transaction_loan','WITHDRAW_LOAN','LOAN','WITHDRAW',0),(207,'transaction_loan','WITHDRAWINPAST_LOAN','LOAN','WITHDRAWINPAST',0),(208,'transaction_loan','APPROVALUNDO_LOAN','LOAN','APPROVALUNDO',0),(209,'transaction_loan','DISBURSE_LOAN','LOAN','DISBURSE',0),(210,'transaction_loan','DISBURSEINPAST_LOAN','LOAN','DISBURSEINPAST',0),(211,'transaction_loan','DISBURSALUNDO_LOAN','LOAN','DISBURSALUNDO',0),(212,'transaction_loan','REPAYMENT_LOAN','LOAN','REPAYMENT',0),(213,'transaction_loan','REPAYMENTINPAST_LOAN','LOAN','REPAYMENTINPAST',0),(214,'transaction_loan','ADJUST_LOAN','LOAN','ADJUST',0),(215,'transaction_loan','WAIVEINTERESTPORTION_LOAN','LOAN','WAIVEINTERESTPORTION',0),(216,'transaction_loan','WRITEOFF_LOAN','LOAN','WRITEOFF',0),(217,'transaction_loan','CLOSE_LOAN','LOAN','CLOSE',0),(218,'transaction_loan','CLOSEASRESCHEDULED_LOAN','LOAN','CLOSEASRESCHEDULED',0),(219,'transac
 tion_loan','UPDATELOANOFFICER_LOAN','LOAN','UPDATELOANOFFICER',0),(220,'transaction_loan','UPDATELOANOFFICER_LOAN_CHECKER','LOAN','UPDATELOANOFFICER',0),(221,'transaction_loan','REMOVELOANOFFICER_LOAN','LOAN','REMOVELOANOFFICER',0),(222,'transaction_loan','REMOVELOANOFFICER_LOAN_CHECKER','LOAN','REMOVELOANOFFICER',0),(223,'transaction_loan','BULKREASSIGN_LOAN','LOAN','BULKREASSIGN',0),(224,'transaction_loan','BULKREASSIGN_LOAN_CHECKER','LOAN','BULKREASSIGN',0),(225,'transaction_loan','APPROVE_LOAN_CHECKER','LOAN','APPROVE',0),(226,'transaction_loan','APPROVEINPAST_LOAN_CHECKER','LOAN','APPROVEINPAST',0),(227,'transaction_loan','REJECT_LOAN_CHECKER','LOAN','REJECT',0),(228,'transaction_loan','REJECTINPAST_LOAN_CHECKER','LOAN','REJECTINPAST',0),(229,'transaction_loan','WITHDRAW_LOAN_CHECKER','LOAN','WITHDRAW',0),(230,'transaction_loan','WITHDRAWINPAST_LOAN_CHECKER','LOAN','WITHDRAWINPAST',0),(231,'transaction_loan','APPROVALUNDO_LOAN_CHECKER','LOAN','APPROVALUNDO',0),(232,'transaction
 _loan','DISBURSE_LOAN_CHECKER','LOAN','DISBURSE',0),(233,'transaction_loan','DISBURSEINPAST_LOAN_CHECKER','LOAN','DISBURSEINPAST',0),(234,'transaction_loan','DISBURSALUNDO_LOAN_CHECKER','LOAN','DISBURSALUNDO',0),(235,'transaction_loan','REPAYMENT_LOAN_CHECKER','LOAN','REPAYMENT',0),(236,'transaction_loan','REPAYMENTINPAST_LOAN_CHECKER','LOAN','REPAYMENTINPAST',0),(237,'transaction_loan','ADJUST_LOAN_CHECKER','LOAN','ADJUST',0),(238,'transaction_loan','WAIVEINTERESTPORTION_LOAN_CHECKER','LOAN','WAIVEINTERESTPORTION',0),(239,'transaction_loan','WRITEOFF_LOAN_CHECKER','LOAN','WRITEOFF',0),(240,'transaction_loan','CLOSE_LOAN_CHECKER','LOAN','CLOSE',0),(241,'transaction_loan','CLOSEASRESCHEDULED_LOAN_CHECKER','LOAN','CLOSEASRESCHEDULED',0),(242,'transaction_savings','DEPOSIT_SAVINGSACCOUNT','SAVINGSACCOUNT','DEPOSIT',0),(243,'transaction_savings','DEPOSIT_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','DEPOSIT',0),(244,'transaction_savings','WITHDRAWAL_SAVINGSACCOUNT','SAVINGSACCOUNT','WITHDRA
 WAL',0),(245,'transaction_savings','WITHDRAWAL_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','WITHDRAWAL',0),(246,'transaction_savings','ACTIVATE_SAVINGSACCOUNT','SAVINGSACCOUNT','ACTIVATE',0),(247,'transaction_savings','ACTIVATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','ACTIVATE',0),(248,'accounting','CREATE_GLACCOUNT','GLACCOUNT','CREATE',0),(249,'accounting','UPDATE_GLACCOUNT','GLACCOUNT','UPDATE',0),(250,'accounting','DELETE_GLACCOUNT','GLACCOUNT','DELETE',0),(251,'accounting','CREATE_GLCLOSURE','GLCLOSURE','CREATE',0),(252,'accounting','UPDATE_GLCLOSURE','GLCLOSURE','UPDATE',0),(253,'accounting','DELETE_GLCLOSURE','GLCLOSURE','DELETE',0),(254,'accounting','CREATE_JOURNALENTRY','JOURNALENTRY','CREATE',0),(255,'accounting','REVERSE_JOURNALENTRY','JOURNALENTRY','REVERSE',0),(256,'report','READ_Active Loans - Details','Active Loans - Details','READ',0),(257,'report','READ_Active Loans - Summary','Active Loans - Summary','READ',0),(258,'report','READ_Active Loans by Disbursal Period','Ac
 tive Loans by Disbursal Period','READ',0),(259,'report','READ_Active Loans in last installment','Active Loans in last installment','READ',0),(260,'report','READ_Active Loans in last installment Summary','Active Loans in last installment Summary','READ',0),(261,'report','READ_Active Loans Passed Final Maturity','Active Loans Passed Final Maturity','READ',0),(262,'report','READ_Active Loans Passed Final Maturity Summary','Active Loans Passed Final Maturity Summary','READ',0),(263,'report','READ_Aging Detail','Aging Detail','READ',0),(264,'report','READ_Aging Summary (Arrears in Months)','Aging Summary (Arrears in Months)','READ',0),(265,'report','READ_Aging Summary (Arrears in Weeks)','Aging Summary (Arrears in Weeks)','READ',0),(266,'report','READ_Balance Sheet','Balance Sheet','READ',0),(267,'report','READ_Branch Expected Cash Flow','Branch Expected Cash Flow','READ',0),(268,'report','READ_Client Listing','Client Listing','READ',0),(269,'report','READ_Client Loans Listing','Client L
 oans Listing','READ',0),(270,'report','READ_Expected Payments By Date - Basic','Expected Payments By Date - Basic','READ',0),(271,'report','READ_Expected Payments By Date - Formatted','Expected Payments By Date - Formatted','READ',0),(272,'report','READ_Funds Disbursed Between Dates Summary','Funds Disbursed Between Dates Summary','READ',0),(273,'report','READ_Funds Disbursed Between Dates Summary by Office','Funds Disbursed Between Dates Summary by Office','READ',0),(274,'report','READ_Income Statement','Income Statement','READ',0),(275,'report','READ_Loan Account Schedule','Loan Account Schedule','READ',0),(276,'report','READ_Loans Awaiting Disbursal','Loans Awaiting Disbursal','READ',0),(277,'report','READ_Loans Awaiting Disbursal Summary','Loans Awaiting Disbursal Summary','READ',0),(278,'report','READ_Loans Awaiting Disbursal Summary by Month','Loans Awaiting Disbursal Summary by Month','READ',0),(279,'report','READ_Loans Pending Approval','Loans Pending Approval','READ',0),(28
 0,'report','READ_Obligation Met Loans Details','Obligation Met Loans Details','READ',0),(281,'report','READ_Obligation Met Loans Summary','Obligation Met Loans Summary','READ',0),(282,'report','READ_Portfolio at Risk','Portfolio at Risk','READ',0),(283,'report','READ_Portfolio at Risk by Branch','Portfolio at Risk by Branch','READ',0),(284,'report','READ_Rescheduled Loans','Rescheduled Loans','READ',0),(285,'report','READ_Trial Balance','Trial Balance','READ',0),(286,'report','READ_Written-Off Loans','Written-Off Loans','READ',0);
-/*!40000 ALTER TABLE `m_permission` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_portfolio_command_source`
---
-
-DROP TABLE IF EXISTS `m_portfolio_command_source`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_portfolio_command_source` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `action_name` varchar(50) NOT NULL,
-  `entity_name` varchar(50) NOT NULL,
-  `office_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `client_id` bigint(20) DEFAULT NULL,
-  `loan_id` bigint(20) DEFAULT NULL,
-  `api_get_url` varchar(100) NOT NULL,
-  `resource_id` bigint(20) DEFAULT NULL,
-  `subresource_id` bigint(20) DEFAULT NULL,
-  `command_as_json` text NOT NULL,
-  `maker_id` bigint(20) NOT NULL,
-  `made_on_date` datetime NOT NULL,
-  `checker_id` bigint(20) DEFAULT NULL,
-  `checked_on_date` datetime DEFAULT NULL,
-  `processing_result_enum` smallint(5) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_maker_m_appuser` (`maker_id`),
-  KEY `FK_m_checker_m_appuser` (`checker_id`),
-  KEY `action_name` (`action_name`),
-  KEY `entity_name` (`entity_name`,`resource_id`),
-  KEY `made_on_date` (`made_on_date`),
-  KEY `checked_on_date` (`checked_on_date`),
-  KEY `processing_result_enum` (`processing_result_enum`),
-  KEY `office_id` (`office_id`),
-  KEY `group_id` (`office_id`),
-  KEY `client_id` (`office_id`),
-  KEY `loan_id` (`office_id`),
-  CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_portfolio_command_source`
---
-
-LOCK TABLES `m_portfolio_command_source` WRITE;
-/*!40000 ALTER TABLE `m_portfolio_command_source` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_portfolio_command_source` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_product_loan`
---
-
-DROP TABLE IF EXISTS `m_product_loan`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_product_loan` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) NOT NULL,
-  `arrearstolerance_amount` decimal(19,6) DEFAULT NULL,
-  `name` varchar(100) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `fund_id` bigint(20) DEFAULT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `interest_period_frequency_enum` smallint(5) NOT NULL,
-  `annual_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `interest_method_enum` smallint(5) NOT NULL,
-  `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1',
-  `repay_every` smallint(5) NOT NULL,
-  `repayment_period_frequency_enum` smallint(5) NOT NULL,
-  `number_of_repayments` smallint(5) NOT NULL,
-  `amortization_method_enum` smallint(5) NOT NULL,
-  `accounting_type` smallint(5) NOT NULL,
-  `loan_transaction_strategy_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `unq_name` (`name`),
-  KEY `FKA6A8A7D77240145` (`fund_id`),
-  KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`),
-  CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`),
-  CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_product_loan`
---
-
-LOCK TABLES `m_product_loan` WRITE;
-/*!40000 ALTER TABLE `m_product_loan` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_product_loan` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_product_loan_charge`
---
-
-DROP TABLE IF EXISTS `m_product_loan_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_product_loan_charge` (
-  `product_loan_id` bigint(20) NOT NULL,
-  `charge_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`product_loan_id`,`charge_id`),
-  KEY `charge_id` (`charge_id`),
-  CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`),
-  CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_product_loan_charge`
---
-
-LOCK TABLES `m_product_loan_charge` WRITE;
-/*!40000 ALTER TABLE `m_product_loan_charge` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_product_loan_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_role`
---
-
-DROP TABLE IF EXISTS `m_role`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_role` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) NOT NULL,
-  `description` varchar(500) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `unq_name` (`name`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_role`
---
-
-LOCK TABLES `m_role` WRITE;
-/*!40000 ALTER TABLE `m_role` DISABLE KEYS */;
-INSERT INTO `m_role` VALUES (1,'Super user','This role provides all application permissions.');
-/*!40000 ALTER TABLE `m_role` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_role_permission`
---
-
-DROP TABLE IF EXISTS `m_role_permission`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_role_permission` (
-  `role_id` bigint(20) NOT NULL,
-  `permission_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`role_id`,`permission_id`),
-  KEY `FK8DEDB04815CEC7AB` (`role_id`),
-  KEY `FK8DEDB048103B544B` (`permission_id`),
-  CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`),
-  CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_role_permission`
---
-
-LOCK TABLES `m_role_permission` WRITE;
-/*!40000 ALTER TABLE `m_role_permission` DISABLE KEYS */;
-INSERT INTO `m_role_permission` VALUES (1,1);
-/*!40000 ALTER TABLE `m_role_permission` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_savings_account`
---
-
-DROP TABLE IF EXISTS `m_savings_account`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;

<TRUNCATED>


[19/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/latam-demo/datatables-on-latam-demo.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/latam-demo/datatables-on-latam-demo.sql b/fineract-db/multi-tenant-demo-backups/latam-demo/datatables-on-latam-demo.sql
deleted file mode 100644
index e3e5259..0000000
--- a/fineract-db/multi-tenant-demo-backups/latam-demo/datatables-on-latam-demo.sql
+++ /dev/null
@@ -1,49 +0,0 @@
-DROP TABLE IF EXISTS `latam_extra_client_details`;
-CREATE TABLE `latam_extra_client_details` (
-  `client_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_latam_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-DROP TABLE IF EXISTS `latam_family_details`;
-CREATE TABLE `latam_family_details` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `Name` varchar(40) DEFAULT NULL,
-  `Date of Birth` date DEFAULT NULL,
-  `Points Score` int(11) DEFAULT NULL,
-  `Education_cd_Highest` int(11) DEFAULT NULL,
-  `Other Notes` text,
-  PRIMARY KEY (`id`),
-  KEY `FK_Extra Family Details Data_1` (`client_id`),
-  CONSTRAINT `FK_latam_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-DROP TABLE IF EXISTS `latam_extra_loan_details`;
-CREATE TABLE `latam_extra_loan_details` (
-  `loan_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_latam_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-
-INSERT INTO `mifostenant-latam`.`m_code` (`code_name`, `is_system_defined`) VALUES ('Gender', 1);
-INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_position`) VALUES (2, 'Male', 1); INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_position`) VALUES (2, 'Female', 2);
-
-
-INSERT INTO `mifostenant-latam`.`m_code` (`code_name`, `is_system_defined`) VALUES ('Education', 1);
-INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_position`) VALUES (3, 'Primary', 1); INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_position`) VALUES (3, 'Secondary', 2); INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_position`) VALUES (3, 'University', 3);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/old-schema-files/0001a-mifosplatform-core-ddl-latest.sql
----------------------------------------------------------------------
diff --git a/fineract-db/old-schema-files/0001a-mifosplatform-core-ddl-latest.sql b/fineract-db/old-schema-files/0001a-mifosplatform-core-ddl-latest.sql
deleted file mode 100644
index 6615c90..0000000
--- a/fineract-db/old-schema-files/0001a-mifosplatform-core-ddl-latest.sql
+++ /dev/null
@@ -1,947 +0,0 @@
--- drop tables in base-schema
-SET foreign_key_checks = 0;
-
--- drop accounting subsystem
-DROP TABLE IF EXISTS `acc_gl_account`;
-DROP TABLE IF EXISTS `acc_gl_closure`;
-DROP TABLE IF EXISTS `acc_gl_journal_entry`;
-DROP TABLE IF EXISTS `acc_product_mapping`;
-
--- drop portfolio subsystem
-DROP TABLE IF EXISTS `c_configuration`;
-DROP TABLE IF EXISTS `m_appuser`;
-DROP TABLE IF EXISTS `m_appuser_role`;
-DROP TABLE IF EXISTS `m_calendar`;
-DROP TABLE IF EXISTS `m_calendar_instance`;
-DROP TABLE IF EXISTS `m_charge`;
-DROP TABLE IF EXISTS `m_client`;
-DROP TABLE IF EXISTS `m_client_identifier`;
-DROP TABLE IF EXISTS `m_code`;
-DROP TABLE IF EXISTS `m_code_value`;
-DROP TABLE IF EXISTS `m_currency`;
-DROP TABLE IF EXISTS `m_deposit_account`;
-DROP TABLE IF EXISTS `m_deposit_account_transaction`;
-DROP TABLE IF EXISTS `m_document`;
-DROP TABLE IF EXISTS `m_fund`;
-DROP TABLE IF EXISTS `m_group`;
-DROP TABLE IF EXISTS `m_group_level`;
-DROP TABLE IF EXISTS `m_group_client`;
-DROP TABLE IF EXISTS `m_guarantor`;
-DROP TABLE IF EXISTS `m_loan`;
-DROP TABLE IF EXISTS `m_loan_charge`;
-DROP TABLE IF EXISTS `m_loan_arrears_aging`;
-DROP TABLE IF EXISTS `m_loan_collateral`;
-DROP TABLE IF EXISTS `m_loan_officer_assignment_history`;
-DROP TABLE IF EXISTS `m_loan_repayment_schedule`;
-DROP TABLE IF EXISTS `m_loan_transaction`;
-DROP TABLE IF EXISTS `m_note`;
-DROP TABLE IF EXISTS `m_office`;
-DROP TABLE IF EXISTS `m_office_transaction`;
-DROP TABLE IF EXISTS `m_organisation_currency`;
-DROP TABLE IF EXISTS `m_permission`;
-DROP TABLE IF EXISTS `m_portfolio_command_source`;
-DROP TABLE IF EXISTS `m_product_deposit`;
-DROP TABLE IF EXISTS `m_product_loan`;
-DROP TABLE IF EXISTS `m_product_loan_charge`;
-DROP TABLE IF EXISTS `m_role`;
-DROP TABLE IF EXISTS `m_role_permission`;
-DROP TABLE IF EXISTS `m_savings_account`;
-DROP TABLE IF EXISTS `m_savings_account_transaction`;
-DROP TABLE IF EXISTS `m_savings_product`;
-DROP TABLE IF EXISTS `m_staff`;
-DROP TABLE IF EXISTS `ref_loan_transaction_processing_strategy`;
-DROP TABLE IF EXISTS `x_registered_table`;
-
--- drop reporting related tables
-DROP TABLE IF EXISTS `r_enum_value`;
-DROP TABLE IF EXISTS `rpt_sequence`;
-DROP TABLE IF EXISTS `stretchy_parameter`;
-DROP TABLE IF EXISTS `stretchy_report`;
-DROP TABLE IF EXISTS `stretchy_report_parameter`;
-
-SET foreign_key_checks = 1;
-
--- DDL for reference/lookup tables
-CREATE TABLE `m_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_organisation_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `name` varchar(50) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `ref_loan_transaction_processing_strategy` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(100) DEFAULT NULL,
-  `name` varchar(255) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `ltp_strategy_code` (`code`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `c_configuration` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(50) DEFAULT NULL,
-  `enabled` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_code` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_name` varchar(100) DEFAULT NULL,
-  `is_system_defined` TINYINT(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_name` (`code_name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_code_value` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_id` int(11) NOT NULL,
-  `code_value` varchar(100) DEFAULT NULL,
-  `order_position` int(11) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_value` (`code_id`,`code_value`),
-  KEY `FKCFCEA42640BE071Z` (`code_id`),
-  CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_document` (
-  `id` int(20) NOT NULL AUTO_INCREMENT,
-  `parent_entity_type` varchar(50) NOT NULL,
-  `parent_entity_id` int(20) NOT NULL DEFAULT '0',
-  `name` varchar(250) NOT NULL,
-  `file_name` varchar(250) NOT NULL,
-  `size` int(20) DEFAULT '0',
-  `type` varchar(50) DEFAULT NULL,
-  `description` varchar(1000) DEFAULT NULL,
-  `location` varchar(500) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-/*not a major table - just intended for database reporting use for enums and values that would be hidden in java*/
-CREATE TABLE `r_enum_value` (
-  `enum_name` varchar(100) NOT NULL,
-  `enum_id` int(11) NOT NULL,
-  `enum_message_property` varchar(100) NOT NULL,
-  `enum_value` varchar(100) NOT NULL,
-  PRIMARY KEY (`enum_name`,`enum_id`),
-  UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`),
-  UNIQUE KEY `enum_value` (`enum_name`,`enum_value`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-/* used to link MySql tables to Mifos X application tables for additional data needs */
-CREATE TABLE `x_registered_table` (
-  `registered_table_name` varchar(50) NOT NULL,
-  `application_table_name` varchar(50) NOT NULL,
-  PRIMARY KEY (`registered_table_name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `m_calendar` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `title` varchar(50) NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  `location` varchar(50) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `duration` smallint(6) DEFAULT NULL,
-  `calendar_type_enum` smallint(5) NOT NULL,
-  `repeating` tinyint(1) NOT NULL DEFAULT '0',
-  `recurrence` varchar(100) DEFAULT NULL,
-  `remind_by_enum` smallint(5) DEFAULT NULL,
-  `first_reminder` smallint(11) DEFAULT NULL,
-  `second_reminder` smallint(11) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `m_calendar_instance` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `calendar_id` bigint(20) NOT NULL,
-  `entity_id` bigint(20) NOT NULL,
-  `entity_type_enum` smallint(5) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`),
-  CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
--- ================= end of reference/lookup tables =============
-
--- DDL for office related tables
-CREATE TABLE `m_office` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `opening_date` date NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name_org` (`name`),
-  UNIQUE KEY `externalid_org` (`external_id`),
-  KEY `FK2291C477E2551DCC` (`parent_id`),
-  CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_office_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `from_office_id` bigint(20) DEFAULT NULL,
-  `to_office_id` bigint(20) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` int(11) NOT NULL,
-  `transaction_amount` decimal(19,6) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK1E37728B93C6C1B6` (`to_office_id`),
-  KEY `FK1E37728B783C5C25` (`from_office_id`),
-  CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
--- ============ end of office related tables ==========
-
--- DDL for admin tables
-CREATE TABLE `m_permission` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `grouping` varchar(45) DEFAULT NULL,
-  `code` varchar(100) NOT NULL,
-  `entity_name` varchar(100) DEFAULT NULL,
-  `action_name` varchar(100) DEFAULT NULL,
-  `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_role` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) NOT NULL,
-  `description` varchar(500) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `unq_name` (`name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_role_permission` (
-  `role_id` bigint(20) NOT NULL,
-  `permission_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`role_id`,`permission_id`),
-  KEY `FK8DEDB04815CEC7AB` (`role_id`),
-  KEY `FK8DEDB048103B544B` (`permission_id`),
-  CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`),
-  CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_appuser` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `office_id` bigint(20) DEFAULT NULL,
-  `username` varchar(100) NOT NULL,
-  `firstname` varchar(100) NOT NULL,
-  `lastname` varchar(100) NOT NULL,
-  `password` varchar(255) NOT NULL,
-  `email` varchar(100) NOT NULL,
-  `firsttime_login_remaining` bit(1) NOT NULL,
-  `nonexpired` bit(1) NOT NULL,
-  `nonlocked` bit(1) NOT NULL,
-  `nonexpired_credentials` bit(1) NOT NULL,
-  `enabled` bit(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `username_org` (`username`),
-  KEY `FKB3D587CE0DD567A` (`office_id`),
-  CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_appuser_role` (
-  `appuser_id` bigint(20) NOT NULL,
-  `role_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`appuser_id`,`role_id`),
-  KEY `FK7662CE59B4100309` (`appuser_id`),
-  KEY `FK7662CE5915CEC7AB` (`role_id`),
-  CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`),
-  CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
--- ================ end of user admin tables ===============
-
--- DDL for organisation wide related concepts
-CREATE TABLE `m_portfolio_command_source` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `action_name` varchar(50) NOT NULL,
-  `entity_name` varchar(50) NOT NULL,
-  `office_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `client_id` bigint(20) DEFAULT NULL,
-  `loan_id` bigint(20) DEFAULT NULL,
-  `savings_account_id` bigint(20) DEFAULT NULL,
-  `api_get_url` varchar(100) NOT NULL,
-  `resource_id` bigint(20) DEFAULT NULL,
-  `subresource_id` bigint(20) DEFAULT NULL,
-  `command_as_json` text NOT NULL,
-  `maker_id` bigint(20) NOT NULL,
-  `made_on_date` datetime NOT NULL,
-  `checker_id` bigint(20) DEFAULT NULL,
-  `checked_on_date` datetime DEFAULT NULL,
-  `processing_result_enum` smallint(5) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_maker_m_appuser` (`maker_id`),
-  KEY `FK_m_checker_m_appuser` (`checker_id`),
-  KEY `action_name` (`action_name`),
-  KEY `entity_name` (`entity_name`,`resource_id`),
-  KEY `made_on_date` (`made_on_date`),
-  KEY `checked_on_date` (`checked_on_date`),
-  KEY `processing_result_enum` (`processing_result_enum`),
-  KEY `office_id` (`office_id`),
-  KEY `group_id` (`office_id`),
-  KEY `client_id` (`office_id`),
-  KEY `loan_id` (`office_id`),
-  CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `charge_applies_to_enum` smallint(5) NOT NULL,
-  `charge_time_enum` smallint(5) NOT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `is_active` tinyint(1) NOT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_fund` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(255) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `fund_name_org` (`name`),
-  UNIQUE KEY `fund_externalid_org` (`external_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_staff` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0',
-  `office_id` bigint(20) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `display_name` varchar(100) NOT NULL,
-  `joining_date` date,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `display_name` (`display_name`),
-  KEY `FK_m_staff_m_office` (`office_id`),
-  CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
--- ============ end of organisation wide related tables ===========
-
--- DDL client/group related tables
-CREATE TABLE `m_group_level` (
-`id` INT(11) NOT NULL AUTO_INCREMENT,
-`parent_id` INT(11) NULL DEFAULT NULL,
-`super_parent` TINYINT(1) NOT NULL,
-`level_name` VARCHAR(100) NOT NULL,
-`recursable` TINYINT(1) NOT NULL,
-`can_have_clients` TINYINT(1) NOT NULL,
-PRIMARY KEY (`id`),
-INDEX `Parent_levelId_reference` (`parent_id`),
-CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`)
-)ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_group` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `staff_id` BIGINT(20) DEFAULT NULL,
-  `parent_id` BIGINT(20) NULL DEFAULT NULL,
-  `level_Id` INT(11) NOT NULL,
-  `hierarchy` VARCHAR(100) NULL DEFAULT NULL,
-  `name` varchar(100) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`, `level_id`),
-  UNIQUE KEY `external_id` (`external_id`, `level_Id`),
-  KEY `office_id` (`office_id`),
-  KEY `staff_id` (`staff_id`),
-  CONSTRAINT `m_group_ibfk_1` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`),
-  CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_client` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `middlename` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `fullname` varchar(100) DEFAULT NULL,
-  `display_name` varchar(100) NOT NULL,
-  `image_key` varchar(500) DEFAULT NULL,
-  `joined_date` date DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `external_id` (`external_id`),
-  KEY `FKCE00CAB3E0DD567A` (`office_id`),
-  CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_client_identifier` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `document_type_id` int(11) NOT NULL,
-  `document_key` varchar(50) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `unique_identifier_key` (`document_type_id`,`document_key`),
-  UNIQUE KEY `unique_client_identifier` (`client_id`,`document_type_id`),
-  KEY `FK_m_client_document_m_client` (`client_id`),
-  KEY `FK_m_client_document_m_code_value` (`document_type_id`),
-  CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_group_client` (
-  `group_id` bigint(20) NOT NULL,
-  `client_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`group_id`,`client_id`),
-  KEY `client_id` (`client_id`),
-  CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
--- ==== end of client/group related tables ==========
-
--- DDL for loan and loan related tables
-CREATE TABLE `m_product_loan` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) NOT NULL,
-  `arrearstolerance_amount` decimal(19,6) DEFAULT NULL,
-  `name` varchar(100) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `fund_id` bigint(20) DEFAULT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `interest_period_frequency_enum` smallint(5) NOT NULL,
-  `annual_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `interest_method_enum` smallint(5) NOT NULL,
-  `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1',
-  `repay_every` smallint(5) NOT NULL,
-  `repayment_period_frequency_enum` smallint(5) NOT NULL,
-  `number_of_repayments` smallint(5) NOT NULL,
-  `amortization_method_enum` smallint(5) NOT NULL,
-  `accounting_type` smallint(5) NOT NULL,
-  `loan_transaction_strategy_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `unq_name` (`name`),
-  KEY `FKA6A8A7D77240145` (`fund_id`),
-  KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`),
-  CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`),
-  CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_product_loan_charge` (
-  `product_loan_id` bigint(20) NOT NULL,
-  `charge_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`product_loan_id`,`charge_id`),
-  KEY `charge_id` (`charge_id`),
-  CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`),
-  CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_loan` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `fund_id` bigint(20) DEFAULT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `loanpurpose_cv_id` int(11) DEFAULT NULL,
-  `loan_status_id` smallint(5) NOT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) NOT NULL,
-  `arrearstolerance_amount` decimal(19,6) DEFAULT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `interest_period_frequency_enum` smallint(5) NOT NULL,
-  `annual_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `interest_method_enum` smallint(5) NOT NULL,
-  `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1',
-  `term_frequency` smallint(5) NOT NULL DEFAULT '0',
-  `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2',
-  `repay_every` smallint(5) NOT NULL,
-  `repayment_period_frequency_enum` smallint(5) NOT NULL,
-  `number_of_repayments` smallint(5) NOT NULL,
-  `amortization_method_enum` smallint(5) NOT NULL,
-  `submittedon_date` date DEFAULT NULL,
-  `submittedon_userid` bigint(20) DEFAULT NULL,
-  `approvedon_date` date DEFAULT NULL,
-  `approvedon_userid` bigint(20) DEFAULT NULL,
-  `expected_disbursedon_date` date DEFAULT NULL,
-  `expected_firstrepaymenton_date` date DEFAULT NULL,
-  `interest_calculated_from_date` date DEFAULT NULL,
-  `disbursedon_date` date DEFAULT NULL,
-  `disbursedon_userid` bigint(20) DEFAULT NULL,
-  `expected_maturedon_date` date DEFAULT NULL,
-  `maturedon_date` date DEFAULT NULL,
-  `closedon_date` date DEFAULT NULL,
-  `closedon_userid` bigint(20) DEFAULT NULL,
-  `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL,
-  `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `rejectedon_date` date DEFAULT NULL,
-  `rejectedon_userid` bigint(20) DEFAULT NULL,
-  `rescheduledon_date` date DEFAULT NULL,
-  `withdrawnon_date` date DEFAULT NULL,
-  `withdrawnon_userid` bigint(20) DEFAULT NULL,
-  `writtenoffon_date` date DEFAULT NULL,
-  `loan_transaction_strategy_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`),
-  KEY `FKB6F935D87179A0CB` (`client_id`),
-  KEY `FKB6F935D8C8D4B434` (`product_id`),
-  KEY `FK7C885877240145` (`fund_id`),
-  KEY `FK_loan_ltp_strategy` (`loan_transaction_strategy_id`),
-  KEY `FK_m_loan_m_staff` (`loan_officer_id`),
-  KEY `group_id` (`group_id`),
-  KEY `FK_m_loanpurpose_codevalue` (`loanpurpose_cv_id`),
-  KEY `FK_submittedon_userid` (`submittedon_userid`),
-  KEY `FK_approvedon_userid` (`approvedon_userid`),
-  KEY `FK_rejectedon_userid` (`rejectedon_userid`),
-  KEY `FK_withdrawnon_userid` (`withdrawnon_userid`),
-  KEY `FK_disbursedon_userid` (`disbursedon_userid`),
-  KEY `FK_closedon_userid` (`closedon_userid`),
-  CONSTRAINT `FK7C885877240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`),
-  CONSTRAINT `FKB6F935D87179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FKB6F935D8C8D4B434` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`),
-  CONSTRAINT `FK_approvedon_userid` FOREIGN KEY (`approvedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_closedon_userid` FOREIGN KEY (`closedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_disbursedon_userid` FOREIGN KEY (`disbursedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_loan_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`),
-  CONSTRAINT `FK_m_loanpurpose_codevalue` FOREIGN KEY (`loanpurpose_cv_id`) REFERENCES `m_code_value` (`id`),
-  CONSTRAINT `FK_m_loan_m_staff` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`),
-  CONSTRAINT `FK_rejectedon_userid` FOREIGN KEY (`rejectedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_loan_arrears_aging` (
-  `loan_id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `overdue_since_date_derived` date DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_guarantor` (
-	`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
-	`loan_id` BIGINT(20) NOT NULL,
-        `client_reln_cv_id` INT(11) DEFAULT NULL,
-	`type_enum` SMALLINT(5) NOT NULL,
-	`entity_id` BIGINT(20) NULL DEFAULT NULL,
-	`firstname` VARCHAR(50) NULL DEFAULT NULL,
-	`lastname` VARCHAR(50) NULL DEFAULT NULL,
-	`dob` DATE NULL DEFAULT NULL,
-	`address_line_1` VARCHAR(500) NULL DEFAULT NULL,
-	`address_line_2` VARCHAR(500) NULL DEFAULT NULL,
-	`city` VARCHAR(50) NULL DEFAULT NULL,
-	`state` VARCHAR(50) NULL DEFAULT NULL,
-	`country` VARCHAR(50) NULL DEFAULT NULL,
-	`zip` VARCHAR(20) NULL DEFAULT NULL,
-	`house_phone_number` VARCHAR(20) NULL DEFAULT NULL,
-	`mobile_number` VARCHAR(20) NULL DEFAULT NULL,
-	`comment` VARCHAR(500) NULL DEFAULT NULL,
-	PRIMARY KEY (`id`),
-	INDEX `FK_m_guarantor_m_loan` (`loan_id`),
-        CONSTRAINT `FK_m_guarantor_m_code_value` FOREIGN KEY (`client_reln_cv_id`) REFERENCES `m_code_value` (`id`)
-	CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_loan_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `charge_id` bigint(20) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `charge_time_enum` smallint(5) NOT NULL,
-  `due_for_collection_as_of_date` date DEFAULT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `calculation_percentage` decimal(19,6) DEFAULT NULL,
-  `calculation_on_amount` decimal(19,6) DEFAULT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `amount_paid_derived` decimal(19,6) DEFAULT NULL,
-  `amount_waived_derived` decimal(19,6) DEFAULT NULL,
-  `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0',
-  `waived` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  KEY `charge_id` (`charge_id`),
-  KEY `m_loan_charge_ibfk_2` (`loan_id`),
-  CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`),
-  CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_loan_collateral` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `type_cv_id` int(11) NOT NULL,
-  `value` DECIMAL(19,6) DEFAULT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_collateral_m_loan` (`loan_id`),
-  KEY `FK_collateral_code_value` (`type_cv_id`),
-  CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_loan_officer_assignment_history` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`),
-  KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_loan_repayment_schedule` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `fromdate` date DEFAULT NULL,
-  `duedate` date NOT NULL,
-  `installment` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) DEFAULT NULL,
-  `principal_completed_derived` decimal(19,6) DEFAULT NULL,
-  `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `interest_amount` decimal(19,6) DEFAULT NULL,
-  `interest_completed_derived` decimal(19,6) DEFAULT NULL,
-  `interest_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_amount` decimal(19,6) DEFAULT NULL,
-  `fee_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_amount` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `completed_derived` bit(1) NOT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `interest_waived_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK488B92AA40BE0710` (`loan_id`),
-  CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_loan_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `is_reversed` TINYINT(1) NOT NULL,
-  `transaction_type_enum` smallint(5) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `principal_portion_derived` decimal(19,6) DEFAULT NULL,
-  `interest_portion_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKCFCEA42640BE0710` (`loan_id`),
-  CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--- ======== end of loan related tables ==========
-
-CREATE TABLE `m_savings_product` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) NOT NULL,
-  `description` varchar(500) NOT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL,
-  `interest_period_enum` SMALLINT(5) NOT NULL,
-  `interest_calculation_type_enum` SMALLINT(5) NOT NULL,
-  `interest_calculation_days_in_year_type_enum` SMALLINT(5) NOT NULL,
-  `min_required_opening_balance` decimal(19,6) DEFAULT NULL,
-  `lockin_period_frequency` decimal(19,6) DEFAULT NULL,
-  `lockin_period_frequency_enum` smallint(5) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `sp_unq_name` (`name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_savings_account` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `status_enum` SMALLINT(5) NOT NULL DEFAULT 300,
-  `activation_date` DATE DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `nominal_interest_rate_period_frequency_enum` smallint(5) NOT NULL,
-  `annual_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `interest_period_enum` SMALLINT(5) NOT NULL,
-  `interest_calculation_type_enum` SMALLINT(5) NOT NULL,
-  `interest_calculation_days_in_year_type_enum` SMALLINT(5) NOT NULL,
-  `min_required_opening_balance` decimal(19,6) DEFAULT NULL,
-  `lockin_period_frequency` decimal(19,6) DEFAULT NULL,
-  `lockin_period_frequency_enum` smallint(5) DEFAULT NULL,
-  `lockedin_until_date_derived` DATE DEFAULT NULL,
-  `total_deposits_derived` decimal(19,6) DEFAULT NULL,
-  `total_withdrawals_derived` decimal(19,6) DEFAULT NULL,
-  `total_interest_earned_derived` decimal(19,6) DEFAULT NULL,
-  `total_interest_posted_derived` decimal(19,6) DEFAULT NULL,
-  `account_balance_derived` decimal(19,6) NOT NULL DEFAULT 0,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `sa_account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `sa_externalid_UNIQUE` (`external_id`),
-  KEY `FKSA00000000000001` (`client_id`),
-  KEY `FKSA00000000000002` (`group_id`),
-  KEY `FKSA00000000000003` (`product_id`),
-  CONSTRAINT `FKSA00000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FKSA00000000000002` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FKSA00000000000003` FOREIGN KEY (`product_id`) REFERENCES `m_savings_product` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `m_savings_account_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `savings_account_id` bigint(20) NOT NULL,
-  `transaction_type_enum` smallint(5) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `is_reversed` tinyint(1) NOT NULL,
-  `running_balance_derived` DECIMAL(19,6) NULL,
-  `balance_number_of_days_derived` INT NULL,
-  `balance_end_date_derived` DATE NULL,
-  `cumulative_balance_derived` DECIMAL(19,6) NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKSAT0000000001` (`savings_account_id`),
-  CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
--- end of savings account related tables
-
--- DDL for notes associated with all client/group and financial accounts
-CREATE TABLE `m_note` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `loan_id` bigint(20) DEFAULT NULL,
-  `loan_transaction_id` bigint(20) DEFAULT NULL,
-  `note_type_enum` smallint(5) NOT NULL,
-  `note` varchar(1000) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK7C9708924D26803` (`loan_transaction_id`),
-  KEY `FK7C97089541F0A56` (`createdby_id`),
-  KEY `FK7C970897179A0CB` (`client_id`),
-  KEY `FK_m_note_m_group` (`group_id`),
-  KEY `FK7C970898F889C3F` (`lastmodifiedby_id`),
-  KEY `FK7C9708940BE0710` (`loan_id`),
-  CONSTRAINT `FK7C9708924D26803` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`),
-  CONSTRAINT `FK7C9708940BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK7C97089541F0A56` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
--- DDL for accounting sub system related tables
-CREATE TABLE `acc_gl_account` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(45) NOT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `gl_code` varchar(45) NOT NULL,
-  `disabled` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1',
-  `account_usage` tinyint(1) NOT NULL DEFAULT '2',
-  `classification_enum` smallint(5) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `acc_gl_code` (`gl_code`),
-  KEY `FK_ACC_0000000001` (`parent_id`),
-  CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `acc_gl_closure` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `closing_date` date NOT NULL,
-  `is_deleted` int(20) NOT NULL DEFAULT '0',
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `comments` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `office_id_closing_date` (`office_id`,`closing_date`),
-  KEY `FK_acc_gl_closure_m_office` (`office_id`),
-  KEY `FK_acc_gl_closure_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_closure_m_appuser_2` (`lastmodifiedby_id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `acc_gl_journal_entry` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_id` bigint(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `reversal_id` bigint(20) DEFAULT NULL,
-  `transaction_id` varchar(50) NOT NULL,
-  `reversed` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_entry` TINYINT(1) NOT NULL DEFAULT '0',
-  `entry_date` date NOT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `entity_type_enum` smallint(5) DEFAULT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `createdby_id` bigint(20) NOT NULL,
-  `lastmodifiedby_id` bigint(20) NOT NULL,
-  `created_date` datetime NOT NULL,
-  `lastmodified_date` datetime NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_acc_gl_journal_entry_m_office` (`office_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser_2` (`lastmodifiedby_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_journal_entry` (`reversal_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_account` (`account_id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_account` FOREIGN KEY (`account_id`) REFERENCES `acc_gl_account` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_journal_entry` FOREIGN KEY (`reversal_id`) REFERENCES `acc_gl_journal_entry` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `acc_product_mapping` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `gl_account_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `product_type` smallint(5) DEFAULT NULL,
-  `financial_account_type` smallint(5) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--- =========== end of accounting related tables ==========
-
--- DDL for reporting related tables
-CREATE TABLE `rpt_sequence` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `stretchy_parameter` (
-  `parameter_id` int(11) NOT NULL AUTO_INCREMENT,
-  `parameter_name` varchar(45) NOT NULL,
-  `parameter_variable` varchar(45) DEFAULT NULL,
-  `parameter_label` varchar(45) NOT NULL,
-  `parameter_displayType` varchar(45) NOT NULL,
-  `parameter_FormatType` varchar(10) NOT NULL,
-  `parameter_default` varchar(45) NOT NULL,
-  `special` varchar(1) DEFAULT NULL,
-  `selectOne` varchar(1) DEFAULT NULL,
-  `selectAll` varchar(1) DEFAULT NULL,
-  `parameter_sql` text,
-  `parent_parameter_id` int(11) NULL DEFAULT NULL,
-  PRIMARY KEY (`parameter_id`),
-  UNIQUE KEY `name_UNIQUE` (`parameter_name`),
-  INDEX `fk_stretchy_parameter_0001_idx` (`parent_parameter_id`),
-  CONSTRAINT `fk_stretchy_parameter_0001` FOREIGN KEY (`parent_parameter_id`) REFERENCES `stretchy_parameter` (`parameter_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `stretchy_report` (
-  `report_id` int(11) NOT NULL AUTO_INCREMENT,
-  `report_name` varchar(100) NOT NULL,
-  `report_type` varchar(20) NOT NULL,
-  `report_subtype` varchar(20) DEFAULT NULL,
-  `report_category` varchar(45) DEFAULT NULL,
-  `report_sql` text,
-  `description` text,
-  `core_report` tinyint(1) DEFAULT '0',
-  `use_report` tinyint(1) DEFAULT '0',
-  PRIMARY KEY (`report_id`),
-  UNIQUE KEY `report_name_UNIQUE` (`report_name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE `stretchy_report_parameter` (
-  `report_id` int(11) NOT NULL,
-  `parameter_id` int(11) NOT NULL,
-  `report_parameter_name` varchar(45) DEFAULT NULL,
-  PRIMARY KEY (`report_id`,`parameter_id`),
-  UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--- =========== end of reporting related tables ============
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/old-schema-files/0002-mifosx-base-reference-data-utf8.sql
----------------------------------------------------------------------
diff --git a/fineract-db/old-schema-files/0002-mifosx-base-reference-data-utf8.sql b/fineract-db/old-schema-files/0002-mifosx-base-reference-data-utf8.sql
deleted file mode 100644
index 1393ea9..0000000
--- a/fineract-db/old-schema-files/0002-mifosx-base-reference-data-utf8.sql
+++ /dev/null
@@ -1,321 +0,0 @@
--- currency symbols may not apply through command line on windows so use a different client like mysql workbench
-
-INSERT INTO `ref_loan_transaction_processing_strategy`
-(`id`,`code`,`name`)
-VALUES
-(1, 'mifos-standard-strategy', 'Mifos style'),
-(2, 'heavensfamily-strategy', 'Heavensfamily'),
-(3, 'creocore-strategy', 'Creocore'),
-(4, 'rbi-india-strategy', 'RBI (India)');
-
-INSERT INTO `c_configuration`
-(`name`, `enabled`)
-VALUES 
-('maker-checker', 0);
-
-INSERT INTO `r_enum_value` 
-VALUES 
-('amortization_method_enum',0,'Equal principle payments','Equal principle payments'),
-('amortization_method_enum',1,'Equal installments','Equal installments'),
-('interest_calculated_in_period_enum',0,'Daily','Daily'),
-('interest_calculated_in_period_enum',1,'Same as repayment period','Same as repayment period'),
-('interest_method_enum',0,'Declining Balance','Declining Balance'),
-('interest_method_enum',1,'Flat','Flat'),
-('interest_period_frequency_enum',2,'Per month','Per month'),
-('interest_period_frequency_enum',3,'Per year','Per year'),
-('loan_status_id',100,'Submitted and awaiting approval','Submitted and awaiting approval'),
-('loan_status_id',200,'Approved','Approved'),
-('loan_status_id',300,'Active','Active'),
-('loan_status_id',400,'Withdrawn by client','Withdrawn by client'),
-('loan_status_id',500,'Rejected','Rejected'),
-('loan_status_id',600,'Closed','Closed'),
-('loan_status_id',601,'Written-Off','Written-Off'),
-('loan_status_id',602,'Rescheduled','Rescheduled'),
-('loan_status_id',700,'Overpaid','Overpaid'),
-('loan_transaction_strategy_id',1,'mifos-standard-strategy','Mifos style'),
-('loan_transaction_strategy_id',2,'heavensfamily-strategy','Heavensfamily'),
-('loan_transaction_strategy_id',3,'creocore-strategy','Creocore'),
-('loan_transaction_strategy_id',4,'rbi-india-strategy','RBI (India)'),
-('processing_result_enum',0,'invalid','Invalid'),
-('processing_result_enum',1,'processed','Processed'),
-('processing_result_enum',2,'awaiting.approval','Awaiting Approval'),
-('processing_result_enum',3,'rejected','Rejected'),
-('repayment_period_frequency_enum',0,'Days','Days'),
-('repayment_period_frequency_enum',1,'Weeks','Weeks'),
-('repayment_period_frequency_enum',2,'Months','Months'),
-('term_period_frequency_enum',0,'Days','Days'),
-('term_period_frequency_enum',1,'Weeks','Weeks'),
-('term_period_frequency_enum',2,'Months','Months'),
-('term_period_frequency_enum',3,'Years','Years');
-
-INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) 
-VALUES ('transaction_type_enum', '1', 'Disbursement', 'Disbursement');
-
-INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) 
-VALUES ('transaction_type_enum', '2', 'Repayment', 'Repayment');
-
-INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) 
-VALUES ('transaction_type_enum', '3', 'Contra', 'Contra');
-
-INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) 
-VALUES ('transaction_type_enum', '4', 'Waive Interest', 'Waive Interest');
-
-INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) 
-VALUES ('transaction_type_enum', '5', 'Repayment At Disbursement', 'Repayment At Disbursement');
-
-INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) 
-VALUES ('transaction_type_enum', '6', 'Write-Off', 'Write-Off');
-
-INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) 
-VALUES ('transaction_type_enum', '7', 'Marked for Rescheduling', 'Marked for Rescheduling');
-
-INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) 
-VALUES ('transaction_type_enum', '8', 'Recovery Repayment', 'Recovery Repayment');
-
-INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) 
-VALUES ('transaction_type_enum', '9', 'Waive Charges', 'Waive Charges');
-
-INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) 
-VALUES ('transaction_type_enum', '10', 'Apply Charges', 'Apply Charges');
-
-INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) 
-VALUES ('transaction_type_enum', '11', 'Apply Interest', 'Apply Interest');
-
-INSERT INTO `m_currency`
-(`id`,`code`,`decimal_places`,`display_symbol`,`name`, `internationalized_name_code`)
-VALUES 
-(1,'AED',2,NULL,'UAE Dirham','currency.AED'),
-(2,'AFN',2,NULL,'Afghanistan Afghani','currency.AFN'),
-(3,'ALL',2,NULL,'Albanian Lek','currency.ALL'),
-(4,'AMD',2,NULL,'Armenian Dram','currency.AMD'),
-(5,'ANG',2,NULL,'Netherlands Antillian Guilder','currency.ANG'),
-(6,'AOA',2,NULL,'Angolan Kwanza','currency.AOA'),
-(7,'ARS',2,'$','Argentine Peso','currency.ARS'),
-(8,'AUD',2,'A$','Australian Dollar','currency.AUD'),
-(9,'AWG',2,NULL,'Aruban Guilder','currency.AWG'),
-(10,'AZM',2,NULL,'Azerbaijanian Manat','currency.AZM'),
-(11,'BAM',2,NULL,'Bosnia and Herzegovina Convertible Marks','currency.BAM'),
-(12,'BBD',2,NULL,'Barbados Dollar','currency.BBD'),
-(13,'BDT',2,NULL,'Bangladesh Taka','currency.BDT'),
-(14,'BGN',2,NULL,'Bulgarian Lev','currency.BGN'),
-(15,'BHD',3,NULL,'Bahraini Dinar','currency.BHD'),
-(16,'BIF',0,NULL,'Burundi Franc','currency.BIF'),
-(17,'BMD',2,NULL,'Bermudian Dollar','currency.BMD'),
-(18,'BND',2,'B$','Brunei Dollar','currency.BND'),
-(19,'BOB',2,'Bs.','Bolivian Boliviano','currency.BOB'),
-(20,'BRL',2,'R$','Brazilian Real','currency.BRL'),
-(21,'BSD',2,NULL,'Bahamian Dollar','currency.BSD'),
-(22,'BTN',2,NULL,'Bhutan Ngultrum','currency.BTN'),
-(23,'BWP',2,NULL,'Botswana Pula','currency.BWP'),
-(24,'BYR',0,NULL,'Belarussian Ruble','currency.BYR'),
-(25,'BZD',2,'BZ$','Belize Dollar','currency.BZD'),
-(26,'CAD',2,NULL,'Canadian Dollar','currency.CAD'),
-(27,'CDF',2,NULL,'Franc Congolais','currency.CDF'),
-(28,'CHF',2,NULL,'Swiss Franc','currency.CHF'),
-(29,'CLP',0,'$','Chilean Peso','currency.CLP'),
-(30,'CNY',2,NULL,'Chinese Yuan Renminbi','currency.CNY'),
-(31,'COP',2,'$','Colombian Peso','currency.COP'),
-(32,'CRC',2,'₡','Costa Rican Colon','currency.CRC'),
-(33,'CSD',2,NULL,'Serbian Dinar','currency.CSD'),
-(34,'CUP',2,'$MN','Cuban Peso','currency.CUP'),
-(35,'CVE',2,NULL,'Cape Verde Escudo','currency.CVE'),
-(36,'CYP',2,NULL,'Cyprus Pound','currency.CYP'),
-(37,'CZK',2,NULL,'Czech Koruna','currency.CZK'),
-(38,'DJF',0,NULL,'Djibouti Franc','currency.DJF'),
-(39,'DKK',2,NULL,'Danish Krone','currency.DKK'),
-(40,'DOP',2,'RD$','Dominican Peso','currency.DOP'),
-(41,'DZD',2,NULL,'Algerian Dinar','currency.DZD'),
-(42,'EEK',2,NULL,'Estonian Kroon','currency.EEK'),
-(43,'EGP',2,NULL,'Egyptian Pound','currency.EGP'),
-(44,'ERN',2,NULL,'Eritrea Nafka','currency.ERN'),
-(45,'ETB',2,NULL,'Ethiopian Birr','currency.ETB'),
-(46,'EUR',2,'€','Euro','currency.EUR'),
-(47,'FJD',2,NULL,'Fiji Dollar','currency.FJD'),
-(48,'FKP',2,NULL,'Falkland Islands Pound','currency.FKP'),
-(49,'GBP',2,NULL,'Pound Sterling','currency.GBP'),
-(50,'GEL',2,NULL,'Georgian Lari','currency.GEL'),
-(51,'GHC',2,'GHc','Ghana Cedi','currency.GHC'),
-(52,'GIP',2,NULL,'Gibraltar Pound','currency.GIP'),
-(53,'GMD',2,NULL,'Gambian Dalasi','currency.GMD'),
-(54,'GNF',0,NULL,'Guinea Franc','currency.GNF'),
-(55,'GTQ',2,'Q','Guatemala Quetzal','currency.GTQ'),
-(56,'GYD',2,NULL,'Guyana Dollar','currency.GYD'),
-(57,'HKD',2,NULL,'Hong Kong Dollar','currency.HKD'),
-(58,'HNL',2,'L','Honduras Lempira','currency.HNL'),
-(59,'HRK',2,NULL,'Croatian Kuna','currency.HRK'),
-(60,'HTG',2,'G','Haiti Gourde','currency.HTG'),
-(61,'HUF',2,NULL,'Hungarian Forint','currency.HUF'),
-(62,'IDR',2,NULL,'Indonesian Rupiah','currency.IDR'),
-(63,'ILS',2,NULL,'New Israeli Shekel','currency.ILS'),
-(64,'INR',2,'₹','Indian Rupee','currency.INR'),
-(65,'IQD',3,NULL,'Iraqi Dinar','currency.IQD'),
-(66,'IRR',2,NULL,'Iranian Rial','currency.IRR'),
-(67,'ISK',0,NULL,'Iceland Krona','currency.ISK'),
-(68,'JMD',2,NULL,'Jamaican Dollar','currency.JMD'),
-(69,'JOD',3,NULL,'Jordanian Dinar','currency.JOD'),
-(70,'JPY',0,NULL,'Japanese Yen','currency.JPY'),
-(71,'KES',2,'KSh','Kenyan Shilling','currency.KES'),
-(72,'KGS',2,NULL,'Kyrgyzstan Som','currency.KGS'),
-(73,'KHR',2,NULL,'Cambodia Riel','currency.KHR'),
-(74,'KMF',0,NULL,'Comoro Franc','currency.KMF'),
-(75,'KPW',2,NULL,'North Korean Won','currency.KPW'),
-(76,'KRW',0,NULL,'Korean Won','currency.KRW'),
-(77,'KWD',3,NULL,'Kuwaiti Dinar','currency.KWD'),
-(78,'KYD',2,NULL,'Cayman Islands Dollar','currency.KYD'),
-(79,'KZT',2,NULL,'Kazakhstan Tenge','currency.KZT'),
-(80,'LAK',2,NULL,'Lao Kip','currency.LAK'),
-(81,'LBP',2,'L£','Lebanese Pound','currency.LBP'),
-(82,'LKR',2,NULL,'Sri Lanka Rupee','currency.LKR'),
-(83,'LRD',2,NULL,'Liberian Dollar','currency.LRD'),
-(84,'LSL',2,NULL,'Lesotho Loti','currency.LSL'),
-(85,'LTL',2,NULL,'Lithuanian Litas','currency.LTL'),
-(86,'LVL',2,NULL,'Latvian Lats','currency.LVL'),
-(87,'LYD',3,NULL,'Libyan Dinar','currency.LYD'),
-(88,'MAD',2,NULL,'Moroccan Dirham','currency.MAD'),
-(89,'MDL',2,NULL,'Moldovan Leu','currency.MDL'),
-(90,'MGA',2,NULL,'Malagasy Ariary','currency.MGA'),
-(91,'MKD',2,NULL,'Macedonian Denar','currency.MKD'),
-(92,'MMK',2,'K','Myanmar Kyat','currency.MMK'),
-(93,'MNT',2,NULL,'Mongolian Tugrik','currency.MNT'),
-(94,'MOP',2,NULL,'Macau Pataca','currency.MOP'),
-(95,'MRO',2,NULL,'Mauritania Ouguiya','currency.MRO'),
-(96,'MTL',2,NULL,'Maltese Lira','currency.MTL'),
-(97,'MUR',2,NULL,'Mauritius Rupee','currency.MUR'),
-(98,'MVR',2,NULL,'Maldives Rufiyaa','currency.MVR'),
-(99,'MWK',2,NULL,'Malawi Kwacha','currency.MWK'),
-(100,'MXN',2,'$','Mexican Peso','currency.MXN'),
-(101,'MYR',2,NULL,'Malaysian Ringgit','currency.MYR'),
-(102,'MZM',2,NULL,'Mozambique Metical','currency.MZM'),
-(103,'NAD',2,NULL,'Namibia Dollar','currency.NAD'),
-(104,'NGN',2,NULL,'Nigerian Naira','currency.NGN'),
-(105,'NIO',2,'C$','Nicaragua Cordoba Oro','currency.NIO'),
-(106,'NOK',2,NULL,'Norwegian Krone','currency.NOK'),
-(107,'NPR',2,NULL,'Nepalese Rupee','currency.NPR'),
-(108,'NZD',2,NULL,'New Zealand Dollar','currency.NZD'),
-(109,'OMR',3,NULL,'Rial Omani','currency.OMR'),
-(110,'PAB',2,'B/.','Panama Balboa','currency.PAB'),
-(111,'PEN',2,'S/.','Peruvian Nuevo Sol','currency.PEN'),
-(112,'PGK',2,NULL,'Papua New Guinea Kina','currency.PGK'),
-(113,'PHP',2,NULL,'Philippine Peso','currency.PHP'),
-(114,'PKR',2,NULL,'Pakistan Rupee','currency.PKR'),
-(115,'PLN',2,NULL,'Polish Zloty','currency.PLN'),
-(116,'PYG',0,'₲','Paraguayan Guarani','currency.PYG'),
-(117,'QAR',2,NULL,'Qatari Rial','currency.QAR'),
-(118,'RON',2,NULL,'Romanian Leu','currency.RON'),
-(119,'RUB',2,NULL,'Russian Ruble','currency.RUB'),
-(120,'RWF',0,NULL,'Rwanda Franc','currency.RWF'),
-(121,'SAR',2,NULL,'Saudi Riyal','currency.SAR'),
-(122,'SBD',2,NULL,'Solomon Islands Dollar','currency.SBD'),
-(123,'SCR',2,NULL,'Seychelles Rupee','currency.SCR'),
-(124,'SDD',2,NULL,'Sudanese Dinar','currency.SDD'),
-(125,'SEK',2,NULL,'Swedish Krona','currency.SEK'),
-(126,'SGD',2,NULL,'Singapore Dollar','currency.SGD'),
-(127,'SHP',2,NULL,'St Helena Pound','currency.SHP'),
-(128,'SIT',2,NULL,'Slovenian Tolar','currency.SIT'),
-(129,'SKK',2,NULL,'Slovak Koruna','currency.SKK'),
-(130,'SLL',2,NULL,'Sierra Leone Leone','currency.SLL'),
-(131,'SOS',2,NULL,'Somali Shilling','currency.SOS'),
-(132,'SRD',2,NULL,'Surinam Dollar','currency.SRD'),
-(133,'STD',2,NULL,'Sao Tome and Principe Dobra','currency.STD'),
-(134,'SVC',2,NULL,'El Salvador Colon','currency.SVC'),
-(135,'SYP',2,NULL,'Syrian Pound','currency.SYP'),
-(136,'SZL',2,NULL,'Swaziland Lilangeni','currency.SZL'),
-(137,'THB',2,NULL,'Thai Baht','currency.THB'),
-(138,'TJS',2,NULL,'Tajik Somoni','currency.TJS'),
-(139,'TMM',2,NULL,'Turkmenistan Manat','currency.TMM'),
-(140,'TND',3,'DT','Tunisian Dinar','currency.TND'),
-(141,'TOP',2,NULL,'Tonga Pa\'anga','currency.TOP'),
-(142,'TRY',2,NULL,'Turkish Lira','currency.TRY'),
-(143,'TTD',2,NULL,'Trinidad and Tobago Dollar','currency.TTD'),
-(144,'TWD',2,NULL,'New Taiwan Dollar','currency.TWD'),
-(145,'TZS',2,NULL,'Tanzanian Shilling','currency.TZS'),
-(146,'UAH',2,NULL,'Ukraine Hryvnia','currency.UAH'),
-(147,'UGX',2,'USh','Uganda Shilling','currency.UGX'),
-(148,'USD',2,'$','US Dollar','currency.USD'),
-(149,'UYU',2,'$U','Peso Uruguayo','currency.UYU'),
-(150,'UZS',2,NULL,'Uzbekistan Sum','currency.UZS'),
-(151,'VEB',2,'Bs.F.','Venezuelan Bolivar','currency.VEB'),
-(152,'VND',2,NULL,'Vietnamese Dong','currency.VND'),
-(153,'VUV',0,NULL,'Vanuatu Vatu','currency.VUV'),
-(154,'WST',2,NULL,'Samoa Tala','currency.WST'),
-(155,'XAF',0,NULL,'CFA Franc BEAC','currency.XAF'),
-(156,'XCD',2,NULL,'East Caribbean Dollar','currency.XCD'),
-(157,'XDR',5,NULL,'SDR (Special Drawing Rights)','currency.XDR'),
-(158,'XOF',0, 'CFA','CFA Franc BCEAO','currency.XOF'),
-(159,'XPF',0,NULL,'CFP Franc','currency.XPF'),
-(160,'YER',2,NULL,'Yemeni Rial','currency.YER'),
-(161,'ZAR',2, 'R','South African Rand','currency.ZAR'),
-(162,'ZMK',2,NULL,'Zambian Kwacha','currency.ZMK'),
-(163,'ZWD',2,NULL,'Zimbabwe Dollar','currency.ZWD');
--- ======== end of currencies ==
-
-INSERT INTO `m_organisation_currency` (`id`, `code`, `decimal_places`, `name`, `display_symbol`, `internationalized_name_code`) 
-VALUES (21,'USD',2,'US Dollar','$','currency.USD');
-
-INSERT INTO `m_office` (`id`, `parent_id`, `hierarchy`, `external_id`, `name`, `opening_date`) 
-VALUES 
-(1,NULL,'.','1','Head Office','2009-01-01');
-
-INSERT INTO `m_group_level` (`id`, `parent_id`, `super_parent`, `level_name`, `recursable`, `can_have_clients`) 
-VALUES (1, NULL, 1, 'Center', 1, 0);
-INSERT INTO `m_group_level` (`id`, `parent_id`, `super_parent`, `level_name`, `recursable`, `can_have_clients`) 
-VALUES (2, 1, 0, 'Group', 0, 1);
-
-
-
--- create single code and code value for client identifiers
-INSERT INTO `m_code`
-(`code_name`, `is_system_defined`) 
-VALUES 
-('Customer Identifier',1),
-('LoanCollateral',1),
-('LoanPurpose',1),
-('Gender',1),
-('YesNo',1),
-('GuarantorRelationship',1);
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'Passport', 1
-from m_code mc
-where mc.`code_name` = "Customer Identifier";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'Id', 2
-from m_code mc
-where mc.`code_name` = "Customer Identifier";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'Drivers License', 3
-from m_code mc
-where mc.`code_name` = "Customer Identifier";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'Any Other Id Type', 4
-from m_code mc
-where mc.`code_name` = "Customer Identifier";
-
--- Adding a few Default Guarantor Relationships
-insert into m_code_value (code_id,code_value,order_position) 
-	select id,"Spouse",0 
-	from m_code 
-	where m_code.code_name="GuarantorRelationship";
-
-insert into m_code_value (code_id,code_value,order_position) 
-	select id,"Parent",0 
-	from m_code 
-	where m_code.code_name="GuarantorRelationship";
-
-insert into m_code_value (code_id,code_value,order_position) 
-	select id,"Sibling",0 
-	from m_code 
-	where m_code.code_name="GuarantorRelationship";
-
-insert into m_code_value (code_id,code_value,order_position) 
-	select id,"Business Associate",0 
-	from m_code 
-	where m_code.code_name="GuarantorRelationship";
-
-insert into m_code_value (code_id,code_value,order_position) 
-	select id,"Other",0 
-	from m_code 
-	where m_code.code_name="GuarantorRelationship";
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/old-schema-files/0003-mifosx-permissions-and-authorisation-utf8.sql
----------------------------------------------------------------------
diff --git a/fineract-db/old-schema-files/0003-mifosx-permissions-and-authorisation-utf8.sql b/fineract-db/old-schema-files/0003-mifosx-permissions-and-authorisation-utf8.sql
deleted file mode 100644
index aaf726a..0000000
--- a/fineract-db/old-schema-files/0003-mifosx-permissions-and-authorisation-utf8.sql
+++ /dev/null
@@ -1,334 +0,0 @@
-
--- ========= roles and permissions =========
-
-/*
-this scripts removes all current m_role_permission and m_permission entries
-and then inserts new m_permission entries and just one m_role_permission entry
-which gives the role (id 1 - super user) an ALL_FUNCTIONS permission
-
-If you had other roles set up with specific permissions you will have to set up their permissions again.
-*/
-
--- truncate `m_role_permission`;
--- truncate `m_permission`;
--- truncate `x_registered_table`;
-
-INSERT INTO `m_permission`
-(`grouping`,`code`,`entity_name`,`action_name`,`can_maker_checker`) VALUES 
-('special','ALL_FUNCTIONS',NULL,NULL,0),
-('special','ALL_FUNCTIONS_READ',NULL,NULL,0),
-('special', 'CHECKER_SUPER_USER', NULL, NULL, '0'),
-('special','REPORTING_SUPER_USER',NULL,NULL,0),
-('authorisation','READ_PERMISSION','PERMISSION','READ',0),
-('authorisation','PERMISSIONS_ROLE','ROLE','PERMISSIONS',1),
-('authorisation','CREATE_ROLE','ROLE','CREATE',1),
-('authorisation','CREATE_ROLE_CHECKER','ROLE','CREATE',0),
-('authorisation','READ_ROLE','ROLE','READ',0),
-('authorisation','UPDATE_ROLE','ROLE','UPDATE',1),
-('authorisation','UPDATE_ROLE_CHECKER','ROLE','UPDATE',0),
-('authorisation','DELETE_ROLE','ROLE','DELETE',1),
-('authorisation','DELETE_ROLE_CHECKER','ROLE','DELETE',0),
-('authorisation','CREATE_USER','USER','CREATE',1),
-('authorisation','CREATE_USER_CHECKER','USER','CREATE',0),
-('authorisation','READ_USER','USER','READ',0),
-('authorisation','UPDATE_USER','USER','UPDATE',1),
-('authorisation','UPDATE_USER_CHECKER','USER','UPDATE',0),
-('authorisation','DELETE_USER','USER','DELETE',1),
-('authorisation','DELETE_USER_CHECKER','USER','DELETE',0),
-('configuration','READ_CONFIGURATION','CONFIGURATION','READ',1),
-('configuration','UPDATE_CONFIGURATION','CONFIGURATION','UPDATE',1),
-('configuration','UPDATE_CONFIGURATION_CHECKER','CONFIGURATION','UPDATE',0),
-('configuration','READ_CODE','CODE','READ',0),
-('configuration','CREATE_CODE','CODE','CREATE',1),
-('configuration','CREATE_CODE_CHECKER','CODE','CREATE',0),
-('configuration','UPDATE_CODE','CODE','UPDATE',1),
-('configuration','UPDATE_CODE_CHECKER','CODE','UPDATE',0),
-('configuration','DELETE_CODE','CODE','DELETE',1),
-('configuration','DELETE_CODE_CHECKER','CODE','DELETE',0),
-('configuration', 'READ_CODEVALUE', 'CODEVALUE', 'READ', '0'),
-('configuration', 'CREATE_CODEVALUE', 'CODEVALUE', 'CREATE', '1'),
-('configuration', 'CREATE_CODEVALUE_CHECKER', 'CODEVALUE', 'CREATE', '0'),
-('configuration', 'UPDATE_CODEVALUE', 'CODEVALUE', 'UPDATE', '1'),
-('configuration', 'UPDATE_CODEVALUE_CHECKER', 'CODEVALUE', 'UPDATE', '0'),
-('configuration', 'DELETE_CODEVALUE', 'CODEVALUE', 'DELETE', '1'),
-('configuration', 'DELETE_CODEVALUE_CHECKER', 'CODEVALUE', 'DELETE', '0'),
-('configuration','READ_CURRENCY','CURRENCY','READ',0),
-('configuration','UPDATE_CURRENCY','CURRENCY','UPDATE',1),
-('configuration','UPDATE_CURRENCY_CHECKER','CURRENCY','UPDATE',0),
-('configuration', 'UPDATE_PERMISSION', 'PERMISSION', 'UPDATE', '1'),
-('configuration', 'UPDATE_PERMISSION_CHECKER', 'PERMISSION', 'UPDATE', '0'),
-('configuration', 'READ_DATATABLE', 'DATATABLE', 'READ', '0'),
-('configuration', 'REGISTER_DATATABLE', 'DATATABLE', 'REGISTER', '1'),
-('configuration', 'REGISTER_DATATABLE_CHECKER', 'DATATABLE', 'REGISTER', '0'),
-('configuration', 'DEREGISTER_DATATABLE', 'DATATABLE', 'DEREGISTER', '1'),
-('configuration', 'DEREGISTER_DATATABLE_CHECKER', 'DATATABLE', 'DEREGISTER', '0'),
-('configuration', 'READ_AUDIT', 'AUDIT', 'READ', '0'),
-('configuration', 'CREATE_CALENDAR', 'CALENDAR', 'CREATE', '0'),
-('configuration', 'READ_CALENDAR', 'CALENDAR', 'READ', '0'),
-('configuration', 'UPDATE_CALENDAR', 'CALENDAR', 'UPDATE', '0'),
-('configuration', 'DELETE_CALENDAR', 'CALENDAR', 'DELETE', '0'),
-('configuration', 'CREATE_CALENDAR_CHECKER', 'CALENDAR', 'CREATE', '0'),
-('configuration', 'UPDATE_CALENDAR_CHECKER', 'CALENDAR', 'UPDATE', '0'),
-('configuration', 'DELETE_CALENDAR_CHECKER', 'CALENDAR', 'DELETE', '0'),
-('organisation', 'READ_MAKERCHECKER', 'MAKERCHECKER', 'READ', '0'),
-('organisation', 'READ_CHARGE', 'CHARGE', 'READ', '0'),
-('organisation', 'CREATE_CHARGE', 'CHARGE', 'CREATE', '1'),
-('organisation', 'CREATE_CHARGE_CHECKER', 'CHARGE', 'CREATE', '0'),
-('organisation', 'UPDATE_CHARGE', 'CHARGE', 'UPDATE', '1'),
-('organisation', 'UPDATE_CHARGE_CHECKER', 'CHARGE', 'UPDATE', '0'),
-('organisation', 'DELETE_CHARGE', 'CHARGE', 'DELETE', '1'),
-('organisation', 'DELETE_CHARGE_CHECKER', 'CHARGE', 'DELETE', '0'),
-('organisation', 'READ_FUND', 'FUND', 'READ', '0'),
-('organisation', 'CREATE_FUND', 'FUND', 'CREATE', '1'),
-('organisation', 'CREATE_FUND_CHECKER', 'FUND', 'CREATE', '0'),
-('organisation', 'UPDATE_FUND', 'FUND', 'UPDATE', '1'),
-('organisation', 'UPDATE_FUND_CHECKER', 'FUND', 'UPDATE', '0'),
-('organisation', 'DELETE_FUND', 'FUND', 'DELETE', '1'),
-('organisation', 'DELETE_FUND_CHECKER', 'FUND', 'DELETE', '0'),
-('organisation', 'READ_LOANPRODUCT', 'LOANPRODUCT', 'READ', '0'),
-('organisation', 'CREATE_LOANPRODUCT', 'LOANPRODUCT', 'CREATE', '1'),
-('organisation', 'CREATE_LOANPRODUCT_CHECKER', 'LOANPRODUCT', 'CREATE', '0'),
-('organisation', 'UPDATE_LOANPRODUCT', 'LOANPRODUCT', 'UPDATE', '1'),
-('organisation', 'UPDATE_LOANPRODUCT_CHECKER', 'LOANPRODUCT', 'UPDATE', '0'),
-('organisation', 'DELETE_LOANPRODUCT', 'LOANPRODUCT', 'DELETE', '1'),
-('organisation', 'DELETE_LOANPRODUCT_CHECKER', 'LOANPRODUCT', 'DELETE', '0'),
-('organisation', 'READ_OFFICE', 'OFFICE', 'READ', '0'),
-('organisation', 'CREATE_OFFICE', 'OFFICE', 'CREATE', '1'),
-('organisation', 'CREATE_OFFICE_CHECKER', 'OFFICE', 'CREATE', '0'),
-('organisation', 'UPDATE_OFFICE', 'OFFICE', 'UPDATE', '1'),
-('organisation', 'UPDATE_OFFICE_CHECKER', 'OFFICE', 'UPDATE', '0'),
-('organisation', 'READ_OFFICETRANSACTION', 'OFFICETRANSACTION', 'READ', '0'),
-('organisation', 'DELETE_OFFICE_CHECKER', 'OFFICE', 'DELETE', '0'),
-('organisation', 'CREATE_OFFICETRANSACTION', 'OFFICETRANSACTION', 'CREATE', '1'),
-('organisation', 'CREATE_OFFICETRANSACTION_CHECKER', 'OFFICETRANSACTION', 'CREATE', '0'),
-('organisation', 'DELETE_OFFICETRANSACTION', 'OFFICETRANSACTION', 'DELETE', 1),
-('organisation', 'DELETE_OFFICETRANSACTION_CHECKER', 'OFFICETRANSACTION', 'DELETE', 0),
-('organisation', 'READ_STAFF', 'STAFF', 'READ', '0'),
-('organisation', 'CREATE_STAFF', 'STAFF', 'CREATE', '1'),
-('organisation', 'CREATE_STAFF_CHECKER', 'STAFF', 'CREATE', '0'),
-('organisation', 'UPDATE_STAFF', 'STAFF', 'UPDATE', '1'),
-('organisation', 'UPDATE_STAFF_CHECKER', 'STAFF', 'UPDATE', '0'),
-('organisation', 'DELETE_STAFF', 'STAFF', 'DELETE', '1'),
-('organisation', 'DELETE_STAFF_CHECKER', 'STAFF', 'DELETE', '0'),
-('organisation', 'READ_SAVINGSPRODUCT', 'SAVINGSPRODUCT', 'READ', '0'),
-('organisation', 'CREATE_SAVINGSPRODUCT', 'SAVINGSPRODUCT', 'CREATE', '1'),
-('organisation', 'CREATE_SAVINGSPRODUCT_CHECKER', 'SAVINGSPRODUCT', 'CREATE', '0'),
-('organisation', 'UPDATE_SAVINGSPRODUCT', 'SAVINGSPRODUCT', 'UPDATE', '1'),
-('organisation', 'UPDATE_SAVINGSPRODUCT_CHECKER', 'SAVINGSPRODUCT', 'UPDATE', '0'),
-('organisation', 'DELETE_SAVINGSPRODUCT', 'SAVINGSPRODUCT', 'DELETE', '1'),
-('organisation', 'DELETE_SAVINGSPRODUCT_CHECKER', 'SAVINGSPRODUCT', 'DELETE', '0'),
-('portfolio', 'READ_LOAN', 'LOAN', 'READ', '0'),
-('portfolio', 'CREATE_LOAN', 'LOAN', 'CREATE', '1'),
-('portfolio', 'CREATE_LOAN_CHECKER', 'LOAN', 'CREATE', '0'),
-('portfolio', 'UPDATE_LOAN', 'LOAN', 'UPDATE', '1'),
-('portfolio', 'UPDATE_LOAN_CHECKER', 'LOAN', 'UPDATE', '0'),
-('portfolio', 'DELETE_LOAN', 'LOAN', 'DELETE', '1'),
-('portfolio', 'DELETE_LOAN_CHECKER', 'LOAN', 'DELETE', '0'),
--- ('portfolio', 'CREATEHISTORIC_LOAN', 'LOAN', 'CREATEHISTORIC', '1'),
--- ('portfolio', 'CREATEHISTORIC_LOAN_CHECKER', 'LOAN', 'CREATEHISTORIC', '0'),
--- ('portfolio', 'UPDATEHISTORIC_LOAN', 'LOAN', 'UPDATEHISTORIC', '1'),
--- ('portfolio', 'UPDATEHISTORIC_LOAN_CHECKER', 'LOAN', 'UPDATEHISTORIC', '0'),
-('portfolio', 'READ_CLIENT', 'CLIENT', 'READ', '0'),
-('portfolio', 'CREATE_CLIENT', 'CLIENT', 'CREATE', '1'),
-('portfolio', 'CREATE_CLIENT_CHECKER', 'CLIENT', 'CREATE', '0'),
-('portfolio', 'UPDATE_CLIENT', 'CLIENT', 'UPDATE', '1'),
-('portfolio', 'UPDATE_CLIENT_CHECKER', 'CLIENT', 'UPDATE', '0'),
-('portfolio', 'DELETE_CLIENT', 'CLIENT', 'DELETE', '1'),
-('portfolio', 'DELETE_CLIENT_CHECKER', 'CLIENT', 'DELETE', '0'),
-('portfolio', 'READ_CLIENTIMAGE', 'CLIENTIMAGE', 'READ', '0'),
-('portfolio', 'CREATE_CLIENTIMAGE', 'CLIENTIMAGE', 'CREATE', '1'),
-('portfolio', 'CREATE_CLIENTIMAGE_CHECKER', 'CLIENTIMAGE', 'CREATE', '0'),
-('portfolio', 'DELETE_CLIENTIMAGE', 'CLIENTIMAGE', 'DELETE', '1'),
-('portfolio', 'DELETE_CLIENTIMAGE_CHECKER', 'CLIENTIMAGE', 'DELETE', '0'),
-('portfolio', 'READ_CLIENTNOTE', 'CLIENTNOTE', 'READ', '0'),
-('portfolio', 'CREATE_CLIENTNOTE', 'CLIENTNOTE', 'CREATE', '1'),
-('portfolio', 'CREATE_CLIENTNOTE_CHECKER', 'CLIENTNOTE', 'CREATE', '0'),
-('portfolio', 'UPDATE_CLIENTNOTE', 'CLIENTNOTE', 'UPDATE', '1'),
-('portfolio', 'UPDATE_CLIENTNOTE_CHECKER', 'CLIENTNOTE', 'UPDATE', '0'),
-('portfolio', 'DELETE_CLIENTNOTE', 'CLIENTNOTE', 'DELETE', '1'),
-('portfolio', 'DELETE_CLIENTNOTE_CHECKER', 'CLIENTNOTE', 'DELETE', '0'),
-('portfolio', 'READ_GROUPNOTE', 'GROUPNOTE', 'READ', '0'),
-('portfolio', 'CREATE_GROUPNOTE', 'GROUPNOTE', 'CREATE', '1'),
-('portfolio', 'UPDATE_GROUPNOTE', 'GROUPNOTE', 'UPDATE', '1'),
-('portfolio', 'DELETE_GROUPNOTE', 'GROUPNOTE', 'DELETE', '1'),
-('portfolio', 'CREATE_GROUPNOTE_CHECKER', 'GROUPNOTE', 'CREATE', '0'),
-('portfolio', 'UPDATE_GROUPNOTE_CHECKER', 'GROUPNOTE', 'UPDATE', '0'),
-('portfolio', 'DELETE_GROUPNOTE_CHECKER', 'GROUPNOTE', 'DELETE', '0'),
-('portfolio', 'READ_LOANNOTE', 'LOANNOTE', 'READ', '0'),
-('portfolio', 'CREATE_LOANNOTE', 'LOANNOTE', 'CREATE', '1'),
-('portfolio', 'UPDATE_LOANNOTE', 'LOANNOTE', 'UPDATE', '1'),
-('portfolio', 'DELETE_LOANNOTE', 'LOANNOTE', 'DELETE', '1'),
-('portfolio', 'CREATE_LOANNOTE_CHECKER', 'LOANNOTE', 'CREATE', '0'),
-('portfolio', 'UPDATE_LOANNOTE_CHECKER', 'LOANNOTE', 'UPDATE', '0'),
-('portfolio', 'DELETE_LOANNOTE_CHECKER', 'LOANNOTE', 'DELETE', '0'),
-('portfolio', 'READ_LOANTRANSACTIONNOTE', 'LOANTRANSACTIONNOTE', 'READ', '0'),
-('portfolio', 'CREATE_LOANTRANSACTIONNOTE', 'LOANTRANSACTIONNOTE', 'CREATE', '1'),
-('portfolio', 'UPDATE_LOANTRANSACTIONNOTE', 'LOANTRANSACTIONNOTE', 'UPDATE', '1'),
-('portfolio', 'DELETE_LOANTRANSACTIONNOTE', 'LOANTRANSACTIONNOTE', 'DELETE', '1'),
-('portfolio', 'CREATE_LOANTRANSACTIONNOTE_CHECKER', 'LOANTRANSACTIONNOTE', 'CREATE', '0'),
-('portfolio', 'UPDATE_LOANTRANSACTIONNOTE_CHECKER', 'LOANTRANSACTIONNOTE', 'UPDATE', '0'),
-('portfolio', 'DELETE_LOANTRANSACTIONNOTE_CHECKER', 'LOANTRANSACTIONNOTE', 'DELETE', '0'),
-('portfolio', 'READ_SAVINGNOTE', 'SAVINGNOTE', 'READ', '0'),
-('portfolio', 'CREATE_SAVINGNOTE', 'SAVINGNOTE', 'CREATE', '1'),
-('portfolio', 'UPDATE_SAVINGNOTE', 'SAVINGNOTE', 'UPDATE', '1'),
-('portfolio', 'DELETE_SAVINGNOTE', 'SAVINGNOTE', 'DELETE', '1'),
-('portfolio', 'CREATE_SAVINGNOTE_CHECKER', 'SAVINGNOTE', 'CREATE', '0'),
-('portfolio', 'UPDATE_SAVINGNOTE_CHECKER', 'SAVINGNOTE', 'UPDATE', '0'),
-('portfolio', 'DELETE_SAVINGNOTE_CHECKER', 'SAVINGNOTE', 'DELETE', '0'),
-('portfolio', 'READ_CLIENTIDENTIFIER', 'CLIENTIDENTIFIER', 'READ', '0'),
-('portfolio', 'CREATE_CLIENTIDENTIFIER', 'CLIENTIDENTIFIER', 'CREATE', '1'),
-('portfolio', 'CREATE_CLIENTIDENTIFIER_CHECKER', 'CLIENTIDENTIFIER', 'CREATE', '0'),
-('portfolio', 'UPDATE_CLIENTIDENTIFIER', 'CLIENTIDENTIFIER', 'UPDATE', '1'),
-('portfolio', 'UPDATE_CLIENTIDENTIFIER_CHECKER', 'CLIENTIDENTIFIER', 'UPDATE', '0'),
-('portfolio', 'DELETE_CLIENTIDENTIFIER', 'CLIENTIDENTIFIER', 'DELETE', '1'),
-('portfolio', 'DELETE_CLIENTIDENTIFIER_CHECKER', 'CLIENTIDENTIFIER', 'DELETE', '0'),
-('portfolio', 'READ_DOCUMENT', 'DOCUMENT', 'READ', '0'),
-('portfolio', 'CREATE_DOCUMENT', 'DOCUMENT', 'CREATE', '1'),
-('portfolio', 'CREATE_DOCUMENT_CHECKER', 'DOCUMENT', 'CREATE', '0'),
-('portfolio', 'UPDATE_DOCUMENT', 'DOCUMENT', 'UPDATE', '1'),
-('portfolio', 'UPDATE_DOCUMENT_CHECKER', 'DOCUMENT', 'UPDATE', '0'),
-('portfolio', 'DELETE_DOCUMENT', 'DOCUMENT', 'DELETE', '1'),
-('portfolio', 'DELETE_DOCUMENT_CHECKER', 'DOCUMENT', 'DELETE', '0'),
-('portfolio', 'READ_GROUP', 'GROUP', 'READ', '0'),
-('portfolio', 'CREATE_GROUP', 'GROUP', 'CREATE', '1'),
-('portfolio', 'CREATE_GROUP_CHECKER', 'GROUP', 'CREATE', '0'),
-('portfolio', 'UPDATE_GROUP', 'GROUP', 'UPDATE', '1'),
-('portfolio', 'UPDATE_GROUP_CHECKER', 'GROUP', 'UPDATE', '0'),
-('portfolio', 'DELETE_GROUP', 'GROUP', 'DELETE', '1'),
-('portfolio', 'DELETE_GROUP_CHECKER', 'GROUP', 'DELETE', '0'),
-('portfolio', 'UNASSIGNSTAFF_GROUP', 'GROUP', 'UNASSIGNSTAFF', 1),
-('portfolio', 'UNASSIGNSTAFF_GROUP_CHECKER', 'GROUP', 'UNASSIGNSTAFF', 0),
-('portfolio', 'CREATE_LOANCHARGE', 'LOANCHARGE', 'CREATE', '1'),
-('portfolio', 'CREATE_LOANCHARGE_CHECKER', 'LOANCHARGE', 'CREATE', '0'),
-('portfolio', 'UPDATE_LOANCHARGE', 'LOANCHARGE', 'UPDATE', '1'),
-('portfolio', 'UPDATE_LOANCHARGE_CHECKER', 'LOANCHARGE', 'UPDATE', '0'),
-('portfolio', 'DELETE_LOANCHARGE', 'LOANCHARGE', 'DELETE', '1'),
-('portfolio', 'DELETE_LOANCHARGE_CHECKER', 'LOANCHARGE', 'DELETE', '0'),
-('portfolio', 'WAIVE_LOANCHARGE', 'LOANCHARGE', 'WAIVE', '1'),
-('portfolio', 'WAIVE_LOANCHARGE_CHECKER', 'LOANCHARGE', 'WAIVE', '0'),
-('portfolio', 'READ_SAVINGSACCOUNT', 'SAVINGSACCOUNT', 'READ', '0'),
-('portfolio', 'CREATE_SAVINGSACCOUNT', 'SAVINGSACCOUNT', 'CREATE', '1'),
-('portfolio', 'CREATE_SAVINGSACCOUNT_CHECKER', 'SAVINGSACCOUNT', 'CREATE', '0'),
-('portfolio', 'UPDATE_SAVINGSACCOUNT', 'SAVINGSACCOUNT', 'UPDATE', '1'),
-('portfolio', 'UPDATE_SAVINGSACCOUNT_CHECKER', 'SAVINGSACCOUNT', 'UPDATE', '0'),
-('portfolio', 'DELETE_SAVINGSACCOUNT', 'SAVINGSACCOUNT', 'DELETE', '1'),
-('portfolio', 'DELETE_SAVINGSACCOUNT_CHECKER', 'SAVINGSACCOUNT', 'DELETE', '0'),
-('portfolio', 'READ_GUARANTOR', 'GUARANTOR', 'READ', 0),
-('portfolio', 'CREATE_GUARANTOR', 'GUARANTOR', 'CREATE', 1),
-('portfolio', 'CREATE_GUARANTOR_CHECKER', 'GUARANTOR', 'CREATE', 0),
-('portfolio', 'UPDATE_GUARANTOR', 'GUARANTOR', 'UPDATE', 1),
-('portfolio', 'UPDATE_GUARANTOR_CHECKER', 'GUARANTOR', 'UPDATE', 0),
-('portfolio', 'DELETE_GUARANTOR', 'GUARANTOR', 'DELETE', 1),
-('portfolio', 'DELETE_GUARANTOR_CHECKER', 'GUARANTOR', 'DELETE', 0),
-('portfolio', 'READ_COLLATERAL', 'COLLATERAL', 'READ', '0'),
-('portfolio', 'CREATE_COLLATERAL', 'COLLATERAL', 'CREATE', '1'),
-('portfolio', 'UPDATE_COLLATERAL', 'COLLATERAL', 'UPDATE', '1'),
-('portfolio', 'DELETE_COLLATERAL', 'COLLATERAL', 'DELETE', '1'),
-('portfolio', 'CREATE_COLLATERAL_CHECKER', 'COLLATERAL', 'CREATE', '0'),
-('portfolio', 'UPDATE_COLLATERAL_CHECKER', 'COLLATERAL', 'UPDATE', '0'),
-('portfolio', 'DELETE_COLLATERAL_CHECKER', 'COLLATERAL', 'DELETE', '0'),
-('transaction_loan', 'APPROVE_LOAN', 'LOAN', 'APPROVE', '1'),
-('transaction_loan', 'APPROVEINPAST_LOAN', 'LOAN', 'APPROVEINPAST', '1'),
-('transaction_loan', 'REJECT_LOAN', 'LOAN', 'REJECT', '1'),
-('transaction_loan', 'REJECTINPAST_LOAN', 'LOAN', 'REJECTINPAST', '1'),
-('transaction_loan', 'WITHDRAW_LOAN', 'LOAN', 'WITHDRAW', '1'),
-('transaction_loan', 'WITHDRAWINPAST_LOAN', 'LOAN', 'WITHDRAWINPAST', '1'),
-('transaction_loan', 'APPROVALUNDO_LOAN', 'LOAN', 'APPROVALUNDO', '1'),
-('transaction_loan', 'DISBURSE_LOAN', 'LOAN', 'DISBURSE', '1'),
-('transaction_loan', 'DISBURSEINPAST_LOAN', 'LOAN', 'DISBURSEINPAST', '1'),
-('transaction_loan', 'DISBURSALUNDO_LOAN', 'LOAN', 'DISBURSALUNDO', '1'),
-('transaction_loan', 'REPAYMENT_LOAN', 'LOAN', 'REPAYMENT', '1'),
-('transaction_loan', 'REPAYMENTINPAST_LOAN', 'LOAN', 'REPAYMENTINPAST', '1'),
-('transaction_loan', 'ADJUST_LOAN', 'LOAN', 'ADJUST', '1'),
-('transaction_loan', 'WAIVEINTERESTPORTION_LOAN', 'LOAN', 'WAIVEINTERESTPORTION', '1'),
-('transaction_loan', 'WRITEOFF_LOAN', 'LOAN', 'WRITEOFF', '1'),
-('transaction_loan', 'CLOSE_LOAN', 'LOAN', 'CLOSE', '1'),
-('transaction_loan', 'CLOSEASRESCHEDULED_LOAN', 'LOAN', 'CLOSEASRESCHEDULED', '1'),
-('transaction_loan', 'UPDATELOANOFFICER_LOAN', 'LOAN', 'UPDATELOANOFFICER', 1),
-('transaction_loan', 'UPDATELOANOFFICER_LOAN_CHECKER', 'LOAN', 'UPDATELOANOFFICER', 0),
-('transaction_loan', 'REMOVELOANOFFICER_LOAN', 'LOAN', 'REMOVELOANOFFICER', 1),
-('transaction_loan', 'REMOVELOANOFFICER_LOAN_CHECKER', 'LOAN', 'REMOVELOANOFFICER', 0),
-('transaction_loan', 'BULKREASSIGN_LOAN', 'LOAN', 'BULKREASSIGN', '1'),
-('transaction_loan', 'BULKREASSIGN_LOAN_CHECKER', 'LOAN', 'BULKREASSIGN', '0'),
-('transaction_loan', 'APPROVE_LOAN_CHECKER', 'LOAN', 'APPROVE', '0'),
-('transaction_loan', 'APPROVEINPAST_LOAN_CHECKER', 'LOAN', 'APPROVEINPAST', '0'),
-('transaction_loan', 'REJECT_LOAN_CHECKER', 'LOAN', 'REJECT', '0'),
-('transaction_loan', 'REJECTINPAST_LOAN_CHECKER', 'LOAN', 'REJECTINPAST', '0'),
-('transaction_loan', 'WITHDRAW_LOAN_CHECKER', 'LOAN', 'WITHDRAW', '0'),
-('transaction_loan', 'WITHDRAWINPAST_LOAN_CHECKER', 'LOAN', 'WITHDRAWINPAST', '0'),
-('transaction_loan', 'APPROVALUNDO_LOAN_CHECKER', 'LOAN', 'APPROVALUNDO', '0'),
-('transaction_loan', 'DISBURSE_LOAN_CHECKER', 'LOAN', 'DISBURSE', '0'),
-('transaction_loan', 'DISBURSEINPAST_LOAN_CHECKER', 'LOAN', 'DISBURSEINPAST', '0'),
-('transaction_loan', 'DISBURSALUNDO_LOAN_CHECKER', 'LOAN', 'DISBURSALUNDO', '0'),
-('transaction_loan', 'REPAYMENT_LOAN_CHECKER', 'LOAN', 'REPAYMENT', '0'),
-('transaction_loan', 'REPAYMENTINPAST_LOAN_CHECKER', 'LOAN', 'REPAYMENTINPAST', '0'),
-('transaction_loan', 'ADJUST_LOAN_CHECKER', 'LOAN', 'ADJUST', '0'),
-('transaction_loan', 'WAIVEINTERESTPORTION_LOAN_CHECKER', 'LOAN', 'WAIVEINTERESTPORTION', '0'),
-('transaction_loan', 'WRITEOFF_LOAN_CHECKER', 'LOAN', 'WRITEOFF', '0'),
-('transaction_loan', 'CLOSE_LOAN_CHECKER', 'LOAN', 'CLOSE', '0'),
-('transaction_loan', 'CLOSEASRESCHEDULED_LOAN_CHECKER', 'LOAN', 'CLOSEASRESCHEDULED', '0'),
-('transaction_savings', 'DEPOSIT_SAVINGSACCOUNT', 'SAVINGSACCOUNT', 'DEPOSIT', '1'),
-('transaction_savings', 'DEPOSIT_SAVINGSACCOUNT_CHECKER', 'SAVINGSACCOUNT', 'DEPOSIT', '0'),
-('transaction_savings', 'WITHDRAWAL_SAVINGSACCOUNT', 'SAVINGSACCOUNT', 'WITHDRAWAL', '1'),
-('transaction_savings', 'WITHDRAWAL_SAVINGSACCOUNT_CHECKER', 'SAVINGSACCOUNT', 'WITHDRAWAL', '0'),
-('transaction_savings', 'ACTIVATE_SAVINGSACCOUNT', 'SAVINGSACCOUNT', 'ACTIVATE', '1'),
-('transaction_savings', 'ACTIVATE_SAVINGSACCOUNT_CHECKER', 'SAVINGSACCOUNT', 'ACTIVATE', '0'),
-('transaction_savings', 'CALCULATEINTEREST_SAVINGSACCOUNT', 'SAVINGSACCOUNT', 'CALCULATEINTEREST', '1'),
-('transaction_savings', 'CALCULATEINTEREST_SAVINGSACCOUNT_CHECKER', 'SAVINGSACCOUNT', 'CALCULATEINTEREST', '0');
-
--- == accounting related permissions
-INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES 
-('accounting', 'CREATE_GLACCOUNT', 'GLACCOUNT', 'CREATE', 1),
-('accounting', 'UPDATE_GLACCOUNT', 'GLACCOUNT', 'UPDATE', 1),
-('accounting', 'DELETE_GLACCOUNT', 'GLACCOUNT', 'DELETE', 1),
-('accounting', 'CREATE_GLCLOSURE', 'GLCLOSURE', 'CREATE', 1),
-('accounting', 'UPDATE_GLCLOSURE', 'GLCLOSURE', 'UPDATE', 1),
-('accounting', 'DELETE_GLCLOSURE', 'GLCLOSURE', 'DELETE', 1), 
-('accounting', 'CREATE_JOURNALENTRY', 'JOURNALENTRY', 'CREATE', 1),
-('accounting', 'REVERSE_JOURNALENTRY', 'JOURNALENTRY', 'REVERSE', 1);
-
-
-INSERT INTO `m_role` (`id`, `name`, `description`) 
-VALUES 
-(1,'Super user','This role provides all application permissions.');
-
-/* role 1 is super user, give it ALL_FUNCTIONS */
-INSERT INTO m_role_permission(role_id, permission_id)
-select 1, id
-from m_permission
-where code = 'ALL_FUNCTIONS';
-
-INSERT INTO `m_appuser` (`id`, `office_id`, `username`, `firstname`, `lastname`, `password`, `email`, 
-`firsttime_login_remaining`, `nonexpired`, `nonlocked`, `nonexpired_credentials`, `enabled`) 
-VALUES 
-(1,1,'mifos','App','Administrator','5787039480429368bf94732aacc771cd0a3ea02bcf504ffe1185ab94213bc63a','demomfi@mifos.org','\0','','','','');
-
-
-INSERT INTO `m_appuser_role` (`appuser_id`, `role_id`) VALUES (1,1);
-
-
--- Add in permissions for any special datatables added in base reference data
--- This needs to always happen at end of the script
-
-/* add a create, read, update and delete permission for each registered datatable */
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('CREATE_', r.registered_table_name), r.registered_table_name, 'CREATE'
-from x_registered_table r;
-
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('READ_', r.registered_table_name), r.registered_table_name, 'READ'
-from x_registered_table r;
-
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('UPDATE_', r.registered_table_name), r.registered_table_name, 'UPDATE'
-from x_registered_table r;
-
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('DELETE_', r.registered_table_name), r.registered_table_name, 'DELETE'
-from x_registered_table r;
-
-
-/* regardless of inserted permission settings above, no permissions (transactions) are preselected as being part of the maker-checker process
-so, just set the flag to false... the end-user can decide which permissions should be maker-checkerable
-*/
-update m_permission set can_maker_checker = false;
\ No newline at end of file


[51/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
deleted initial code


Project: http://git-wip-us.apache.org/repos/asf/incubator-fineract/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-fineract/commit/66cee785
Tree: http://git-wip-us.apache.org/repos/asf/incubator-fineract/tree/66cee785
Diff: http://git-wip-us.apache.org/repos/asf/incubator-fineract/diff/66cee785

Branch: refs/heads/master
Commit: 66cee7856b5db8c027598e81ec190ef4b5bedf6a
Parents: 4b1ec9e
Author: mage <ma...@apache.org>
Authored: Mon Feb 1 10:23:53 2016 +0100
Committer: mage <ma...@apache.org>
Committed: Mon Feb 1 10:23:53 2016 +0100

----------------------------------------------------------------------
 LICENSE.md                                      |    16 -
 README.md                                       |    72 -
 api-docs/apiLive.htm                            | 42924 -----------------
 api-docs/apidocs.css                            |   748 -
 api-docs/jquery-1.7.min.js                      |     4 -
 build-cloudbees.sh                              |     8 -
 build.sh                                        |    19 -
 config/fineractdev-eclipse-preferences.epf      |   110 -
 docs/system-architecture/.gitattributes         |     1 -
 docs/system-architecture/.gitignore             |     2 -
 docs/system-architecture/.htaccess              |   544 -
 docs/system-architecture/404.html               |   157 -
 docs/system-architecture/CHANGELOG.md           |   122 -
 docs/system-architecture/CONTRIBUTING.md        |   118 -
 .../apple-touch-icon-114x114-precomposed.png    |   Bin 1189 -> 0 bytes
 .../apple-touch-icon-144x144-precomposed.png    |   Bin 1475 -> 0 bytes
 .../apple-touch-icon-57x57-precomposed.png      |   Bin 730 -> 0 bytes
 .../apple-touch-icon-72x72-precomposed.png      |   Bin 854 -> 0 bytes
 .../apple-touch-icon-precomposed.png            |   Bin 730 -> 0 bytes
 docs/system-architecture/apple-touch-icon.png   |   Bin 730 -> 0 bytes
 docs/system-architecture/crossdomain.xml        |    15 -
 .../css/bootstrap-3.0.0/bootstrap-theme.css     |   384 -
 .../css/bootstrap-3.0.0/bootstrap-theme.min.css |     1 -
 .../css/bootstrap-3.0.0/bootstrap.css           |  6805 ---
 .../css/bootstrap-3.0.0/bootstrap.min.css       |     9 -
 .../css/fonts/glyphicons-halflings-regular.eot  |   Bin 14079 -> 0 bytes
 .../css/fonts/glyphicons-halflings-regular.svg  |   228 -
 .../css/fonts/glyphicons-halflings-regular.ttf  |   Bin 29512 -> 0 bytes
 .../css/fonts/glyphicons-halflings-regular.woff |   Bin 16448 -> 0 bytes
 docs/system-architecture/css/main.css           |   300 -
 docs/system-architecture/css/normalize.css      |   533 -
 docs/system-architecture/css/toc-0.1.2.zip      |   Bin 86465 -> 0 bytes
 .../css/toc-0.1.2/.gitignore                    |     4 -
 .../css/toc-0.1.2/.gitmodules                   |     0
 .../css/toc-0.1.2/Gruntfile.js                  |   100 -
 .../css/toc-0.1.2/History.md                    |    46 -
 docs/system-architecture/css/toc-0.1.2/LICENSE  |    22 -
 .../system-architecture/css/toc-0.1.2/README.md |     5 -
 .../css/toc-0.1.2/component.json                |    14 -
 .../css/toc-0.1.2/dist/jquery.toc.js            |   107 -
 .../css/toc-0.1.2/dist/jquery.toc.min.js        |     8 -
 .../css/toc-0.1.2/docs/index.md                 |   101 -
 .../css/toc-0.1.2/docs/jquery-deps.md           |    10 -
 .../css/toc-0.1.2/example/index.html            |    69 -
 .../css/toc-0.1.2/example/jquery.js             |  9266 ----
 .../css/toc-0.1.2/example/live.js               |   233 -
 .../css/toc-0.1.2/lib/copyright.js              |     7 -
 .../css/toc-0.1.2/lib/toc.js                    |   100 -
 .../css/toc-0.1.2/package.json                  |    17 -
 .../css/toc-0.1.2/test/index.html               |    25 -
 .../css/toc-0.1.2/test/toc.test.js              |     4 -
 .../diagrams/command-query.png                  |   Bin 42505 -> 0 bytes
 .../diagrams/command-query.xml                  |     1 -
 .../diagrams/platform-categories.png            |   Bin 14884 -> 0 bytes
 .../diagrams/platform-categories.xml            |     1 -
 .../diagrams/platform-systemview.png            |   Bin 43613 -> 0 bytes
 .../diagrams/platform-systemview.xml            |     1 -
 docs/system-architecture/favicon.ico            |   Bin 766 -> 0 bytes
 docs/system-architecture/humans.txt             |    15 -
 docs/system-architecture/img/mifos-icon.png     |   Bin 6363 -> 0 bytes
 docs/system-architecture/index.html             |   587 -
 docs/system-architecture/js/plugins.js          |    23 -
 .../bootstrap-3.0.0/assets/application.js       |    83 -
 .../vendor/bootstrap-3.0.0/assets/customizer.js |   290 -
 .../vendor/bootstrap-3.0.0/assets/filesaver.js  |   169 -
 .../js/vendor/bootstrap-3.0.0/assets/holder.js  |   419 -
 .../vendor/bootstrap-3.0.0/assets/html5shiv.js  |     8 -
 .../js/vendor/bootstrap-3.0.0/assets/jquery.js  |     6 -
 .../vendor/bootstrap-3.0.0/assets/json2.js.htm  |  1171 -
 .../js/vendor/bootstrap-3.0.0/assets/jszip.js   |  1425 -
 .../js/vendor/bootstrap-3.0.0/assets/less.js    |     9 -
 .../vendor/bootstrap-3.0.0/assets/raw-files.js  |     3 -
 .../bootstrap-3.0.0/assets/respond.min.js       |     6 -
 .../js/vendor/bootstrap-3.0.0/assets/uglify.js  |    14 -
 .../js/vendor/bootstrap-3.0.0/bootstrap.js      |  1999 -
 .../js/vendor/bootstrap-3.0.0/bootstrap.min.js  |     6 -
 .../js/vendor/jquery-1.9.1.min.js               |     5 -
 .../js/vendor/modernizr-2.6.2.min.js            |     4 -
 .../js/vendor/toc-0.1.2/jquery.toc.min.js       |     8 -
 docs/system-architecture/robots.txt             |     3 -
 ...mifospltaform-tenants-first-time-install.sql |   140 -
 .../0001-mifos-platform-shared-tenants.sql      |    89 -
 .../bare-bones-demo/README.md                   |    21 -
 .../bare-bones-demo/bk_bare_bones_demo.sql      |  1933 -
 .../bk_mifostenant_default.sql                  |  1935 -
 .../multi-tenant-demo-backups/ceda/README.md    |     9 -
 .../ceda/bk_ceda_trial.sql                      |  1909 -
 .../ceda/bk_core_with_custom_and_coa.sql        |  1909 -
 .../ceda/ceda-schema-customisations.sql         |   344 -
 .../ceda/ceda-user-office-product-setup.sql     |   104 -
 .../default-demo/README.md                      |    15 -
 .../default-demo/bk_mifostenant-default.sql     |  1935 -
 .../extra-datatables-and-code-values.sql        |   221 -
 .../gk-maarg/0001b-gk-datatables.sql            |    39 -
 .../latam-demo/README.md                        |    16 -
 .../latam-demo/bk_latam.sql                     |  1847 -
 .../latam-demo/datatables-on-latam-demo.sql     |    49 -
 .../0001a-mifosplatform-core-ddl-latest.sql     |   947 -
 .../0002-mifosx-base-reference-data-utf8.sql    |   321 -
 ...ifosx-permissions-and-authorisation-utf8.sql |   334 -
 .../0004-mifosx-core-reports-utf8.sql           |    12 -
 fineract-provider/.gitignore                    |    11 -
 fineract-provider/build.gradle                  |   346 -
 fineract-provider/dependencies.gradle           |    80 -
 fineract-provider/dev-dependencies.gradle       |    79 -
 fineract-provider/gradle.properties             |     3 -
 fineract-provider/gradlew                       |   167 -
 fineract-provider/gradlew.bat                   |    93 -
 .../properties/basicauth/application.properties |     2 -
 .../properties/oauth/application.properties     |     3 -
 .../AccountNumberPreferencesTest.java           |   486 -
 .../integrationtests/AccountTransferTest.java   |   492 -
 .../AccountingScenarioIntegrationTest.java      |  1078 -
 .../fineract/integrationtests/BatchApiTest.java |   425 -
 .../BatchRequestsIntegrationTest.java           |   140 -
 .../integrationtests/CenterIntegrationTest.java |   261 -
 .../fineract/integrationtests/ChargesTest.java  |   326 -
 .../ClientLoanIntegrationTest.java              |  5051 --
 .../ClientSavingsIntegrationTest.java           |   832 -
 .../integrationtests/ClientStatusChecker.java   |    61 -
 .../fineract/integrationtests/ClientTest.java   |   148 -
 .../ConcurrencyIntegrationTest.java             |   165 -
 .../integrationtests/CurrenciesTest.java        |    95 -
 .../CurrencyIntegrationTest.java                |    45 -
 .../DisbursalAndRepaymentScheduleTest.java      |   368 -
 .../ExternalServicesConfigurationTest.java      |   115 -
 .../FinancialActivityAccountsTest.java          |   164 -
 .../integrationtests/FixedDepositTest.java      |  2079 -
 ...leSavingsInterestPostingIntegrationTest.java |   154 -
 .../integrationtests/FundsIntegrationTest.java  |   347 -
 .../GlobalConfigurationTest.java                |   221 -
 .../GroupLoanIntegrationTest.java               |   134 -
 .../GroupSavingsIntegrationTest.java            |   553 -
 .../fineract/integrationtests/GroupTest.java    |   178 -
 .../integrationtests/HookIntegrationTest.java   |   115 -
 .../LoanApplicationApprovalTest.java            |   281 -
 .../LoanApplicationUndoLastTrancheTest.java     |   157 -
 .../LoanDisbursementDetailsIntegrationTest.java |   501 -
 ...anRepaymentRescheduleAtDisbursementTest.java |   241 -
 .../LoanRescheduleRequestTest.java              |   219 -
 ...WaiveInterestAndWriteOffIntegrationTest.java |   204 -
 ...LoanWithdrawnByApplicantIntegrationTest.java |    77 -
 ...ysBetweenDisbursalAndFirstRepaymentTest.java |   220 -
 .../integrationtests/OfficeIntegrationTest.java |    66 -
 .../PasswordPreferencesIntegrationTest.java     |    78 -
 .../PaymentTypeIntegrationTest.java             |    93 -
 .../integrationtests/RecurringDepositTest.java  |  2607 -
 .../fineract/integrationtests/RolesTest.java    |   167 -
 .../integrationtests/SchedulerJobsTest.java     |   123 -
 .../SchedulerJobsTestResults.java               |   915 -
 .../integrationtests/StaffImageApiTest.java     |   109 -
 .../fineract/integrationtests/StaffTest.java    |   239 -
 .../integrationtests/SurveyIntegrationTest.java |    50 -
 .../integrationtests/SystemCodeTest.java        |   283 -
 .../TemplateIntegrationTest.java                |    84 -
 .../integrationtests/WorkingDaysTest.java       |    70 -
 .../integrationtests/XBRLIntegrationTest.java   |    66 -
 .../integrationtests/common/BatchHelper.java    |   366 -
 .../integrationtests/common/CalendarHelper.java |    89 -
 .../integrationtests/common/CenterDomain.java   |   248 -
 .../integrationtests/common/CenterHelper.java   |   268 -
 .../common/ClientChargesTest.java               |   175 -
 .../integrationtests/common/ClientHelper.java   |   442 -
 .../common/CommonConstants.java                 |    31 -
 .../common/CurrenciesHelper.java                |    78 -
 .../integrationtests/common/CurrencyDomain.java |   140 -
 .../ExternalServicesConfigurationHelper.java    |    64 -
 .../common/GlobalConfigurationHelper.java       |   127 -
 .../integrationtests/common/GroupHelper.java    |   230 -
 .../integrationtests/common/HolidayHelper.java  |    92 -
 .../integrationtests/common/HookHelper.java     |   103 -
 .../integrationtests/common/ImageHelper.java    |    73 -
 .../common/LoanRescheduleRequestHelper.java     |    66 -
 .../integrationtests/common/OfficeDomain.java   |   153 -
 .../integrationtests/common/OfficeHelper.java   |    79 -
 .../common/PasswordPreferencesHelper.java       |    70 -
 .../common/PaymentTypeDomain.java               |    79 -
 .../common/PaymentTypeHelper.java               |    91 -
 .../common/ProvisioningIntegrationTest.java     |   241 -
 .../common/SchedulerJobHelper.java              |   148 -
 .../common/StandingInstructionsHelper.java      |   128 -
 .../integrationtests/common/SurveyHelper.java   |    74 -
 .../fineract/integrationtests/common/Utils.java |   168 -
 .../common/WorkingDaysHelper.java               |    83 -
 .../common/accounting/Account.java              |    53 -
 .../common/accounting/AccountHelper.java        |    83 -
 .../FinancialActivityAccountHelper.java         |    69 -
 ...FinancialActivityAccountsMappingBuilder.java |    33 -
 .../common/accounting/GLAccountBuilder.java     |   110 -
 .../common/accounting/JournalEntry.java         |    56 -
 .../common/accounting/JournalEntryHelper.java   |   111 -
 .../PeriodicAccrualAccountingHelper.java        |    53 -
 .../common/charges/ChargesHelper.java           |   412 -
 .../fixeddeposit/FixedDepositAccountHelper.java |   490 -
 .../FixedDepositAccountStatusChecker.java       |    94 -
 .../fixeddeposit/FixedDepositProductHelper.java |   254 -
 .../common/funds/FundsHelper.java               |   111 -
 .../common/funds/FundsResourceHandler.java      |    72 -
 .../loans/LoanApplicationTestBuilder.java       |   330 -
 .../loans/LoanDisbursementTestBuilder.java      |   108 -
 .../common/loans/LoanProductTestBuilder.java    |   493 -
 .../loans/LoanRescheduleRequestTestBuilder.java |   155 -
 .../common/loans/LoanStatusChecker.java         |    72 -
 .../common/loans/LoanTransactionHelper.java     |   648 -
 .../common/organisation/Currency.java           |    48 -
 .../common/organisation/CurrencyHelper.java     |    99 -
 .../common/organisation/StaffHelper.java        |   125 -
 .../common/provisioning/ProvisioningHelper.java |   104 -
 .../ProvisioningTransactionHelper.java          |    92 -
 .../RecurringDepositAccountHelper.java          |   556 -
 .../RecurringDepositAccountStatusChecker.java   |    96 -
 .../RecurringDepositProductHelper.java          |   259 -
 .../common/savings/AccountTransferHelper.java   |    98 -
 .../common/savings/SavingsAccountHelper.java    |   485 -
 .../savings/SavingsApplicationTestBuilder.java  |    52 -
 .../common/savings/SavingsProductHelper.java    |   253 -
 .../common/savings/SavingsStatusChecker.java    |    86 -
 .../system/AccountNumberPreferencesHelper.java  |   226 -
 .../AccountNumberPreferencesTestBuilder.java    |    91 -
 .../common/system/CodeHelper.java               |   253 -
 .../common/xbrl/XBRLIntegrationTestHelper.java  |    54 -
 .../loanaccount/guarantor/GuarantorHelper.java  |    72 -
 .../loanaccount/guarantor/GuarantorTest.java    |   694 -
 .../guarantor/GuarantorTestBuilder.java         |    87 -
 .../useradministration/roles/RolesHelper.java   |    70 -
 .../useradministration/users/UserHelper.java    |    53 -
 ...iableInstallmentsDecliningBalanceHelper.java |   311 -
 .../VariableInstallmentsFlatHelper.java         |   230 -
 .../VariableInstallmentsIntegrationTest.java    |   440 -
 .../VariableIntallmentsTransactionHelper.java   |    59 -
 .../src/main/dist/How to run Fineract.txt       |    30 -
 fineract-provider/src/main/dist/runfineract.bat |    10 -
 fineract-provider/src/main/dist/runfineract.sh  |    15 -
 .../org/apache/fineract/ServerApplication.java  |    38 -
 .../ServerWithMariaDB4jApplication.java         |    87 -
 .../api/AccrualAccountingApiResource.java       |    64 -
 .../accrual/api/AccrualAccountingConstants.java |    36 -
 .../ExecutePeriodicAccrualCommandHandler.java   |    46 -
 .../AccrualAccountingDataValidator.java         |    80 -
 .../AccrualAccountingWritePlatformService.java  |    28 -
 ...crualAccountingWritePlatformServiceImpl.java |    67 -
 .../closure/api/GLClosureJsonInputParams.java   |    55 -
 .../closure/api/GLClosuresApiResource.java      |   151 -
 .../closure/command/GLClosureCommand.java       |    77 -
 .../accounting/closure/data/GLClosureData.java  |    88 -
 .../accounting/closure/domain/GLClosure.java    |   105 -
 .../closure/domain/GLClosureRepository.java     |    30 -
 .../exception/GLClosureDuplicateException.java  |    35 -
 .../GLClosureInvalidDeleteException.java        |    34 -
 .../exception/GLClosureInvalidException.java    |    52 -
 .../exception/GLClosureNotFoundException.java   |    32 -
 .../handler/CreateGLClosureCommandHandler.java  |    47 -
 .../handler/DeleteGLClosureCommandHandler.java  |    46 -
 .../handler/UpdateGLClosureCommandHandler.java  |    46 -
 ...GLClosureCommandFromApiJsonDeserializer.java |    72 -
 .../service/GLClosureReadPlatformService.java   |    31 -
 .../GLClosureReadPlatformServiceImpl.java       |   114 -
 .../service/GLClosureWritePlatformService.java  |    32 -
 ...reWritePlatformServiceJpaRepositoryImpl.java |   156 -
 .../accounting/common/AccountingConstants.java  |   314 -
 .../AccountingDropdownReadPlatformService.java  |    45 -
 ...countingDropdownReadPlatformServiceImpl.java |   150 -
 .../common/AccountingEnumerations.java          |   113 -
 .../accounting/common/AccountingRuleType.java   |    63 -
 .../FinancialActivityAccountsApiResource.java   |   160 -
 .../api/FinancialActivityAccountsConstants.java |    31 -
 ...inancialActivityAccountsJsonInputParams.java |    55 -
 .../data/FinancialActivityAccountData.java      |    86 -
 .../data/FinancialActivityData.java             |    48 -
 .../domain/FinancialActivityAccount.java        |    70 -
 .../FinancialActivityAccountRepository.java     |    32 -
 ...nancialActivityAccountRepositoryWrapper.java |    70 -
 ...eFinancialActivityAccountFoundException.java |    39 -
 ...inancialActivityAccountInvalidException.java |    44 -
 ...nancialActivityAccountNotFoundException.java |    38 -
 .../CreateFinancialActivityAccountHandler.java  |    47 -
 ...eFinancialActivityAccountCommandHandler.java |    46 -
 ...eFinancialActivityAccountCommandHandler.java |    46 -
 .../FinancialActivityAccountDataValidator.java  |   120 -
 ...ncialActivityAccountReadPlatformService.java |    35 -
 ...lActivityAccountReadPlatformServiceImpl.java |   122 -
 ...cialActivityAccountWritePlatformService.java |    32 -
 ...ActivityAccountWritePlatformServiceImpl.java |   176 -
 .../glaccount/api/GLAccountJsonInputParams.java |    56 -
 .../glaccount/api/GLAccountsApiResource.java    |   222 -
 .../glaccount/command/GLAccountCommand.java     |   131 -
 .../glaccount/data/GLAccountData.java           |   198 -
 .../glaccount/data/GLAccountDataForLookup.java  |    39 -
 .../accounting/glaccount/domain/GLAccount.java  |   250 -
 .../glaccount/domain/GLAccountRepository.java   |    26 -
 .../domain/GLAccountRepositoryWrapper.java      |    46 -
 .../glaccount/domain/GLAccountType.java         |   102 -
 .../glaccount/domain/GLAccountUsage.java        |    82 -
 .../exception/GLAccountDuplicateException.java  |    33 -
 ...GLAccountInvalidClassificationException.java |    32 -
 .../GLAccountInvalidDeleteException.java        |    51 -
 .../GLAccountInvalidParentException.java        |    33 -
 .../GLAccountInvalidUpdateException.java        |    47 -
 .../GLAccountInvalidUsageException.java         |    32 -
 .../exception/GLAccountNotFoundException.java   |    31 -
 .../InvalidParentGLAccountHeadException.java    |    30 -
 .../handler/CreateGLAccountCommandHandler.java  |    47 -
 .../handler/DeleteGLAccountCommandHandler.java  |    46 -
 .../handler/UpdateGLAccountCommandHandler.java  |    46 -
 ...GLAccountCommandFromApiJsonDeserializer.java |    77 -
 .../service/GLAccountReadPlatformService.java   |    44 -
 .../GLAccountReadPlatformServiceImpl.java       |   281 -
 .../service/GLAccountWritePlatformService.java  |    32 -
 ...ntWritePlatformServiceJpaRepositoryImpl.java |   240 -
 .../accounting/journalentry/api/DateParam.java  |    47 -
 .../api/JournalEntriesApiResource.java          |   211 -
 .../api/JournalEntryJsonInputParams.java        |    58 -
 .../command/JournalEntryCommand.java            |   172 -
 .../SingleDebitOrCreditEntryCommand.java        |    71 -
 .../journalentry/data/ChargePaymentDTO.java     |    47 -
 .../data/ClientChargePaymentDTO.java            |    60 -
 .../journalentry/data/ClientTransactionDTO.java |   113 -
 .../JournalEntryAssociationParametersData.java  |    43 -
 .../journalentry/data/JournalEntryData.java     |   175 -
 .../data/JournalEntryDataValidator.java         |    69 -
 .../data/JournalEntryIdentifier.java            |    61 -
 .../accounting/journalentry/data/LoanDTO.java   |   104 -
 .../journalentry/data/LoanTransactionDTO.java   |   135 -
 .../data/OfficeOpeningBalancesData.java         |    69 -
 .../journalentry/data/SavingsDTO.java           |   101 -
 .../data/SavingsTransactionDTO.java             |   112 -
 .../data/TransactionDetailData.java             |    53 -
 .../data/TransactionTypeEnumData.java           |    41 -
 .../journalentry/domain/JournalEntry.java       |   216 -
 .../domain/JournalEntryRepository.java          |    42 -
 .../domain/JournalEntryRepositoryCustom.java    |    26 -
 .../domain/JournalEntryRepositoryImpl.java      |    42 -
 .../journalentry/domain/JournalEntryType.java   |    69 -
 .../JournalEntriesNotFoundException.java        |    36 -
 .../exception/JournalEntryInvalidException.java |    79 -
 .../JournalEntryNotFoundException.java          |    36 -
 .../CreateJournalEntryCommandHandler.java       |    47 -
 .../DefineOpeningBalanceCommandHandler.java     |    45 -
 .../ReverseJournalEntryCommandHandler.java      |    46 -
 .../UpdateRunningBalanceCommandHandler.java     |    45 -
 ...rnalEntryCommandFromApiJsonDeserializer.java |   131 -
 ...ccountingProcessorForClientTransactions.java |    26 -
 .../service/AccountingProcessorForLoan.java     |    27 -
 .../AccountingProcessorForLoanFactory.java      |    54 -
 .../service/AccountingProcessorForSavings.java  |    27 -
 .../AccountingProcessorForSavingsFactory.java   |    53 -
 .../service/AccountingProcessorHelper.java      |   927 -
 .../AccrualBasedAccountingProcessorForLoan.java |   441 -
 ...ccountingProcessorForClientTransactions.java |    88 -
 .../CashBasedAccountingProcessorForLoan.java    |   388 -
 .../CashBasedAccountingProcessorForSavings.java |   244 -
 .../JournalEntryReadPlatformService.java        |    39 -
 .../JournalEntryReadPlatformServiceImpl.java    |   533 -
 ...JournalEntryRunningBalanceUpdateService.java |    30 -
 ...nalEntryRunningBalanceUpdateServiceImpl.java |   302 -
 .../JournalEntryWritePlatformService.java       |    45 -
 ...ryWritePlatformServiceJpaRepositoryImpl.java |   709 -
 .../data/ChargeToGLAccountMapper.java           |    36 -
 .../data/PaymentTypeToGLAccountMapper.java      |    36 -
 .../domain/PortfolioProductType.java            |    73 -
 .../domain/ProductToGLAccountMapping.java       |   141 -
 .../ProductToGLAccountMappingRepository.java    |    57 -
 ...oductToGLAccountMappingInvalidException.java |    35 -
 ...ductToGLAccountMappingNotFoundException.java |    34 -
 ...GLAccountMappingFromApiJsonDeserializer.java |   243 -
 .../LoanProductToGLAccountMappingHelper.java    |   306 -
 .../ProductToGLAccountMappingHelper.java        |   432 -
 ...ctToGLAccountMappingReadPlatformService.java |    45 -
 ...GLAccountMappingReadPlatformServiceImpl.java |   329 -
 ...tToGLAccountMappingWritePlatformService.java |    38 -
 ...LAccountMappingWritePlatformServiceImpl.java |   296 -
 .../SavingsProductToGLAccountMappingHelper.java |   238 -
 .../api/ProvisioningEntriesApiResource.java     |   145 -
 .../ProvisioningEntriesApiConstants.java        |    42 -
 .../data/LoanProductProvisioningEntryData.java  |   154 -
 .../data/ProvisioningEntryData.java             |    74 -
 .../domain/LoanProductProvisioningEntry.java    |   128 -
 .../provisioning/domain/ProvisioningEntry.java  |    96 -
 .../domain/ProvisioningEntryRepository.java     |    35 -
 .../NoProvisioningCriteriaDefinitionFound.java  |    29 -
 ...rovisioningEntryAlreadyCreatedException.java |    31 -
 .../ProvisioningEntryNotfoundException.java     |    30 -
 ...gJournalEntriesCannotbeCreatedException.java |    32 -
 ...rovisioningEntriesRequestCommandHandler.java |    47 -
 ...ningJournalEntriesRequestCommandHandler.java |    47 -
 ...eProvisioningEntryRequestCommandHandler.java |    49 -
 ...ioningEntriesDefinitionJsonDeserializer.java |    76 -
 .../ProvisioningEntriesReadPlatformService.java |    45 -
 ...visioningEntriesReadPlatformServiceImpl.java |   355 -
 ...ProvisioningEntriesWritePlatformService.java |    34 -
 ...esWritePlatformServiceJpaRepositoryImpl.java |   247 -
 .../rule/api/AccountingRuleApiResource.java     |   260 -
 .../rule/api/AccountingRuleJsonInputParams.java |    57 -
 .../rule/data/AccountingRuleData.java           |   132 -
 .../rule/data/AccountingTagRuleData.java        |    42 -
 .../accounting/rule/domain/AccountingRule.java  |   267 -
 .../rule/domain/AccountingRuleRepository.java   |    30 -
 .../domain/AccountingRuleRepositoryWrapper.java |    46 -
 .../rule/domain/AccountingTagRule.java          |    80 -
 .../exception/AccountingRuleDataException.java  |    30 -
 .../AccountingRuleDuplicateException.java       |    37 -
 .../AccountingRuleInvalidDeleteException.java   |    34 -
 .../AccountingRuleInvalidException.java         |    52 -
 .../AccountingRuleNotFoundException.java        |    32 -
 .../CreateAccountingRuleCommandHandler.java     |    46 -
 .../DeleteAccountingRuleCommandHandler.java     |    46 -
 .../UpdateAccountingRuleCommandHandler.java     |    46 -
 ...ntingRuleCommandFromApiJsonDeserializer.java |   224 -
 .../AccountingRuleReadPlatformService.java      |    31 -
 .../AccountingRuleReadPlatformServiceImpl.java  |   208 -
 .../AccountingRuleWritePlatformService.java     |    32 -
 ...leWritePlatformServiceJpaRepositoryImpl.java |   349 -
 .../fineract/batch/api/BatchApiResource.java    |   123 -
 .../fineract/batch/command/CommandContext.java  |   108 -
 .../fineract/batch/command/CommandStrategy.java |    47 -
 .../batch/command/CommandStrategyProvider.java  |   103 -
 .../internal/ActivateClientCommandStrategy.java |    93 -
 .../internal/ApplyLoanCommandStrategy.java      |    89 -
 .../internal/ApplySavingsCommandStrategy.java   |    91 -
 .../internal/ApproveLoanCommandStrategy.java    |    92 -
 .../internal/CollectChargesCommandStrategy.java |    96 -
 .../internal/CreateChargeCommandStrategy.java   |    93 -
 .../internal/CreateClientCommandStrategy.java   |    91 -
 .../internal/DisburseLoanCommandStrategy.java   |    93 -
 .../internal/UnknownCommandStrategy.java        |    51 -
 .../internal/UpdateClientCommandStrategy.java   |    95 -
 .../fineract/batch/domain/BatchRequest.java     |   190 -
 .../fineract/batch/domain/BatchResponse.java    |   141 -
 .../apache/fineract/batch/domain/Header.java    |    92 -
 .../fineract/batch/exception/ErrorHandler.java  |   127 -
 .../fineract/batch/exception/ErrorInfo.java     |   110 -
 .../serialization/BatchRequestJsonHelper.java   |    56 -
 .../fineract/batch/service/BatchApiService.java |    65 -
 .../batch/service/BatchApiServiceImpl.java      |   222 -
 .../batch/service/ResolutionHelper.java         |   234 -
 .../commands/annotation/CommandType.java        |    46 -
 .../commands/api/AuditsApiResource.java         |   211 -
 .../commands/api/MakercheckersApiResource.java  |   202 -
 .../fineract/commands/data/AuditData.java       |   106 -
 .../fineract/commands/data/AuditSearchData.java |    47 -
 .../commands/data/ProcessingResultLookup.java   |    42 -
 .../domain/CommandProcessingResultType.java     |    59 -
 .../fineract/commands/domain/CommandSource.java |   256 -
 .../domain/CommandSourceRepository.java         |    26 -
 .../commands/domain/CommandWrapper.java         |   322 -
 .../CommandNotAwaitingApprovalException.java    |    31 -
 .../exception/CommandNotFoundException.java     |    31 -
 ...sCommandIsNotApprovedByCheckerException.java |    45 -
 .../exception/UnsupportedCommandException.java  |    36 -
 .../handler/NewCommandSourceHandler.java        |    27 -
 .../provider/CommandHandlerProvider.java        |   107 -
 .../service/AuditReadPlatformService.java       |    39 -
 .../service/AuditReadPlatformServiceImpl.java   |   531 -
 .../service/CommandProcessingService.java       |    35 -
 .../commands/service/CommandWrapperBuilder.java |  2619 -
 ...tfolioCommandSourceWritePlatformService.java |    33 -
 ...ioCommandSourceWritePlatformServiceImpl.java |   191 -
 .../SynchronousCommandProcessingService.java    |   224 -
 .../api/AccountNumberFormatsApiResource.java    |   174 -
 .../data/AccountNumberFormatData.java           |    80 -
 .../data/AccountNumberFormatDataValidator.java  |   174 -
 .../domain/AccountNumberFormat.java             |    78 -
 .../domain/AccountNumberFormatEnumerations.java |   141 -
 .../domain/AccountNumberFormatRepository.java   |    33 -
 .../AccountNumberFormatRepositoryWrapper.java   |    56 -
 .../domain/EntityAccountType.java               |   102 -
 .../AccountNumberFormatNotFoundException.java   |    34 -
 ...CreateAccountNumberFormatCommandHandler.java |    48 -
 ...DeleteAccountNumberFormatCommandHandler.java |    48 -
 ...UpdateAccountNumberFormatCommandHandler.java |    48 -
 .../service/AccountNumberFormatConstants.java   |    74 -
 .../AccountNumberFormatReadPlatformService.java |    34 -
 ...ountNumberFormatReadPlatformServiceImpl.java |   157 -
 ...AccountNumberFormatWritePlatformService.java |    32 -
 ...atWritePlatformServiceJpaRepositoryImpl.java |   149 -
 .../infrastructure/cache/CacheApiConstants.java |    31 -
 .../infrastructure/cache/CacheEnumerations.java |    50 -
 .../cache/PlatformCacheConfiguration.java       |    49 -
 .../cache/api/CacheApiResource.java             |    98 -
 .../command/UpdateCacheCommandHandler.java      |    83 -
 .../infrastructure/cache/data/CacheData.java    |    38 -
 .../infrastructure/cache/domain/CacheType.java  |    79 -
 .../cache/domain/PlatformCache.java             |    57 -
 .../cache/domain/PlatformCacheRepository.java   |    26 -
 .../service/CacheWritePlatformService.java      |    28 -
 ...heWritePlatformServiceJpaRepositoryImpl.java |    57 -
 .../service/RuntimeDelegatingCacheManager.java  |   126 -
 .../infrastructure/codes/CodeConstants.java     |    59 -
 .../codes/api/CodeValuesApiResource.java        |   148 -
 .../codes/api/CodesApiResource.java             |   142 -
 .../infrastructure/codes/data/CodeData.java     |    47 -
 .../codes/data/CodeValueData.java               |    75 -
 .../infrastructure/codes/domain/Code.java       |    96 -
 .../codes/domain/CodeRepository.java            |    27 -
 .../infrastructure/codes/domain/CodeValue.java  |   136 -
 .../codes/domain/CodeValueRepository.java       |    29 -
 .../domain/CodeValueRepositoryWrapper.java      |    66 -
 .../codes/exception/CodeNotFoundException.java  |    35 -
 .../exception/CodeValueNotFoundException.java   |    41 -
 ...stemDefinedCodeCannotBeChangedException.java |    32 -
 .../codes/handler/CreateCodeCommandHandler.java |    47 -
 .../handler/CreateCodeValueCommandHandler.java  |    47 -
 .../codes/handler/DeleteCodeCommandHandler.java |    47 -
 .../handler/DeleteCodeValueCommandHandler.java  |    47 -
 .../codes/handler/UpdateCodeCommandHandler.java |    47 -
 .../handler/UpdateCodeValueCommandHandler.java  |    47 -
 .../CodeCommandFromApiJsonDeserializer.java     |    97 -
 ...CodeValueCommandFromApiJsonDeserializer.java |   131 -
 .../codes/service/CodeReadPlatformService.java  |    32 -
 .../service/CodeReadPlatformServiceImpl.java    |   103 -
 .../service/CodeValueReadPlatformService.java   |    51 -
 .../CodeValueReadPlatformServiceImpl.java       |   105 -
 .../service/CodeValueWritePlatformService.java  |    31 -
 ...ueWritePlatformServiceJpaRepositoryImpl.java |   175 -
 .../codes/service/CodeWritePlatformService.java |    31 -
 ...deWritePlatformServiceJpaRepositoryImpl.java |   148 -
 ...ExternalServiceConfigurationApiConstant.java |    32 -
 ...xternalServicesConfigurationApiResource.java |   100 -
 .../api/GlobalConfigurationApiConstant.java     |    34 -
 .../api/GlobalConfigurationApiResource.java     |   119 -
 .../UpdateGlobalConfigurationCommand.java       |    37 -
 .../data/ExternalServicesData.java              |    39 -
 .../data/ExternalServicesPropertiesData.java    |    41 -
 .../data/GlobalConfigurationData.java           |    34 -
 .../data/GlobalConfigurationDataValidator.java  |    78 -
 .../data/GlobalConfigurationPropertyData.java   |    57 -
 .../configuration/data/S3CredentialsData.java   |    45 -
 .../configuration/data/SMTPCredentialsData.java |    57 -
 .../domain/ConfigurationDomainService.java      |    66 -
 .../domain/ConfigurationDomainServiceJpa.java   |   217 -
 .../configuration/domain/ExternalService.java   |    54 -
 .../domain/ExternalServicePropertiesPK.java     |    52 -
 .../domain/ExternalServicesProperties.java      |    84 -
 .../ExternalServicesPropertiesRepository.java   |    28 -
 ...rnalServicesPropertiesRepositoryWrapper.java |    41 -
 .../domain/GlobalConfigurationProperty.java     |   118 -
 .../domain/GlobalConfigurationRepository.java   |    28 -
 .../GlobalConfigurationRepositoryWrapper.java   |    65 -
 ...alServiceConfigurationNotFoundException.java |    33 -
 ...balConfigurationPropertyCannotBeModfied.java |    29 -
 ...lConfigurationPropertyNotFoundException.java |    36 -
 ...ernalServiceConfigurationCommandHandler.java |    47 -
 ...UpdateGlobalConfigurationCommandHandler.java |    47 -
 ...ropertiesCommandFromApiJsonDeserializer.java |    73 -
 ...igurationCommandFromApiJsonDeserializer.java |    67 -
 .../ConfigurationReadPlatformService.java       |    30 -
 .../ConfigurationReadPlatformServiceImpl.java   |    98 -
 .../ExternalServiceWritePlatformService.java    |    28 -
 ...ceWritePlatformServiceJpaRepositoryImpl.java |    93 -
 .../service/ExternalServicesConstants.java      |   131 -
 ...alServicesPropertiesReadPlatformService.java |    35 -
 ...rvicesPropertiesReadPlatformServiceImpl.java |   150 -
 .../ExternalServicesReadPlatformService.java    |    27 -
 ...ExternalServicesReadPlatformServiceImpl.java |    82 -
 ...GlobalConfigurationWritePlatformService.java |    28 -
 ...onWritePlatformServiceJpaRepositoryImpl.java |   110 -
 .../core/api/ApiParameterHelper.java            |   183 -
 .../core/api/ApiRequestParameterHelper.java     |    67 -
 .../core/api/JodaDateTimeAdapter.java           |    47 -
 .../core/api/JodaLocalDateAdapter.java          |    51 -
 .../core/api/JodaMonthDayAdapter.java           |    50 -
 .../infrastructure/core/api/JsonCommand.java    |   536 -
 .../infrastructure/core/api/JsonQuery.java      |   279 -
 .../api/ParameterListExclusionStrategy.java     |    48 -
 .../api/ParameterListInclusionStrategy.java     |    44 -
 .../boot/AbstractApplicationConfiguration.java  |    50 -
 .../core/boot/ApplicationExitUtil.java          |    46 -
 .../EmbeddedTomcatWithSSLConfiguration.java     |   102 -
 .../core/boot/WarWebApplicationInitializer.java |    53 -
 .../core/boot/WebFrontEndConfiguration.java     |    37 -
 .../core/boot/WebXmlConfiguration.java          |    80 -
 .../core/boot/WebXmlOauthConfiguration.java     |    74 -
 .../core/boot/db/DataSourceConfiguration.java   |    54 -
 .../core/boot/db/DataSourceProperties.java      |   159 -
 .../db/MariaDB4jDataSourceConfiguration.java    |    44 -
 .../core/boot/db/MariaDB4jSetupService.java     |    36 -
 .../boot/db/TenantDataSourcePortFixService.java |    96 -
 .../core/data/ApiErrorMessageArg.java           |    47 -
 .../core/data/ApiGlobalErrorResponse.java       |   242 -
 .../core/data/ApiParameterError.java            |   144 -
 .../core/data/CommandProcessingResult.java      |   204 -
 .../data/CommandProcessingResultBuilder.java    |   114 -
 .../core/data/DataValidatorBuilder.java         |   969 -
 .../core/data/EnumOptionData.java               |    51 -
 .../core/data/PaginationParameters.java         |   140 -
 .../data/PaginationParametersDataValidator.java |    63 -
 .../core/domain/AbstractAuditableCustom.java    |   163 -
 .../core/domain/AuditorAwareImpl.java           |    55 -
 .../core/domain/Base64EncodedImage.java         |    38 -
 .../domain/DefaultPlatformPasswordEncoder.java  |    47 -
 .../infrastructure/core/domain/EmailDetail.java |    50 -
 .../core/domain/FineractPlatformTenant.java     |    58 -
 .../FineractPlatformTenantConnection.java       |   252 -
 .../infrastructure/core/domain/JdbcSupport.java |   114 -
 .../core/domain/LocalDateInterval.java          |    80 -
 .../infrastructure/core/domain/Tenant.java      |    77 -
 .../AbstractPlatformDomainRuleException.java    |    49 -
 ...stractPlatformResourceNotFoundException.java |    49 -
 ...ractPlatformServiceUnavailableException.java |    49 -
 .../GeneralPlatformDomainRuleException.java     |    31 -
 .../ImageDataURLNotValidException.java          |    26 -
 .../core/exception/ImageUploadException.java    |    26 -
 .../core/exception/InvalidJsonException.java    |    27 -
 .../PlatformApiDataValidationException.java     |    58 -
 .../PlatformDataIntegrityException.java         |    63 -
 .../PlatformInternalServerException.java        |    48 -
 .../PlatformServiceUnavailableException.java    |    28 -
 .../UnrecognizedQueryParamException.java        |    44 -
 .../UnsupportedParameterException.java          |    38 -
 .../AccessDeniedExceptionMapper.java            |    53 -
 .../BadCredentialsExceptionMapper.java          |    50 -
 .../InvalidJsonExceptionMapper.java             |    51 -
 .../InvalidTenantIdentifierExceptionMapper.java |    49 -
 .../JsonSyntaxExceptionMapper.java              |    52 -
 .../MalformedJsonExceptionMapper.java           |    52 -
 .../NoAuthorizationExceptionMapper.java         |    52 -
 ...latformApiDataValidationExceptionMapper.java |    52 -
 .../PlatformDataIntegrityExceptionMapper.java   |    53 -
 .../PlatformDomainRuleExceptionMapper.java      |    53 -
 .../PlatformInternalServerExceptionMapper.java  |    51 -
 ...PlatformResourceNotFoundExceptionMapper.java |    52 -
 ...atformServiceUnavailableExceptionMapper.java |    54 -
 .../UnAuthenticatedUserExceptionMapper.java     |    47 -
 .../UnrecognizedQueryParamExceptionMapper.java  |    71 -
 .../UnsupportedCommandExceptionMapper.java      |    63 -
 .../UnsupportedParameterExceptionMapper.java    |    65 -
 .../core/filters/ResponseCorsFilter.java        |    53 -
 .../AbstractFromApiJsonDeserializer.java        |    29 -
 .../AbstractFromCommandJsonDeserializer.java    |    36 -
 .../ApiRequestJsonSerializationSettings.java    |    76 -
 .../CommandProcessingResultJsonSerializer.java  |    65 -
 .../core/serialization/CommandSerializer.java   |    33 -
 .../CommandSerializerDefaultToJson.java         |    43 -
 ...DatatableCommandFromApiJsonDeserializer.java |   258 -
 .../DefaultToApiJsonSerializer.java             |   159 -
 ...ettyPrintingOffJsonSerializerGoogleGson.java |    64 -
 ...rettyPrintingOnJsonSerializerGoogleGson.java |    60 -
 .../serialization/FromApiJsonDeserializer.java  |    27 -
 .../FromCommandJsonDeserializer.java            |    31 -
 .../core/serialization/FromJsonHelper.java      |   272 -
 .../GoogleGsonSerializerHelper.java             |   109 -
 .../core/serialization/JsonParserHelper.java    |   637 -
 .../core/serialization/ToApiJsonSerializer.java |    50 -
 ...ndonedConnectionCleanupShutdownListener.java |    71 -
 .../core/service/DataSourceForTenants.java      |    45 -
 .../infrastructure/core/service/DateUtils.java  |   114 -
 .../GmailBackedPlatformEmailService.java        |    81 -
 .../infrastructure/core/service/Page.java       |    40 -
 .../core/service/PaginationHelper.java          |    39 -
 .../service/PlatformEmailSendException.java     |    26 -
 .../core/service/PlatformEmailService.java      |    27 -
 .../core/service/RoutingDataSource.java         |    60 -
 .../core/service/RoutingDataSourceService.java  |    30 -
 .../RoutingDataSourceServiceFactory.java        |    46 -
 .../core/service/SearchParameters.java          |   431 -
 .../service/TenantDatabaseUpgradeService.java   |    91 -
 .../core/service/ThreadLocalContextUtil.java    |    70 -
 .../TomcatJdbcDataSourcePerTenantService.java   |   123 -
 .../dataqueries/api/DataTableApiConstant.java   |    39 -
 .../dataqueries/api/DatatablesApiResource.java  |   297 -
 .../dataqueries/api/ReportsApiResource.java     |   163 -
 .../dataqueries/api/RunreportsApiResource.java  |   176 -
 .../dataqueries/data/DataTableValidator.java    |    71 -
 .../dataqueries/data/DatatableData.java         |    48 -
 .../dataqueries/data/GenericResultsetData.java  |    67 -
 .../dataqueries/data/ReportData.java            |   106 -
 .../dataqueries/data/ReportParameterData.java   |    39 -
 .../data/ReportParameterJoinData.java           |   108 -
 .../data/ResultsetColumnHeaderData.java         |   269 -
 .../data/ResultsetColumnValueData.java          |    51 -
 .../dataqueries/data/ResultsetRowData.java      |    38 -
 .../dataqueries/domain/Report.java              |   281 -
 .../dataqueries/domain/ReportParameter.java     |    37 -
 .../domain/ReportParameterRepository.java       |    26 -
 .../domain/ReportParameterUsage.java            |    91 -
 .../domain/ReportParameterUsageRepository.java  |    27 -
 .../dataqueries/domain/ReportRepository.java    |    26 -
 .../exception/DatatableNotFoundException.java   |    35 -
 .../DatatableSystemErrorException.java          |    28 -
 .../exception/ReportNotFoundException.java      |    35 -
 .../ReportParameterNotFoundException.java       |    31 -
 .../handler/CreateDatatableCommandHandler.java  |    45 -
 .../CreateDatatableEntryCommandHandler.java     |    57 -
 .../handler/CreateReportCommandHandler.java     |    47 -
 .../handler/DeleteDatatableCommandHandler.java  |    50 -
 ...teOneToManyDatatableEntryCommandHandler.java |    57 -
 ...eteOneToOneDatatableEntryCommandHandler.java |    57 -
 .../handler/DeleteReportCommandHandler.java     |    53 -
 .../RegisterDatatableCommandHandler.java        |    48 -
 .../handler/UpdateDatatableCommandHandler.java  |    50 -
 ...teOneToManyDatatableEntryCommandHandler.java |    58 -
 ...ateOneToOneDatatableEntryCommandHandler.java |    58 -
 .../handler/UpdateReportCommandHandler.java     |    47 -
 .../ReportCommandFromApiJsonDeserializer.java   |    58 -
 .../dataqueries/service/GenericDataService.java |    37 -
 .../service/GenericDataServiceImpl.java         |   316 -
 .../service/ReadReportingService.java           |    45 -
 .../service/ReadReportingServiceImpl.java       |   476 -
 .../service/ReadWriteNonCoreDataService.java    |    71 -
 .../ReadWriteNonCoreDataServiceImpl.java        |  1694 -
 .../service/ReportWritePlatformService.java     |    31 -
 .../service/ReportWritePlatformServiceImpl.java |   254 -
 .../api/DocumentManagementApiResource.java      |   211 -
 .../api/ImagesApiResource.java                  |   231 -
 .../command/DocumentCommand.java                |   144 -
 .../command/DocumentCommandValidator.java       |    70 -
 .../contentrepository/ContentRepository.java    |    56 -
 .../ContentRepositoryFactory.java               |    59 -
 .../ContentRepositoryUtils.java                 |   193 -
 .../FileSystemContentRepository.java            |   177 -
 .../contentrepository/S3ContentRepository.java  |   177 -
 .../documentmanagement/data/DocumentData.java   |    84 -
 .../documentmanagement/data/FileData.java       |    69 -
 .../documentmanagement/data/ImageData.java      |   164 -
 .../documentmanagement/domain/Document.java     |   168 -
 .../domain/DocumentRepository.java              |    26 -
 .../documentmanagement/domain/Image.java        |    62 -
 .../domain/ImageRepository.java                 |    25 -
 .../documentmanagement/domain/StorageType.java  |    48 -
 .../exception/ContentManagementException.java   |    35 -
 .../exception/DocumentNotFoundException.java    |    29 -
 ...ntityTypeForDocumentManagementException.java |    33 -
 ...idEntityTypeForImageManagementException.java |    31 -
 .../service/DocumentReadPlatformService.java    |    34 -
 .../DocumentReadPlatformServiceImpl.java        |   143 -
 .../service/DocumentWritePlatformService.java   |    38 -
 ...ntWritePlatformServiceJpaRepositoryImpl.java |   171 -
 .../service/ImageReadPlatformService.java       |    27 -
 .../service/ImageReadPlatformServiceImpl.java   |   113 -
 .../service/ImageWritePlatformService.java      |    37 -
 ...geWritePlatformServiceJpaRepositoryImpl.java |   168 -
 .../FineractEntityAccessConstants.java          |    48 -
 .../api/FineractEntityApiResource.java          |   169 -
 .../api/FineractEntityApiResourceConstants.java |    54 -
 .../data/FineractEntityAccessData.java          |    51 -
 .../data/FineractEntityDataValidator.java       |   217 -
 .../data/FineractEntityRelationData.java        |    46 -
 .../data/FineractEntityToEntityMappingData.java |    80 -
 .../entityaccess/domain/FineractEntity.java     |    41 -
 .../domain/FineractEntityAccess.java            |   161 -
 .../domain/FineractEntityAccessRepository.java  |    26 -
 .../FineractEntityAccessRepositoryWrapper.java  |    58 -
 .../domain/FineractEntityAccessType.java        |    51 -
 .../domain/FineractEntityRelation.java          |   112 -
 .../FineractEntityRelationRepository.java       |    26 -
 ...FineractEntityRelationRepositoryWrapper.java |    42 -
 .../domain/FineractEntityToEntityMapping.java   |   137 -
 ...FineractEntityToEntityMappingRepository.java |    28 -
 ...tEntityToEntityMappingRepositoryWrapper.java |    45 -
 .../entityaccess/domain/FineractEntityType.java |    65 -
 ...eractEntityAccessConfigurationException.java |    36 -
 .../FineractEntityAccessNotFoundException.java  |    32 -
 ...eractEntityToEntityMappingDateException.java |    29 -
 ...tEntityToEntityMappingNotFoundException.java |    28 -
 ...eateEntityToEntityMappingCommandHandler.java |    48 -
 ...leteEntityToEntityMappingCommandHandler.java |    48 -
 ...dateEntityToEntityMappingCommandHandler.java |    48 -
 .../FineractEntityAccessReadService.java        |    49 -
 .../FineractEntityAccessReadServiceImpl.java    |   392 -
 .../service/FineractEntityAccessUtil.java       |   143 -
 .../FineractEntityAccessWriteService.java       |    46 -
 .../FineractEntityAccessWriteServiceImpl.java   |   186 -
 .../hooks/api/HookApiConstants.java             |    75 -
 .../hooks/api/HookApiResource.java              |   172 -
 .../infrastructure/hooks/data/Entity.java       |    43 -
 .../infrastructure/hooks/data/Event.java        |    46 -
 .../hooks/data/EventResultSetExtractor.java     |   109 -
 .../infrastructure/hooks/data/Field.java        |    63 -
 .../infrastructure/hooks/data/Grouping.java     |    43 -
 .../infrastructure/hooks/data/HookData.java     |   112 -
 .../hooks/data/HookTemplateData.java            |    51 -
 .../infrastructure/hooks/domain/Hook.java       |   199 -
 .../hooks/domain/HookConfiguration.java         |    85 -
 .../domain/HookConfigurationRepository.java     |    34 -
 .../hooks/domain/HookRepository.java            |    39 -
 .../hooks/domain/HookResource.java              |    62 -
 .../hooks/domain/HookTemplate.java              |    74 -
 .../hooks/domain/HookTemplateRepository.java    |    32 -
 .../infrastructure/hooks/domain/Schema.java     |    65 -
 .../infrastructure/hooks/event/HookEvent.java   |    65 -
 .../hooks/event/HookEventSource.java            |    43 -
 .../hooks/exception/HookNotFoundException.java  |    35 -
 .../HookTemplateNotFoundException.java          |    37 -
 .../hooks/handler/CreateHookCommandHandler.java |    49 -
 .../hooks/handler/DeleteHookCommandHandler.java |    49 -
 .../hooks/handler/UpdateHookCommandHandler.java |    50 -
 .../hooks/listener/FineractHookListener.java    |    80 -
 .../hooks/listener/HookListener.java            |    26 -
 .../hooks/processor/HookProcessor.java          |    29 -
 .../hooks/processor/HookProcessorProvider.java  |    56 -
 .../hooks/processor/ProcessorHelper.java        |   123 -
 .../hooks/processor/TwilioHookProcessor.java    |   149 -
 .../hooks/processor/WebHookProcessor.java       |    97 -
 .../hooks/processor/WebHookService.java         |    75 -
 .../hooks/processor/data/SmsProviderData.java   |   112 -
 .../HookCommandFromApiJsonDeserializer.java     |   129 -
 .../hooks/service/HookReadPlatformService.java  |    36 -
 .../service/HookReadPlatformServiceImpl.java    |   270 -
 .../hooks/service/HookWritePlatformService.java |    32 -
 ...okWritePlatformServiceJpaRepositoryImpl.java |   366 -
 .../jobs/annotation/CronMethodParser.java       |    98 -
 .../jobs/annotation/CronTarget.java             |    38 -
 .../jobs/api/SchedulerApiResource.java          |   100 -
 .../jobs/api/SchedulerJobApiConstants.java      |    68 -
 .../jobs/api/SchedulerJobApiResource.java       |   157 -
 .../infrastructure/jobs/data/JobDetailData.java |    60 -
 .../jobs/data/JobDetailDataValidator.java       |    94 -
 .../jobs/data/JobDetailHistoryData.java         |    56 -
 .../jobs/data/SchedulerDetailData.java          |    29 -
 .../jobs/domain/ScheduledJobDetail.java         |   183 -
 .../domain/ScheduledJobDetailRepository.java    |    41 -
 .../jobs/domain/ScheduledJobRunHistory.java     |    80 -
 .../ScheduledJobRunHistoryRepository.java       |    32 -
 .../jobs/domain/SchedulerDetail.java            |    67 -
 .../jobs/domain/SchedulerDetailRepository.java  |    26 -
 .../jobs/exception/JobExecutionException.java   |    26 -
 .../jobs/exception/JobInProcessExecution.java   |    29 -
 .../jobs/exception/JobNotFoundException.java    |    31 -
 .../exception/OperationNotAllowedException.java |    32 -
 .../handler/UpdateJobDetailCommandhandler.java  |    45 -
 .../infrastructure/jobs/service/JobName.java    |    53 -
 .../jobs/service/JobRegisterService.java        |    37 -
 .../jobs/service/JobRegisterServiceImpl.java    |   421 -
 .../service/SchedularWritePlatformService.java  |    51 -
 ...arWritePlatformServiceJpaRepositoryImpl.java |   153 -
 .../jobs/service/SchedulerJobListener.java      |   142 -
 .../service/SchedulerJobRunnerReadService.java  |    38 -
 .../SchedulerJobRunnerReadServiceImpl.java      |   190 -
 .../jobs/service/SchedulerServiceConstants.java |    41 -
 .../jobs/service/SchedulerStopListener.java     |    79 -
 .../jobs/service/SchedulerTriggerListener.java  |    86 -
 .../report/annotation/ReportService.java        |    36 -
 .../ReportingProcessServiceProvider.java        |    79 -
 .../report/service/ReportingProcessService.java |    28 -
 .../security/api/AuthenticationApiResource.java |   115 -
 .../security/api/UserDetailsApiResource.java    |   111 -
 .../data/AuthenticatedOauthUserData.java        |   103 -
 .../security/data/AuthenticatedUserData.java    |   103 -
 .../security/data/PlatformRequestLog.java       |    64 -
 .../BasicPasswordEncodablePlatformUser.java     |    75 -
 .../security/domain/PlatformUser.java           |    28 -
 .../security/domain/PlatformUserRepository.java |    25 -
 .../exception/ForcePasswordResetException.java  |    29 -
 .../InvalidTenantIdentiferException.java        |    32 -
 .../exception/NoAuthorizationException.java     |    30 -
 .../exception/ResetPasswordException.java       |    48 -
 .../TenantAwareBasicAuthenticationFilter.java   |   181 -
 .../TenantAwareTenantIdentifierFilter.java      |   161 -
 .../service/BasicAuthTenantDetailsService.java  |    26 -
 .../BasicAuthTenantDetailsServiceJdbc.java      |   146 -
 .../CustomAuthenticationFailureHandler.java     |   143 -
 .../service/JdbcTenantDetailsService.java       |   148 -
 .../service/PlatformPasswordEncoder.java        |    26 -
 .../service/PlatformSecurityContext.java        |    46 -
 .../service/PlatformUserDetailsService.java     |    28 -
 .../service/RandomPasswordGenerator.java        |    37 -
 .../SpringSecurityPlatformSecurityContext.java  |   168 -
 ...enantAwareJpaPlatformUserDetailsService.java |    55 -
 .../security/service/TenantDetailsService.java  |    30 -
 .../vote/SelfServiceUserAccessVote.java         |    61 -
 .../infrastructure/sms/SmsApiConstants.java     |    48 -
 .../infrastructure/sms/api/SmsApiResource.java  |   127 -
 .../infrastructure/sms/data/SmsData.java        |    58 -
 .../sms/data/SmsDataValidator.java              |   137 -
 .../infrastructure/sms/domain/SmsMessage.java   |    94 -
 .../sms/domain/SmsMessageAssembler.java         |    92 -
 .../sms/domain/SmsMessageEnumerations.java      |    58 -
 .../sms/domain/SmsMessageRepository.java        |    26 -
 .../sms/domain/SmsMessageStatusType.java        |    64 -
 .../sms/exception/SmsNotFoundException.java     |    31 -
 .../sms/handler/CreateSmsCommandHandler.java    |    47 -
 .../sms/handler/DeleteSmsCommandHandler.java    |    47 -
 .../sms/handler/UpdateSmsCommandHandler.java    |    47 -
 .../sms/service/SmsReadPlatformService.java     |    30 -
 .../sms/service/SmsReadPlatformServiceImpl.java |   107 -
 .../sms/service/SmsWritePlatformService.java    |    31 -
 ...msWritePlatformServiceJpaRepositoryImpl.java |   134 -
 .../survey/api/LikelihoodApiConstants.java      |    37 -
 .../survey/api/LikelihoodApiResource.java       |   112 -
 .../survey/api/PovertyLineApiConstants.java     |    24 -
 .../survey/api/PovertyLineApiResource.java      |    87 -
 .../survey/api/SurveyApiConstants.java          |    28 -
 .../survey/api/SurveyApiResource.java           |   180 -
 .../survey/data/ClientScoresOverview.java       |    55 -
 .../survey/data/LikeliHoodPovertyLineData.java  |    48 -
 .../survey/data/LikelihoodData.java             |    39 -
 .../survey/data/LikelihoodDataValidator.java    |    73 -
 .../survey/data/LikelihoodStatus.java           |    28 -
 .../survey/data/PovertyLineData.java            |    41 -
 .../survey/data/PpiPovertyLineData.java         |    41 -
 .../infrastructure/survey/data/SurveyData.java  |    25 -
 .../survey/data/SurveyDataTableData.java        |    40 -
 .../survey/domain/Likelihood.java               |    83 -
 .../survey/domain/LikelihoodRepository.java     |    35 -
 .../handler/FullFilSurveyCommandHandler.java    |    50 -
 .../handler/RegisterSurveyCommandHandler.java   |    51 -
 .../handler/UpdateLikelihoodCommandHandler.java |    52 -
 .../survey/service/PovertyLineService.java      |    30 -
 .../survey/service/PovertyLineServiceImpl.java  |   141 -
 .../survey/service/ReadLikelihoodService.java   |    32 -
 .../service/ReadLikelihoodServiceImpl.java      |    94 -
 .../survey/service/ReadSurveyService.java       |    42 -
 .../survey/service/ReadSurveyServiceImpl.java   |   196 -
 .../survey/service/WriteLikelihoodService.java  |    30 -
 .../service/WriteLikelihoodServiceImpl.java     |   103 -
 .../survey/service/WriteSurveyService.java      |    32 -
 .../survey/service/WriteSurveyServiceImpl.java  |    79 -
 .../fineract/mix/api/MixReportApiResource.java  |    59 -
 .../mix/api/MixTaxonomyApiResource.java         |    79 -
 .../mix/api/MixTaxonomyMappingApiResource.java  |    99 -
 .../apache/fineract/mix/data/ContextData.java   |    72 -
 .../fineract/mix/data/MixTaxonomyData.java      |    67 -
 .../mix/data/MixTaxonomyMappingData.java        |    38 -
 .../apache/fineract/mix/data/NamespaceData.java |    39 -
 .../org/apache/fineract/mix/data/XBRLData.java  |    54 -
 .../fineract/mix/domain/MixTaxonomyMapping.java |    67 -
 .../domain/MixTaxonomyMappingRepository.java    |    26 -
 .../exception/XBRLMappingInvalidException.java  |    29 -
 .../UpdateTaxonomyMappingCommandHandler.java    |    47 -
 .../MixTaxonomyMappingReadPlatformService.java  |    26 -
 ...xTaxonomyMappingReadPlatformServiceImpl.java |    68 -
 .../MixTaxonomyMappingWritePlatformService.java |    27 -
 ...TaxonomyMappingWritePlatformServiceImpl.java |    60 -
 .../service/MixTaxonomyReadPlatformService.java |    30 -
 .../MixTaxonomyReadPlatformServiceImpl.java     |    76 -
 .../service/NamespaceReadPlatformService.java   |    28 -
 .../NamespaceReadPlatformServiceImpl.java       |    72 -
 .../fineract/mix/service/XBRLBuilder.java       |   210 -
 .../fineract/mix/service/XBRLResultService.java |    29 -
 .../mix/service/XBRLResultServiceImpl.java      |   207 -
 .../holiday/api/HolidayApiConstants.java        |    52 -
 .../holiday/api/HolidaysApiResource.java        |   183 -
 .../organisation/holiday/data/HolidayData.java  |    54 -
 .../holiday/data/HolidayDataValidator.java      |   166 -
 .../organisation/holiday/domain/Holiday.java    |   301 -
 .../holiday/domain/HolidayRepository.java       |    37 -
 .../domain/HolidayRepositoryWrapper.java        |    80 -
 .../holiday/domain/HolidayStatusType.java       |    78 -
 .../holiday/exception/HolidayDateException.java |    29 -
 .../exception/HolidayNotFoundException.java     |    31 -
 .../handler/ActivateHolidayCommandHandler.java  |    46 -
 .../handler/CreateHolidayCommandHandler.java    |    47 -
 .../handler/DeleteHolidayCommandHandler.java    |    46 -
 .../handler/UpdateHolidayCommandHandler.java    |    46 -
 .../holiday/service/HolidayEnumerations.java    |    52 -
 .../service/HolidayReadPlatformService.java     |    31 -
 .../service/HolidayReadPlatformServiceImpl.java |   137 -
 .../holiday/service/HolidayUtil.java            |    59 -
 .../service/HolidayWritePlatformService.java    |    34 -
 ...ayWritePlatformServiceJpaRepositoryImpl.java |   236 -
 .../monetary/api/CurrenciesApiResource.java     |   102 -
 .../ApplicationCurrencyConfigurationData.java   |    38 -
 .../monetary/data/CurrencyData.java             |    86 -
 .../organisation/monetary/data/MoneyData.java   |    50 -
 .../monetary/domain/ApplicationCurrency.java    |   110 -
 .../domain/ApplicationCurrencyRepository.java   |    28 -
 .../ApplicationCurrencyRepositoryWrapper.java   |    68 -
 .../monetary/domain/MonetaryCurrency.java       |    63 -
 .../organisation/monetary/domain/Money.java     |   337 -
 .../monetary/domain/MoneyHelper.java            |    51 -
 .../exception/CurrencyInUseException.java       |    35 -
 .../exception/CurrencyNotFoundException.java    |    31 -
 ...OrganizationalCurrencyNotFoundException.java |    33 -
 .../handler/UpdateCurrencyCommandHandler.java   |    47 -
 .../CurrencyCommandFromApiJsonDeserializer.java |    77 -
 .../service/CurrencyReadPlatformService.java    |    32 -
 .../CurrencyReadPlatformServiceImpl.java        |    93 -
 .../service/CurrencyWritePlatformService.java   |    28 -
 ...cyWritePlatformServiceJpaRepositoryImpl.java |   114 -
 ...OrganisationCurrencyReadPlatformService.java |    27 -
 ...nisationCurrencyReadPlatformServiceImpl.java |    49 -
 .../api/OfficeTransactionsApiResource.java      |   131 -
 .../office/api/OfficesApiResource.java          |   168 -
 .../organisation/office/data/OfficeData.java    |    80 -
 .../office/data/OfficeTransactionData.java      |    82 -
 .../organisation/office/domain/Office.java      |   241 -
 .../office/domain/OfficeRepository.java         |    26 -
 .../office/domain/OfficeRepositoryWrapper.java  |    58 -
 .../office/domain/OfficeTransaction.java        |    88 -
 .../domain/OfficeTransactionRepository.java     |    26 -
 .../office/domain/OrganisationCurrency.java     |    79 -
 .../domain/OrganisationCurrencyRepository.java  |    28 -
 .../OrganisationCurrencyRepositoryWrapper.java  |    52 -
 ...tUpdateOfficeWithParentOfficeSameAsSelf.java |    31 -
 .../exception/InvalidOfficeException.java       |    33 -
 .../exception/OfficeNotFoundException.java      |    31 -
 .../OfficeTransactionNotFoundException.java     |    32 -
 .../RootOfficeParentCannotBeUpdated.java        |    31 -
 .../handler/CreateOfficeCommandHandler.java     |    47 -
 .../CreateOfficeTransactionCommandHandler.java  |    47 -
 .../DeleteOfficeTransactionCommandHandler.java  |    47 -
 .../handler/UpdateOfficeCommandHandler.java     |    47 -
 .../OfficeCommandFromApiJsonDeserializer.java   |   129 -
 ...ansactionCommandFromApiJsonDeserializer.java |   102 -
 .../service/OfficeReadPlatformService.java      |    42 -
 .../service/OfficeReadPlatformServiceImpl.java  |   264 -
 .../service/OfficeWritePlatformService.java     |    33 -
 ...ceWritePlatformServiceJpaRepositoryImpl.java |   260 -
 .../api/ProvisioningCategoryApiResource.java    |   117 -
 .../api/ProvisioningCriteriaApiResource.java    |   141 -
 .../ProvisioningCriteriaConstants.java          |    79 -
 .../data/ProvisioningCategoryData.java          |    67 -
 .../data/ProvisioningCriteriaData.java          |    92 -
 .../ProvisioningCriteriaDefinitionData.java     |   106 -
 .../domain/LoanProductProvisionCriteria.java    |    54 -
 .../domain/ProvisioningCategory.java            |    96 -
 .../domain/ProvisioningCategoryRepository.java  |    27 -
 .../domain/ProvisioningCriteria.java            |   128 -
 .../domain/ProvisioningCriteriaDefinition.java  |    96 -
 ...rovisioningCriteriaDefinitionRepository.java |    27 -
 .../domain/ProvisioningCriteriaRepository.java  |    27 -
 ...sioningCategoryCannotBeDeletedException.java |    31 -
 .../ProvisioningCategoryNotFoundException.java  |    28 -
 ...sioningCriteriaCannotBeCreatedException.java |    30 -
 ...sioningCriteriaCannotBeDeletedException.java |    29 -
 .../ProvisioningCriteriaNotFoundException.java  |    28 -
 ...gCriteriaOverlappingDefinitionException.java |    28 -
 ...ovisioningCategoryRequestCommandHandler.java |    48 -
 ...ovisioningCriteriaRequestCommandHandler.java |    48 -
 ...ovisioningCategoryRequestCommandHandler.java |    48 -
 ...ovisioningCriteriaRequestCommandHandler.java |    47 -
 ...ovisioningCategoryRequestCommandHandler.java |    47 -
 ...ovisioningCriteriaRequestCommandHandler.java |    47 -
 ...oningCategoryDefinitionJsonDeserializer.java |    87 -
 ...oningCriteriaDefinitionJsonDeserializer.java |   224 -
 ...ProvisioningCategoryReadPlatformService.java |    29 -
 ...isioningCategoryReadPlatformServiceImpl.java |    65 -
 ...rovisioningCategoryWritePlatformService.java |    32 -
 ...ryWritePlatformServiceJpaRepositoryImpl.java |   126 -
 .../service/ProvisioningCriteriaAssembler.java  |   147 -
 ...ProvisioningCriteriaReadPlatformService.java |    35 -
 ...isioningCriteriaReadPlatformServiceImpl.java |   190 -
 ...rovisioningCriteriaWritePlatformService.java |    32 -
 ...iaWritePlatformServiceJpaRepositoryImpl.java |   164 -
 .../staff/api/StaffApiResource.java             |   153 -
 .../staff/data/BulkTransferLoanOfficerData.java |    68 -
 .../data/StaffAccountSummaryCollectionData.java |    70 -
 .../organisation/staff/data/StaffData.java      |   106 -
 .../organisation/staff/domain/Staff.java        |   264 -
 .../staff/domain/StaffEnumerations.java         |    50 -
 .../domain/StaffOrganisationalRoleType.java     |    63 -
 .../staff/domain/StaffRepository.java           |    36 -
 .../staff/domain/StaffRepositoryWrapper.java    |    63 -
 .../staff/exception/StaffNotFoundException.java |    31 -
 .../staff/exception/StaffRoleException.java     |    40 -
 .../handler/CreateStaffCommandHandler.java      |    47 -
 .../handler/UpdateStaffCommandHandler.java      |    47 -
 .../StaffCommandFromApiJsonDeserializer.java    |   196 -
 .../staff/service/StaffReadPlatformService.java |    42 -
 .../service/StaffReadPlatformServiceImpl.java   |   296 -
 .../service/StaffWritePlatformService.java      |    29 -
 ...ffWritePlatformServiceJpaRepositoryImpl.java |   144 -
 .../teller/api/CashierApiResource.java          |    68 -
 .../teller/api/TellerApiResource.java           |   339 -
 .../teller/api/TellerJournalApiResource.java    |    70 -
 .../organisation/teller/data/CashierData.java   |   238 -
 .../teller/data/CashierTransactionData.java     |   173 -
 .../data/CashierTransactionTypeTotalsData.java  |    52 -
 .../CashierTransactionsWithSummaryData.java     |   135 -
 .../organisation/teller/data/TellerData.java    |   160 -
 .../teller/data/TellerJournalData.java          |   112 -
 .../teller/data/TellerTransactionData.java      |   112 -
 .../organisation/teller/domain/Cashier.java     |   476 -
 .../teller/domain/CashierRepository.java        |    33 -
 .../teller/domain/CashierRepositoryWrapper.java |    39 -
 .../teller/domain/CashierTransaction.java       |   284 -
 .../domain/CashierTransactionRepository.java    |    26 -
 .../teller/domain/CashierTxnType.java           |    66 -
 .../organisation/teller/domain/Teller.java      |   297 -
 .../teller/domain/TellerJournal.java            |    22 -
 .../teller/domain/TellerRepository.java         |    34 -
 .../teller/domain/TellerRepositoryWrapper.java  |    40 -
 .../teller/domain/TellerStatus.java             |    89 -
 .../teller/domain/TellerTransaction.java        |   117 -
 .../domain/TellerTransactionRepository.java     |    33 -
 .../CashierExistForTellerException.java         |    33 -
 .../exception/CashierNotFoundException.java     |    42 -
 .../exception/InvalidDateInputException.java    |    29 -
 .../exception/TellerNotFoundException.java      |    42 -
 .../AllocateCashToCashierCommandHandler.java    |    51 -
 .../AllocateCashierToTellerCommandHandler.java  |    52 -
 .../handler/CreateTellerCommandHandler.java     |    57 -
 .../CreateTellerTransactionCommandHandler.java  |    41 -
 .../DeleteCashierAllocationCommandHandler.java  |    58 -
 .../handler/DeleteTellerCommandHandler.java     |    57 -
 .../handler/ModifyCashierCommandHandler.java    |    54 -
 .../SettleCashFromCashierCommandHandler.java    |    51 -
 .../UpdateCashierAllocationCommandHandler.java  |    58 -
 .../handler/UpdateTellerCommandHandler.java     |    57 -
 .../TellerCommandFromApiJsonDeserializer.java   |   169 -
 .../service/CashierWritePlatformService.java    |    42 -
 .../TellerManagementReadPlatformService.java    |    69 -
 ...TellerManagementReadPlatformServiceImpl.java |   787 -
 .../TellerTransactionWritePlatformService.java  |    39 -
 .../service/TellerWritePlatformService.java     |    89 -
 .../TellerWritePlatformServiceJpaImpl.java      |   458 -
 .../organisation/teller/util/DateRange.java     |    98 -
 .../api/WorkingDaysApiConstants.java            |    50 -
 .../workingdays/api/WorkingDaysApiResource.java |   104 -
 .../workingdays/data/WorkingDayValidator.java   |    81 -
 .../workingdays/data/WorkingDaysData.java       |    58 -
 .../domain/RepaymentRescheduleType.java         |    84 -
 .../workingdays/domain/WorkingDays.java         |   102 -
 .../domain/WorkingDaysEnumerations.java         |    60 -
 .../domain/WorkingDaysRepository.java           |    26 -
 .../domain/WorkingDaysRepositoryWrapper.java    |    68 -
 .../exception/WorkingDaysNotFoundException.java |    32 -
 .../UpdateWorkingDaysCommandHandler.java        |    46 -
 .../service/WorkingDaysReadPlatformService.java |    28 -
 .../WorkingDaysReadPlatformServiceImpl.java     |    98 -
 .../workingdays/service/WorkingDaysUtil.java    |    59 -
 .../WorkingDaysWritePlatformService.java        |    27 -
 ...ysWritePlatformServiceJpaRepositoryImpl.java |    78 -
 .../account/AccountDetailConstants.java         |    40 -
 .../portfolio/account/PortfolioAccountType.java |    80 -
 .../api/AccountTransfersApiConstants.java       |    51 -
 .../api/AccountTransfersApiResource.java        |   167 -
 .../api/StandingInstructionApiConstants.java    |    63 -
 .../api/StandingInstructionApiResource.java     |   211 -
 .../StandingInstructionHistoryApiResource.java  |   101 -
 .../account/data/AccountAssociationsData.java   |    38 -
 .../account/data/AccountTransferDTO.java        |   182 -
 .../account/data/AccountTransferData.java       |   137 -
 .../data/AccountTransfersDataValidator.java     |    93 -
 .../AccountTransfersDetailDataValidator.java    |    80 -
 .../account/data/PortfolioAccountDTO.java       |    83 -
 .../account/data/PortfolioAccountData.java      |   123 -
 .../account/data/StandingInstructionDTO.java    |    85 -
 .../account/data/StandingInstructionData.java   |   389 -
 .../data/StandingInstructionDataValidator.java  |   250 -
 .../data/StandingInstructionDuesData.java       |    43 -
 .../data/StandingInstructionHistoryData.java    |    67 -
 .../account/domain/AccountAssociationType.java  |    73 -
 .../account/domain/AccountAssociations.java     |    86 -
 .../domain/AccountAssociationsRepository.java   |    34 -
 .../domain/AccountTransferAssembler.java        |   148 -
 .../domain/AccountTransferDetailAssembler.java  |   204 -
 .../domain/AccountTransferDetailRepository.java |    25 -
 .../account/domain/AccountTransferDetails.java  |   162 -
 .../domain/AccountTransferRecurrenceType.java   |    72 -
 .../domain/AccountTransferRepository.java       |    43 -
 .../AccountTransferStandingInstruction.java     |   294 -
 .../domain/AccountTransferTransaction.java      |   148 -
 .../account/domain/AccountTransferType.java     |    87 -
 .../domain/StandingInstructionAssembler.java    |    94 -
 .../domain/StandingInstructionPriority.java     |    87 -
 .../domain/StandingInstructionRepository.java   |    25 -
 .../domain/StandingInstructionStatus.java       |    80 -
 .../account/domain/StandingInstructionType.java |    72 -
 .../AccountTransferNotFoundException.java       |    28 -
 .../StandingInstructionNotFoundException.java   |    32 -
 .../CreateAccountTransferCommandHandler.java    |    47 -
 ...CreateStandingInstructionCommandHandler.java |    45 -
 ...DeleteStandingInstructionCommandHandler.java |    45 -
 .../handler/RefundByTransferCommandHandler.java |    47 -
 ...UpdateStandingInstructionCommandHandler.java |    45 -
 .../AccountAssociationsReadPlatformService.java |    35 -
 ...ountAssociationsReadPlatformServiceImpl.java |   195 -
 .../service/AccountTransferEnumerations.java    |   193 -
 .../AccountTransfersReadPlatformService.java    |    45 -
 ...AccountTransfersReadPlatformServiceImpl.java |   537 -
 .../AccountTransfersWritePlatformService.java   |    44 -
 ...ccountTransfersWritePlatformServiceImpl.java |   488 -
 .../PortfolioAccountReadPlatformService.java    |    35 -
 ...PortfolioAccountReadPlatformServiceImpl.java |   386 -
 ...ngInstructionHistoryReadPlatformService.java |    29 -
 ...structionHistoryReadPlatformServiceImpl.java |   278 -
 .../StandingInstructionReadPlatformService.java |    41 -
 ...ndingInstructionReadPlatformServiceImpl.java |   591 -
 ...StandingInstructionWritePlatformService.java |    35 -
 ...dingInstructionWritePlatformServiceImpl.java |   295 -
 .../data/AccountSummaryCollectionData.java      |    70 -
 .../data/LoanAccountSummaryData.java            |    66 -
 .../data/SavingsAccountSummaryData.java         |    66 -
 .../accountdetails/domain/AccountType.java      |    94 -
 .../AccountDetailsReadPlatformService.java      |    35 -
 ...ilsReadPlatformServiceJpaRepositoryImpl.java |   368 -
 .../service/AccountEnumerations.java            |    55 -
 .../accounts/api/AccountsApiResource.java       |   140 -
 .../constants/AccountsApiConstants.java         |    27 -
 .../constants/ShareAccountApiConstants.java     |    77 -
 .../portfolio/accounts/data/AccountData.java    |    24 -
 .../accounts/data/PurchasedSharesData.java      |    60 -
 .../accounts/data/ShareAccountData.java         |    99 -
 .../accounts/data/ShareChargeData.java          |    32 -
 .../accounts/domain/PurchasedShares.java        |    93 -
 .../portfolio/accounts/domain/ShareAccount.java |   333 -
 .../accounts/domain/ShareAccountCharge.java     |    65 -
 .../accounts/domain/ShareAccountRepository.java |    27 -
 .../domain/ShareAccountTempRepository.java      |    56 -
 .../ShareAccountNotFoundException.java          |    29 -
 .../CreateShareAccountCommandHandler.java       |    47 -
 .../UpdateShareAccountCommandHandler.java       |    47 -
 .../ShareAccountDataSerializer.java             |   333 -
 .../service/AccountReadPlatformService.java     |    34 -
 .../service/AccountsCommandsService.java        |    25 -
 .../ShareAccountCommandsServiceImpl.java        |   136 -
 .../ShareAccountReadPlatformServiceImpl.java    |    53 -
 .../ShareAccountWritePlatformService.java       |    30 -
 ...ntWritePlatformServiceJpaRepositoryImpl.java |    85 -
 .../portfolio/calendar/CalendarConstants.java   |    63 -
 .../calendar/api/CalendarsApiResource.java      |   265 -
 .../calendar/command/CalendarCommand.java       |    67 -
 .../portfolio/calendar/data/CalendarData.java   |   350 -
 .../portfolio/calendar/domain/Calendar.java     |   584 -
 .../calendar/domain/CalendarEntityType.java     |   161 -
 .../calendar/domain/CalendarFrequencyType.java  |   149 -
 .../calendar/domain/CalendarHistory.java        |   145 -
 .../domain/CalendarHistoryRepository.java       |    26 -
 .../calendar/domain/CalendarInstance.java       |    74 -
 .../domain/CalendarInstanceRepository.java      |    65 -
 .../CalendarInstanceRepositoryWrapper.java      |    65 -
 .../calendar/domain/CalendarRemindBy.java       |    81 -
 .../calendar/domain/CalendarRepository.java     |    26 -
 .../domain/CalendarRepositoryWrapper.java       |    64 -
 .../portfolio/calendar/domain/CalendarType.java |    86 -
 .../calendar/domain/CalendarWeekDaysType.java   |   103 -
 .../exception/CalendarDateException.java        |    31 -
 ...CalendarEntityTypeNotSupportedException.java |    29 -
 .../CalendarInstanceNotFoundException.java      |    36 -
 .../exception/CalendarNotFoundException.java    |    31 -
 ...darParameterUpdateNotSupportedException.java |    32 -
 .../MeetingFrequencyMismatchException.java      |    31 -
 .../NotValidRecurringDateException.java         |    31 -
 .../handler/CreateCalendarCommandHandler.java   |    47 -
 .../handler/DeleteCalendarCommandHandler.java   |    46 -
 .../handler/UpdateCalendarCommandHandler.java   |    48 -
 .../CalendarCommandFromApiJsonDeserializer.java |   335 -
 .../CalendarDropdownReadPlatformService.java    |    37 -
 ...CalendarDropdownReadPlatformServiceImpl.java |    58 -
 .../calendar/service/CalendarEnumerations.java  |   123 -
 .../service/CalendarReadPlatformService.java    |    53 -
 .../CalendarReadPlatformServiceImpl.java        |   468 -
 .../calendar/service/CalendarUtils.java         |   537 -
 .../service/CalendarWritePlatformService.java   |    35 -
 ...arWritePlatformServiceJpaRepositoryImpl.java |   361 -
 .../charge/api/ChargesApiConstants.java         |    25 -
 .../charge/api/ChargesApiResource.java          |   165 -
 .../portfolio/charge/data/ChargeData.java       |   268 -
 .../portfolio/charge/domain/Charge.java         |   589 -
 .../charge/domain/ChargeAppliesTo.java          |    82 -
 .../charge/domain/ChargeCalculationType.java    |   117 -
 .../charge/domain/ChargePaymentMode.java        |    62 -
 .../charge/domain/ChargeRepository.java         |    26 -
 .../charge/domain/ChargeRepositoryWrapper.java  |    56 -
 .../portfolio/charge/domain/ChargeTimeType.java |   182 -
 .../ChargeCannotBeAppliedToException.java       |    30 -
 .../ChargeCannotBeDeletedException.java         |    31 -
 .../ChargeCannotBeUpdatedException.java         |    31 -
 ...eAtDisbursementCannotBePenaltyException.java |    32 -
 .../exception/ChargeIsNotActiveException.java   |    31 -
 .../exception/ChargeMustBePenaltyException.java |    32 -
 .../exception/ChargeNotFoundException.java      |    28 -
 ...rgeParameterUpdateNotSupportedException.java |    32 -
 .../LoanChargeCannotBeAddedException.java       |    34 -
 .../LoanChargeCannotBeDeletedException.java     |    51 -
 .../LoanChargeCannotBePayedException.java       |    60 -
 .../LoanChargeCannotBeUpdatedException.java     |    51 -
 .../LoanChargeCannotBeWaivedException.java      |    56 -
 .../exception/LoanChargeNotFoundException.java  |    38 -
 ...oanChargeWithoutMandatoryFieldException.java |    34 -
 ...ngsAccountChargeCannotBeWaivedException.java |    56 -
 .../SavingsAccountChargeNotFoundException.java  |    38 -
 ...untChargeWithoutMandatoryFieldException.java |    34 -
 .../CreateChargeDefinitionCommandHandler.java   |    47 -
 .../DeleteChargeDefinitionCommandHandler.java   |    47 -
 .../UpdateChargeDefinitionCommandHandler.java   |    47 -
 ...efinitionCommandFromApiJsonDeserializer.java |   343 -
 .../ChargeDropdownReadPlatformService.java      |    45 -
 .../ChargeDropdownReadPlatformServiceImpl.java  |   117 -
 .../charge/service/ChargeEnumerations.java      |   170 -
 .../service/ChargeReadPlatformService.java      |   120 -
 .../service/ChargeReadPlatformServiceImpl.java  |   406 -
 .../service/ChargeWritePlatformService.java     |    31 -
 ...geWritePlatformServiceJpaRepositoryImpl.java |   242 -
 .../client/api/ClientApiConstants.java          |   242 -
 .../client/api/ClientChargesApiResource.java    |   223 -
 .../api/ClientIdentifiersApiResource.java       |   205 -
 .../api/ClientTransactionsApiResource.java      |   131 -
 .../client/api/ClientsApiResource.java          |   307 -
 .../client/command/ClientIdentifierCommand.java |    84 -
 .../client/command/ClientNoteCommand.java       |    49 -
 .../portfolio/client/data/ClientChargeData.java |   149 -
 .../client/data/ClientChargeDataValidator.java  |   125 -
 .../portfolio/client/data/ClientData.java       |   458 -
 .../client/data/ClientDataValidator.java        |   723 -
 .../client/data/ClientIdentifierData.java       |    60 -
 .../client/data/ClientNonPersonData.java        |    46 -
 .../client/data/ClientTimelineData.java         |    70 -
 .../client/data/ClientTransactionData.java      |    74 -
 .../client/domain/AccountNumberGenerator.java   |   122 -
 .../portfolio/client/domain/Client.java         |   963 -
 .../portfolio/client/domain/ClientCharge.java   |   315 -
 .../client/domain/ClientChargePaidBy.java       |    82 -
 .../client/domain/ClientChargeRepository.java   |    26 -
 .../domain/ClientChargeRepositoryWrapper.java   |    60 -
 .../client/domain/ClientEnumerations.java       |   106 -
 .../client/domain/ClientIdentifier.java         |   112 -
 .../domain/ClientIdentifierRepository.java      |    26 -
 .../client/domain/ClientNonPerson.java          |   208 -
 .../domain/ClientNonPersonRepository.java       |    30 -
 .../ClientNonPersonRepositoryWrapper.java       |    73 -
 .../client/domain/ClientRepository.java         |    26 -
 .../client/domain/ClientRepositoryWrapper.java  |    70 -
 .../portfolio/client/domain/ClientStatus.java   |   114 -
 .../client/domain/ClientTransaction.java        |   234 -
 .../domain/ClientTransactionRepository.java     |    26 -
 .../ClientTransactionRepositoryWrapper.java     |    60 -
 .../client/domain/ClientTransactionType.java    |    84 -
 .../portfolio/client/domain/LegalForm.java      |    67 -
 .../ClientActiveForUpdateException.java         |    30 -
 .../ClientChargeNotFoundException.java          |    34 -
 .../exception/ClientHasBeenClosedException.java |    29 -
 .../exception/ClientHasNoStaffException.java    |    29 -
 .../ClientIdentifierNotFoundException.java      |    32 -
 ...ClientMustBePendingToBeDeletedException.java |    32 -
 ...entNonPersonNotFoundByClientIdException.java |    31 -
 .../ClientNonPersonNotFoundException.java       |    32 -
 .../exception/ClientNotActiveException.java     |    29 -
 .../exception/ClientNotFoundException.java      |    31 -
 ...lientTransactionCannotBeUndoneException.java |    32 -
 .../ClientTransactionNotFoundException.java     |    31 -
 .../DuplicateClientIdentifierException.java     |    66 -
 .../exception/ImageNotFoundException.java       |    29 -
 .../InvalidClientSavingProductException.java    |    34 -
 .../InvalidClientStateTransitionException.java  |    35 -
 .../handler/ActivateClientCommandHandler.java   |    47 -
 .../AssignClientStaffCommandHandler.java        |    47 -
 .../handler/CloseClientCommandHandler.java      |    47 -
 .../CreateClientChargeCommandHandler.java       |    47 -
 .../handler/CreateClientCommandHandler.java     |    47 -
 .../CreateClientIdentifierCommandHandler.java   |    47 -
 .../DeleteClientChargeCommandHandler.java       |    47 -
 .../handler/DeleteClientCommandHandler.java     |    47 -
 .../DeleteClientIdentifierCommandHandler.java   |    48 -
 .../handler/PayClientChargeCommandHandler.java  |    48 -
 .../handler/ReActivateClientCommandHandler.java |    48 -
 .../handler/RejectClientCommandHandler.java     |    48 -
 .../UnassignClientStaffCommandHandler.java      |    47 -
 .../UndoClientTransactionCommandHandler.java    |    47 -
 .../handler/UpdateClientCommandHandler.java     |    47 -
 .../UpdateClientIdentifierCommandHandler.java   |    46 -
 ...pdateClientSavingsAccountCommandHandler.java |    47 -
 .../WaiveClientChargeCommandHandler.java        |    48 -
 .../handler/WithdrawClientCommandHandler.java   |    49 -
 ...dentifierCommandFromApiJsonDeserializer.java |    73 -
 .../ClientChargeReadPlatformService.java        |    31 -
 .../ClientChargeReadPlatformServiceImpl.java    |   170 -
 .../ClientChargeWritePlatformService.java       |    45 -
 ...geWritePlatformServiceJpaRepositoryImpl.java |   437 -
 .../ClientIdentifierReadPlatformService.java    |    31 -
 ...ClientIdentifierReadPlatformServiceImpl.java |   118 -
 .../ClientIdentifierWritePlatformService.java   |    31 -
 ...erWritePlatformServiceJpaRepositoryImpl.java |   197 -
 .../service/ClientReadPlatformService.java      |    48 -
 .../service/ClientReadPlatformServiceImpl.java  |   766 -
 .../ClientTransactionReadPlatformService.java   |    39 -
 ...lientTransactionReadPlatformServiceImpl.java |   182 -
 .../ClientTransactionWritePlatformService.java  |    29 -
 ...onWritePlatformServiceJpaRepositoryImpl.java |   103 -
 .../service/ClientWritePlatformService.java     |    48 -
 ...ntWritePlatformServiceJpaRepositoryImpl.java |   823 -
 .../client/service/LoanStatusMapper.java        |    56 -
 .../collateral/api/CollateralApiConstants.java  |    60 -
 .../collateral/api/CollateralsApiResource.java  |   172 -
 .../collateral/command/CollateralCommand.java   |    88 -
 .../collateral/data/CollateralData.java         |    73 -
 .../collateral/domain/LoanCollateral.java       |   150 -
 .../domain/LoanCollateralRepository.java        |    27 -
 .../CollateralCannotBeCreatedException.java     |    43 -
 .../CollateralCannotBeDeletedException.java     |    44 -
 .../CollateralCannotBeUpdatedException.java     |    43 -
 .../exception/CollateralNotFoundException.java  |    36 -
 .../handler/CreateCollateralCommandHandler.java |    46 -
 .../handler/DeleteCollateralCommandHandler.java |    46 -
 .../handler/UpdateCollateralCommandHandler.java |    46 -
 ...ollateralCommandFromApiJsonDeserializer.java |    77 -
 .../collateral/service/CollateralAssembler.java |    93 -
 .../service/CollateralReadPlatformService.java  |    39 -
 .../CollateralReadPlatformServiceImpl.java      |   127 -
 .../service/CollateralWritePlatformService.java |    31 -
 ...alWritePlatformServiceJpaRepositoryImpl.java |   192 -
 .../CollectionSheetConstants.java               |    68 -
 .../api/CollectionSheetApiResourse.java         |   102 -
 .../CollectionSheetBulkDisbursalCommand.java    |    51 -
 .../CollectionSheetBulkRepaymentCommand.java    |    51 -
 .../command/SingleDisbursalCommand.java         |    52 -
 .../command/SingleRepaymentCommand.java         |    59 -
 ...CollectionSheetTransactionDataValidator.java |   244 -
 .../data/IndividualClientData.java              |   109 -
 .../data/IndividualCollectionSheetData.java     |    51 -
 .../IndividualCollectionSheetLoanFlatData.java  |   131 -
 .../collectionsheet/data/JLGClientData.java     |   116 -
 .../data/JLGCollectionSheetData.java            |    80 -
 .../data/JLGCollectionSheetFlatData.java        |   177 -
 .../collectionsheet/data/JLGGroupData.java      |    99 -
 .../collectionsheet/data/LoanDueData.java       |   111 -
 .../collectionsheet/data/SavingsDueData.java    |    68 -
 ...IndividualCollectionSheetCommandHandler.java |    48 -
 .../UpdateCollectionSheetCommandHandler.java    |    48 -
 ...DisbursalCommandFromApiJsonDeserializer.java |    84 -
 ...RepaymentCommandFromApiJsonDeserializer.java |   106 -
 ...tGenerateCommandFromApiJsonDeserializer.java |   123 -
 .../CollectionSheetReadPlatformService.java     |    33 -
 .../CollectionSheetReadPlatformServiceImpl.java |   861 -
 .../CollectionSheetWritePlatformService.java    |    29 -
 ...etWritePlatformServiceJpaRepositoryImpl.java |   171 -
 .../BusinessEventNotificationConstants.java     |    73 -
 .../portfolio/common/domain/ConditionType.java  |    97 -
 .../portfolio/common/domain/DayOfWeekType.java  |    82 -
 .../common/domain/DaysInMonthType.java          |    83 -
 .../portfolio/common/domain/DaysInYearType.java |    93 -
 .../portfolio/common/domain/NthDayType.java     |    72 -
 .../common/domain/PeriodFrequencyType.java      |    99 -
 .../common/service/BusinessEventListner.java    |    43 -
 .../service/BusinessEventNotifierService.java   |    57 -
 .../BusinessEventNotifierServiceImpl.java       |   116 -
 .../common/service/CommonEnumerations.java      |   167 -
 .../service/DropdownReadPlatformService.java    |    34 -
 .../DropdownReadPlatformServiceImpl.java        |    71 -
 .../api/FloatingRatesApiResource.java           |   142 -
 .../floatingrates/data/FloatingRateDTO.java     |    75 -
 .../floatingrates/data/FloatingRateData.java    |   145 -
 .../data/FloatingRatePeriodData.java            |   135 -
 .../data/InterestRatePeriodData.java            |    94 -
 .../floatingrates/domain/FloatingRate.java      |   282 -
 .../domain/FloatingRatePeriod.java              |   164 -
 .../domain/FloatingRateRepository.java          |    41 -
 .../domain/FloatingRateRepositoryWrapper.java   |    56 -
 .../FloatingRateNotFoundException.java          |    34 -
 .../CreateFloatingRateCommandHandler.java       |    48 -
 .../UpdateFloatingRateCommandHandler.java       |    48 -
 .../FloatingRateDataValidator.java              |   327 -
 .../FloatingRateWritePlatformService.java       |    29 -
 .../FloatingRateWritePlatformServiceImpl.java   |   137 -
 .../FloatingRatesReadPlatformService.java       |    40 -
 .../FloatingRatesReadPlatformServiceImpl.java   |   294 -
 .../portfolio/fund/api/FundsApiResource.java    |   132 -
 .../fineract/portfolio/fund/data/FundData.java  |    44 -
 .../fineract/portfolio/fund/domain/Fund.java    |    84 -
 .../portfolio/fund/domain/FundRepository.java   |    26 -
 .../fund/exception/FundNotFoundException.java   |    31 -
 .../fund/handler/CreateFundCommandHandler.java  |    47 -
 .../fund/handler/UpdateFundCommandHandler.java  |    47 -
 .../FundCommandFromApiJsonDeserializer.java     |   103 -
 .../fund/service/FundReadPlatformService.java   |    30 -
 .../service/FundReadPlatformServiceImpl.java    |    93 -
 .../fund/service/FundWritePlatformService.java  |    29 -
 ...ndWritePlatformServiceJpaRepositoryImpl.java |   124 -
 .../portfolio/group/api/CentersApiResource.java |   331 -
 .../group/api/GroupingTypesApiConstants.java    |   127 -
 .../portfolio/group/api/GroupsApiResource.java  |   432 -
 .../group/api/GroupsLevelApiResource.java       |    79 -
 .../portfolio/group/data/CenterData.java        |   185 -
 .../portfolio/group/data/GroupGeneralData.java  |   259 -
 .../portfolio/group/data/GroupLevelData.java    |    87 -
 .../portfolio/group/data/GroupRoleData.java     |    45 -
 .../portfolio/group/data/GroupSummary.java      |    56 -
 .../portfolio/group/data/GroupTimelineData.java |    67 -
 .../portfolio/group/data/StaffCenterData.java   |    47 -
 .../fineract/portfolio/group/domain/Group.java  |   743 -
 .../portfolio/group/domain/GroupLevel.java      |    98 -
 .../group/domain/GroupLevelRepository.java      |    30 -
 .../portfolio/group/domain/GroupRepository.java |    29 -
 .../group/domain/GroupRepositoryWrapper.java    |    65 -
 .../portfolio/group/domain/GroupRole.java       |    91 -
 .../group/domain/GroupRoleRepository.java       |    26 -
 .../domain/GroupRoleRepositoryWrapper.java      |    53 -
 .../portfolio/group/domain/GroupTypes.java      |    89 -
 .../group/domain/GroupingTypeEnumerations.java  |    61 -
 .../group/domain/GroupingTypeStatus.java        |    93 -
 .../group/domain/StaffAssignmentHistory.java    |    94 -
 .../exception/CenterNotActiveException.java     |    29 -
 .../exception/CenterNotFoundException.java      |    32 -
 .../exception/ClientExistInGroupException.java  |    30 -
 .../exception/ClientNotInGroupException.java    |    35 -
 .../exception/GroupAccountExistsException.java  |    29 -
 .../exception/GroupExistsInCenterException.java |    30 -
 .../exception/GroupHasNoStaffException.java     |    32 -
 .../exception/GroupLevelNotFoundException.java  |    32 -
 ...mberCountNotInPermissibleRangeException.java |    30 -
 .../GroupMustBePendingToBeDeletedException.java |    32 -
 .../exception/GroupNotActiveException.java      |    29 -
 .../GroupNotExistsInCenterException.java        |    30 -
 .../group/exception/GroupNotFoundException.java |    32 -
 .../exception/GroupRoleNotFoundException.java   |    28 -
 .../exception/InvalidGroupLevelException.java   |    34 -
 .../InvalidGroupStateTransitionException.java   |    30 -
 .../handler/ActivateCenterCommandHandler.java   |    47 -
 .../handler/ActivateGroupCommandHandler.java    |    47 -
 .../handler/AssignGroupStaffCommandHandler.java |    46 -
 .../group/handler/AssignRoleCommandHandler.java |    47 -
 .../AssociateClientsToGroupCommandHandler.java  |    47 -
 .../AssociateGroupsToCenterCommandHandler.java  |    47 -
 .../handler/CloseCenterCommandHandler.java      |    47 -
 .../group/handler/CloseGroupCommandHandler.java |    47 -
 .../handler/CreateCenterCommandHandler.java     |    46 -
 .../handler/CreateGroupCommandHandler.java      |    48 -
 .../handler/DeleteCenterCommandHandler.java     |    46 -
 .../handler/DeleteGroupCommandHandler.java      |    46 -
 ...associateClientsFromGroupCommandHandler.java |    46 -
 ...associateGroupsFromCenterCommandHandler.java |    47 -
 ...SaveCenterCollectionSheetCommandHandler.java |    47 -
 .../SaveGroupCollectionSheetCommandHandler.java |    47 -
 .../UnassignGroupStaffCommandHandler.java       |    46 -
 .../handler/UnassignRoleCommandHandler.java     |    47 -
 .../UnassignStaffFromCenterCommandHandler.java  |    44 -
 .../handler/UpdateCenterCommandHandler.java     |    47 -
 .../handler/UpdateGroupCommandHandler.java      |    47 -
 .../handler/UpdateGroupRoleCommandHandler.java  |    47 -
 .../serialization/GroupRolesDataValidator.java  |   107 -
 .../GroupingTypesDataValidator.java             |   537 -
 .../group/service/AllGroupTypesDataMapper.java  |   120 -
 .../service/CenterReadPlatformService.java      |    50 -
 .../service/CenterReadPlatformServiceImpl.java  |   564 -
 .../service/GroupLevelReadPlatformService.java  |    29 -
 .../GroupLevelReadPlatformServiceImpl.java      |    84 -
 .../group/service/GroupReadPlatformService.java |    41 -
 .../service/GroupReadPlatformServiceImpl.java   |   300 -
 .../service/GroupRolesReadPlatformService.java  |    30 -
 .../GroupRolesReadPlatformServiceImpl.java      |    89 -
 .../service/GroupRolesWritePlatformService.java |    32 -
 ...esWritePlatformServiceJpaRepositoryImpl.java |   165 -
 .../group/service/GroupTypeEnumerations.java    |    47 -
 .../GroupingTypesWritePlatformService.java      |    53 -
 ...esWritePlatformServiceJpaRepositoryImpl.java |   939 -
 .../InterestIncentiveApiConstants.java          |    50 -
 .../InterestRateChartApiConstants.java          |    75 -
 .../InterestRateChartSlabApiConstants.java      |    62 -
 .../api/InterestRateChartSlabsApiResource.java  |   153 -
 .../api/InterestRateChartsApiResource.java      |   165 -
 .../data/InterestIncentiveData.java             |    88 -
 .../data/InterestIncentiveDataValidator.java    |   173 -
 .../data/InterestRateChartData.java             |   198 -
 .../data/InterestRateChartDataValidator.java    |   189 -
 .../data/InterestRateChartRepository.java       |    27 -
 .../InterestRateChartRepositoryWrapper.java     |    66 -
 .../data/InterestRateChartSlabData.java         |   209 -
 .../InterestRateChartSlabDataValidator.java     |   248 -
 .../data/InterestRateChartSlabRepository.java   |    27 -
 .../InterestRateChartSlabRepositoryWrapper.java |    66 -
 .../domain/InterestIncentives.java              |    82 -
 .../domain/InterestIncentivesFields.java        |   177 -
 .../domain/InterestRateChart.java               |   276 -
 .../domain/InterestRateChartFields.java         |   163 -
 .../domain/InterestRateChartSlab.java           |   195 -
 .../domain/InterestRateChartSlabFields.java     |   242 -
 .../InterestRateChartNotFoundException.java     |    28 -
 .../InterestRateChartSlabNotFoundException.java |    32 -
 .../CreateInterestRateChartCommandHandler.java  |    44 -
 ...eateInterestRateChartSlabCommandHandler.java |    44 -
 .../DeleteInterestRateChartCommandHandler.java  |    44 -
 ...leteInterestRateChartSlabCommandHandler.java |    45 -
 .../UpdateInterestRateChartCommandHandler.java  |    44 -
 ...dateInterestRateChartSlabCommandHandler.java |    45 -
 .../AttributeIncentiveCalculation.java          |    51 -
 .../AttributeIncentiveCalculationFactory.java   |    35 -
 .../ClientAttributeIncentiveCalculation.java    |    85 -
 .../incentive/IncentiveDTO.java                 |    49 -
 .../InterestIncentiveAttributeName.java         |   112 -
 .../incentive/InterestIncentiveEntityType.java  |    83 -
 .../incentive/InterestIncentiveType.java        |    88 -
 .../service/InterestIncentiveAssembler.java     |   104 -
 ...estIncentiveDropdownReadPlatformService.java |    34 -
 ...centivesDropdownReadPlatformServiceImpl.java |    54 -
 .../service/InterestIncentivesEnumerations.java |   141 -
 .../service/InterestRateChartAssembler.java     |   107 -
 ...estRateChartDropdownReadPlatformService.java |    28 -
 ...ateChartDropdownReadPlatformServiceImpl.java |    35 -
 .../service/InterestRateChartEnumerations.java  |    70 -
 .../InterestRateChartReadPlatformService.java   |    46 -
 ...nterestRateChartReadPlatformServiceImpl.java |   401 -
 .../service/InterestRateChartSlabAssembler.java |   150 -
 ...nterestRateChartSlabReadPlatformService.java |    35 -
 ...estRateChartSlabReadPlatformServiceImpl.java |   258 -
 ...terestRateChartSlabWritePlatformService.java |    31 -
 ...abWritePlatformServiceJpaRepositoryImpl.java |   119 -
 .../InterestRateChartWritePlatformService.java  |    31 -
 ...rtWritePlatformServiceJpaRepositoryImpl.java |   105 -
 .../loanaccount/api/BulkLoansApiResource.java   |   129 -
 .../loanaccount/api/LoanApiConstants.java       |    77 -
 .../loanaccount/api/LoanChargesApiResource.java |   214 -
 .../api/LoanDisbursementDetailApiResource.java  |   120 -
 .../api/LoanScheduleApiResource.java            |   102 -
 .../api/LoanTransactionsApiResource.java        |   214 -
 .../loanaccount/api/LoansApiResource.java       |   703 -
 .../loanaccount/command/LoanChargeCommand.java  |    60 -
 .../loanaccount/command/LoanUpdateCommand.java  |    51 -
 .../command/UndoStateTransitionCommand.java     |    41 -
 .../command/UpdateLoanOfficerCommand.java       |    86 -
 .../loanaccount/data/DisbursementData.java      |    86 -
 .../loanaccount/data/HolidayDetailDTO.java      |    70 -
 .../loanaccount/data/LoanAccountData.java       |  1515 -
 .../data/LoanApplicationTimelineData.java       |   151 -
 .../loanaccount/data/LoanApprovalData.java      |    46 -
 .../loanaccount/data/LoanBorrowerCycleData.java |    42 -
 .../loanaccount/data/LoanChargeData.java        |   411 -
 .../loanaccount/data/LoanChargePaidByData.java  |    60 -
 .../loanaccount/data/LoanChargePaidDetail.java  |    51 -
 .../loanaccount/data/LoanConvenienceData.java   |    70 -
 .../data/LoanInstallmentChargeData.java         |   106 -
 .../data/LoanInterestRecalculationData.java     |    76 -
 .../data/LoanScheduleAccrualData.java           |   194 -
 .../loanaccount/data/LoanStatusEnumData.java    |    64 -
 .../loanaccount/data/LoanSummaryData.java       |   122 -
 .../data/LoanTermVariationsData.java            |   117 -
 .../data/LoanTermVariationsDataWrapper.java     |   123 -
 .../loanaccount/data/LoanTransactionData.java   |   227 -
 .../data/LoanTransactionEnumData.java           |   153 -
 .../loanaccount/data/PaidInAdvanceData.java     |    36 -
 .../data/RepaymentScheduleRelatedLoanData.java  |    80 -
 .../loanaccount/data/ScheduleGeneratorDTO.java  |   103 -
 .../domain/ChangedTransactionDetail.java        |    38 -
 .../DefaultLoanLifecycleStateMachine.java       |   139 -
 .../portfolio/loanaccount/domain/Loan.java      |  5680 ---
 .../domain/LoanAccountDomainService.java        |    59 -
 .../domain/LoanAccountDomainServiceJpa.java     |   561 -
 .../loanaccount/domain/LoanCharge.java          |   989 -
 .../loanaccount/domain/LoanChargePaidBy.java    |    90 -
 .../domain/LoanChargePaidByRepository.java      |    26 -
 .../domain/LoanChargeRepository.java            |    26 -
 .../domain/LoanDisbursementDetails.java         |   134 -
 .../portfolio/loanaccount/domain/LoanEvent.java |    46 -
 .../domain/LoanInstallmentCharge.java           |   291 -
 .../LoanInterestRecalculationDetails.java       |   194 -
 .../domain/LoanLifecycleStateMachine.java       |    24 -
 .../domain/LoanOfficerAssignmentHistory.java    |   117 -
 .../domain/LoanOverdueInstallmentCharge.java    |    63 -
 .../domain/LoanRepaymentDataComparator.java     |    31 -
 .../LoanRepaymentScheduleInstallment.java       |   773 -
 ...nRepaymentScheduleInstallmentRepository.java |    27 -
 .../LoanRepaymentScheduleProcessingWrapper.java |   250 -
 ...mentScheduleTransactionProcessorFactory.java |    73 -
 .../loanaccount/domain/LoanRepository.java      |   148 -
 .../domain/LoanRepositoryWrapper.java           |    58 -
 .../loanaccount/domain/LoanStatus.java          |   155 -
 .../loanaccount/domain/LoanSummary.java         |   343 -
 .../loanaccount/domain/LoanSummaryWrapper.java  |   248 -
 .../domain/LoanTermVariationType.java           |    96 -
 .../loanaccount/domain/LoanTermVariations.java  |   139 -
 .../domain/LoanTermVariationsComparator.java    |    47 -
 .../loanaccount/domain/LoanTrancheCharge.java   |    64 -
 .../domain/LoanTrancheDisbursementCharge.java   |    53 -
 .../loanaccount/domain/LoanTransaction.java     |   734 -
 .../domain/LoanTransactionComparator.java       |    60 -
 ...TransactionProcessingStrategyRepository.java |    28 -
 .../domain/LoanTransactionRepository.java       |    26 -
 ...anTransactionToRepaymentScheduleMapping.java |   158 -
 .../loanaccount/domain/LoanTransactionType.java |   175 -
 .../domain/TransactionProccessingResult.java    |    40 -
 ...anRepaymentScheduleTransactionProcessor.java |   626 -
 ...anRepaymentScheduleTransactionProcessor.java |    55 -
 ...anRepaymentScheduleTransactionProcessor.java |   189 -
 ...anRepaymentScheduleTransactionProcessor.java |   206 -
 ...anRepaymentScheduleTransactionProcessor.java |   184 -
 ...anRepaymentScheduleTransactionProcessor.java |   250 -
 ...anRepaymentScheduleTransactionProcessor.java |   167 -
 ...anRepaymentScheduleTransactionProcessor.java |   171 -
 ...anRepaymentScheduleTransactionProcessor.java |   302 -
 .../ExceedingTrancheCountException.java         |    29 -
 .../InvalidLoanStateTransitionException.java    |    33 -
 .../InvalidLoanTransactionTypeException.java    |    33 -
 .../InvalidPaidInAdvanceAmountException.java    |    34 -
 .../exception/InvalidRefundDateException.java   |    33 -
 .../exception/LoanApplicationDateException.java |    29 -
 ...dAndPendingApprovalStateCannotBeDeleted.java |    34 -
 ...AndPendingApprovalStateCannotBeModified.java |    34 -
 .../exception/LoanDisbursalException.java       |    33 -
 .../LoanMultiDisbursementException.java         |    29 -
 .../exception/LoanNotFoundException.java        |    31 -
 .../LoanOfficerAssignmentDateException.java     |    29 -
 .../LoanOfficerAssignmentException.java         |    35 -
 .../LoanOfficerUnassignmentDateException.java   |    29 -
 .../LoanOfficerUnassignmentException.java       |    29 -
 .../LoanTemplateTypeRequiredException.java      |    32 -
 .../LoanTransactionNotFoundException.java       |    36 -
 ...tionProcessingStrategyNotFoundException.java |    33 -
 ...rsalAndFirstRepaymentViolationException.java |    39 -
 .../MultiDisbursementDataRequiredException.java |    30 -
 .../NotSupportedLoanTemplateTypeException.java  |    32 -
 .../UndoLastTrancheDisbursementException.java   |    31 -
 .../guarantor/GuarantorConstants.java           |    70 -
 .../guarantor/api/GuarantorsApiResource.java    |   215 -
 .../guarantor/command/GuarantorCommand.java     |   226 -
 .../guarantor/data/GuarantorDTO.java            |    32 -
 .../guarantor/data/GuarantorData.java           |   154 -
 .../guarantor/data/GuarantorFundingData.java    |    65 -
 .../data/GuarantorTransactionData.java          |    49 -
 .../loanaccount/guarantor/domain/Guarantor.java |   369 -
 .../domain/GuarantorFundStatusType.java         |    91 -
 .../domain/GuarantorFundingDetails.java         |   145 -
 .../domain/GuarantorFundingRepository.java      |    25 -
 .../domain/GuarantorFundingTransaction.java     |    74 -
 .../GuarantorFundingTransactionRepository.java  |    34 -
 .../guarantor/domain/GuarantorRepository.java   |    32 -
 .../guarantor/domain/GuarantorType.java         |    89 -
 .../exception/DuplicateGuarantorException.java  |    30 -
 .../exception/GuarantorNotFoundException.java   |    41 -
 .../exception/InvalidGuarantorException.java    |    39 -
 .../handler/CreateGuarantorCommandHandler.java  |    47 -
 .../handler/DeleteGuarantorCommandHandler.java  |    46 -
 .../handler/UpdateGuarantorCommandHandler.java  |    46 -
 ...GuarantorCommandFromApiJsonDeserializer.java |   103 -
 .../service/GuarantorDomainService.java         |    35 -
 .../service/GuarantorDomainServiceImpl.java     |   652 -
 .../service/GuarantorEnumerations.java          |    58 -
 .../service/GuarantorReadPlatformService.java   |    46 -
 .../GuarantorReadPlatformServiceImpl.java       |   294 -
 .../service/GuarantorWritePlatformService.java  |    32 -
 ...rWritePlatformServiceJpaRepositoryIImpl.java |   332 -
 ...DeleteLoanDisburseDetailsCommandHandler.java |    45 -
 .../handler/AddLoanChargeCommandHandler.java    |    47 -
 .../BulkUpdateLoanOfficerCommandHandler.java    |    47 -
 .../CloseLoanAsRescheduledCommandHandler.java   |    47 -
 .../handler/CloseLoanCommandHandler.java        |    47 -
 .../handler/DeleteLoanChargeCommandHandler.java |    47 -
 .../handler/DisburseLoanCommandHandler.java     |    47 -
 .../DisburseLoanToSavingsCommandHandler.java    |    47 -
 .../LoanApplicationApprovalCommandHandler.java  |    47 -
 ...anApplicationApprovalUndoCommandHandler.java |    47 -
 .../LoanApplicationDeletionCommandHandler.java  |    47 -
 ...anApplicationModificationCommandHandler.java |    47 -
 .../LoanApplicationRejectedCommandHandler.java  |    47 -
 .../LoanApplicationSubmittalCommandHandler.java |    47 -
 ...ationWithdrawnByApplicantCommandHandler.java |    47 -
 .../LoanRecoveryPaymentCommandHandler.java      |    45 -
 .../handler/LoanRefundByCashCommandHandler.java |    47 -
 .../LoanRepaymentAdjustmentCommandHandler.java  |    47 -
 .../handler/LoanRepaymentCommandHandler.java    |    47 -
 ...anScheduleCreateVariationCommandHandler.java |    45 -
 ...anScheduleDeleteVariationCommandHandler.java |    45 -
 .../handler/PayLoanChargeCommandHandler.java    |    46 -
 .../RecoverFromGuarantorCommandHandler.java     |    45 -
 .../RemoveLoanOfficerCommandHandler.java        |    47 -
 .../UndoDisbursalLoanCommandHandler.java        |    47 -
 .../UndoLastDisbursalLoanCommandHandler.java    |    47 -
 .../handler/UndoWriteOffLoanCommandHandler.java |    47 -
 .../handler/UpdateLoanChargeCommandHandler.java |    47 -
 .../UpdateLoanDisbuseDateCommandHandler.java    |    45 -
 .../UpdateLoanOfficerCommandHandler.java        |    47 -
 ...aiveInterestPortionOnLoanCommandHandler.java |    47 -
 .../handler/WaiveLoanChargeCommandHandler.java  |    47 -
 .../handler/WriteOffLoanCommandHandler.java     |    47 -
 .../loanschedule/data/LoanScheduleDTO.java      |    51 -
 .../loanschedule/data/LoanScheduleData.java     |   119 -
 .../loanschedule/data/LoanScheduleParams.java   |   449 -
 .../data/LoanSchedulePeriodData.java            |   453 -
 .../data/OverdueLoanScheduleData.java           |    85 -
 .../domain/AbstractLoanScheduleGenerator.java   |  2665 -
 .../loanschedule/domain/AprCalculator.java      |    50 -
 ...ingBalanceInterestLoanScheduleGenerator.java |   167 -
 .../DefaultLoanScheduleGeneratorFactory.java    |    46 -
 ...efaultPaymentPeriodsInOneYearCalculator.java |    97 -
 .../domain/DefaultScheduledDateGenerator.java   |   238 -
 .../loanschedule/domain/FinanicalFunctions.java |    67 -
 .../FlatInterestLoanScheduleGenerator.java      |    62 -
 .../domain/LoanApplicationTerms.java            |  1425 -
 .../domain/LoanRepaymentScheduleHistory.java    |   137 -
 .../LoanRepaymentScheduleHistoryRepository.java |    26 -
 .../domain/LoanScheduleGenerator.java           |    58 -
 .../domain/LoanScheduleGeneratorFactory.java    |    26 -
 .../loanschedule/domain/LoanScheduleModel.java  |   123 -
 .../LoanScheduleModelDisbursementPeriod.java    |   125 -
 .../domain/LoanScheduleModelPeriod.java         |    54 -
 .../LoanScheduleModelRepaymentPeriod.java       |   157 -
 .../PaymentPeriodsInOneYearCalculator.java      |    31 -
 .../loanschedule/domain/PrincipalInterest.java  |    46 -
 .../domain/RecalculatedSchedule.java            |    38 -
 .../domain/RecalculationDetail.java             |    50 -
 .../domain/ScheduledDateGenerator.java          |    46 -
 ...tiDisbursementDisbursementDateException.java |    29 -
 .../MultiDisbursementEmiAmountException.java    |    29 -
 ...tiDisbursementOutstandingAmoutException.java |    29 -
 .../exception/ScheduleDateException.java        |    29 -
 .../service/LoanScheduleAssembler.java          |  1021 -
 .../LoanScheduleCalculationPlatformService.java |    32 -
 ...nScheduleCalculationPlatformServiceImpl.java |   286 -
 .../LoanScheduleHistoryReadPlatformService.java |    33 -
 ...nScheduleHistoryReadPlatformServiceImpl.java |   218 -
 ...LoanScheduleHistoryWritePlatformService.java |    37 -
 ...ScheduleHistoryWritePlatformServiceImpl.java |   107 -
 .../LoanScheduleWritePlatformService.java       |    29 -
 .../LoanScheduleWritePlatformServiceImpl.java   |   115 -
 .../RescheduleLoansApiConstants.java            |    66 -
 .../api/RescheduleLoansApiResource.java         |   173 -
 .../data/LoanRescheduleRequestData.java         |   218 -
 .../LoanRescheduleRequestDataValidator.java     |   312 -
 .../data/LoanRescheduleRequestEnumerations.java |    68 -
 .../LoanRescheduleRequestStatusEnumData.java    |    72 -
 .../data/LoanRescheduleRequestTimelineData.java |    64 -
 .../domain/DefaultLoanReschedulerFactory.java   |    61 -
 .../domain/LoanRescheduleModalPeriod.java       |    47 -
 .../domain/LoanRescheduleModel.java             |   118 -
 .../LoanRescheduleModelRepaymentPeriod.java     |   184 -
 .../domain/LoanRescheduleRequest.java           |   351 -
 .../domain/LoanRescheduleRequestRepository.java |    26 -
 .../domain/LoanReschedulerFactory.java          |    36 -
 .../LoanRescheduleRequestNotFoundException.java |    39 -
 ...roveLoanRescheduleRequestCommandHandler.java |    46 -
 ...eateLoanRescheduleRequestCommandHandler.java |    48 -
 ...jectLoanRescheduleRequestCommandHandler.java |    46 -
 .../LoanReschedulePreviewPlatformService.java   |    26 -
 ...oanReschedulePreviewPlatformServiceImpl.java |   151 -
 ...oanRescheduleRequestReadPlatformService.java |    62 -
 ...escheduleRequestReadPlatformServiceImpl.java |   230 -
 ...anRescheduleRequestWritePlatformService.java |    31 -
 ...scheduleRequestWritePlatformServiceImpl.java |   602 -
 ...ulateLoanScheduleQueryFromApiJsonHelper.java |   156 -
 ...LoanApplicationCommandFromApiJsonHelper.java |  1215 -
 ...anApplicationTransitionApiJsonValidator.java |   139 -
 .../LoanEventApiJsonValidator.java              |   449 -
 ...oanUpdateCommandFromApiJsonDeserializer.java |    67 -
 ...ariableLoanScheduleFromApiJsonValidator.java |   164 -
 .../service/BulkLoansReadPlatformService.java   |    26 -
 .../BulkLoansReadPlatformServiceImpl.java       |   123 -
 .../service/LoanAccrualPlatformService.java     |    37 -
 .../service/LoanAccrualPlatformServiceImpl.java |   120 -
 .../LoanAccrualWritePlatformService.java        |    32 -
 .../LoanAccrualWritePlatformServiceImpl.java    |   472 -
 .../LoanApplicationWritePlatformService.java    |    39 -
 ...onWritePlatformServiceJpaRepositoryImpl.java |  1131 -
 .../service/LoanArrearsAgingService.java        |    31 -
 .../service/LoanArrearsAgingServiceImpl.java    |   518 -
 .../loanaccount/service/LoanAssembler.java      |   398 -
 .../service/LoanChargeAssembler.java            |   239 -
 .../service/LoanChargeReadPlatformService.java  |    46 -
 .../LoanChargeReadPlatformServiceImpl.java      |   548 -
 .../service/LoanReadPlatformService.java        |   129 -
 .../service/LoanReadPlatformServiceImpl.java    |  2016 -
 .../service/LoanSchedularService.java           |    30 -
 .../service/LoanSchedularServiceImpl.java       |   186 -
 .../loanaccount/service/LoanUtilService.java    |   186 -
 .../service/LoanWritePlatformService.java       |   109 -
 ...anWritePlatformServiceJpaRepositoryImpl.java |  2846 --
 .../loanproduct/LoanProductConstants.java       |   128 -
 .../api/LoanProductsApiResource.java            |   313 -
 .../loanproduct/data/LoanOverdueDTO.java        |    55 -
 .../LoanProductBorrowerCycleVariationData.java  |    67 -
 .../loanproduct/data/LoanProductData.java       |  1031 -
 .../data/LoanProductGuaranteeData.java          |    54 -
 .../LoanProductInterestRecalculationData.java   |   121 -
 .../data/TransactionProcessingStrategyData.java |    44 -
 .../loanproduct/domain/AmortizationMethod.java  |    68 -
 .../domain/InterestCalculationPeriodMethod.java |    63 -
 .../loanproduct/domain/InterestMethod.java      |    61 -
 .../InterestRecalculationCompoundingMethod.java |    82 -
 .../InterestRecalculationPeriodMethod.java      |    71 -
 .../loanproduct/domain/LendingStrategy.java     |   101 -
 ...anPreClosureInterestCalculationStrategy.java |    89 -
 .../loanproduct/domain/LoanProduct.java         |  1333 -
 .../LoanProductBorrowerCycleVariations.java     |   130 -
 .../LoanProductConfigurableAttributes.java      |   209 -
 .../domain/LoanProductFloatingRates.java        |   161 -
 .../domain/LoanProductGuaranteeDetails.java     |   120 -
 ...LoanProductInterestRecalculationDetails.java |   337 -
 .../domain/LoanProductMinMaxConstraints.java    |   168 -
 ...ctMinimumRepaymentScheduleRelatedDetail.java |    64 -
 .../domain/LoanProductParamType.java            |    77 -
 .../domain/LoanProductRelatedDetail.java        |   614 -
 .../domain/LoanProductRepository.java           |    32 -
 .../domain/LoanProductTrancheDetails.java       |    92 -
 .../domain/LoanProductValueConditionType.java   |    70 -
 .../LoanProductVariableInstallmentConfig.java   |    88 -
 .../domain/LoanRescheduleStrategyMethod.java    |    68 -
 .../LoanTransactionProcessingStrategy.java      |    76 -
 .../domain/RecalculationFrequencyType.java      |    96 -
 .../exception/InvalidCurrencyException.java     |    33 -
 .../exception/InvalidLendingStrategy.java       |    32 -
 .../LinkedAccountRequiredException.java         |    29 -
 ...tBeModifiedDueToNonClosedLoansException.java |    28 -
 .../exception/LoanProductDateException.java     |    30 -
 .../exception/LoanProductNotFoundException.java |    31 -
 .../exception/NotInMinMaxRangeException.java    |    34 -
 .../CreateLoanProductCommandHandler.java        |    47 -
 .../UpdateLoanProductCommandHandler.java        |    47 -
 .../productmix/api/ProductMixApiResource.java   |   142 -
 .../productmix/data/ProductMixData.java         |    62 -
 .../productmix/domain/ProductMix.java           |    62 -
 .../productmix/domain/ProductMixRepository.java |    43 -
 .../exception/ProductMixNotFoundException.java  |    33 -
 .../handler/CreateProductMixCommandHandler.java |    49 -
 .../handler/DeleteProductMixCommandHandler.java |    49 -
 .../handler/UpdateProductMixCommandHandler.java |    49 -
 .../serialization/ProductMixDataValidator.java  |   104 -
 .../service/ProductMixReadPlatformService.java  |    30 -
 .../ProductMixReadPlatformServiceImpl.java      |   131 -
 .../service/ProductMixWritePlatformService.java |    32 -
 ...ixWritePlatformServiceJpaRepositoryImpl.java |   244 -
 .../serialization/LoanProductDataValidator.java |  2022 -
 .../service/LendingStrategyEnumerations.java    |    54 -
 .../LoanDropdownReadPlatformService.java        |    57 -
 .../LoanDropdownReadPlatformServiceImpl.java    |   199 -
 .../loanproduct/service/LoanEnumerations.java   |   664 -
 .../service/LoanProductReadPlatformService.java |    49 -
 .../LoanProductReadPlatformServiceImpl.java     |   581 -
 .../LoanProductWritePlatformService.java        |    29 -
 ...ctWritePlatformServiceJpaRepositoryImpl.java |   328 -
 .../portfolio/meeting/MeetingApiConstants.java  |    57 -
 .../meeting/api/MeetingsApiResource.java        |   276 -
 .../meeting/attendance/AttendanceType.java      |    76 -
 .../attendance/data/ClientAttendanceData.java   |    49 -
 .../attendance/domain/ClientAttendance.java     |    72 -
 .../domain/ClientAttendanceRepository.java      |    26 -
 .../AttendanceDropdownReadPlatformService.java  |    28 -
 ...tendanceDropdownReadPlatformServiceImpl.java |    35 -
 .../service/AttendanceEnumerations.java         |    72 -
 .../ClientAttendanceReadPlatformService.java    |    28 -
 ...ClientAttendanceReadPlatformServiceImpl.java |    72 -
 .../portfolio/meeting/data/MeetingData.java     |    87 -
 .../meeting/data/MeetingDataValidator.java      |   155 -
 .../portfolio/meeting/domain/Meeting.java       |   199 -
 .../meeting/domain/MeetingRepository.java       |    29 -
 .../domain/MeetingRepositoryWrapper.java        |    64 -
 .../meeting/exception/MeetingDateException.java |    31 -
 .../exception/MeetingNotFoundException.java     |    31 -
 .../MeetingNotSupportedResourceException.java   |    32 -
 .../handler/CreateMeetingCommandHandler.java    |    47 -
 .../handler/DeleteMeetingCommandHandler.java    |    46 -
 .../UpdateMeetingAttendanceCommandHandler.java  |    48 -
 .../handler/UpdateMeetingCommandHandler.java    |    48 -
 .../service/MeetingReadPlatformService.java     |    36 -
 .../service/MeetingReadPlatformServiceImpl.java |   116 -
 .../service/MeetingWritePlatformService.java    |    35 -
 ...ngWritePlatformServiceJpaRepositoryImpl.java |   300 -
 .../portfolio/note/api/NotesApiResource.java    |   214 -
 .../portfolio/note/command/NoteCommand.java     |    33 -
 .../fineract/portfolio/note/data/NoteData.java  |    81 -
 .../fineract/portfolio/note/domain/Note.java    |   152 -
 .../portfolio/note/domain/NoteRepository.java   |    45 -
 .../portfolio/note/domain/NoteType.java         |   105 -
 .../note/exception/NoteNotFoundException.java   |    37 -
 .../NoteResourceNotSupportedException.java      |    31 -
 .../note/handler/CreateNoteCommandHandler.java  |    45 -
 .../note/handler/DeleteNoteCommandHandler.java  |    44 -
 .../note/handler/UpdateNoteCommandHandler.java  |    46 -
 .../NoteCommandFromApiJsonDeserializer.java     |    94 -
 .../note/service/NoteEnumerations.java          |    55 -
 .../note/service/NoteReadPlatformService.java   |    30 -
 .../service/NoteReadPlatformServiceImpl.java    |   138 -
 .../note/service/NoteWritePlatformService.java  |    34 -
 ...teWritePlatformServiceJpaRepositoryImpl.java |   452 -
 .../paymentdetail/PaymentDetailConstants.java   |    44 -
 .../paymentdetail/data/PaymentDetailData.java   |    56 -
 .../paymentdetail/domain/PaymentDetail.java     |   118 -
 .../domain/PaymentDetailAssembler.java          |    55 -
 .../domain/PaymentDetailRepository.java         |    27 -
 .../PaymentDetailWritePlatformService.java      |    33 -
 ...ilWritePlatformServiceJpaRepositoryImpl.java |    71 -
 .../paymenttype/api/PaymentTypeApiResource.java |   138 -
 .../api/PaymentTypeApiResourceConstants.java    |    44 -
 .../paymenttype/data/PaymentTypeData.java       |    53 -
 .../data/PaymentTypeDataValidator.java          |   134 -
 .../paymenttype/domain/PaymentType.java         |    97 -
 .../domain/PaymentTypeRepository.java           |    26 -
 .../domain/PaymentTypeRepositoryWrapper.java    |    41 -
 .../exception/PaymentTypeNotFoundException.java |    32 -
 .../CreatePaymentTypeCommandHandler.java        |    47 -
 .../DeletePaymentTypeCommandHandler.java        |    47 -
 .../UpdatePaymentTypeCommandHandler.java        |    47 -
 .../service/PaymentTypeReadPlatformService.java |    30 -
 .../PaymentTypeReadPlatformServiceImpl.java     |    87 -
 .../service/PaymentTypeWriteService.java        |    31 -
 .../service/PaymentTypeWriteServiceImpl.java    |   103 -
 .../products/api/ProductsApiResource.java       |   157 -
 .../constants/ProductsApiConstants.java         |    27 -
 .../portfolio/products/data/ProductData.java    |    24 -
 .../exception/ProductNotFoundException.java     |    31 -
 .../service/ProductCommandsService.java         |    26 -
 .../service/ProductReadPlatformService.java     |    35 -
 .../savings/DepositAccountOnClosureType.java    |    99 -
 .../DepositAccountOnHoldTransactionType.java    |    74 -
 .../portfolio/savings/DepositAccountType.java   |   121 -
 .../portfolio/savings/DepositAccountUtils.java  |    60 -
 .../portfolio/savings/DepositsApiConstants.java |   385 -
 .../savings/PreClosurePenalInterestOnType.java  |    84 -
 .../portfolio/savings/RecurringDepositType.java |    76 -
 .../savings/SavingsAccountTransactionType.java  |   171 -
 .../portfolio/savings/SavingsApiConstants.java  |   255 -
 .../SavingsCompoundingInterestPeriodType.java   |   107 -
 ...avingsInterestCalculationDaysInYearType.java |    79 -
 .../savings/SavingsInterestCalculationType.java |    93 -
 .../savings/SavingsPeriodFrequencyType.java     |    85 -
 .../SavingsPostingInterestPeriodType.java       |    82 -
 .../SavingsTransactionBooleanValues.java        |    59 -
 .../savings/SavingsWithdrawalFeesType.java      |    70 -
 ...ccountOnHoldFundTransactionsApiResource.java |    85 -
 ...edDepositAccountTransactionsApiResource.java |   184 -
 .../api/FixedDepositAccountsApiResource.java    |   347 -
 .../api/FixedDepositProductsApiResource.java    |   325 -
 ...ngDepositAccountTransactionsApiResource.java |   206 -
 .../RecurringDepositAccountsApiResource.java    |   344 -
 .../RecurringDepositProductsApiResource.java    |   323 -
 .../api/SavingsAccountChargesApiResource.java   |   223 -
 .../SavingsAccountTransactionsApiResource.java  |   192 -
 .../savings/api/SavingsAccountsApiResource.java |   300 -
 .../savings/api/SavingsProductsApiResource.java |   289 -
 .../savings/data/DepositAccountData.java        |   298 -
 .../data/DepositAccountDataValidator.java       |   722 -
 .../DepositAccountInterestIncentiveData.java    |    75 -
 .../DepositAccountInterestRateChartData.java    |   175 -
 ...DepositAccountInterestRateChartSlabData.java |   147 -
 .../DepositAccountOnHoldTransactionData.java    |    94 -
 .../DepositAccountTransactionDataValidator.java |   233 -
 .../savings/data/DepositProductData.java        |   389 -
 .../data/DepositProductDataValidator.java       |   781 -
 .../savings/data/FixedDepositAccountData.java   |   445 -
 .../savings/data/FixedDepositProductData.java   |   391 -
 .../data/RecurringDepositAccountData.java       |   520 -
 .../data/RecurringDepositProductData.java       |   409 -
 .../data/SavingsAccountAnnualFeeData.java       |    57 -
 .../SavingsAccountApplicationTimelineData.java  |   122 -
 .../savings/data/SavingsAccountChargeData.java  |   161 -
 .../data/SavingsAccountChargeDataValidator.java |   151 -
 .../savings/data/SavingsAccountData.java        |   503 -
 .../savings/data/SavingsAccountDataDTO.java     |    70 -
 .../data/SavingsAccountDataValidator.java       |   471 -
 .../data/SavingsAccountStatusEnumData.java      |    70 -
 .../savings/data/SavingsAccountSummaryData.java |    59 -
 .../data/SavingsAccountTransactionDTO.java      |    98 -
 .../data/SavingsAccountTransactionData.java     |   140 -
 .../SavingsAccountTransactionDataValidator.java |   171 -
 .../data/SavingsAccountTransactionEnumData.java |   125 -
 .../savings/data/SavingsProductData.java        |   396 -
 .../data/SavingsProductDataValidator.java       |   567 -
 .../savings/data/TransactionDateData.java       |    34 -
 .../savings/domain/DepositAccountAssembler.java |   456 -
 .../domain/DepositAccountDomainService.java     |    52 -
 .../domain/DepositAccountDomainServiceJpa.java  |   429 -
 .../domain/DepositAccountInterestIncentive.java |    51 -
 .../DepositAccountInterestIncentives.java       |    64 -
 .../domain/DepositAccountInterestRateChart.java |   156 -
 .../DepositAccountInterestRateChartSlabs.java   |   108 -
 .../domain/DepositAccountOnHoldTransaction.java |   123 -
 ...positAccountOnHoldTransactionRepository.java |    30 -
 .../domain/DepositAccountRecurringDetail.java   |   178 -
 .../domain/DepositAccountTermAndPreClosure.java |   316 -
 .../savings/domain/DepositPreClosureDetail.java |   139 -
 .../domain/DepositProductAmountDetails.java     |   107 -
 .../savings/domain/DepositProductAssembler.java |   476 -
 .../domain/DepositProductRecurringDetail.java   |    73 -
 .../domain/DepositProductTermAndPreClosure.java |   100 -
 .../savings/domain/DepositRecurringDetail.java  |   105 -
 .../savings/domain/DepositTermDetail.java       |   265 -
 .../savings/domain/FixedDepositAccount.java     |   817 -
 .../domain/FixedDepositAccountRepository.java   |    27 -
 .../savings/domain/FixedDepositProduct.java     |   347 -
 .../domain/FixedDepositProductRepository.java   |    27 -
 .../savings/domain/RecurringDepositAccount.java |  1179 -
 .../RecurringDepositAccountRepository.java      |    27 -
 .../savings/domain/RecurringDepositProduct.java |   168 -
 .../RecurringDepositProductRepository.java      |    27 -
 .../RecurringDepositScheduleInstallment.java    |   244 -
 .../savings/domain/SavingsAccount.java          |  2608 -
 .../savings/domain/SavingsAccountAssembler.java |   342 -
 .../savings/domain/SavingsAccountCharge.java    |   854 -
 .../domain/SavingsAccountChargeAssembler.java   |   197 -
 .../domain/SavingsAccountChargePaidBy.java      |    97 -
 .../domain/SavingsAccountChargeRepository.java  |    36 -
 .../SavingsAccountChargeRepositoryWrapper.java  |    75 -
 .../domain/SavingsAccountDomainService.java     |    38 -
 .../domain/SavingsAccountDomainServiceJpa.java  |   196 -
 .../domain/SavingsAccountRepository.java        |    48 -
 .../domain/SavingsAccountRepositoryWrapper.java |    71 -
 .../domain/SavingsAccountStatusType.java        |   142 -
 .../savings/domain/SavingsAccountSummary.java   |   125 -
 .../domain/SavingsAccountTransaction.java       |   640 -
 .../SavingsAccountTransactionComparator.java    |    45 -
 .../SavingsAccountTransactionRepository.java    |    29 -
 ...SavingsAccountTransactionSummaryWrapper.java |   136 -
 .../portfolio/savings/domain/SavingsEvent.java  |    55 -
 .../portfolio/savings/domain/SavingsHelper.java |   151 -
 .../domain/SavingsOfficerAssignmentHistory.java |   120 -
 .../savings/domain/SavingsProduct.java          |   627 -
 .../savings/domain/SavingsProductAssembler.java |   208 -
 .../domain/SavingsProductChargeAssembler.java   |   124 -
 .../domain/SavingsProductRepository.java        |    26 -
 .../interest/AnnualCompoundingPeriod.java       |   181 -
 .../interest/BiAnnualCompoundingPeriod.java     |   181 -
 .../domain/interest/CompoundInterestHelper.java |    69 -
 .../domain/interest/CompoundingPeriod.java      |    32 -
 .../domain/interest/DailyCompoundingPeriod.java |   100 -
 .../domain/interest/EndOfDayBalance.java        |   181 -
 .../interest/MonthlyCompoundingPeriod.java      |   177 -
 .../savings/domain/interest/PostingPeriod.java  |   413 -
 .../interest/QuarterlyCompoundingPeriod.java    |   181 -
 ...countInterestRateChartNotFoundException.java |    29 -
 .../DepositAccountNotFoundException.java        |    31 -
 ...itAccountTransactionNotAllowedException.java |    35 -
 .../FixedDepositProductNotFoundException.java   |    28 -
 .../InsufficientAccountBalanceException.java    |    37 -
 ...ecurringDepositProductNotFoundException.java |    28 -
 ...avingsAccountClosingNotAllowedException.java |    30 -
 .../SavingsAccountNotFoundException.java        |    28 -
 ...ingsAccountTransactionNotFoundException.java |    30 -
 ...sActivityPriorToClientTransferException.java |    34 -
 .../SavingsOfficerAssignmentDateException.java  |    29 -
 .../SavingsOfficerAssignmentException.java      |    29 -
 ...SavingsOfficerUnassignmentDateException.java |    30 -
 .../SavingsOfficerUnassignmentException.java    |    28 -
 .../SavingsProductNotFoundException.java        |    28 -
 ...sferTransactionsCannotBeUndoneException.java |    34 -
 .../TransactionUpdateNotAllowedException.java   |    33 -
 ...tivateFixedDepositAccountCommandHandler.java |    46 -
 ...teRecurringDepositAccountCommandHandler.java |    46 -
 .../ActivateSavingsAccountCommandHandler.java   |    46 -
 .../AddSavingsAccountChargeCommandHandler.java  |    47 -
 ...lyAnnualFeeSavingsAccountCommandHandler.java |    55 -
 ...terestFixedDepositAccountCommandHandler.java |    47 -
 ...stRecurringDepositAccountCommandHandler.java |    48 -
 ...ateInterestSavingsAccountCommandHandler.java |    46 -
 .../CloseFixedDepositAccountCommandHandler.java |    46 -
 ...seRecurringDepositAccountCommandHandler.java |    46 -
 .../CloseSavingsAccountCommandHandler.java      |    47 -
 ...CreateFixedDepositProductCommandHandler.java |    44 -
 ...teRecurringDepositProductCommandHandler.java |    44 -
 .../CreateSavingsProductCommandHandler.java     |    44 -
 ...DeleteFixedDepositProductCommandHandler.java |    44 -
 ...teRecurringDepositProductCommandHandler.java |    44 -
 ...eleteSavingsAccountChargeCommandHandler.java |    47 -
 .../DeleteSavingsProductCommandHandler.java     |    44 -
 .../DepositSavingsAccountCommandHandler.java    |    46 -
 ...ccountApplicationApprovalCommandHandler.java |    48 -
 ...ntApplicationApprovalUndoCommandHandler.java |    49 -
 ...ccountApplicationDeletionCommandHandler.java |    48 -
 ...ntApplicationModificationCommandHandler.java |    47 -
 ...ccountApplicationRejectedCommandHandler.java |    48 -
 ...countApplicationSubmittalCommandHandler.java |    47 -
 ...ationWithdrawnByApplicantCommandHandler.java |    49 -
 ...ixedDepositAccountDepositCommandHandler.java |    46 -
 ...ositTransactionAdjustmentCommandHandler.java |    47 -
 ...ivateSavingsAccountChargeCommandHandler.java |    47 -
 .../PaySavingsAccountChargeCommandHandler.java  |    47 -
 ...terestFixedDepositAccountCommandHandler.java |    47 -
 ...stRecurringDepositAccountCommandHandler.java |    47 -
 ...ostInterestSavingsAccountCommandHandler.java |    46 -
 ...eCloseFixedDepositAccountCommandHandler.java |    46 -
 ...seRecurringDepositAccountCommandHandler.java |    46 -
 ...ccountApplicationApprovalCommandHandler.java |    49 -
 ...ntApplicationApprovalUndoCommandHandler.java |    49 -
 ...ccountApplicationDeletionCommandHandler.java |    48 -
 ...ntApplicationModificationCommandHandler.java |    47 -
 ...ccountApplicationRejectedCommandHandler.java |    48 -
 ...countApplicationSubmittalCommandHandler.java |    47 -
 ...ationWithdrawnByApplicantCommandHandler.java |    49 -
 ...ringDepositAccountDepositCommandHandler.java |    46 -
 ...ccountUpdateDepositAmountCommandHandler.java |    47 -
 ...ositTransactionAdjustmentCommandHandler.java |    47 -
 .../RemoveSavingsOfficerCommandHandler.java     |    47 -
 ...ccountApplicationApprovalCommandHandler.java |    47 -
 ...ntApplicationApprovalUndoCommandHandler.java |    47 -
 ...ccountApplicationDeletionCommandHandler.java |    48 -
 ...ntApplicationModificationCommandHandler.java |    47 -
 ...ccountApplicationRejectedCommandHandler.java |    47 -
 ...countApplicationSubmittalCommandHandler.java |    47 -
 ...ationWithdrawnByApplicantCommandHandler.java |    48 -
 ...ingsTransactionAdjustmentCommandHandler.java |    48 -
 ...actionFixedDepositAccountCommandHandler.java |    47 -
 ...onRecurringDepositAccountCommandHandler.java |    47 -
 ...TransactionSavingsAccountCommandHandler.java |    47 -
 ...UpdateFixedDepositProductCommandHandler.java |    44 -
 ...teRecurringDepositProductCommandHandler.java |    44 -
 ...pdateSavingsAccountChargeCommandHandler.java |    47 -
 .../UpdateSavingsOfficerCommandHandler.java     |    47 -
 .../UpdateSavingsProductCommandHandler.java     |    44 -
 ...WaiveSavingsAccountChargeCommandHandler.java |    47 -
 .../WithdrawSavingsAccountCommandHandler.java   |    46 -
 ...drawalFixedDepositAccountCommandHandler.java |    47 -
 ...alRecurringDepositAccountCommandHandler.java |    47 -
 ...untInterestRateChartReadPlatformService.java |    34 -
 ...nterestRateChartReadPlatformServiceImpl.java |   380 -
 ...untOnHoldTransactionReadPlatformService.java |    30 -
 ...nHoldTransactionReadPlatformServiceImpl.java |   137 -
 ...ountPreMatureCalculationPlatformService.java |    28 -
 ...PreMatureCalculationPlatformServiceImpl.java |   113 -
 .../DepositAccountReadPlatformService.java      |    57 -
 .../DepositAccountReadPlatformServiceImpl.java  |  1453 -
 .../DepositAccountWritePlatformService.java     |    93 -
 ...ntWritePlatformServiceJpaRepositoryImpl.java |  1360 -
 ...tApplicationProcessWritePlatformService.java |    44 -
 ...ssWritePlatformServiceJpaRepositoryImpl.java |   753 -
 .../DepositProductReadPlatformService.java      |    36 -
 .../DepositProductReadPlatformServiceImpl.java  |   362 -
 .../DepositsDropdownReadPlatformService.java    |    39 -
 ...DepositsDropdownReadPlatformServiceImpl.java |    52 -
 ...FixedDepositProductWritePlatformService.java |    31 -
 ...ctWritePlatformServiceJpaRepositoryImpl.java |   183 -
 ...rringDepositProductWritePlatformService.java |    31 -
 ...ctWritePlatformServiceJpaRepositoryImpl.java |   183 -
 ...ntApplicationTransitionApiJsonValidator.java |   142 -
 ...SavingsAccountChargeReadPlatformService.java |    38 -
 ...ngsAccountChargeReadPlatformServiceImpl.java |   252 -
 .../SavingsAccountReadPlatformService.java      |    51 -
 .../SavingsAccountReadPlatformServiceImpl.java  |  1013 -
 .../SavingsAccountWritePlatformService.java     |    82 -
 ...ntWritePlatformServiceJpaRepositoryImpl.java |  1207 -
 ...sApplicationProcessWritePlatformService.java |    42 -
 ...ssWritePlatformServiceJpaRepositoryImpl.java |   499 -
 .../SavingsDropdownReadPlatformService.java     |    38 -
 .../SavingsDropdownReadPlatformServiceImpl.java |   111 -
 .../savings/service/SavingsEnumerations.java    |   769 -
 .../SavingsProductReadPlatformService.java      |    37 -
 .../SavingsProductReadPlatformServiceImpl.java  |   272 -
 .../SavingsProductWritePlatformService.java     |    31 -
 ...ctWritePlatformServiceJpaRepositoryImpl.java |   193 -
 .../service/SavingsSchedularService.java        |    28 -
 .../service/SavingsSchedularServiceImpl.java    |    71 -
 .../portfolio/search/SearchConstants.java       |   146 -
 .../portfolio/search/api/SearchApiResource.java |   113 -
 .../search/data/AdHocQueryDataValidator.java    |   294 -
 .../search/data/AdHocQuerySearchConditions.java |   187 -
 .../search/data/AdHocQuerySearchConstants.java  |    63 -
 .../search/data/AdHocSearchQueryData.java       |    75 -
 .../portfolio/search/data/SearchConditions.java |    92 -
 .../portfolio/search/data/SearchData.java       |    91 -
 .../service/SearchReadPlatformService.java      |    35 -
 .../service/SearchReadPlatformServiceImpl.java  |   325 -
 .../api/SelfAccountTransferApiResource.java     |    98 -
 .../account/data/SelfAccountTemplateData.java   |   106 -
 .../account/data/SelfAccountTransferData.java   |    33 -
 .../data/SelfAccountTransferDataValidator.java  |   193 -
 .../service/SelfAccountTransferReadService.java |    31 -
 .../SelfAccountTransferReadServiceImpl.java     |   102 -
 .../self/client/api/SelfClientsApiResource.java |   221 -
 .../client/data/SelfClientDataValidator.java    |    77 -
 .../service/AppuserClientMapperReadService.java |    25 -
 .../AppuserClientMapperReadServiceImpl.java     |    46 -
 .../loanaccount/api/SelfLoansApiResource.java   |   137 -
 .../data/SelfLoansDataValidator.java            |    87 -
 .../service/AppuserLoansMapperReadService.java  |    24 -
 .../AppuserLoansMapperReadServiceImpl.java      |    48 -
 .../savings/api/SelfSavingsApiResource.java     |   148 -
 .../savings/data/SelfSavingsDataValidator.java  |    86 -
 .../AppuserSavingsMapperReadService.java        |    25 -
 .../AppuserSavingsMapperReadServiceImpl.java    |    48 -
 .../api/SelfAuthenticationApiResource.java      |    54 -
 .../api/SelfUserDetailsApiResource.java         |    54 -
 .../constants/ShareProductApiConstants.java     |    52 -
 .../portfolio/shares/data/DividendsData.java    |    49 -
 .../shares/data/ProductDividendsData.java       |    65 -
 .../shares/data/ShareMarketPriceData.java       |    42 -
 .../portfolio/shares/data/ShareProductData.java |   160 -
 .../shares/domain/ShareMarketPrice.java         |    65 -
 .../portfolio/shares/domain/ShareProduct.java   |   363 -
 .../shares/domain/ShareProductRepository.java   |    27 -
 .../domain/ShareProductTempRepository.java      |    79 -
 .../CreateShareProductCommandHandler.java       |    47 -
 .../UpdateShareProductCommandHandler.java       |    47 -
 .../ShareProductDataSerializer.java             |   341 -
 .../ShareProductCommandsServiceImpl.java        |   105 -
 .../ShareProductReadPlatformServiceImpl.java    |    64 -
 .../ShareProductWritePlatformService.java       |    30 -
 ...ctWritePlatformServiceJpaRepositoryImpl.java |    90 -
 .../transfer/api/TransferApiConstants.java      |    58 -
 .../transfer/data/TransfersDataValidator.java   |   214 -
 ...entNotAwaitingTransferApprovalException.java |    30 -
 ...aitingTransferApprovalOrOnHoldException.java |    30 -
 .../TransferNotSupportedException.java          |    72 -
 .../AcceptClientTransferCommandHandler.java     |    47 -
 ...seAndAcceptClientTransferCommandHandler.java |    46 -
 .../ProposeClientTransferCommandHandler.java    |    47 -
 .../RejectClientTransferCommandHandler.java     |    47 -
 ...nsferClientsBetweenGroupsCommandHandler.java |    47 -
 .../WithdrawClientTransferCommandHandler.java   |    47 -
 .../transfer/service/TransferEventType.java     |    45 -
 .../service/TransferWritePlatformService.java   |    38 -
 ...erWritePlatformServiceJpaRepositoryImpl.java |   512 -
 .../service/ScheduledJobRunnerService.java      |    38 -
 .../service/ScheduledJobRunnerServiceImpl.java  |   367 -
 .../spm/api/LookupTableApiResource.java         |   118 -
 .../fineract/spm/api/ScorecardApiResource.java  |   132 -
 .../apache/fineract/spm/api/SpmApiResource.java |   111 -
 .../apache/fineract/spm/data/ComponentData.java |    78 -
 .../fineract/spm/data/LookupTableData.java      |    64 -
 .../fineract/spm/data/LookupTableEntry.java     |    61 -
 .../apache/fineract/spm/data/QuestionData.java  |   100 -
 .../apache/fineract/spm/data/ResponseData.java  |    68 -
 .../apache/fineract/spm/data/ScorecardData.java |    75 -
 .../fineract/spm/data/ScorecardValue.java       |    61 -
 .../apache/fineract/spm/data/SurveyData.java    |   126 -
 .../apache/fineract/spm/domain/Component.java   |    88 -
 .../apache/fineract/spm/domain/LookupTable.java |    99 -
 .../apache/fineract/spm/domain/Question.java    |   112 -
 .../apache/fineract/spm/domain/Response.java    |    77 -
 .../apache/fineract/spm/domain/Scorecard.java   |   119 -
 .../org/apache/fineract/spm/domain/Survey.java  |   126 -
 .../exception/LookupTableNotFoundException.java |    28 -
 .../spm/exception/SurveyNotFoundException.java  |    28 -
 .../spm/repository/LookupTableRepository.java   |    31 -
 .../spm/repository/ScorecardRepository.java     |    32 -
 .../spm/repository/SurveyRepository.java        |    36 -
 .../spm/service/LookupTableService.java         |    61 -
 .../fineract/spm/service/ScorecardService.java  |    63 -
 .../apache/fineract/spm/service/SpmService.java |   111 -
 .../fineract/spm/util/LookupTableMapper.java    |    76 -
 .../fineract/spm/util/ScorecardMapper.java      |   100 -
 .../apache/fineract/spm/util/SurveyMapper.java  |   145 -
 .../template/api/TemplatesApiResource.java      |   213 -
 .../fineract/template/data/TemplateData.java    |    74 -
 .../fineract/template/domain/Template.java      |   156 -
 .../template/domain/TemplateEntity.java         |    55 -
 .../domain/TemplateEntitySerializer.java        |    41 -
 .../template/domain/TemplateFunctions.java      |    33 -
 .../template/domain/TemplateMapper.java         |    72 -
 .../template/domain/TemplateRepository.java     |    28 -
 .../fineract/template/domain/TemplateType.java  |    58 -
 .../template/domain/TemplateTypeSerializer.java |    41 -
 .../exception/TemplateNotFoundException.java    |    28 -
 .../handler/CreateTemplateCommandHandler.java   |    48 -
 .../handler/DeleteTemplateCommandHandler.java   |    48 -
 .../handler/UpdateTemplateCommandHandler.java   |    48 -
 .../service/JpaTemplateDomainService.java       |   147 -
 .../template/service/TemplateDomainService.java |    44 -
 .../template/service/TemplateMergeService.java  |   213 -
 .../template/service/TrustModifier.java         |    88 -
 .../api/AppUserApiConstant.java                 |    25 -
 .../api/PasswordPreferencesApiConstants.java    |    44 -
 .../api/PasswordPreferencesApiResource.java     |   113 -
 .../api/PermissionsApiResource.java             |   109 -
 .../api/RolesApiResource.java                   |   245 -
 .../api/UsersApiResource.java                   |   169 -
 .../command/PermissionsCommand.java             |    37 -
 .../useradministration/data/AppUserData.java    |   124 -
 .../data/PasswordPreferencesDataValidator.java  |    76 -
 .../data/PasswordValidationPolicyData.java      |    44 -
 .../useradministration/data/PermissionData.java |    54 -
 .../useradministration/data/RoleData.java       |    55 -
 .../data/RolePermissionsData.java               |    48 -
 .../useradministration/domain/AppUser.java      |   654 -
 .../domain/AppUserClientMapping.java            |    80 -
 .../domain/AppUserPreviousPassword.java         |    60 -
 .../AppUserPreviousPasswordRepository.java      |    31 -
 .../domain/AppUserRepository.java               |    31 -
 .../domain/AppUserRepositoryWrapper.java        |    43 -
 .../domain/JpaUserDomainService.java            |    67 -
 .../domain/PasswordValidationPolicy.java        |    90 -
 .../PasswordValidationPolicyRepository.java     |    33 -
 .../useradministration/domain/Permission.java   |    84 -
 .../domain/PermissionRepository.java            |    26 -
 .../useradministration/domain/Role.java         |   147 -
 .../domain/RoleRepository.java                  |    31 -
 .../domain/UserDomainService.java               |    24 -
 .../PasswordMustBeDifferentException.java       |    23 -
 .../PasswordPreviouslyUsedException.java        |    29 -
 ...sswordValidationPolicyNotFoundException.java |    35 -
 ...rmissionCantBeMakerCheckerableException.java |    32 -
 .../exception/PermissionNotFoundException.java  |    31 -
 .../exception/RoleAssociatedException.java      |    29 -
 .../exception/RoleNotFoundException.java        |    31 -
 .../exception/UnAuthenticatedUserException.java |    29 -
 .../exception/UserNotFoundException.java        |    35 -
 .../UsernameAlreadyExistsException.java         |    26 -
 .../UsernameMustBeDifferentException.java       |    23 -
 .../handler/CreateRoleCommandHandler.java       |    47 -
 .../handler/CreateUserCommandHandler.java       |    47 -
 .../handler/DeleteRoleCommandHandler.java       |    47 -
 .../handler/DeleteUserCommandHandler.java       |    47 -
 .../handler/DisableRoleCommandHandler.java      |    45 -
 .../handler/EnableRoleCommandHandler.java       |    47 -
 ...teMakerCheckerPermissionsCommandHandler.java |    47 -
 ...UpdatePasswordPreferencesCommandHandler.java |    46 -
 .../handler/UpdateRoleCommandHandler.java       |    47 -
 .../UpdateRolePermissionsCommandHandler.java    |    47 -
 .../handler/UpdateUserCommandHandler.java       |    48 -
 ...rmissionsCommandFromApiJsonDeserializer.java |    66 -
 .../service/AppUserConstants.java               |    27 -
 .../service/AppUserReadPlatformService.java     |    34 -
 .../service/AppUserReadPlatformServiceImpl.java |   215 -
 .../service/AppUserWritePlatformService.java    |    31 -
 ...erWritePlatformServiceJpaRepositoryImpl.java |   338 -
 ...PasswordPreferencesWritePlatformService.java |    28 -
 ...esWritePlatformServiceJpaRepositoryImpl.java |    97 -
 ...wordValidationPolicyReadPlatformService.java |    30 -
 ...ValidationPolicyReadPlatformServiceImpl.java |    83 -
 .../service/PermissionReadPlatformService.java  |    32 -
 .../PermissionReadPlatformServiceImpl.java      |   123 -
 .../service/PermissionWritePlatformService.java |    27 -
 ...onWritePlatformServiceJpaRepositoryImpl.java |   100 -
 .../service/RoleDataValidator.java              |   103 -
 .../service/RoleReadPlatformService.java        |    34 -
 .../service/RoleReadPlatformServiceImpl.java    |    98 -
 .../service/RoleWritePlatformService.java       |    37 -
 ...leWritePlatformServiceJpaRepositoryImpl.java |   275 -
 .../service/UserDataValidator.java              |   242 -
 .../src/main/resources/META-INF/orm.xml         |    37 -
 .../src/main/resources/META-INF/persistence.xml |    35 -
 .../resources/META-INF/spring/appContext.xml    |    96 -
 .../main/resources/META-INF/spring/cache.xml    |    39 -
 .../main/resources/META-INF/spring/ehcache.xml  |    50 -
 .../META-INF/spring/infrastructure.xml          |    54 -
 .../src/main/resources/META-INF/spring/jndi.xml |    33 -
 .../META-INF/spring/securityContext.xml         |   235 -
 .../resources/META-INF/spring/spmContext.xml    |    39 -
 .../src/main/resources/application.properties   |     2 -
 .../src/main/resources/keystore.jks             |   Bin 2254 -> 0 bytes
 .../src/main/resources/logback.xml              |    54 -
 .../V100__Group_saving_summary_report.sql       |     1 -
 ...d_mulitplesof_to_account_transfers_table.sql |     2 -
 .../core_db/V102__client_attendance_tables.sql  |    30 -
 .../V103__cluster_support_for_batch_jobs.sql    |    14 -
 .../core_db/V104__permissions_for_transfers.sql |    11 -
 ...5__track_loan_transaction_against_office.sql |    15 -
 .../V106__more_permissions_for_transfers.sql    |    30 -
 .../core_db/V107__datatable_code_mappings.sql   |    11 -
 .../V108__client_has_transfer_office.sql        |     9 -
 ...nt_transfer_withdrawal_fee_configuration.sql |     5 -
 ...V10__interest-posting-fields-for-savings.sql |    12 -
 .../core_db/V110__group_center_close.sql        |     8 -
 ...pense_account_for_existing_loan_products.sql |     4 -
 ...raint_approach_for_datatables_by_default.sql |     1 -
 .../core_db/V112__mixreport_sql_support.sql     |   113 -
 ...track_savings_transaction_against_office.sql |    15 -
 ...unt_for_existing_savings_products - Copy.sql |     4 -
 .../core_db/V115__permissions_for_cache_api.sql |    19 -
 ...V116__track_currency_for_journal_entries.sql |    29 -
 .../core_db/V117__loan_charge_from_savings.sql  |    26 -
 .../V118_1__savings_charge_patch_update.sql     |     3 -
 ...uplicate_fund_source_to_account_mappings.sql |     1 -
 ...form_propose_and_accept_client_transfers.sql |     6 -
 ...se_account_for_existing_savings_products.sql |     8 -
 ...__batch_job_entry_for_pay_savings_charge.sql |     1 -
 ...ncome_from_penalties_for savings_product.sql |     5 -
 ...7__move_withdrawal_annual_fee_to_charges.sql |   253 -
 ...payments_seperately_in_loan_transactions.sql |    16 -
 .../migrations/core_db/V118__savings_charge.sql |    64 -
 .../core_db/V119__add_template_table.sql        |    34 -
 .../core_db/V11__add-payment-details.sql        |    24 -
 .../V120__accounting_running_balance.sql        |     5 -
 ...ounting_running_balance_for_organization.sql |     4 -
 .../V122__recurring_fee_support_for_savings.sql |     8 -
 .../V123__remove_payment_mode_for_savings.sql   |     2 -
 .../V124__added_min_max_cap_for_charges.sql     |     7 -
 ...lumn_for_actual_fee_amount_or_percentage.sql |     2 -
 ...tial_database_structure_for_sms_outbound.sql |    36 -
 .../core_db/V127__mobile_no_fields.sql          |     8 -
 .../V128__added_loan_installment_charge.sql     |    19 -
 .../core_db/V129__client_and_group_timeline.sql |     9 -
 ...V12__add_external_id_to_couple_of_tables.sql |    26 -
 .../core_db/V130__calendar-history-table.sql    |    19 -
 ...1__holiday-status-column-and-permissions.sql |    16 -
 .../core_db/V132__borrower_cycle_changes.sql    |    19 -
 ...adding_payment_detail_with_journal_entry.sql |     9 -
 ...4_1__submitted_date_updation_for_clients.sql |     5 -
 .../V134_2__permissions_spelling_correction.sql |     1 -
 ...4__added_column_value_on_c_configuration.sql |    12 -
 ...5__added_permission_for_undo_written_off.sql |     1 -
 .../V136_1__update_script_strechy_parameter.sql |     1 -
 .../V137__added_is_active_column_in_m_staff.sql |     1 -
 ...for_m_product_loan_and_m_savings_product.sql |    18 -
 ...for_is_active_updated_to_true_in_m_staff.sql |     3 -
 ...d_group_and_client_pending_configuration.sql |    19 -
 ...payment_detail_id_in_ac_gl_journal_entry.sql |     3 -
 .../core_db/V140__added_loan_charge_status.sql  |     2 -
 .../V141__add_early_repayment_strategy.sql      |     3 -
 ...2__read_savingsaccount_charge_permission.sql |     1 -
 ...__create_journalentry_checker_permission.sql |     1 -
 .../V144__spelling_mistake_corrections.sql      |     4 -
 ..._force_password_reset_in_c_configuration.sql |    17 -
 .../migrations/core_db/V146__tranche_loans.sql  |    38 -
 .../V147__tranche_loans_column_name_changes.sql |     4 -
 .../core_db/V148__overdraft_changes.sql         |    14 -
 ...49__add_created_date_savings_transaction.sql |     4 -
 .../core_db/V14__rename_status_id_to_enum.sql   |     8 -
 .../core_db/V150__basic_savings_report.sql      |    30 -
 ...1__add_default_savings_account_to_client.sql |     5 -
 .../core_db/V152__added_grace_for_over_due.sql  |     5 -
 .../core_db/V153__Insert_missed_permissions.sql |     9 -
 .../migrations/core_db/V154__aging_details.sql  |     1 -
 .../core_db/V155__stretchy_into_pentaho.sql     |   718 -
 .../V156__added_loan_saving_txns_pentaho.sql    |     9 -
 .../V157__overdue_charge_improvements.sql       |    18 -
 .../V158__dashboard_and_navigation_queries.sql  |    17 -
 ...ion_id_column_m_portfolio_command_source.sql |     2 -
 .../core_db/V15__center_permissions.sql         |     7 -
 ...ow_nullValue_For_principal_on_lonProduct.sql |     1 -
 .../V160__standing_instruction_changes.sql      |   125 -
 .../core_db/V161__added_accrual_batch_job.sql   |     6 -
 .../core_db/V162__overdue_charge_batch_job.sql  |     1 -
 .../core_db/V163__added_npa_for_loans.sql       |     7 -
 .../core_db/V164__fd_and_rd_deposit_tables.sql  |   237 -
 ...ermission_for_disburse_to_saving_account.sql |     1 -
 ...it_amount_to_product_term_and_preclosure.sql |     7 -
 ...d_columns_for_writtenOff_loans_recovered.sql |    27 -
 ...fixed_deposit_interest_to_linked_account.sql |     9 -
 ...orts_to_core_reports_use_report_to_false.sql |     1 -
 .../V16__drop_min_max_column_on_loan_table.sql  |     7 -
 ...te_deposit_accounts_maturity_details_job.sql |     1 -
 ...__added_mandatory_savings_and_rd_changes.sql |    71 -
 .../V172__accounting_changes_for_transfers.sql  |    21 -
 .../sql/migrations/core_db/V173__ppi.sql        |   103 -
 .../core_db/V174__remove_interest_accrual.sql   |     3 -
 .../V175__added_incentive_interest_rates.sql    |    49 -
 ...__updates_to_financial_activity_accounts.sql |    15 -
 .../V177__cleanup_for_client_incentives.sql     |     2 -
 ...dates_to_financial_activity_accounts_pt2.sql |    16 -
 ...tion_names_for_maker_checker_permissions.sql |     3 -
 .../V17__update_stretchy_reporting_ddl.sql      |    90 -
 ..._awaitingdisbursal_and_groupnamesbystaff.sql |     2 -
 .../V181__standing_instruction_logging.sql      |    11 -
 ..._min_required_balance_to_savings_product.sql |     7 -
 ...ded_min_balance_for_interest_calculation.sql |     5 -
 ...min_required_balance_for_savings_product.sql |     5 -
 ...d_accrual_till_date_for_periodic_accrual.sql |     2 -
 .../V186__added_periodic_accrual_job.sql        |     3 -
 ...87__added_permission_to_periodic_accrual.sql |     1 -
 ...add_savingscharge_inactivate_permissions.sql |     5 -
 ...89__m_loan_interest_recalculation_tables.sql |    31 -
 ...V18__update_stretchy_reporting_reportSql.sql |     6 -
 ...ciategroup_disassociategroup_permissions.sql |     4 -
 ...ate_gl_account_increase_size_of_name_col.sql |     2 -
 .../core_db/V192__interest_recalculate_job.sql  |     7 -
 ...V193__added_column_joiningDate_for_staff.sql |     2 -
 ...restComponent_for_interest_recalculation.sql |     2 -
 ...5__moved_rest_frequency_to_product_level.sql |     9 -
 ...ded_loan_running_balance_to_transactions.sql |     2 -
 ...ted_loan_running_balance_of_transactions.sql |    13 -
 ...loan_rescheduling_tables_and_permissions.sql |    73 -
 ...oved_extra_columns_from_schedule_history.sql |    20 -
 .../V19__report_maintenance_permissions.sql     |    14 -
 .../V1__mifosplatform-core-ddl-latest.sql       |   946 -
 ...ount_for_start_interest_calculation_date.sql |     2 -
 .../sql/migrations/core_db/V201__webhooks.sql   |   108 -
 .../V202__savings_officer_history_table.sql     |    20 -
 ...03__added_subbmittedDate_loantransaction.sql |     3 -
 ..._script_for_charges_paid_by_for_accruals.sql |     1 -
 ...charge_and_interest_waiver_with_accruals.sql |     5 -
 .../V206__interest_posting_configuration.sql    |     7 -
 .../core_db/V207__min_max_clients_per_group.sql |     3 -
 .../V208__min_max_clients_in_group_redux.sql    |     9 -
 ...d_all_report_names_in_m_permission_table.sql |    41 -
 ..._report_maint_perms_really_configuration.sql |     2 -
 ...10__track_manually_adjusted_transactions.sql |     2 -
 ...ys_between_disbursal_and_first_repayment.sql |     2 -
 ...2__add_NthDay_and_DayOfWeek_columns_loan.sql |     3 -
 ...and_DayOfWeek_columns_should_be_nullable.sql |     3 -
 ...lter_table_add_create_SI_at_disbursement.sql |     1 -
 .../V215__guarantee_on_hold_fund_changes.sql    |    18 -
 ...216__adding_loan_proposed_amount_to_loan.sql |     2 -
 ...ient_substatus_and_codevalue_description.sql |    12 -
 ...d_datetime_for_loan_savings_transactions.sql |     8 -
 ...arantor_on_hold_fund_changes_for_account.sql |    47 -
 .../V21__activation-permissions-for-clients.sql |     8 -
 .../V220__account_number_preferences.sql        |    22 -
 .../V221__add_version_for_m_savings_account.sql |     2 -
 ...or_on_hold_fund_changes_for_transactions.sql |    14 -
 .../V223__add_version_for_m_loan_account.sql    |     2 -
 .../V224__client_lifecycle_adding_statuses.sql  |    35 -
 ...ns_for_updating_recurring_deposit_amount.sql |     3 -
 ...on_for_enforcing_calendars_for_jlg_loans.sql |     1 -
 .../core_db/V227__loan-refund-permissions.sql   |    16 -
 .../core_db/V228__entity_to_entity_access.sql   |    45 -
 .../core_db/V229__teller_cash_management.sql    |   107 -
 ...er-group-for-consistency-add-permissions.sql |    19 -
 ...role_status_and_correspoding_permissions.sql |     5 -
 ..._cashier_transaction_added_currency_code.sql |     1 -
 .../V232__insert_center_closure_reason.sql      |     1 -
 .../V233__Savings_Transaction_Receipt.sql       |     8 -
 .../core_db/V234__opening_balaces_setup.sql     |    34 -
 .../V235__add_ugd_template_id_m_hook.sql        |     2 -
 ..._individual_collection_sheet_permissions.sql |     2 -
 ...add_threshold_config_for_last_instalment.sql |     8 -
 .../V238__update_staff_display_name_length.sql  |     4 -
 .../core_db/V239__Loan_Transaction_Receipt.sql  |     2 -
 ...le-configuration-for-client-group-status.sql |     4 -
 ..._aging_config_for_interest_recalculation.sql |     5 -
 .../core_db/V241__fixed_emi_changes.sql         |     3 -
 .../V242__entitytoentitymappingrelation.sql     |    38 -
 .../V243__alter_loan_disbursement_details.sql   |     2 -
 .../V244__staff_assignment_history_table.sql    |    22 -
 .../core_db/V245__open_rd_changes.sql           |     2 -
 ...rop_group_client_foreign_key_from_m_loan.sql |     2 -
 ...ling_principalThresholdForLastInstalment.sql |     3 -
 ...48__added_password_never_expired_to_User.sql |     1 -
 .../core_db/V249__workingdays_permissions.sql   |    36 -
 ...ent-foreign-key-constraint-in-loan-table.sql |     7 -
 .../V250__password_validation_policy.sql        |    43 -
 .../core_db/V251__paymentType_table.sql         |    46 -
 .../V252__bug_fix_teller_cash_management.sql    |    13 -
 ...53__product_loan_configurable_attributes.sql |    21 -
 .../core_db/V254__General_Ledger_Report.sql     |    24 -
 .../V255__pre_close_interest_period_config.sql  |     2 -
 ..._Update script for General_Ledger_report.sql |    32 -
 .../core_db/V257__staff_image_association.sql   |    16 -
 .../V258__interest_compounding_changes.sql      |    10 -
 .../core_db/V259__alter_working_days.sql        |     1 -
 ...reports_for_status_and_activation_change.sql |    82 -
 .../V260__alter_password_validation_policy.sql  |     4 -
 ... for Client_Loan_Account_Schedule_Report.sql |     3 -
 .../core_db/V262__accountNumber_for_groups.sql  |     2 -
 .../migrations/core_db/V263__mifos_reports.sql  |    26 -
 ...t_paymenttype_and_report_read_permission.sql |     2 -
 .../V265__modify_external_service_schema.sql    |    48 -
 .../migrations/core_db/V266__client_fees.sql    |    85 -
 .../V267__client_transaction_permissions.sql    |     3 -
 .../core_db/V268__update_gmail_password.sql     |     1 -
 .../V269__increased_calendar_title_length .sql  |     5 -
 ...d-support-for-withdrawal-fees-on-savings.sql |    12 -
 .../V270__add_rounding_mode_configuration.sql   |     4 -
 .../V271__accounting_for_client_charges.sql     |     9 -
 .../V272__loan_tranche_disbursement_charge.sql  |    26 -
 .../migrations/core_db/V273__oauth_changes.sql  |    43 -
 .../V274__Loan_Reschedule_Code_Value.sql        |     5 -
 ...ransaction_to_repayment_schedule_mapping.sql |    15 -
 .../V276__loan_recalulated_till_date.sql        |     2 -
 .../core_db/V277__Loan_Product_Provisioning.sql |   105 -
 .../V278__LoanTransactionProcessingStrategy.sql |    22 -
 .../migrations/core_db/V279__floating_rates.sql |    61 -
 .../V27__add-loan-type-column-to-loan-table.sql |     2 -
 .../V280__spm_framework_initial_tables.sql      |    72 -
 ...d_configuration_param_backdate-penalties.sql |     4 -
 .../core_db/V282__CustomerSelfService.sql       |    15 -
 .../core_db/V283__Variable_Installments.sql     |    26 -
 .../core_db/V284__update_codevalue.sql          |     2 -
 .../core_db/V285__undo_last_tranche_script.sql  |     3 -
 ...286__partial_period_interest_calcualtion.sql |    10 -
 .../core_db/V287__alter_spm_scorecard.sql       |    19 -
 .../core_db/V288__overdraft_interest.sql        |     8 -
 .../core_db/V289__client_non_person.sql         |    22 -
 ..._accounting-abstractions-and-autoposting.sql |    46 -
 ...290__shares_dividends_permissions_script.sql |     5 -
 ...__add-support-for-annual-fees-on-savings.sql |    13 -
 .../V2__mifosx-base-reference-data-utf8.sql     |   321 -
 ...-referenceNumber-to-acc_gl_journal_entry.sql |     2 -
 .../core_db/V31__drop-autopostings.sql          |     1 -
 ...associate-clients-from-group-permissions.sql |     4 -
 ...nique_check_on_stretchy_report_parameter.sql |     3 -
 ...nique_check_on_stretchy_report_parameter.sql |     2 -
 ..._add_hierarchy_column_for_acc_gl_account.sql |     1 -
 ...36__add_tag_id_column_for_acc_gl_account.sql |     5 -
 ...enter-group-collection-sheet-permissions.sql |     3 -
 .../V38__add-group-summary-details-report.sql   |    70 -
 .../core_db/V39__payment-channels-updates.sql   |    17 -
 ...ifosx-permissions-and-authorisation-utf8.sql |   334 -
 ...V40__add_permissions_for_accounting_rule.sql |     1 -
 .../core_db/V41__group-summary-reports.sql      |    89 -
 ...ult_value_for_id_for_acc_accounting_rule.sql |     2 -
 .../core_db/V43__accounting-for-savings.sql     |    11 -
 ...4__document-increase-size-of-column-type.sql |     2 -
 .../core_db/V45__create_acc_rule_tags_table.sql |    11 -
 .../core_db/V46__extend_datatables_api.sql      |     9 -
 .../V47__staff-hierarchy-link-to-users.sql      |    14 -
 .../core_db/V48__adding-S3-Support.sql          |    77 -
 ...__track-loan-charge-payment-transactions.sql |    13 -
 .../core_db/V4__mifosx-core-reports-utf8.sql    |    11 -
 .../V50__add-grace-settings-to-loan-product.sql |     9 -
 ...tails-related-to-installment-performance.sql |     5 -
 ...lean_support_cols_to_acc_accounting_rule.sql |     6 -
 ...advance-and-late-payments-on-installment.sql |     3 -
 .../V54__charge-to-income-account-mappings.sql  |     3 -
 ...tional-transaction-processing-strategies.sql |    12 -
 .../V56__track-overpaid-amount-on-loans.sql     |     2 -
 ..._and_credit_accounts_acc_accounting_rule.sql |     3 -
 .../V58__create-holiday-tables_changed.sql      |    22 -
 ...__add_group_roles_schema_and_permissions.sql |    22 -
 ...pdate-savings-product-and-account-tables.sql |    11 -
 .../core_db/V60__quipo_dashboard_reports.sql    |   318 -
 .../V61__txn_running_balance_example.sql        |   124 -
 .../V62__add_staff_id_to_m_client_changed.sql   |     5 -
 ...disbursement_with_meeting_column_to_loan.sql |     4 -
 .../V64__add_permission_for_assign_staff.sql    |     1 -
 .../core_db/V65__fix_rupee_symbol_issues.sql    |     5 -
 .../core_db/V66__client_close_functionality.sql |     7 -
 .../core_db/V67__loans_in_advance_table.sql     |    12 -
 .../V68__quipo_dashboard_reports_updated.sql    |   324 -
 .../V69__loans_in_advance_initialise.sql        |    19 -
 ...V6__add_min_max_principal_column_to_loan.sql |     7 -
 .../V70__quipo_program_detail_query_fix.sql     |    38 -
 ...rt_reschedule_repayment_to_configuration.sql |     1 -
 .../core_db/V72__add_m_loan_counter_changes.sql |    19 -
 ...duled_to_and_processed_column_to_holiday.sql |     3 -
 ...74__alter_m_loan_counter_table_add_group.sql |     4 -
 ...-repayments-on-holidays_to_configuration.sql |     1 -
 .../core_db/V76__rename_permission_grouping.sql |    12 -
 .../V77__alter_m_product_loan_changes.sql       |     2 -
 .../V78__breakdown_portfolio_grouping.sql       |     5 -
 .../core_db/V79__schedule_jobs_tables.sql       |    41 -
 .../V7__remove_read_makerchecker_permission.sql |    14 -
 .../V80__schedule_jobs_tables_updates.sql       |    20 -
 .../core_db/V81__savings_related_changes.sql    |    69 -
 ...e_jobs_tables_updates_for_running_status.sql |     5 -
 .../core_db/V83__non-working-days-table.sql     |    11 -
 ...V84__undo_savings_transaction_permission.sql |     5 -
 .../V85__product_mix_related_changes.sql        |    19 -
 .../core_db/V86__update-working-days.sql        |     2 -
 .../V87__add_permission_for_scheduler.sql       |     1 -
 ...dded_update_constrain_for_scheduler_jobs.sql |     2 -
 .../core_db/V89__added_scheduler_group.sql      |     2 -
 ...it-transaction-permissions-if-they-exist.sql |     2 -
 .../V90__client_performance_history_reports.sql |     2 -
 ..._settings_for_holiday_and_non_workingday.sql |     2 -
 .../V91__apply_annual_fees_permission.sql       |     5 -
 ...92__group_center_assign_staff_permission.sql |     2 -
 .../V93__loan_transaction_external_id.sql       |     3 -
 .../core_db/V94__added_savings_accont type.sql  |     2 -
 .../core_db/V95__batch_job_postInterest.sql     |     1 -
 .../V96__savings_accounts_transfers_table.sql   |    56 -
 ...ermission_for_adjust_savings_transaction.sql |     1 -
 ...8__added_currency_roundof_for_multipleof.sql |    12 -
 ...ax_constraint_column_to_loan_loanproduct.sql |    37 -
 .../V1__mifos-platform-shared-tenants.sql       |    89 -
 .../V2__externalize-connection-properties.sql   |    14 -
 .../list_db/V3__deadlock-retry-properties.sql   |     3 -
 ...umns_and_tenants_server_connection_table.sql |    62 -
 .../sql/migrations/sample_data/barebones_db.sql |  5717 ---
 .../migrations/sample_data/load_sample_data.sql |  5974 ---
 .../src/main/webapp/META-INF/context.xml        |     6 -
 .../src/main/webapp/WEB-INF/web.xml             |    23 -
 .../org/apache/fineract/batch/BatchBuilder.java |    67 -
 .../provider/CommandHandlerProviderTest.java    |    70 -
 .../commands/provider/ValidCommandHandler.java  |    39 -
 .../fineract/common/RestAssuredFixture.java     |    69 -
 .../java/org/apache/fineract/common/Utils.java  |   134 -
 .../spring/SpringConfigurationTest.java         |    57 -
 ...tsWithoutDatabaseAndNoJobsConfiguration.java |    70 -
 ...tSpringBootWithMariaDB4jIntegrationTest.java |    22 -
 .../EmbeddedTomcatWithSSLConfigurationTest.java |    38 -
 .../boot/tests/SpringBootServerLoginTest.java   |    31 -
 .../ReadTaxonomyMappingServiceImplTest.java     |    52 -
 .../mix/report/service/XBRLBuilderTest.java     |    95 -
 ...paymentScheduleTransactionProcessorTest.java |   226 -
 ...paymentScheduleTransactionProcessorTest.java |   630 -
 .../LoanProductRelatedDetailTestHelper.java     |   161 -
 ...LoanRepaymentScheduleInstallmentBuilder.java |    83 -
 .../loanaccount/LoanScheduleTestDataHelper.java |    84 -
 .../loanaccount/LoanTransactionBuilder.java     |    58 -
 .../loanaccount/MonetaryCurrencyBuilder.java    |    42 -
 .../portfolio/loanaccount/MoneyBuilder.java     |    44 -
 .../template/TemplateMergeServiceTest.java      |   134 -
 .../src/test/resources/META-INF/context.xml     |    28 -
 .../src/test/resources/template-expected.html   |   152 -
 .../src/test/resources/template.mustache        |   132 -
 release.sh                                      |    17 -
 travis_build.sh                                 |     7 -
 2732 files changed, 397764 deletions(-)
----------------------------------------------------------------------



[42/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/fonts/glyphicons-halflings-regular.eot
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.eot b/docs/system-architecture/css/fonts/glyphicons-halflings-regular.eot
deleted file mode 100644
index 87eaa43..0000000
Binary files a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.eot and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/fonts/glyphicons-halflings-regular.svg
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.svg b/docs/system-architecture/css/fonts/glyphicons-halflings-regular.svg
deleted file mode 100644
index 5fee068..0000000
--- a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.svg
+++ /dev/null
@@ -1,228 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
-<font-face units-per-em="1200" ascent="960" descent="-240" />
-<missing-glyph horiz-adv-x="500" />
-<glyph />
-<glyph />
-<glyph unicode=" " />
-<glyph unicode="*" d="M1100 500h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200z" />
-<glyph unicode="+" d="M1100 400h-400v-400h-300v400h-400v300h400v400h300v-400h400v-300z" />
-<glyph unicode="&#xa0;" />
-<glyph unicode="&#x2000;" horiz-adv-x="652" />
-<glyph unicode="&#x2001;" horiz-adv-x="1304" />
-<glyph unicode="&#x2002;" horiz-adv-x="652" />
-<glyph unicode="&#x2003;" horiz-adv-x="1304" />
-<glyph unicode="&#x2004;" horiz-adv-x="434" />
-<glyph unicode="&#x2005;" horiz-adv-x="326" />
-<glyph unicode="&#x2006;" horiz-adv-x="217" />
-<glyph unicode="&#x2007;" horiz-adv-x="217" />
-<glyph unicode="&#x2008;" horiz-adv-x="163" />
-<glyph unicode="&#x2009;" horiz-adv-x="260" />
-<glyph unicode="&#x200a;" horiz-adv-x="72" />
-<glyph unicode="&#x202f;" horiz-adv-x="260" />
-<glyph unicode="&#x205f;" horiz-adv-x="326" />
-<glyph unicode="&#x20ac;" d="M800 500h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257 q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406z" />
-<glyph unicode="&#x2212;" d="M1100 700h-900v-300h900v300z" />
-<glyph unicode="&#x2601;" d="M178 300h750q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57z" />
-<glyph unicode="&#x2709;" d="M1200 1100h-1200l600 -603zM300 600l-300 -300v600zM1200 900v-600l-300 300zM800 500l400 -400h-1200l400 400l200 -200z" />
-<glyph unicode="&#x270f;" d="M1101 889l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13l-94 -97zM401 189l614 614l-214 214l-614 -614zM-13 -13l333 112l-223 223z" />
-<glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#xe001;" d="M700 100h300v-100h-800v100h300v550l-500 550h1200l-500 -550v-550z" />
-<glyph unicode="&#xe002;" d="M1000 934v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 -75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7q-79 -25 -122.5 -82t-25.5 -112t86 -75.5t147 5.5 q65 21 109 69t44 90v606z" />
-<glyph unicode="&#xe003;" d="M913 432l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -142 -78 -261zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
-<glyph unicode="&#xe005;" d="M649 949q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5t-94 124.5t-33.5 117.5q0 64 28 123t73 100.5t104.5 64t119 20.5 t120 -38.5t104.5 -104.5z" />
-<glyph unicode="&#xe006;" d="M791 522l145 -449l-384 275l-382 -275l146 447l-388 280h479l146 400h2l146 -400h472zM168 71l2 1z" />
-<glyph unicode="&#xe007;" d="M791 522l145 -449l-384 275l-382 -275l146 447l-388 280h479l146 400h2l146 -400h472zM747 331l-74 229l193 140h-235l-77 211l-78 -211h-239l196 -142l-73 -226l192 140zM168 71l2 1z" />
-<glyph unicode="&#xe008;" d="M1200 143v-143h-1200v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100z" />
-<glyph unicode="&#xe009;" d="M1200 1100v-1100h-1200v1100h1200zM200 1000h-100v-100h100v100zM900 1000h-600v-400h600v400zM1100 1000h-100v-100h100v100zM200 800h-100v-100h100v100zM1100 800h-100v-100h100v100zM200 600h-100v-100h100v100zM1100 600h-100v-100h100v100zM900 500h-600v-400h600 v400zM200 400h-100v-100h100v100zM1100 400h-100v-100h100v100zM200 200h-100v-100h100v100zM1100 200h-100v-100h100v100z" />
-<glyph unicode="&#xe010;" d="M500 1050v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5zM1100 1050v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400 q21 0 35.5 -14.5t14.5 -35.5zM500 450v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5zM1100 450v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5z" />
-<glyph unicode="&#xe011;" d="M300 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5zM1100 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM300 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1100 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM300 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM
 700 250v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1100 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5 t14.5 -35.5z" />
-<glyph unicode="&#xe012;" d="M300 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1200 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h700 q21 0 35.5 -14.5t14.5 -35.5zM300 450v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-200q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM1200 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5zM300 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1200 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5z" />
-<glyph unicode="&#xe013;" d="M448 34l818 820l-212 212l-607 -607l-206 207l-212 -212z" />
-<glyph unicode="&#xe014;" d="M882 106l-282 282l-282 -282l-212 212l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282z" />
-<glyph unicode="&#xe015;" d="M913 432l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -142 -78 -261zM507 363q137 0 233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5t-234 -97t-97 -233 t97 -233t234 -97zM600 800h100v-200h-100v-100h-200v100h-100v200h100v100h200v-100z" />
-<glyph unicode="&#xe016;" d="M913 432l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 299q-120 -77 -261 -77q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -141 -78 -262zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 801v-200h400v200h-400z" />
-<glyph unicode="&#xe017;" d="M700 750v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5zM800 975v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123 t-123 184t-45.5 224.5q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155z" />
-<glyph unicode="&#xe018;" d="M1200 1h-200v1200h200v-1200zM900 1h-200v800h200v-800zM600 1h-200v500h200v-500zM300 301h-200v-300h200v300z" />
-<glyph unicode="&#xe019;" d="M488 183l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5 q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39zM600 815q89 0 152 -63 t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152q0 88 63 151t152 63z" />
-<glyph unicode="&#xe020;" d="M900 1100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100zM800 1100v100h-300v-100h300zM200 900h900v-800q0 -41 -29.5 -71 t-70.5 -30h-700q-41 0 -70.5 30t-29.5 71v800zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
-<glyph unicode="&#xe021;" d="M1301 601h-200v-600h-300v400h-300v-400h-300v600h-200l656 644z" />
-<glyph unicode="&#xe022;" d="M600 700h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18v1150q0 11 7 18t18 7h475v-500zM1000 800h-300v300z" />
-<glyph unicode="&#xe023;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM600 600h200 v-100h-300v400h100v-300z" />
-<glyph unicode="&#xe024;" d="M721 400h-242l-40 -400h-539l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538zM712 500l-27 300h-170l-27 -300h224z" />
-<glyph unicode="&#xe025;" d="M1100 400v-400h-1100v400h490l-290 300h200v500h300v-500h200l-290 -300h490zM988 300h-175v-100h175v100z" />
-<glyph unicode="&#xe026;" d="M600 1199q122 0 233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233t47.5 233t127.5 191t191 127.5t233 47.5zM600 1012q-170 0 -291 -121t-121 -291t121 -291t291 -121t291 121 t121 291t-121 291t-291 121zM700 600h150l-250 -300l-250 300h150v300h200v-300z" />
-<glyph unicode="&#xe027;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM850 600h-150 v-300h-200v300h-150l250 300z" />
-<glyph unicode="&#xe028;" d="M0 500l200 700h800q199 -700 200 -700v-475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18v475zM903 1000h-606l-97 -500h200l50 -200h300l50 200h200z" />
-<glyph unicode="&#xe029;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5zM797 598 l-297 -201v401z" />
-<glyph unicode="&#xe030;" d="M1177 600h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123t-123 -184t-45.5 -224.5t45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123 t123 184t45.5 224.5z" />
-<glyph unicode="&#xe031;" d="M700 800l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400zM500 400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122l-145 -145v400h400z" />
-<glyph unicode="&#xe032;" d="M100 1200v-1200h1100v1200h-1100zM1100 100h-900v900h900v-900zM400 800h-100v100h100v-100zM1000 800h-500v100h500v-100zM400 600h-100v100h100v-100zM1000 600h-500v100h500v-100zM400 400h-100v100h100v-100zM1000 400h-500v100h500v-100zM400 200h-100v100h100v-100 zM1000 300h-500v-100h500v100z" />
-<glyph unicode="&#xe034;" d="M200 0h-100v1100h100v-1100zM1100 600v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5z" />
-<glyph unicode="&#xe035;" d="M1200 275v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5t-49.5 -227v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50 q11 0 18 7t7 18zM400 480v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14zM1000 480v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14z" />
-<glyph unicode="&#xe036;" d="M0 800v-400h300l300 -200v800l-300 -200h-300zM971 600l141 -141l-71 -71l-141 141l-141 -141l-71 71l141 141l-141 141l71 71l141 -141l141 141l71 -71z" />
-<glyph unicode="&#xe037;" d="M0 800v-400h300l300 -200v800l-300 -200h-300zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
-<glyph unicode="&#xe038;" d="M974 186l6 8q142 178 142 405q0 230 -144 408l-6 8l-83 -64l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8zM300 801l300 200v-800l-300 200h-300v400h300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257z" />
-<glyph unicode="&#xe039;" d="M100 700h400v100h100v100h-100v300h-500v-600h100v100zM1200 700v500h-600v-200h100v-300h200v-300h300v200h-200v100h200zM100 1100h300v-300h-300v300zM800 800v300h300v-300h-300zM200 900h100v100h-100v-100zM900 1000h100v-100h-100v100zM300 600h-100v-100h-200 v-500h500v500h-200v100zM900 200v-100h-200v100h-100v100h100v200h-200v100h300v-300h200v-100h-100zM400 400v-300h-300v300h300zM300 200h-100v100h100v-100zM1100 300h100v-100h-100v100zM600 100h100v-100h-100v100zM1200 100v-100h-300v100h300z" />
-<glyph unicode="&#xe040;" d="M100 1200h-100v-1000h100v1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 1200v-1000h-200v1000h200zM400 100v-100h-300v100h300zM500 91h100v-91h-100v91zM700 91h100v-91h-100v91zM1100 91v-91h-200v91h200z " />
-<glyph unicode="&#xe041;" d="M1200 500l-500 -500l-699 700v475q0 10 7.5 17.5t17.5 7.5h474zM320 882q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71t29 -71q30 -30 71.5 -30t71.5 30z" />
-<glyph unicode="&#xe042;" d="M1201 500l-500 -500l-699 700v475q0 11 7 18t18 7h474zM1501 500l-500 -500l-50 50l450 450l-700 700h100zM320 882q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71t30 -71q29 -30 71 -30t71 30z" />
-<glyph unicode="&#xe043;" d="M1200 1200v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900v1025l175 175h925z" />
-<glyph unicode="&#xe045;" d="M947 829l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18l-94 -346l40 -124h592zM1200 800v-700h-200v200h-800v-200h-200v700h200l100 -200h600l100 200h200zM881 176l38 -152q2 -10 -3.5 -17t-15.5 -7h-600q-10 0 -15.5 7t-3.5 17l38 152q2 10 11.5 17t19.5 7 h500q10 0 19.5 -7t11.5 -17z" />
-<glyph unicode="&#xe047;" d="M1200 0v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417zM416 521l178 457l46 -140l116 -317 h-340z" />
-<glyph unicode="&#xe048;" d="M100 1199h471q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111t-162 -38.5h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21 t-29 14t-49 14.5v70zM400 1079v-379h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400z" />
-<glyph unicode="&#xe049;" d="M877 1200l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425z" />
-<glyph unicode="&#xe050;" d="M1150 1200h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49v300h150h700zM100 1000v-800h75l-125 -167l-125 167h75v800h-75l125 167 l125 -167h-75z" />
-<glyph unicode="&#xe051;" d="M950 1201h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50v300h150h700zM200 101h800v75l167 -125l-167 -125v75h-800v-75l-167 125l167 125 v-75z" />
-<glyph unicode="&#xe052;" d="M700 950v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35zM1100 650v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h1000 q21 0 35.5 15t14.5 35zM900 350v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35zM1200 50v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35 t35.5 -15h1100q21 0 35.5 15t14.5 35z" />
-<glyph unicode="&#xe053;" d="M1000 950v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35zM1200 650v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h1100 q21 0 35.5 15t14.5 35zM1000 350v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35zM1200 50v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35 t35.5 -15h1100q21 0 35.5 15t14.5 35z" />
-<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="&#xe055;" d="M0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="&#xe056;" d="M0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-10
 0q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="&#xe057;" d="M400 1100h-100v-1100h100v1100zM700 950v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35zM1100 650v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15 h500q20 0 35 15t15 35zM100 425v75h-201v100h201v75l166 -125zM900 350v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35zM1200 50v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5 v-100q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35z" />
-<glyph unicode="&#xe058;" d="M201 950v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35zM801 1100h100v-1100h-100v1100zM601 650v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15 h500q20 0 35 15t15 35zM1101 425v75h200v100h-200v75l-167 -125zM401 350v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35zM701 50v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5 v-100q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35z" />
-<glyph unicode="&#xe059;" d="M900 925v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53zM1200 300l-300 300l300 300v-600z" />
-<glyph unicode="&#xe060;" d="M1200 1056v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31zM1100 1000h-1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500zM476 750q0 -56 -39 -95t-95 -39t-95 39t-39 95t39 95t95 39t95 -39 t39 -95z" />
-<glyph unicode="&#xe062;" d="M600 1213q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262q0 124 60.5 231.5t165 172t226.5 64.5zM599 514q107 0 182.5 75.5t75.5 182.5t-75.5 182 t-182.5 75t-182 -75.5t-75 -181.5q0 -107 75.5 -182.5t181.5 -75.5z" />
-<glyph unicode="&#xe063;" d="M600 1199q122 0 233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233t47.5 233t127.5 191t191 127.5t233 47.5zM600 173v854q-176 0 -301.5 -125t-125.5 -302t125.5 -302t301.5 -125z " />
-<glyph unicode="&#xe064;" d="M554 1295q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 138.5t-64 210.5q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5zM455 296q-7 6 -18 17 t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156q14 -82 59.5 -136t136.5 -80z" />
-<glyph unicode="&#xe065;" d="M1108 902l113 113l-21 85l-92 28l-113 -113zM1100 625v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125zM436 341l161 50l412 412l-114 113l-405 -405z" />
-<glyph unicode="&#xe066;" d="M1100 453v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5z M813 431l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209z" />
-<glyph unicode="&#xe067;" d="M1100 569v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5h300q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69z M625 348l566 567l-136 137l-430 -431l-147 147l-136 -136z" />
-<glyph unicode="&#xe068;" d="M900 303v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198l-300 300l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296z" />
-<glyph unicode="&#xe069;" d="M900 0l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100z" />
-<glyph unicode="&#xe070;" d="M1200 0l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100z" />
-<glyph unicode="&#xe071;" d="M1200 0l-500 488v-488l-564 550l564 550v-487l500 487v-1100z" />
-<glyph unicode="&#xe072;" d="M1100 550l-900 550v-1100z" />
-<glyph unicode="&#xe073;" d="M500 150v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM900 150v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -21 14.5 -35.5t35.5 -14.5h200 q21 0 35.5 14.5t14.5 35.5z" />
-<glyph unicode="&#xe074;" d="M1100 150v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35z" />
-<glyph unicode="&#xe075;" d="M500 0v488l-500 -488v1100l500 -487v487l564 -550z" />
-<glyph unicode="&#xe076;" d="M1050 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488l-500 -488v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5z" />
-<glyph unicode="&#xe078;" d="M650 1064l-550 -564h1100zM1200 350v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
-<glyph unicode="&#xe079;" d="M777 7l240 240l-353 353l353 353l-240 240l-592 -594z" />
-<glyph unicode="&#xe080;" d="M513 -46l-241 240l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1z" />
-<glyph unicode="&#xe081;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 900v-200h-200v-200h200v-200h200v200h200v200h-200v200h-200z" />
-<glyph unicode="&#xe082;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM300 700v-200h600v200h-600z" />
-<glyph unicode="&#xe083;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM247 741l141 -141l-142 -141l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141 l-141 142z" />
-<glyph unicode="&#xe084;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM546 623l-102 102l-174 -174l276 -277l411 411l-175 174z" />
-<glyph unicode="&#xe085;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 500h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3 q-105 0 -172 -56t-67 -183h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5zM500 400v-100h200v100h-200z" />
-<glyph unicode="&#xe086;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 900v-100h200v100h-200zM400 700v-100h100v-200h-100v-100h400v100h-100v300h-300z" />
-<glyph unicode="&#xe087;" d="M1200 700v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194v200h194q15 60 36 104.5t55.5 86t88 69t126.5 40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203zM700 500v-206q149 48 201 206h-201v200h200 q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 -77.5t-79 -125.5h209v-200h-210q24 -73 79.5 -127.5t130.5 -78.5v206h200z" />
-<glyph unicode="&#xe088;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM844 735 l-135 -135l135 -135l-109 -109l-135 135l-135 -135l-109 109l135 135l-135 135l109 109l135 -135l135 135z" />
-<glyph unicode="&#xe089;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM896 654 l-346 -345l-228 228l141 141l87 -87l204 205z" />
-<glyph unicode="&#xe090;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM248 385l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5q0 -115 62 -215zM955 809l-564 -564q97 -59 209 -59q171 0 292.5 121.5 t121.5 292.5q0 112 -59 209z" />
-<glyph unicode="&#xe091;" d="M1200 400h-600v-301l-600 448l600 453v-300h600v-300z" />
-<glyph unicode="&#xe092;" d="M600 400h-600v300h600v300l600 -453l-600 -448v301z" />
-<glyph unicode="&#xe093;" d="M1098 600h-298v-600h-300v600h-296l450 600z" />
-<glyph unicode="&#xe094;" d="M998 600l-449 -600l-445 600h296v600h300v-600h298z" />
-<glyph unicode="&#xe095;" d="M600 199v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453z" />
-<glyph unicode="&#xe096;" d="M1200 1200h-400l129 -129l-294 -294l142 -142l294 294l129 -129v400zM565 423l-294 -294l129 -129h-400v400l129 -129l294 294z" />
-<glyph unicode="&#xe097;" d="M871 730l129 -130h-400v400l129 -129l295 295l142 -141zM200 600h400v-400l-129 130l-295 -295l-142 141l295 295z" />
-<glyph unicode="&#xe101;" d="M600 1177q118 0 224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5t45.5 224.5t123 184t184 123t224.5 45.5zM686 549l58 302q4 20 -8 34.5t-33 14.5h-207q-20 0 -32 -14.5t-8 -34.5 l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5zM700 400h-200v-100h200v100z" />
-<glyph unicode="&#xe102;" d="M1200 900h-111v6t-1 15t-3 18l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6h-111v-100h100v-200h400v300h200v-300h400v200h100v100z M731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269zM481 900h-281q-3 0 14 48t35 96l18 47zM100 0h400v400h-400v-400zM700 400h400v-400h-400v400z" />
-<glyph unicode="&#xe103;" d="M0 121l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55l-201 -202 v143zM692 611q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5t86.5 76.5q55 66 367 234z" />
-<glyph unicode="&#xe105;" d="M1261 600l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30l-26 40l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5 t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30zM600 240q64 0 123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212 q0 85 46 158q-102 -87 -226 -258q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5zM484 762l-107 -106q49 -124 154 -191l105 105q-37 24 -75 72t-57 84z" />
-<glyph unicode="&#xe106;" d="M906 1200l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43l-26 40l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148zM1261 600l-26 -40q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5 t-124 -100t-146.5 -79l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52zM513 264l37 141q-107 18 -178.5 101.5t-71.5 193.5q0 85 46 158q-102 -87 -226 -258q210 -282 393 -336z M484 762l-107 -106q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68z" />
-<glyph unicode="&#xe107;" d="M-47 0h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66t50.5 -34zM700 200v100h-200v-100h-345l445 723l445 -723h-345zM700 700h-200v-100l100 -300l100 300v100z" />
-<glyph unicode="&#xe108;" d="M800 711l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 78h-222l-94 -78q-19 -9 -32 -1t-13 29v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41q0 20 11 44.5t26 38.5 l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339z" />
-<glyph unicode="&#xe110;" d="M941 800l-600 -600h-341v200h259l600 600h241v198l300 -295l-300 -300v197h-159zM381 678l141 142l-181 180h-341v-200h259zM1100 598l300 -295l-300 -300v197h-241l-181 181l141 142l122 -123h159v198z" />
-<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
-<glyph unicode="&#xe112;" d="M400 900h-300v300h300v-300zM1100 900h-300v300h300v-300zM1100 800v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5t-58 109.5t-31.5 116t-15 104t-3 83v200h300v-250q0 -113 6 -145 q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300z" />
-<glyph unicode="&#xe113;" d="M902 184l226 227l-578 579l-580 -579l227 -227l352 353z" />
-<glyph unicode="&#xe114;" d="M650 218l578 579l-226 227l-353 -353l-352 353l-227 -227z" />
-<glyph unicode="&#xe115;" d="M1198 400v600h-796l215 -200h381v-400h-198l299 -283l299 283h-200zM-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196z" />
-<glyph unicode="&#xe116;" d="M1050 1200h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35 q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43l-100 475q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5z" />
-<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
-<glyph unicode="&#xe118;" d="M201 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000zM1501 700l-300 -700h-1200l300 700h1200z" />
-<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
-<glyph unicode="&#xe120;" d="M900 303v197h-600v-197l-300 297l300 298v-198h600v198l300 -298z" />
-<glyph unicode="&#xe121;" d="M31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM100 300h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM900 200h-100v-100h100v100z M1100 200h-100v-100h100v100z" />
-<glyph unicode="&#xe122;" d="M1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35zM325 800l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351v250v5 q0 13 0.5 18.5t2.5 13t8 10.5t15 3h200zM-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5z" />
-<glyph unicode="&#xe124;" d="M445 1180l-45 -233l-224 78l78 -225l-233 -44l179 -156l-179 -155l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180z" />
-<glyph unicode="&#xe125;" d="M700 1200h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400q0 -75 100 -75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5zM700 925l-50 -225h450 v-125l-250 -375h-214l-136 100h-100v375l150 212l100 213h50v-175zM0 800v-600h200v600h-200z" />
-<glyph unicode="&#xe126;" d="M700 0h-50q-27 0 -51 20t-38 48l-96 198l-145 196q-20 26 -20 63v400q0 75 100 75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5zM200 400h-200v600h200 v-600zM700 275l-50 225h450v125l-250 375h-214l-136 -100h-100v-375l150 -212l100 -213h50v175z" />
-<glyph unicode="&#xe127;" d="M364 873l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM408 792v-503 l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83zM208 200h-200v600h200v-600z" />
-<glyph unicode="&#xe128;" d="M475 1104l365 -230q7 -4 16.5 -10.5t26 -26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-84 0 -139 39t-55 111t54 110t139 37h302l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6zM370 946 l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100h222q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l106 89v502l-342 237zM1199 201h-200v600h200v-600z" />
-<glyph unicode="&#xe129;" d="M1100 473v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90zM911 400h-503l-236 339 l83 86l183 -146q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294zM1000 200v-200h-600v200h600z" />
-<glyph unicode="&#xe130;" d="M305 1104v200h600v-200h-600zM605 310l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15l-230 -362q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106z M905 804v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146l-83 86l237 339h503z" />
-<glyph unicode="&#xe131;" d="M603 1195q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM598 701h-298v-201h300l-2 -194l402 294l-402 298v-197z" />
-<glyph unicode="&#xe132;" d="M597 1195q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5zM200 600l400 -294v194h302v201h-300v197z" />
-<glyph unicode="&#xe133;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM300 600h200v-300h200v300h200l-300 400z" />
-<glyph unicode="&#xe134;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM500 900v-300h-200l300 -400l300 400h-200v300h-200z" />
-<glyph unicode="&#xe135;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM627 1101q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6 q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55 t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q102 -2 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7 q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 1
 0 37q8 0 23.5 -1.5t24.5 -1.5 t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 41 1 44q31 -13 58.5 -14.5t39.5 3.5l11 4q6 36 -17 53.5t-64 28.5t-56 23q-19 -3 -37 0zM613 994q0 -18 8 -42.5t16.5 -44t9.5 -23.5q-9 2 -31 5t-36 5t-32 8t-30 14q3 12 16 30t16 25q10 -10 18.5 -10 t14 6t14.5 14.5t16 12.5z" />
-<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
-<glyph unicode="&#xe138;" d="M1100 1200v-100h-1000v100h1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
-<glyph unicode="&#xe140;" d="M329 729l142 142l-200 200l129 129h-400v-400l129 129zM1200 1200v-400l-129 129l-200 -200l-142 142l200 200l-129 129h400zM271 129l129 -129h-400v400l129 -129l200 200l142 -142zM1071 271l129 129v-400h-400l129 129l-200 200l142 142z" />
-<glyph unicode="&#xe141;" d="M596 1192q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM596 1010q-171 0 -292.5 -121.5t-121.5 -292.5q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5zM455 905 q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5t16 38.5t39 16.5zM708 821l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5 q0 32 20.5 56.5t51.5 29.5zM855 709q23 0 38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39q0 22 16 38t39 16zM345 709q23 0 39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39t15.5 38.5t38.5 15.5z" />
-<glyph unicode="&#xe143;" d="M649 54l-16 22q-90 125 -293 323q-71 70 -104.5 105.5t-77 89.5t-61 99t-17.5 91q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-203 -198 -293 -323zM844 524l12 12 q64 62 97.5 97t64.5 79t31 72q0 71 -48 119t-105 48q-74 0 -132 -82l-118 -171l-114 174q-51 79 -123 79q-60 0 -109.5 -49t-49.5 -118q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203z" />
-<glyph unicode="&#xe144;" d="M476 406l19 -17l105 105l-212 212l389 389l247 -247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159q0 -93 66 -159zM123 193l141 -141q66 -66 159 -66q95 0 159 66 l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159q0 -94 66 -160z" />
-<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM900 1000h-600v-700h600v700zM600 46q43 0 73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5t-73.5 -30.5t-30.5 -73.5 t30.5 -73.5t73.5 -30.5z" />
-<glyph unicode="&#xe148;" d="M700 1029v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5h139q5 -77 48.5 -126.5t117.5 -64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5 t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5zM600 755v274q-61 -8 -97.5 -37.5t-36.5 -102.5q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3zM700 548 v-311q170 18 170 151q0 64 -44 99.5t-126 60.5z" />
-<glyph unicode="&#xe149;" d="M866 300l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5t-30 142.5h-221v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5 t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 -24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5t15.5 -27t13.5 -24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94 q-41 -59 -99 -113q35 11 84 18t70 7q32 1 102 -16t104 -17q76 0 136 30z" />
-<glyph unicode="&#xe150;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1200l298 -300h-198v-900h-200v900h-198z" />
-<glyph unicode="&#xe151;" d="M400 300h198l-298 -300l-298 300h198v900h200v-900zM1000 1200v-500h-100v100h-100v-100h-100v500h300zM901 1100h-100v-200h100v200zM700 500h300v-200h-99v-100h-100v100h99v100h-200v100zM800 100h200v-100h-300v200h100v-100z" />
-<glyph unicode="&#xe152;" d="M400 300h198l-298 -300l-298 300h198v900h200v-900zM1000 1200v-200h-99v-100h-100v100h99v100h-200v100h300zM800 800h200v-100h-300v200h100v-100zM700 500h300v-500h-100v100h-100v-100h-100v500zM801 200h100v200h-100v-200z" />
-<glyph unicode="&#xe153;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1100h-100v100h200v-500h-100v400zM1100 500v-500h-100v100h-200v400h300zM1001 400h-100v-200h100v200z" />
-<glyph unicode="&#xe154;" d="M300 0l298 300h-198v900h-200v-900h-198zM1100 1200v-500h-100v100h-200v400h300zM1001 1100h-100v-200h100v200zM900 400h-100v100h200v-500h-100v400z" />
-<glyph unicode="&#xe155;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
-<glyph unicode="&#xe156;" d="M300 0l298 300h-198v900h-200v-900h-198zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
-<glyph unicode="&#xe157;" d="M400 1100h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5 t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5z" />
-<glyph unicode="&#xe158;" d="M700 0h-300q-163 0 -281.5 117.5t-118.5 282.5v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5 t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5zM400 800v-500l333 250z" />
-<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM900 300v500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5zM800 700h-500l250 -333z" />
-<glyph unicode="&#xe160;" d="M1100 700v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5zM900 300v500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5zM550 733l-250 -333h500z" />
-<glyph unicode="&#xe161;" d="M500 1100h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200zM700 550l-400 -350v200h-300v300h300v200z" />
-<glyph unicode="&#xe162;" d="M403 2l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 -257t-209.5 -238.5q-17 -19 -7 -40q10 -19 32 -19h302q-155 -438 -160 -458q-5 -21 4 -32z" />
-<glyph unicode="&#xe163;" d="M800 200h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185zM900 200v200h-300v300h300v200l400 -350z" />
-<glyph unicode="&#xe164;" d="M1200 700l-149 149l-342 -353l-213 213l353 342l-149 149h500v-500zM1022 571l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5v-300 q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98z" />
-<glyph unicode="&#xe165;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM600 794 q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
-<glyph unicode="&#xe166;" d="M700 800v400h-300v-400h-300l445 -500l450 500h-295zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
-<glyph unicode="&#xe167;" d="M400 700v-300h300v300h295l-445 500l-450 -500h300zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
-<glyph unicode="&#xe168;" d="M405 400l596 596l-154 155l-442 -442l-150 151l-155 -155zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
-<glyph unicode="&#xe169;" d="M409 1103l-97 97l-212 -212l97 -98zM650 861l-149 149l-212 -212l149 -149l-238 -248h700v699zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
-<glyph unicode="&#xe170;" d="M539 950l-149 -149l212 -212l149 148l248 -237v700h-699zM297 709l-97 -97l212 -212l98 97zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
-<glyph unicode="&#xe171;" d="M1200 1199v-1079l-475 272l-310 -393v416h-392zM1166 1148l-672 -712v-226z" />
-<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1200h-100v-200h100v200z" />
-<glyph unicode="&#xe173;" d="M578 500h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120zM700 1200h-100v-200h100v200zM1300 538l-475 -476l-244 244l123 123l120 -120l353 352z" />
-<glyph unicode="&#xe174;" d="M529 500h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170zM700 1200h-100v-200h100v200zM1167 6l-170 170l-170 -170l-127 127l170 170l-170 170l127 127l170 -170l170 170l127 -128 l-170 -169l170 -170z" />
-<glyph unicode="&#xe175;" d="M700 500h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200zM700 1000h-100v200h100v-200zM1000 600h-200v-300h-200l300 -300l300 300h-200v300z" />
-<glyph unicode="&#xe176;" d="M602 500h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200zM700 1000h-100v200h100v-200zM1000 300h200l-300 300l-300 -300h200v-300h200v300z" />
-<glyph unicode="&#xe177;" d="M1200 900v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h1200zM0 800v-550q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200zM100 500h400v-200h-400v200z" />
-<glyph unicode="&#xe178;" d="M500 1000h400v198l300 -298l-300 -298v198h-400v200zM100 800v200h100v-200h-100zM400 800h-100v200h100v-200zM700 300h-400v-198l-300 298l300 298v-198h400v-200zM800 500h100v-200h-100v200zM1000 500v-200h100v200h-100z" />
-<glyph unicode="&#xe179;" d="M1200 50v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 -50.5t-18.5 -65.5v-359q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM550 1200l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447l-100 203v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300z" />
-<glyph unicode="&#xe180;" d="M1100 106v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394 q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5z" />
-<glyph unicode="&#xe181;" d="M675 1000l-100 100h-375l-100 -100h400l200 -200v-98l295 98h105v200h-425zM500 300v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5zM100 800h300v-200h-300v200zM700 565l400 133 v-163l-400 -133v163zM100 500h300v-200h-300v200zM805 300l295 98v-298h-425l-100 -100h-375l-100 100h400l200 200h105z" />
-<glyph unicode="&#xe182;" d="M179 1169l-162 -162q-1 -11 -0.5 -32.5t16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 -267 227q-126 126 -227 268l118 118 q17 17 20 41.5t-11 44.5l-139 194q-14 19 -36.5 22t-40.5 -14z" />
-<glyph unicode="&#xe183;" d="M1200 712v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40t-53.5 -36.5t-31 -27.5l-9 -10v-200q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38 t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5zM800 650l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5 t30 -27.5t12 -24l1 -10v-50z" />
-<glyph unicode="&#xe184;" d="M175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250zM1200 100v-100h-1100v100h1100z" />
-<glyph unicode="&#xe185;" d="M600 1100h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300v1000q0 41 29.5 70.5t70.5 29.5zM1000 800h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300v700q0 41 29.5 70.5t70.5 29.5zM400 0v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400h300z" />
-<glyph unicode="&#xe186;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-300h200v-100h-200v-100h300v300h-200v100h200v100h-300zM800 800h-200v-500h200v100h100v300h-100 v100zM800 700v-300h-100v300h100z" />
-<glyph unicode="&#xe187;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM400 600h-100v200h-100v-500h100v200h100v-200h100v500h-100v-200zM800 800h-200v-500h200v100h100v300h-100 v100zM800 700v-300h-100v300h100z" />
-<glyph unicode="&#xe188;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-500h300v100h-200v300h200v100h-300zM600 800v-500h300v100h-200v300h200v100h-300z" />
-<glyph unicode="&#xe189;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM500 700l-300 -150l300 -150v300zM600 400l300 150l-300 150v-300z" />
-<glyph unicode="&#xe190;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM900 800v-500h-700v500h700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM800 700h-130 q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300z" />
-<glyph unicode="&#xe191;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-300h200v-100h-200v-100h300v300h-200v100h200v100h-300zM800 300h100v500h-200v-100h100v-400z M601 300h100v100h-100v-100z" />
-<glyph unicode="&#xe192;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM300 700v100h-100v-500h300v400h-200zM800 300h100v500h-200v-100h100v-400zM401 400h-100v200h100v-200z M601 300h100v100h-100v-100z" />
-<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM1000 900h-900v-700h900v700zM400 700h-200v100h300v-300h-99v-100h-100v100h99v200zM800 700h-100v100h200v-500h-100v400zM201 400h100v-100 h-100v100zM701 300h-100v100h100v-100z" />
-<glyph unicode="&#xe194;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM800 700h-300 v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
-<glyph unicode="&#xe195;" d="M596 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM596 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM800 700v-100 h-100v100h-200v-100h200v-100h-200v-100h-100v400h300zM800 400h-100v100h100v-100z" />
-<glyph unicode="&#xe197;" d="M800 300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57h222v300h400v-300zM700 200h200l-300 -300 l-300 300h200v300h200v-300z" />
-<glyph unicode="&#xe198;" d="M600 714l403 -403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57h8zM700 -100h-200v300h-200l300 300 l300 -300h-200v-300z" />
-<glyph unicode="&#xe199;" d="M700 200h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-155l-75 -45h350l-75 45v155z" />
-<glyph unicode="&#xe200;" d="M700 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5 q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350z" />
-<glyph unicode="&#x1f4bc;" d="M800 1000h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100zM500 1000h200v100h-200v-100zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
-<glyph unicode="&#x1f4c5;" d="M1100 900v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150h1100zM0 800v-750q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100zM100 600h100v-100h-100v100zM300 600h100v-100h-100v100z M500 600h100v-100h-100v100zM700 600h100v-100h-100v100zM900 600h100v-100h-100v100zM100 400h100v-100h-100v100zM300 400h100v-100h-100v100zM500 400h100v-100h-100v100zM700 400h100v-100h-100v100zM900 400h100v-100h-100v100zM100 200h100v-100h-100v100zM300 200 h100v-100h-100v100zM500 200h100v-100h-100v100zM700 200h100v-100h-100v100zM900 200h100v-100h-100v100z" />
-<glyph unicode="&#x1f4cc;" d="M902 1185l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207l-380 -303l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15z" />
-<glyph unicode="&#x1f4ce;" d="M518 119l69 -60l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163t35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84 t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348 q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256z" />
-<glyph unicode="&#x1f4f7;" d="M1200 200v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5z M1000 700h-100v100h100v-100zM844 500q0 -100 -72 -172t-172 -72t-172 72t-72 172t72 172t172 72t172 -72t72 -172zM706 500q0 44 -31 75t-75 31t-75 -31t-31 -75t31 -75t75 -31t75 31t31 75z" />
-<glyph unicode="&#x1f512;" d="M900 800h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
-<glyph unicode="&#x1f514;" d="M1062 400h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37t-251.5 -23t-245.5 20.5t-178.5 41.5l-58 20q-18 7 -31 27.5t-13 40.5q0 21 13.5 35.5t33.5 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94 q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327zM600 104q-54 0 -103 6q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6z" />
-<glyph unicode="&#x1f516;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
-<glyph unicode="&#x1f525;" d="M400 755q2 -12 8 -41.5t8 -43t6 -39.5t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85t5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5 q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129 q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5z" />
-<glyph unicode="&#x1f527;" d="M948 778l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138z" />
-</font>
-</defs></svg> 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/fonts/glyphicons-halflings-regular.ttf
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.ttf b/docs/system-architecture/css/fonts/glyphicons-halflings-regular.ttf
deleted file mode 100644
index be784dc..0000000
Binary files a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.ttf and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/fonts/glyphicons-halflings-regular.woff
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.woff b/docs/system-architecture/css/fonts/glyphicons-halflings-regular.woff
deleted file mode 100644
index 2cc3e48..0000000
Binary files a/docs/system-architecture/css/fonts/glyphicons-halflings-regular.woff and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/main.css
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/main.css b/docs/system-architecture/css/main.css
deleted file mode 100644
index 00a3e30..0000000
--- a/docs/system-architecture/css/main.css
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * HTML5 Boilerplate
- *
- * What follows is the result of much research on cross-browser styling.
- * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
- * Kroc Camen, and the H5BP dev community and team.
- */
-
-/* ==========================================================================
-   Base styles: opinionated defaults
-   ========================================================================== */
-
-html,
-button,
-input,
-select,
-textarea {
-    color: #222;
-}
-
-body {
-    font-size: 1em;
-    line-height: 1.4;
-}
-
-/*
- * Remove text-shadow in selection highlight: h5bp.com/i
- * These selection rule sets have to be separate.
- * Customize the background color to match your design.
- */
-
-::-moz-selection {
-    background: #b3d4fc;
-    text-shadow: none;
-}
-
-::selection {
-    background: #b3d4fc;
-    text-shadow: none;
-}
-
-/*
- * A better looking default horizontal rule
- */
-
-hr {
-    display: block;
-    height: 1px;
-    border: 0;
-    border-top: 1px solid #ccc;
-    margin: 1em 0;
-    padding: 0;
-}
-
-/*
- * Remove the gap between images and the bottom of their containers: h5bp.com/i/440
- */
-
-img {
-    vertical-align: middle;
-}
-
-/*
- * Remove default fieldset styles.
- */
-
-fieldset {
-    border: 0;
-    margin: 0;
-    padding: 0;
-}
-
-/*
- * Allow only vertical resizing of textareas.
- */
-
-textarea {
-    resize: vertical;
-}
-
-/* ==========================================================================
-   Chrome Frame prompt
-   ========================================================================== */
-
-.chromeframe {
-    margin: 0.2em 0;
-    background: #ccc;
-    color: #000;
-    padding: 0.2em 0;
-}
-
-/* ==========================================================================
-   Author's custom styles
-   ========================================================================== */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* ==========================================================================
-   Helper classes
-   ========================================================================== */
-
-/*
- * Image replacement
- */
-
-.ir {
-    background-color: transparent;
-    border: 0;
-    overflow: hidden;
-    /* IE 6/7 fallback */
-    *text-indent: -9999px;
-}
-
-.ir:before {
-    content: "";
-    display: block;
-    width: 0;
-    height: 150%;
-}
-
-/*
- * Hide from both screenreaders and browsers: h5bp.com/u
- */
-
-.hidden {
-    display: none !important;
-    visibility: hidden;
-}
-
-/*
- * Hide only visually, but have it available for screenreaders: h5bp.com/v
- */
-
-.visuallyhidden {
-    border: 0;
-    clip: rect(0 0 0 0);
-    height: 1px;
-    margin: -1px;
-    overflow: hidden;
-    padding: 0;
-    position: absolute;
-    width: 1px;
-}
-
-/*
- * Extends the .visuallyhidden class to allow the element to be focusable
- * when navigated to via the keyboard: h5bp.com/p
- */
-
-.visuallyhidden.focusable:active,
-.visuallyhidden.focusable:focus {
-    clip: auto;
-    height: auto;
-    margin: 0;
-    overflow: visible;
-    position: static;
-    width: auto;
-}
-
-/*
- * Hide visually and from screenreaders, but maintain layout
- */
-
-.invisible {
-    visibility: hidden;
-}
-
-/*
- * Clearfix: contain floats
- *
- * For modern browsers
- * 1. The space content is one way to avoid an Opera bug when the
- *    `contenteditable` attribute is included anywhere else in the document.
- *    Otherwise it causes space to appear at the top and bottom of elements
- *    that receive the `clearfix` class.
- * 2. The use of `table` rather than `block` is only necessary if using
- *    `:before` to contain the top-margins of child elements.
- */
-
-.clearfix:before,
-.clearfix:after {
-    content: " "; /* 1 */
-    display: table; /* 2 */
-}
-
-.clearfix:after {
-    clear: both;
-}
-
-/*
- * For IE 6/7 only
- * Include this rule to trigger hasLayout and contain floats.
- */
-
-.clearfix {
-    *zoom: 1;
-}
-
-/* ==========================================================================
-   EXAMPLE Media Queries for Responsive Design.
-   These examples override the primary ('mobile first') styles.
-   Modify as content requires.
-   ========================================================================== */
-
-@media only screen and (min-width: 35em) {
-    /* Style adjustments for viewports that meet the condition */
-}
-
-@media print,
-       (-o-min-device-pixel-ratio: 5/4),
-       (-webkit-min-device-pixel-ratio: 1.25),
-       (min-resolution: 120dpi) {
-    /* Style adjustments for high resolution devices */
-}
-
-/* ==========================================================================
-   Print styles.
-   Inlined to avoid required HTTP connection: h5bp.com/r
-   ========================================================================== */
-
-@media print {
-    * {
-        background: transparent !important;
-        color: #000 !important; /* Black prints faster: h5bp.com/s */
-        box-shadow: none !important;
-        text-shadow: none !important;
-    }
-
-    a,
-    a:visited {
-        text-decoration: underline;
-    }
-
-    a[href]:after {
-        content: " (" attr(href) ")";
-    }
-
-    abbr[title]:after {
-        content: " (" attr(title) ")";
-    }
-
-    /*
-     * Don't show links for images, or javascript/internal links
-     */
-
-    .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; /* h5bp.com/t */
-    }
-
-    tr,
-    img {
-        page-break-inside: avoid;
-    }
-
-    img {
-        max-width: 100% !important;
-    }
-
-    @page {
-        margin: 0.5cm;
-    }
-
-    p,
-    h2,
-    h3 {
-        orphans: 3;
-        widows: 3;
-    }
-
-    h2,
-    h3 {
-        page-break-after: avoid;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/normalize.css
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/normalize.css b/docs/system-architecture/css/normalize.css
deleted file mode 100644
index 8d57e3c..0000000
--- a/docs/system-architecture/css/normalize.css
+++ /dev/null
@@ -1,533 +0,0 @@
-/*! normalize.css v1.1.1 | MIT License | git.io/normalize */
-
-/* ==========================================================================
-   HTML5 display definitions
-   ========================================================================== */
-
-/**
- * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
-    display: block;
-}
-
-/**
- * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
- */
-
-audio,
-canvas,
-video {
-    display: inline-block;
-    *display: inline;
-    *zoom: 1;
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
-    display: none;
-    height: 0;
-}
-
-/**
- * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
- * Known issue: no IE 6 support.
- */
-
-[hidden] {
-    display: none;
-}
-
-/* ==========================================================================
-   Base
-   ========================================================================== */
-
-/**
- * 1. Prevent system color scheme's background color being used in Firefox, IE,
- *    and Opera.
- * 2. Prevent system color scheme's text color being used in Firefox, IE, and
- *    Opera.
- * 3. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
- *    `em` units.
- * 4. Prevent iOS text size adjust after orientation change, without disabling
- *    user zoom.
- */
-
-html {
-    background: #fff; /* 1 */
-    color: #000; /* 2 */
-    font-size: 100%; /* 3 */
-    -webkit-text-size-adjust: 100%; /* 4 */
-    -ms-text-size-adjust: 100%; /* 4 */
-}
-
-/**
- * Address `font-family` inconsistency between `textarea` and other form
- * elements.
- */
-
-html,
-button,
-input,
-select,
-textarea {
-    font-family: sans-serif;
-}
-
-/**
- * Address margins handled incorrectly in IE 6/7.
- */
-
-body {
-    margin: 0;
-}
-
-/* ==========================================================================
-   Links
-   ========================================================================== */
-
-/**
- * Address `outline` inconsistency between Chrome and other browsers.
- */
-
-a:focus {
-    outline: thin dotted;
-}
-
-/**
- * Improve readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
-    outline: 0;
-}
-
-/* ==========================================================================
-   Typography
-   ========================================================================== */
-
-/**
- * Address font sizes and margins set differently in IE 6/7.
- * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
- * and Chrome.
- */
-
-h1 {
-    font-size: 2em;
-    margin: 0.67em 0;
-}
-
-h2 {
-    font-size: 1.5em;
-    margin: 0.83em 0;
-}
-
-h3 {
-    font-size: 1.17em;
-    margin: 1em 0;
-}
-
-h4 {
-    font-size: 1em;
-    margin: 1.33em 0;
-}
-
-h5 {
-    font-size: 0.83em;
-    margin: 1.67em 0;
-}
-
-h6 {
-    font-size: 0.67em;
-    margin: 2.33em 0;
-}
-
-/**
- * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
- */
-
-abbr[title] {
-    border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
- */
-
-b,
-strong {
-    font-weight: bold;
-}
-
-blockquote {
-    margin: 1em 40px;
-}
-
-/**
- * Address styling not present in Safari 5 and Chrome.
- */
-
-dfn {
-    font-style: italic;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- * Known issue: no IE 6/7 normalization.
- */
-
-hr {
-    -moz-box-sizing: content-box;
-    box-sizing: content-box;
-    height: 0;
-}
-
-/**
- * Address styling not present in IE 6/7/8/9.
- */
-
-mark {
-    background: #ff0;
-    color: #000;
-}
-
-/**
- * Address margins set differently in IE 6/7.
- */
-
-p,
-pre {
-    margin: 1em 0;
-}
-
-/**
- * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
- */
-
-code,
-kbd,
-pre,
-samp {
-    font-family: monospace, serif;
-    _font-family: 'courier new', monospace;
-    font-size: 1em;
-}
-
-/**
- * Improve readability of pre-formatted text in all browsers.
- */
-
-pre {
-    white-space: pre;
-    white-space: pre-wrap;
-    word-wrap: break-word;
-}
-
-/**
- * Address CSS quotes not supported in IE 6/7.
- */
-
-q {
-    quotes: none;
-}
-
-/**
- * Address `quotes` property not supported in Safari 4.
- */
-
-q:before,
-q:after {
-    content: '';
-    content: none;
-}
-
-/**
- * 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;
-}
-
-/* ==========================================================================
-   Lists
-   ========================================================================== */
-
-/**
- * Address margins set differently in IE 6/7.
- */
-
-dl,
-menu,
-ol,
-ul {
-    margin: 1em 0;
-}
-
-dd {
-    margin: 0 0 0 40px;
-}
-
-/**
- * Address paddings set differently in IE 6/7.
- */
-
-menu,
-ol,
-ul {
-    padding: 0 0 0 40px;
-}
-
-/**
- * Correct list images handled incorrectly in IE 7.
- */
-
-nav ul,
-nav ol {
-    list-style: none;
-    list-style-image: none;
-}
-
-/* ==========================================================================
-   Embedded content
-   ========================================================================== */
-
-/**
- * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
- * 2. Improve image quality when scaled in IE 7.
- */
-
-img {
-    border: 0; /* 1 */
-    -ms-interpolation-mode: bicubic; /* 2 */
-}
-
-/**
- * Correct overflow displayed oddly in IE 9.
- */
-
-svg:not(:root) {
-    overflow: hidden;
-}
-
-/* ==========================================================================
-   Figures
-   ========================================================================== */
-
-/**
- * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
- */
-
-figure {
-    margin: 0;
-}
-
-/* ==========================================================================
-   Forms
-   ========================================================================== */
-
-/**
- * Correct margin displayed oddly in IE 6/7.
- */
-
-form {
-    margin: 0;
-}
-
-/**
- * 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 6/7/8/9.
- * 2. Correct text not wrapping in Firefox 3.
- * 3. Correct alignment displayed oddly in IE 6/7.
- */
-
-legend {
-    border: 0; /* 1 */
-    padding: 0;
-    white-space: normal; /* 2 */
-    *margin-left: -7px; /* 3 */
-}
-
-/**
- * 1. Correct font size not being inherited in all browsers.
- * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
- *    and Chrome.
- * 3. Improve appearance and consistency in all browsers.
- */
-
-button,
-input,
-select,
-textarea {
-    font-size: 100%; /* 1 */
-    margin: 0; /* 2 */
-    vertical-align: baseline; /* 3 */
-    *vertical-align: middle; /* 3 */
-}
-
-/**
- * Address Firefox 3+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-button,
-input {
-    line-height: normal;
-}
-
-/**
- * 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 Chrome, Safari 5+, and IE 6+.
- * Correct `select` style inheritance in Firefox 4+ and Opera.
- */
-
-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.
- * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
- *    Known issue: inner spacing remains in IE 6.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
-    -webkit-appearance: button; /* 2 */
-    cursor: pointer; /* 3 */
-    *overflow: visible;  /* 4 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
-    cursor: default;
-}
-
-/**
- * 1. Address box sizing set to content-box in IE 8/9.
- * 2. Remove excess padding in IE 8/9.
- * 3. Remove excess padding in IE 7.
- *    Known issue: excess padding remains in IE 6.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
-    box-sizing: border-box; /* 1 */
-    padding: 0; /* 2 */
-    *height: 13px; /* 3 */
-    *width: 13px; /* 3 */
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari 5 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 5 and Chrome
- * on OS X.
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-    -webkit-appearance: none;
-}
-
-/**
- * Remove inner padding and border in Firefox 3+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-    border: 0;
-    padding: 0;
-}
-
-/**
- * 1. Remove default vertical scrollbar in IE 6/7/8/9.
- * 2. Improve readability and alignment in all browsers.
- */
-
-textarea {
-    overflow: auto; /* 1 */
-    vertical-align: top; /* 2 */
-}
-
-/* ==========================================================================
-   Tables
-   ========================================================================== */
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
-    border-collapse: collapse;
-    border-spacing: 0;
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2.zip
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2.zip b/docs/system-architecture/css/toc-0.1.2.zip
deleted file mode 100644
index ea1d84e..0000000
Binary files a/docs/system-architecture/css/toc-0.1.2.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/.gitignore
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/.gitignore b/docs/system-architecture/css/toc-0.1.2/.gitignore
deleted file mode 100644
index 70e542c..0000000
--- a/docs/system-architecture/css/toc-0.1.2/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.DS_Store
-node_modules
-components
-reports

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/.gitmodules
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/.gitmodules b/docs/system-architecture/css/toc-0.1.2/.gitmodules
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/Gruntfile.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/Gruntfile.js b/docs/system-architecture/css/toc-0.1.2/Gruntfile.js
deleted file mode 100644
index 8680b37..0000000
--- a/docs/system-architecture/css/toc-0.1.2/Gruntfile.js
+++ /dev/null
@@ -1,100 +0,0 @@
-module.exports = function(grunt) {
-  grunt.initConfig({
-    info: grunt.file.readJSON('component.json'),
-    meta: {
-      banner: '/*!\n'+
-              ' * <%= info.name %> - <%= info.description %>\n'+
-              ' * v<%= info.version %>\n'+
-              ' * <%= info.homepage %>\n'+
-              ' * copyright <%= info.copyright %> <%= grunt.template.today("yyyy") %>\n'+
-              ' * <%= info.license %> License\n'+
-              '*/\n'
-    },
-    jshint: {
-      main: [
-        'grunt.js', 
-        'component.json',
-        'lib/**/*.js',
-        'test/*.js'
-      ]
-    },
-    concat: {
-      options: {
-        banner: '<%= meta.banner %>'
-      },
-      dist: {
-        src: 'lib/toc.js',
-        dest: 'dist/jquery.toc.js'
-      }
-    },
-    uglify: {
-      options: {
-        banner: '<%= meta.banner %>'
-      },
-      dist: {
-        src: 'dist/jquery.toc.js',
-        dest: 'dist/jquery.toc.min.js'
-      }
-    },
-    watch: {
-      main: {
-        files: '<%= jshint.main %>',
-        tasks: 'default' 
-      },
-      ci: {
-        files: [
-          '<%= jshint.main %>',
-          'test/index.html'
-        ],
-        tasks: ['default', 'mocha']
-      }
-    },
-    mocha: {
-      all: {
-        src: 'test/index.html',
-        options: {
-          run: true
-        }
-      }
-    },
-    plato: {
-      main: {
-        files: {
-          'reports': ['lib/*.js']
-        }
-      }
-    },
-    reloadr: {
-      test: [
-        'example/*',
-        'test/*',
-        'dist/*'
-      ]
-    },
-    connect: {
-      server:{
-        port: 8000,
-        base: '.'
-      },
-      plato: {
-        port: 8000,
-        base: 'reports',
-        options: {
-          keepalive: true
-        }
-      }
-    }
-  });
-  grunt.loadNpmTasks('grunt-contrib-jshint');
-  grunt.loadNpmTasks('grunt-contrib-concat');
-  grunt.loadNpmTasks('grunt-contrib-watch');
-  grunt.loadNpmTasks('grunt-contrib-uglify');
-  grunt.loadNpmTasks('grunt-contrib-connect');
-  grunt.loadNpmTasks('grunt-mocha');
-  grunt.loadNpmTasks('grunt-reloadr');
-  grunt.loadNpmTasks('grunt-plato');
-  grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
-  grunt.registerTask('dev', ['connect:server', 'reloadr', 'watch:main']);
-  grunt.registerTask('ci', ['connect:server', 'watch:ci']);
-  grunt.registerTask('reports', ['plato', 'connect:plato']);
-};

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/History.md
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/History.md b/docs/system-architecture/css/toc-0.1.2/History.md
deleted file mode 100644
index 1ff3bae..0000000
--- a/docs/system-architecture/css/toc-0.1.2/History.md
+++ /dev/null
@@ -1,46 +0,0 @@
-
-0.1.2 / 2013-04-08 
-==================
-
-  * optimized scroll function.  fixes #15
-  * migrated to grunt for building
-  * fixed tabs on docs/index
-
-0.1.1 / 2012-10-05 
-==================
-
-  * updated example
-  * code cleanup, fixed onHighlight, removed console.log
-  * Add headerText and itemClass options
-
-0.1.0 / 2012-07-05 
-==================
-
-  * added smoosh to Makefile
-  * updated docs
-  * removed site submodule
-  * Added callback for when a new section is highlighted
-  * selected event
-  * adds another option to customize the header link text
-  * updated site
-
-0.0.3 / 2012-04-06 
-==================
-
-  * fixed smooth scrolling in firefox
-  * fixed copyright typo
-
-0.0.2 / 2012-03-09
-==================
-
-  * Issue [#2](https://github.com/jgallen23/toc/issues/2 "Issue #2")
-  * updated site
-  * 0.0.2 - updated docs
-
-0.0.1 / 2012-02-25 
-==================
-
-  * updated docs/site
-  * added readme
-  * got everything working
-  * initial commit

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/toc-0.1.2/LICENSE
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/toc-0.1.2/LICENSE b/docs/system-architecture/css/toc-0.1.2/LICENSE
deleted file mode 100644
index ce5d8bc..0000000
--- a/docs/system-architecture/css/toc-0.1.2/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2013 Greg Allen
-
-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.



[45/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/CONTRIBUTING.md
----------------------------------------------------------------------
diff --git a/docs/system-architecture/CONTRIBUTING.md b/docs/system-architecture/CONTRIBUTING.md
deleted file mode 100644
index 6facbb6..0000000
--- a/docs/system-architecture/CONTRIBUTING.md
+++ /dev/null
@@ -1,118 +0,0 @@
-# Contributing to HTML5 Boilerplate
-
-♥ [HTML5 Boilerplate](http://html5boilerplate.com) and want to get involved?
-Thanks! There are plenty of ways you can help!
-
-
-## Bugs
-
-A bug is a _demonstrable problem_ that is caused by the code in the
-repository. Good bug reports are extremely helpful - thank you!
-
-Guidelines for bug reports:
-
-1. **Use the GitHub issue search** &mdash; check if the issue has already been
-   reported.
-
-2. **Check if the issue has been fixed** &mdash; try to reproduce it using the
-   latest `master` branch in the repository.
-
-3. **Isolate the problem** &mdash; ideally create a [reduced test
-   case](http://css-tricks.com/6263-reduced-test-cases/) and a live example.
-
-A good bug report shouldn't leave others needing to chase you up for more
-information. Please try to be as detailed as possible in your report. What is
-your environment? What steps will reproduce the issue? What browser(s) and OS
-experience the problem? What would you expect to be the outcome? All these
-details will help people to fix any potential bugs.
-
-Example:
-
-> Short and descriptive example bug report title
->
-> A summary of the issue and the browser/OS environment in which it occurs. If
-> suitable, include the steps required to reproduce the bug.
->
-> 1. This is the first step
-> 2. This is the second step
-> 3. Further steps, etc.
->
-> `<url>` (a link to the reduced test case)
->
-> Any other information you want to share that is relevant to the issue being
-> reported. This might include the lines of code that you have identified as
-> causing the bug, and potential solutions (and your opinions on their
-> merits).
-
-**[File a bug report](https://github.com/h5bp/html5-boilerplate/issues/)**
-
-
-## Pull requests
-
-Good pull requests - patches, improvements, new features - are a fantastic
-help. They should remain focused in scope and avoid containing unrelated
-commits. If your contribution involves a significant amount of work or substantial
-changes to any part of the project, please open an issue to discuss it first.
-
-Make sure to adhere to the coding conventions used throughout a project
-(indentation, accurate comments, etc.). Please update any documentation that is
-relevant to the change you're making.
-
-Please follow this process; it's the best way to get your work included in the
-project:
-
-1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork,
-   and configure the remotes:
-
-   ```bash
-   # Clones your fork of the repo into the current directory in terminal
-   git clone https://github.com/<your-username>/html5-boilerplate.git
-   # Navigate to the newly cloned directory
-   cd html5-boilerplate
-   # Assigns the original repo to a remote called "upstream"
-   git remote add upstream https://github.com/h5bp/html5-boilerplate.git
-   ```
-
-2. If you cloned a while ago, get the latest changes from upstream:
-
-   ```bash
-   git checkout master
-   git pull upstream master
-   ```
-
-3. Create a new topic branch to contain your feature, change, or fix:
-
-   ```bash
-   git checkout -b <topic-branch-name>
-   ```
-
-4. Commit your changes in logical chunks. Please adhere to these [git commit
-   message
-   guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
-   or your pull request is unlikely be merged into the main project. Use git's
-   [interactive rebase](https://help.github.com/articles/interactive-rebase)
-   feature to tidy up your commits before making them public.
-
-5. Locally merge (or rebase) the upstream development branch into your topic branch:
-
-   ```bash
-   git pull [--rebase] upstream master
-   ```
-
-6. Push your topic branch up to your fork:
-
-   ```bash
-   git push origin <topic-branch-name>
-   ```
-
-10. [Open a Pull Request](https://help.github.com/articles/using-pull-requests) with a
-    clear title and description.
-
-
-## Do not…
-
-Please **do not** use the issue tracker for personal support requests (use
-[StackOverflow](http://stackoverflow.com/questions/tagged/html5boilerplate) or IRC).
-
-Please **do not** derail or troll issues. Keep the
-discussion on topic and respect the opinions of others.

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/apple-touch-icon-114x114-precomposed.png
----------------------------------------------------------------------
diff --git a/docs/system-architecture/apple-touch-icon-114x114-precomposed.png b/docs/system-architecture/apple-touch-icon-114x114-precomposed.png
deleted file mode 100644
index 0fdf60e..0000000
Binary files a/docs/system-architecture/apple-touch-icon-114x114-precomposed.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/apple-touch-icon-144x144-precomposed.png
----------------------------------------------------------------------
diff --git a/docs/system-architecture/apple-touch-icon-144x144-precomposed.png b/docs/system-architecture/apple-touch-icon-144x144-precomposed.png
deleted file mode 100644
index 257c77a..0000000
Binary files a/docs/system-architecture/apple-touch-icon-144x144-precomposed.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/apple-touch-icon-57x57-precomposed.png
----------------------------------------------------------------------
diff --git a/docs/system-architecture/apple-touch-icon-57x57-precomposed.png b/docs/system-architecture/apple-touch-icon-57x57-precomposed.png
deleted file mode 100644
index 99b6054..0000000
Binary files a/docs/system-architecture/apple-touch-icon-57x57-precomposed.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/apple-touch-icon-72x72-precomposed.png
----------------------------------------------------------------------
diff --git a/docs/system-architecture/apple-touch-icon-72x72-precomposed.png b/docs/system-architecture/apple-touch-icon-72x72-precomposed.png
deleted file mode 100644
index 8345cc3..0000000
Binary files a/docs/system-architecture/apple-touch-icon-72x72-precomposed.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/apple-touch-icon-precomposed.png
----------------------------------------------------------------------
diff --git a/docs/system-architecture/apple-touch-icon-precomposed.png b/docs/system-architecture/apple-touch-icon-precomposed.png
deleted file mode 100644
index 99b6054..0000000
Binary files a/docs/system-architecture/apple-touch-icon-precomposed.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/apple-touch-icon.png
----------------------------------------------------------------------
diff --git a/docs/system-architecture/apple-touch-icon.png b/docs/system-architecture/apple-touch-icon.png
deleted file mode 100644
index 99b6054..0000000
Binary files a/docs/system-architecture/apple-touch-icon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/crossdomain.xml
----------------------------------------------------------------------
diff --git a/docs/system-architecture/crossdomain.xml b/docs/system-architecture/crossdomain.xml
deleted file mode 100644
index 29a035d..0000000
--- a/docs/system-architecture/crossdomain.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
-<cross-domain-policy>
-    <!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
-
-    <!-- Most restrictive policy: -->
-    <site-control permitted-cross-domain-policies="none"/>
-
-    <!-- Least restrictive policy: -->
-    <!--
-    <site-control permitted-cross-domain-policies="all"/>
-    <allow-access-from domain="*" to-ports="*" secure="false"/>
-    <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
-    -->
-</cross-domain-policy>

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.css
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.css b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.css
deleted file mode 100644
index ad11735..0000000
--- a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.css
+++ /dev/null
@@ -1,384 +0,0 @@
-.btn-default,
-.btn-primary,
-.btn-success,
-.btn-info,
-.btn-warning,
-.btn-danger {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.btn-default:active,
-.btn-primary:active,
-.btn-success:active,
-.btn-info:active,
-.btn-warning:active,
-.btn-danger:active,
-.btn-default.active,
-.btn-primary.active,
-.btn-success.active,
-.btn-info.active,
-.btn-warning.active,
-.btn-danger.active {
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-          box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-
-.btn:active,
-.btn.active {
-  background-image: none;
-}
-
-.btn-default {
-  text-shadow: 0 1px 0 #fff;
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, 0%, #e6e6e6, 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #e6e6e6 100%);
-  background-image: linear-gradient(to bottom, #ffffff 0%, #e6e6e6 100%);
-  background-repeat: repeat-x;
-  border-color: #e0e0e0;
-  border-color: #ccc;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-}
-
-.btn-default:active,
-.btn-default.active {
-  background-color: #e6e6e6;
-  border-color: #e0e0e0;
-}
-
-.btn-primary {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9));
-  background-image: -webkit-linear-gradient(top, #428bca, 0%, #3071a9, 100%);
-  background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%);
-  background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
-  background-repeat: repeat-x;
-  border-color: #2d6ca2;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
-}
-
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #3071a9;
-  border-color: #2d6ca2;
-}
-
-.btn-success {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44));
-  background-image: -webkit-linear-gradient(top, #5cb85c, 0%, #449d44, 100%);
-  background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%);
-  background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
-  background-repeat: repeat-x;
-  border-color: #419641;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
-}
-
-.btn-success:active,
-.btn-success.active {
-  background-color: #449d44;
-  border-color: #419641;
-}
-
-.btn-warning {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f));
-  background-image: -webkit-linear-gradient(top, #f0ad4e, 0%, #ec971f, 100%);
-  background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
-  background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
-  background-repeat: repeat-x;
-  border-color: #eb9316;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
-}
-
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #ec971f;
-  border-color: #eb9316;
-}
-
-.btn-danger {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c));
-  background-image: -webkit-linear-gradient(top, #d9534f, 0%, #c9302c, 100%);
-  background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%);
-  background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
-  background-repeat: repeat-x;
-  border-color: #c12e2a;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
-}
-
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #c9302c;
-  border-color: #c12e2a;
-}
-
-.btn-info {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5));
-  background-image: -webkit-linear-gradient(top, #5bc0de, 0%, #31b0d5, 100%);
-  background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
-  background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
-  background-repeat: repeat-x;
-  border-color: #2aabd2;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
-}
-
-.btn-info:active,
-.btn-info.active {
-  background-color: #31b0d5;
-  border-color: #2aabd2;
-}
-
-.thumbnail,
-.img-thumbnail {
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
-          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
-}
-
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  background-color: #357ebd;
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd));
-  background-image: -webkit-linear-gradient(top, #428bca, 0%, #357ebd, 100%);
-  background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%);
-  background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
-}
-
-.navbar {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#f8f8f8));
-  background-image: -webkit-linear-gradient(top, #ffffff, 0%, #f8f8f8, 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
-  background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
-  background-repeat: repeat-x;
-  border-radius: 4px;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
-}
-
-.navbar .navbar-nav > .active > a {
-  background-color: #f8f8f8;
-}
-
-.navbar-brand,
-.navbar-nav > li > a {
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
-}
-
-.navbar-inverse {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#3c3c3c), to(#222222));
-  background-image: -webkit-linear-gradient(top, #3c3c3c, 0%, #222222, 100%);
-  background-image: -moz-linear-gradient(top, #3c3c3c 0%, #222222 100%);
-  background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
-}
-
-.navbar-inverse .navbar-nav > .active > a {
-  background-color: #222222;
-}
-
-.navbar-inverse .navbar-brand,
-.navbar-inverse .navbar-nav > li > a {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-
-.navbar-static-top,
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  border-radius: 0;
-}
-
-.alert {
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.alert-success {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#c8e5bc));
-  background-image: -webkit-linear-gradient(top, #dff0d8, 0%, #c8e5bc, 100%);
-  background-image: -moz-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
-  background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
-  background-repeat: repeat-x;
-  border-color: #b2dba1;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
-}
-
-.alert-info {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#b9def0));
-  background-image: -webkit-linear-gradient(top, #d9edf7, 0%, #b9def0, 100%);
-  background-image: -moz-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
-  background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
-  background-repeat: repeat-x;
-  border-color: #9acfea;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
-}
-
-.alert-warning {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#f8efc0));
-  background-image: -webkit-linear-gradient(top, #fcf8e3, 0%, #f8efc0, 100%);
-  background-image: -moz-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
-  background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
-  background-repeat: repeat-x;
-  border-color: #f5e79e;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
-}
-
-.alert-danger {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#e7c3c3));
-  background-image: -webkit-linear-gradient(top, #f2dede, 0%, #e7c3c3, 100%);
-  background-image: -moz-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
-  background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
-  background-repeat: repeat-x;
-  border-color: #dca7a7;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
-}
-
-.progress {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ebebeb), to(#f5f5f5));
-  background-image: -webkit-linear-gradient(top, #ebebeb, 0%, #f5f5f5, 100%);
-  background-image: -moz-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
-  background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
-}
-
-.progress-bar {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9));
-  background-image: -webkit-linear-gradient(top, #428bca, 0%, #3071a9, 100%);
-  background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%);
-  background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
-}
-
-.progress-bar-success {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44));
-  background-image: -webkit-linear-gradient(top, #5cb85c, 0%, #449d44, 100%);
-  background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%);
-  background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
-}
-
-.progress-bar-info {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5));
-  background-image: -webkit-linear-gradient(top, #5bc0de, 0%, #31b0d5, 100%);
-  background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
-  background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
-}
-
-.progress-bar-warning {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f));
-  background-image: -webkit-linear-gradient(top, #f0ad4e, 0%, #ec971f, 100%);
-  background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
-  background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
-}
-
-.progress-bar-danger {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c));
-  background-image: -webkit-linear-gradient(top, #d9534f, 0%, #c9302c, 100%);
-  background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%);
-  background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
-}
-
-.list-group {
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
-          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
-}
-
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
-  text-shadow: 0 -1px 0 #3071a9;
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3278b3));
-  background-image: -webkit-linear-gradient(top, #428bca, 0%, #3278b3, 100%);
-  background-image: -moz-linear-gradient(top, #428bca 0%, #3278b3 100%);
-  background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
-  background-repeat: repeat-x;
-  border-color: #3278b3;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
-}
-
-.panel {
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.panel-default > .panel-heading {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f5f5f5), to(#e8e8e8));
-  background-image: -webkit-linear-gradient(top, #f5f5f5, 0%, #e8e8e8, 100%);
-  background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
-  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
-}
-
-.panel-primary > .panel-heading {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd));
-  background-image: -webkit-linear-gradient(top, #428bca, 0%, #357ebd, 100%);
-  background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%);
-  background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
-}
-
-.panel-success > .panel-heading {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#d0e9c6));
-  background-image: -webkit-linear-gradient(top, #dff0d8, 0%, #d0e9c6, 100%);
-  background-image: -moz-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
-  background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
-}
-
-.panel-info > .panel-heading {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#c4e3f3));
-  background-image: -webkit-linear-gradient(top, #d9edf7, 0%, #c4e3f3, 100%);
-  background-image: -moz-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
-  background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
-}
-
-.panel-warning > .panel-heading {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#faf2cc));
-  background-image: -webkit-linear-gradient(top, #fcf8e3, 0%, #faf2cc, 100%);
-  background-image: -moz-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
-  background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
-}
-
-.panel-danger > .panel-heading {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#ebcccc));
-  background-image: -webkit-linear-gradient(top, #f2dede, 0%, #ebcccc, 100%);
-  background-image: -moz-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
-  background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
-}
-
-.well {
-  background-image: -webkit-gradient(linear, left 0%, left 100%, from(#e8e8e8), to(#f5f5f5));
-  background-image: -webkit-linear-gradient(top, #e8e8e8, 0%, #f5f5f5, 100%);
-  background-image: -moz-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
-  background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
-  background-repeat: repeat-x;
-  border-color: #dcdcdc;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
-  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
-          box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.min.css
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.min.css b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.min.css
deleted file mode 100644
index cad36b4..0000000
--- a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap-theme.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,0%,#e6e6e6,100%);background-image:-moz-linear-gradient(top,#fff 0,#e6e6e6 100%);background-image:linear-gradient(to bottom,#fff 0,#e6e6e6 100%);background-repeat:repeat-x;border-co
 lor:#e0e0e0;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0)}.btn-default:active,.btn-default.active{background-color:#e6e6e6;border-color:#e0e0e0}.btn-primary{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;border-color:#2d6ca2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.btn-primary:active,.btn-primary.active{background-color:#3071a9;border-color:#2d6ca2}.btn-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb
 85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;border-color:#419641;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.btn-success:active,.btn-success.active{background-color:#449d44;border-color:#419641}.btn-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;border-color:#eb9316;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.btn-warning:active,.btn-warning.active{background-color:#ec971f;border-color:#eb9316}.btn-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-i
 mage:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;border-color:#c12e2a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.btn-danger:active,.btn-danger.active{background-color:#c9302c;border-color:#c12e2a}.btn-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;border-color:#2aabd2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.btn-info:active,.btn-info.active{background-color:#31b0d5;border-color:#2aabd2}.thumbnail,.img-
 thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#f8f8f8));background-image:-webkit-linear-gradient(top,#fff,0%,#f8f8f8,100%);background-image:-moz-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repe
 at-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar .navbar-nav>.active>a{background-color:#f8f8f8}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-gradient(linear,left 0,left 100%,from(#3c3c3c),to(#222));background-image:-webkit-linear-gradient(top,#3c3c3c,0%,#222,100%);background-image:-moz-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0)}.navbar-inverse .navbar-nav>.active>a{background-color:#222}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow
 :0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#c8e5bc));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#c8e5bc,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#b9def0));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#b9def0,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#b9
 def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#f8efc0));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#f8efc0,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#e7c3c3));background-image:-webkit-linear-gradient(top,#f2dede,0%,#e7c3c3,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,
 #e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-gradient(linear,left 0,left 100%,from(#ebebeb),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#ebebeb,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient
 (startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{backg
 round-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-image:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.li
 st-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3278b3));background-image:-webkit-linear-gradient(top,#428bca,0%,#3278b3,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f5f5f5),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#f5f5f5,0%,#e8e8e8,100%);background-image:-moz-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x
 ;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#d0e9c6));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#d0e9c6,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8
 ',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#c4e3f3));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#c4e3f3,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#faf2cc));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#faf2cc,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{backgro
 und-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#ebcccc));background-image:-webkit-linear-gradient(top,#f2dede,0%,#ebcccc,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-gradient(linear,left 0,left 100%,from(#e8e8e8),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#e8e8e8,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0
 ,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}
\ No newline at end of file



[27/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/bk_mifostenant_default.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/bk_mifostenant_default.sql b/fineract-db/multi-tenant-demo-backups/bk_mifostenant_default.sql
deleted file mode 100644
index 306570a..0000000
--- a/fineract-db/multi-tenant-demo-backups/bk_mifostenant_default.sql
+++ /dev/null
@@ -1,1935 +0,0 @@
--- MySQL dump 10.13  Distrib 5.1.60, for Win32 (ia32)
---
--- Host: localhost    Database: mifostenant-default
--- ------------------------------------------------------
--- Server version	5.1.60-community
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `acc_gl_account`
---
-
-DROP TABLE IF EXISTS `acc_gl_account`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_account` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(45) NOT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `gl_code` varchar(45) NOT NULL,
-  `disabled` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1',
-  `account_usage` tinyint(1) NOT NULL DEFAULT '2',
-  `classification_enum` smallint(5) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `acc_gl_code` (`gl_code`),
-  KEY `FK_ACC_0000000001` (`parent_id`),
-  CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_account`
---
-
-LOCK TABLES `acc_gl_account` WRITE;
-/*!40000 ALTER TABLE `acc_gl_account` DISABLE KEYS */;
-INSERT INTO `acc_gl_account` VALUES (1,'Petty Cash Balances',NULL,'11100',0,1,2,1,NULL),(2,'Cash in Valut 1',NULL,'11101',0,1,1,1,NULL),(3,'Bank Balances',NULL,'11200',0,1,2,1,NULL),(4,'Centenary Opening Account',NULL,'11201',0,1,1,1,NULL),(5,'Centenary Expense Account',NULL,'11202',0,1,1,1,NULL),(6,'Centenary USD Account',NULL,'11203',0,1,1,1,NULL),(7,'Loans and Advances',NULL,'13100',0,1,2,1,NULL),(8,'Loans to Clients',NULL,'13101',0,1,1,1,NULL),(9,'Outstanding Interest',NULL,'13102',0,1,1,1,NULL),(10,'Outstanding Late Payment Interest',NULL,'13103',0,1,1,1,NULL),(11,'Outstanding Bank Fees to be collected',NULL,'13104',0,1,1,1,NULL),(12,'WriteOff Accounts',NULL,'13200',0,1,2,1,NULL),(13,'Write-offs (use for funds coming in)',NULL,'13201',0,1,1,1,NULL),(14,'Write-offs outstanding principal',NULL,'13202',0,1,1,1,NULL),(15,'Write-offs outstanding interest',NULL,'13203',0,1,1,1,NULL),(16,'Write-offs collected bank fees',NULL,'13204',0,1,1,1,NULL),(17,'Write-offs hardware/furniture',NU
 LL,'13205',0,1,1,1,NULL),(18,'Fixed Assets',NULL,'14100',0,1,2,1,NULL),(19,'Office Equipment',NULL,'14101',0,1,1,1,NULL),(20,'Suspense Items (unidentified deposits)',NULL,'15000',0,1,2,1,NULL),(21,'Assets',NULL,'10000',0,1,2,1,NULL),(22,'Liabilities',NULL,'20000',0,1,2,2,NULL),(23,'Shares Account',NULL,'26100',0,1,2,2,NULL),(24,'Shares Captial',NULL,'26101',0,1,1,2,NULL),(25,'Donated Equity',NULL,'26300',0,1,2,2,NULL),(26,'Donated Equity Ameropa Foundation',NULL,'26301',0,1,1,2,NULL),(27,'Donated Equity e.h',NULL,'26302',0,1,1,2,NULL),(28,'Overpaid Amounts',NULL,'27000',0,1,2,2,NULL),(29,'Loss Provision',NULL,'28000',0,1,2,2,NULL),(30,'Provision Outstanding Principal',NULL,'28001',0,1,1,2,NULL),(31,'Provision Oustanding Interest',NULL,'28002',0,1,1,2,NULL),(32,'Income',NULL,'30000',0,1,2,4,NULL),(33,'Interest Income from Loans',NULL,'31100',0,1,2,4,NULL),(34,'Interest on Loans',NULL,'31101',0,1,1,4,NULL),(35,'Late Payment Interest',NULL,'31102',0,1,1,4,NULL),(36,'Income from Micro c
 redit & Lending Activities',NULL,'31300',0,1,2,4,NULL),(37,'Collected Bank Fees Receivable',NULL,'6201',0,1,1,4,NULL),(38,'Deposits from Loans Write Off',NULL,'31400',0,1,2,4,NULL),(39,'Expenditure',NULL,'40000',0,1,2,5,NULL),(40,'Office Expenditure Account',NULL,'42100',0,1,2,5,NULL),(41,'Water Charges',NULL,'42102',0,1,1,5,NULL),(42,'Electricity Charges',NULL,'42103',0,1,1,5,NULL),(43,'Printing and Stationary',NULL,'42105',0,1,1,5,NULL),(44,'Office Rent',NULL,'42107',0,1,1,5,NULL),(45,'Marketing Expense',NULL,'42109',0,1,1,5,NULL),(46,'Office utilities',NULL,'42112',0,1,1,5,'(supplies, toiletries, kitchen)'),(47,'Furniture',NULL,'42113',0,1,1,5,NULL),(48,'CEDA Meeting Expense',NULL,'42114',0,1,1,5,NULL),(49,'Employee Personal Expsense Account',NULL,'42200',0,1,2,5,NULL),(50,'Salary Alice',NULL,'42201',0,1,1,5,NULL),(51,'Salary Irene',NULL,'42202',0,1,1,5,NULL),(52,'Salary Richard',NULL,'42203',0,1,1,5,NULL),(53,'Salary Loan Officer TBA',NULL,'42204',0,1,1,5,NULL),(54,'Medical Insu
 rance Alice & Family',NULL,'42205',0,1,1,5,NULL),(55,'Medical Insurance Irene',NULL,'42206',0,1,1,5,NULL),(56,'Medical Insurance Richard',NULL,'42207',0,1,1,5,NULL),(57,'Medical Insurance Loan Officer TBA',NULL,'42208',0,1,1,5,NULL),(58,'PAYE all employees',NULL,'42209',0,1,1,5,NULL),(59,'NSSF all employees',NULL,'42210',0,1,1,5,NULL),(60,'Lunch Allowances all employees',NULL,'42211',0,1,1,5,NULL),(61,'IT software and maintenance',NULL,'42300',0,1,2,5,NULL),(62,'Mifos maintenance contract 12 months',NULL,'42301',0,1,1,5,NULL),(63,'VPS Contract 12 months',NULL,'42302',0,1,1,5,NULL),(64,'Bulk SMS Service',NULL,'42303',0,1,1,5,NULL),(65,'Support Accounting Software',NULL,'42304',0,1,1,5,NULL),(66,'Mifos Instance Setup',NULL,'42305',0,1,1,5,NULL),(67,'Misc support expense',NULL,'42306',0,1,1,5,NULL),(68,'Warid Mobile Line',NULL,'42307',0,1,1,5,NULL),(69,'Landline',NULL,'42308',0,1,1,5,NULL),(70,'Modem Alice',NULL,'42309',0,1,1,5,NULL),(71,'Modem Irene',NULL,'42310',0,1,1,5,NULL),(72,'Mo
 dem Richard',NULL,'42311',0,1,1,5,NULL),(73,'Repairs',NULL,'42312',0,1,1,5,NULL),(74,'Airtime Expenses',NULL,'42400',0,1,2,5,NULL),(75,'Airtime Alice',NULL,'42401',0,1,1,5,NULL),(76,'Airtime Richard',NULL,'42402',0,1,1,5,NULL),(77,'Airtime Loan Office TBA',NULL,'42403',0,1,1,5,NULL),(78,'Special Airtime Alice',NULL,'42404',0,1,1,5,NULL),(79,'Transportation',NULL,'42500',0,1,2,5,NULL),(80,'Flat monthly transportation cost',NULL,'42501',0,1,1,5,NULL),(81,'Faciliation cost for Richard',NULL,'42502',0,1,1,5,NULL),(82,'Faciliation cost for Loan Officer TBA',NULL,'42503',0,1,1,5,NULL),(83,'Consultancy Expenses',NULL,'42600',0,1,2,5,NULL),(84,'Audit Fees',NULL,'42601',0,1,1,5,NULL),(85,'Legal Fees',NULL,'42602',0,1,1,5,NULL),(86,'Miscellaneous Expenses Account',NULL,'42700',0,1,2,5,NULL),(87,'MFI License',NULL,'42703',0,1,1,5,NULL),(88,'Sundy Expenses',NULL,'42704',0,1,1,5,NULL),(89,'Bank Fees',NULL,'42800',0,1,2,5,NULL),(90,'Bank Charges Operating Account',NULL,'42801',0,1,1,5,NULL),(91,'
 Bank Charges Expense Account',NULL,'42802',0,1,1,5,NULL),(92,'E.H Account',NULL,'42900',0,1,2,5,NULL),(93,'Airtime',NULL,'42901',0,1,1,5,NULL),(94,'Modem',NULL,'42902',0,1,1,5,NULL),(95,'Meals',NULL,'42903',0,1,1,5,NULL),(96,'Transportation',NULL,'42904',0,1,1,5,NULL),(97,'Miscellaneous',NULL,'42905',0,1,1,5,NULL);
-/*!40000 ALTER TABLE `acc_gl_account` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_closure`
---
-
-DROP TABLE IF EXISTS `acc_gl_closure`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_closure` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `closing_date` date NOT NULL,
-  `is_deleted` int(20) NOT NULL DEFAULT '0',
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `comments` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `office_id_closing_date` (`office_id`,`closing_date`),
-  KEY `FK_acc_gl_closure_m_office` (`office_id`),
-  KEY `FK_acc_gl_closure_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_closure_m_appuser_2` (`lastmodifiedby_id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_closure`
---
-
-LOCK TABLES `acc_gl_closure` WRITE;
-/*!40000 ALTER TABLE `acc_gl_closure` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_closure` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_journal_entry`
---
-
-DROP TABLE IF EXISTS `acc_gl_journal_entry`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_journal_entry` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_id` bigint(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `reversal_id` bigint(20) DEFAULT NULL,
-  `transaction_id` varchar(50) NOT NULL,
-  `reversed` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_entry` tinyint(1) NOT NULL DEFAULT '0',
-  `entry_date` date NOT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `entity_type_enum` smallint(5) DEFAULT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `createdby_id` bigint(20) NOT NULL,
-  `lastmodifiedby_id` bigint(20) NOT NULL,
-  `created_date` datetime NOT NULL,
-  `lastmodified_date` datetime NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_acc_gl_journal_entry_m_office` (`office_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser_2` (`lastmodifiedby_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_journal_entry` (`reversal_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_account` (`account_id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_account` FOREIGN KEY (`account_id`) REFERENCES `acc_gl_account` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_journal_entry` FOREIGN KEY (`reversal_id`) REFERENCES `acc_gl_journal_entry` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_journal_entry`
---
-
-LOCK TABLES `acc_gl_journal_entry` WRITE;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_product_mapping`
---
-
-DROP TABLE IF EXISTS `acc_product_mapping`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_product_mapping` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `gl_account_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `product_type` smallint(5) DEFAULT NULL,
-  `financial_account_type` smallint(5) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_product_mapping`
---
-
-LOCK TABLES `acc_product_mapping` WRITE;
-/*!40000 ALTER TABLE `acc_product_mapping` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_product_mapping` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `c_configuration`
---
-
-DROP TABLE IF EXISTS `c_configuration`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `c_configuration` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(50) DEFAULT NULL,
-  `enabled` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `c_configuration`
---
-
-LOCK TABLES `c_configuration` WRITE;
-/*!40000 ALTER TABLE `c_configuration` DISABLE KEYS */;
-INSERT INTO `c_configuration` VALUES (1,'maker-checker',0);
-/*!40000 ALTER TABLE `c_configuration` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `client additional data`
---
-
-DROP TABLE IF EXISTS `client additional data`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `client additional data` (
-  `client_id` bigint(20) NOT NULL,
-  `Gender_cd` int(11) NOT NULL,
-  `Date of Birth` date NOT NULL,
-  `Home address` text NOT NULL,
-  `Telephone number` varchar(20) NOT NULL,
-  `Telephone number (2nd)` varchar(20) NOT NULL,
-  `Email address` varchar(50) NOT NULL,
-  `EducationLevel_cd` int(11) NOT NULL,
-  `MaritalStatus_cd` int(11) NOT NULL,
-  `Number of children` int(11) NOT NULL,
-  `Citizenship` varchar(50) NOT NULL,
-  `PovertyStatus_cd` int(11) NOT NULL,
-  `YesNo_cd_Employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL,
-  `Employer name` varchar(50) DEFAULT NULL,
-  `Number of years` int(11) DEFAULT NULL,
-  `Monthly salary` decimal(19,6) DEFAULT NULL,
-  `YesNo_cd_Self employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL,
-  `Business address` text,
-  `Number of employees` int(11) DEFAULT NULL,
-  `Monthly salaries paid` decimal(19,6) DEFAULT NULL,
-  `Monthly net income of business activity` decimal(19,6) DEFAULT NULL,
-  `Monthly rent` decimal(19,6) DEFAULT NULL,
-  `Other income generating activities` varchar(100) DEFAULT NULL,
-  `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL,
-  `YesNo_cd_Loans with other institutions` int(11) NOT NULL,
-  `From whom` varchar(100) DEFAULT NULL,
-  `Amount` decimal(19,6) DEFAULT NULL,
-  `Interest rate pa` decimal(19,6) DEFAULT NULL,
-  `Number of people depending on overal income` int(11) NOT NULL,
-  `YesNo_cd_Bank account` int(11) NOT NULL,
-  `YesNo_cd_Business plan provided` int(11) NOT NULL,
-  `YesNo_cd_Access to internet` int(11) DEFAULT NULL,
-  `Introduced by` varchar(100) DEFAULT NULL,
-  `Known to introducer since` varchar(100) NOT NULL,
-  `Last visited by` varchar(100) DEFAULT NULL,
-  `Last visited on` date NOT NULL,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `client additional data`
---
-
-LOCK TABLES `client additional data` WRITE;
-/*!40000 ALTER TABLE `client additional data` DISABLE KEYS */;
-/*!40000 ALTER TABLE `client additional data` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_client_details`
---
-
-DROP TABLE IF EXISTS `extra_client_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_client_details` (
-  `client_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_client_details`
---
-
-LOCK TABLES `extra_client_details` WRITE;
-/*!40000 ALTER TABLE `extra_client_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_client_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_family_details`
---
-
-DROP TABLE IF EXISTS `extra_family_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_family_details` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `Name` varchar(40) DEFAULT NULL,
-  `Date of Birth` date DEFAULT NULL,
-  `Points Score` int(11) DEFAULT NULL,
-  `Education_cd_Highest` int(11) DEFAULT NULL,
-  `Other Notes` text,
-  PRIMARY KEY (`id`),
-  KEY `FK_Extra Family Details Data_1` (`client_id`),
-  CONSTRAINT `FK_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_family_details`
---
-
-LOCK TABLES `extra_family_details` WRITE;
-/*!40000 ALTER TABLE `extra_family_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_family_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_loan_details`
---
-
-DROP TABLE IF EXISTS `extra_loan_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_loan_details` (
-  `loan_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_loan_details`
---
-
-LOCK TABLES `extra_loan_details` WRITE;
-/*!40000 ALTER TABLE `extra_loan_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_loan_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `impact measurement`
---
-
-DROP TABLE IF EXISTS `impact measurement`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `impact measurement` (
-  `loan_id` bigint(20) NOT NULL,
-  `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL,
-  `ReasonNotRepaidOnSchedule` text,
-  `How was Loan Amount Invested` text NOT NULL,
-  `Additional Income Generated` decimal(19,6) NOT NULL,
-  `Additional Income Used For` text NOT NULL,
-  `YesNo_cd_NewJobsCreated` int(11) NOT NULL,
-  `Number of Jobs Created` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `impact measurement`
---
-
-LOCK TABLES `impact measurement` WRITE;
-/*!40000 ALTER TABLE `impact measurement` DISABLE KEYS */;
-/*!40000 ALTER TABLE `impact measurement` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `loan additional data`
---
-
-DROP TABLE IF EXISTS `loan additional data`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `loan additional data` (
-  `loan_id` bigint(20) NOT NULL,
-  `PurposeOfLoan_cd` int(11) NOT NULL,
-  `CollateralType_cd` int(11) NOT NULL,
-  `Collateral notes` text NOT NULL,
-  `YesNo_cd_Guarantor` int(11) NOT NULL,
-  `Guarantor name` varchar(100) DEFAULT NULL,
-  `Guarantor relation` varchar(100) DEFAULT NULL,
-  `Guarantor address` varchar(100) DEFAULT NULL,
-  `Guarantor telephone number` varchar(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `loan additional data`
---
-
-LOCK TABLES `loan additional data` WRITE;
-/*!40000 ALTER TABLE `loan additional data` DISABLE KEYS */;
-/*!40000 ALTER TABLE `loan additional data` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser`
---
-
-DROP TABLE IF EXISTS `m_appuser`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `office_id` bigint(20) DEFAULT NULL,
-  `username` varchar(100) NOT NULL,
-  `firstname` varchar(100) NOT NULL,
-  `lastname` varchar(100) NOT NULL,
-  `password` varchar(255) NOT NULL,
-  `email` varchar(100) NOT NULL,
-  `firsttime_login_remaining` bit(1) NOT NULL,
-  `nonexpired` bit(1) NOT NULL,
-  `nonlocked` bit(1) NOT NULL,
-  `nonexpired_credentials` bit(1) NOT NULL,
-  `enabled` bit(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `username_org` (`username`),
-  KEY `FKB3D587CE0DD567A` (`office_id`),
-  CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser`
---
-
-LOCK TABLES `m_appuser` WRITE;
-/*!40000 ALTER TABLE `m_appuser` DISABLE KEYS */;
-INSERT INTO `m_appuser` VALUES (1,0,1,'mifos','App','Administrator','5787039480429368bf94732aacc771cd0a3ea02bcf504ffe1185ab94213bc63a','demomfi@mifos.org','\0','','','','');
-/*!40000 ALTER TABLE `m_appuser` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser_role`
---
-
-DROP TABLE IF EXISTS `m_appuser_role`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser_role` (
-  `appuser_id` bigint(20) NOT NULL,
-  `role_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`appuser_id`,`role_id`),
-  KEY `FK7662CE59B4100309` (`appuser_id`),
-  KEY `FK7662CE5915CEC7AB` (`role_id`),
-  CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`),
-  CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser_role`
---
-
-LOCK TABLES `m_appuser_role` WRITE;
-/*!40000 ALTER TABLE `m_appuser_role` DISABLE KEYS */;
-INSERT INTO `m_appuser_role` VALUES (1,1);
-/*!40000 ALTER TABLE `m_appuser_role` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_calendar`
---
-
-DROP TABLE IF EXISTS `m_calendar`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_calendar` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `title` varchar(50) NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  `location` varchar(50) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `duration` smallint(6) DEFAULT NULL,
-  `calendar_type_enum` smallint(5) NOT NULL,
-  `repeating` tinyint(1) NOT NULL DEFAULT '0',
-  `recurrence` varchar(100) DEFAULT NULL,
-  `remind_by_enum` smallint(5) DEFAULT NULL,
-  `first_reminder` smallint(11) DEFAULT NULL,
-  `second_reminder` smallint(11) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_calendar`
---
-
-LOCK TABLES `m_calendar` WRITE;
-/*!40000 ALTER TABLE `m_calendar` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_calendar` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_calendar_instance`
---
-
-DROP TABLE IF EXISTS `m_calendar_instance`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_calendar_instance` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `calendar_id` bigint(20) NOT NULL,
-  `entity_id` bigint(20) NOT NULL,
-  `entity_type_enum` smallint(5) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`),
-  CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_calendar_instance`
---
-
-LOCK TABLES `m_calendar_instance` WRITE;
-/*!40000 ALTER TABLE `m_calendar_instance` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_calendar_instance` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_charge`
---
-
-DROP TABLE IF EXISTS `m_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `charge_applies_to_enum` smallint(5) NOT NULL,
-  `charge_time_enum` smallint(5) NOT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `is_active` tinyint(1) NOT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_charge`
---
-
-LOCK TABLES `m_charge` WRITE;
-/*!40000 ALTER TABLE `m_charge` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client`
---
-
-DROP TABLE IF EXISTS `m_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `middlename` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `fullname` varchar(100) DEFAULT NULL,
-  `display_name` varchar(100) NOT NULL,
-  `image_key` varchar(500) DEFAULT NULL,
-  `joined_date` date DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `external_id` (`external_id`),
-  KEY `FKCE00CAB3E0DD567A` (`office_id`),
-  CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client`
---
-
-LOCK TABLES `m_client` WRITE;
-/*!40000 ALTER TABLE `m_client` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client_identifier`
---
-
-DROP TABLE IF EXISTS `m_client_identifier`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client_identifier` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `document_type_id` int(11) NOT NULL,
-  `document_key` varchar(50) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `unique_identifier_key` (`document_type_id`,`document_key`),
-  UNIQUE KEY `unique_client_identifier` (`client_id`,`document_type_id`),
-  KEY `FK_m_client_document_m_client` (`client_id`),
-  KEY `FK_m_client_document_m_code_value` (`document_type_id`),
-  CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client_identifier`
---
-
-LOCK TABLES `m_client_identifier` WRITE;
-/*!40000 ALTER TABLE `m_client_identifier` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_client_identifier` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code`
---
-
-DROP TABLE IF EXISTS `m_code`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_name` varchar(100) DEFAULT NULL,
-  `is_system_defined` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_name` (`code_name`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code`
---
-
-LOCK TABLES `m_code` WRITE;
-/*!40000 ALTER TABLE `m_code` DISABLE KEYS */;
-INSERT INTO `m_code` VALUES (1,'Customer Identifier',1),(2,'LoanCollateral',1),(3,'LoanPurpose',1),(4,'Gender',1),(5,'YesNo',1),(6,'Education',1);
-/*!40000 ALTER TABLE `m_code` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code_value`
---
-
-DROP TABLE IF EXISTS `m_code_value`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code_value` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_id` int(11) NOT NULL,
-  `code_value` varchar(100) DEFAULT NULL,
-  `order_position` int(11) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_value` (`code_id`,`code_value`),
-  KEY `FKCFCEA42640BE071Z` (`code_id`),
-  CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code_value`
---
-
-LOCK TABLES `m_code_value` WRITE;
-/*!40000 ALTER TABLE `m_code_value` DISABLE KEYS */;
-INSERT INTO `m_code_value` VALUES (1,1,'Passport',1),(2,1,'Id',1),(3,1,'Drivers License',2),(4,1,'Any Other Id Type',3),(5,4,'option.Male',1),(6,4,'option.Female',5),(7,5,'option.Yes',1),(8,5,'option.No',7),(9,6,'Primary',1),(10,6,'Secondary',9),(11,6,'University',10);
-/*!40000 ALTER TABLE `m_code_value` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_currency`
---
-
-DROP TABLE IF EXISTS `m_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_currency`
---
-
-LOCK TABLES `m_currency` WRITE;
-/*!40000 ALTER TABLE `m_currency` DISABLE KEYS */;
-INSERT INTO `m_currency` VALUES (1,'AED',2,NULL,'UAE Dirham','currency.AED'),(2,'AFN',2,NULL,'Afghanistan Afghani','currency.AFN'),(3,'ALL',2,NULL,'Albanian Lek','currency.ALL'),(4,'AMD',2,NULL,'Armenian Dram','currency.AMD'),(5,'ANG',2,NULL,'Netherlands Antillian Guilder','currency.ANG'),(6,'AOA',2,NULL,'Angolan Kwanza','currency.AOA'),(7,'ARS',2,'$','Argentine Peso','currency.ARS'),(8,'AUD',2,'A$','Australian Dollar','currency.AUD'),(9,'AWG',2,NULL,'Aruban Guilder','currency.AWG'),(10,'AZM',2,NULL,'Azerbaijanian Manat','currency.AZM'),(11,'BAM',2,NULL,'Bosnia and Herzegovina Convertible Marks','currency.BAM'),(12,'BBD',2,NULL,'Barbados Dollar','currency.BBD'),(13,'BDT',2,NULL,'Bangladesh Taka','currency.BDT'),(14,'BGN',2,NULL,'Bulgarian Lev','currency.BGN'),(15,'BHD',3,NULL,'Bahraini Dinar','currency.BHD'),(16,'BIF',0,NULL,'Burundi Franc','currency.BIF'),(17,'BMD',2,NULL,'Bermudian Dollar','currency.BMD'),(18,'BND',2,'B$','Brunei Dollar','currency.BND'),(19,'BOB',2,'Bs.','Bolivian
  Boliviano','currency.BOB'),(20,'BRL',2,'R$','Brazilian Real','currency.BRL'),(21,'BSD',2,NULL,'Bahamian Dollar','currency.BSD'),(22,'BTN',2,NULL,'Bhutan Ngultrum','currency.BTN'),(23,'BWP',2,NULL,'Botswana Pula','currency.BWP'),(24,'BYR',0,NULL,'Belarussian Ruble','currency.BYR'),(25,'BZD',2,'BZ$','Belize Dollar','currency.BZD'),(26,'CAD',2,NULL,'Canadian Dollar','currency.CAD'),(27,'CDF',2,NULL,'Franc Congolais','currency.CDF'),(28,'CHF',2,NULL,'Swiss Franc','currency.CHF'),(29,'CLP',0,'$','Chilean Peso','currency.CLP'),(30,'CNY',2,NULL,'Chinese Yuan Renminbi','currency.CNY'),(31,'COP',2,'$','Colombian Peso','currency.COP'),(32,'CRC',2,'₡','Costa Rican Colon','currency.CRC'),(33,'CSD',2,NULL,'Serbian Dinar','currency.CSD'),(34,'CUP',2,'$MN','Cuban Peso','currency.CUP'),(35,'CVE',2,NULL,'Cape Verde Escudo','currency.CVE'),(36,'CYP',2,NULL,'Cyprus Pound','currency.CYP'),(37,'CZK',2,NULL,'Czech Koruna','currency.CZK'),(38,'DJF',0,NULL,'Djibouti Franc','currency.DJF'),(39,'DKK',2,NU
 LL,'Danish Krone','currency.DKK'),(40,'DOP',2,'RD$','Dominican Peso','currency.DOP'),(41,'DZD',2,NULL,'Algerian Dinar','currency.DZD'),(42,'EEK',2,NULL,'Estonian Kroon','currency.EEK'),(43,'EGP',2,NULL,'Egyptian Pound','currency.EGP'),(44,'ERN',2,NULL,'Eritrea Nafka','currency.ERN'),(45,'ETB',2,NULL,'Ethiopian Birr','currency.ETB'),(46,'EUR',2,'€','Euro','currency.EUR'),(47,'FJD',2,NULL,'Fiji Dollar','currency.FJD'),(48,'FKP',2,NULL,'Falkland Islands Pound','currency.FKP'),(49,'GBP',2,NULL,'Pound Sterling','currency.GBP'),(50,'GEL',2,NULL,'Georgian Lari','currency.GEL'),(51,'GHC',2,'GHc','Ghana Cedi','currency.GHC'),(52,'GIP',2,NULL,'Gibraltar Pound','currency.GIP'),(53,'GMD',2,NULL,'Gambian Dalasi','currency.GMD'),(54,'GNF',0,NULL,'Guinea Franc','currency.GNF'),(55,'GTQ',2,'Q','Guatemala Quetzal','currency.GTQ'),(56,'GYD',2,NULL,'Guyana Dollar','currency.GYD'),(57,'HKD',2,NULL,'Hong Kong Dollar','currency.HKD'),(58,'HNL',2,'L','Honduras Lempira','currency.HNL'),(59,'HRK',2,NULL,'
 Croatian Kuna','currency.HRK'),(60,'HTG',2,'G','Haiti Gourde','currency.HTG'),(61,'HUF',2,NULL,'Hungarian Forint','currency.HUF'),(62,'IDR',2,NULL,'Indonesian Rupiah','currency.IDR'),(63,'ILS',2,NULL,'New Israeli Shekel','currency.ILS'),(64,'INR',2,'₹','Indian Rupee','currency.INR'),(65,'IQD',3,NULL,'Iraqi Dinar','currency.IQD'),(66,'IRR',2,NULL,'Iranian Rial','currency.IRR'),(67,'ISK',0,NULL,'Iceland Krona','currency.ISK'),(68,'JMD',2,NULL,'Jamaican Dollar','currency.JMD'),(69,'JOD',3,NULL,'Jordanian Dinar','currency.JOD'),(70,'JPY',0,NULL,'Japanese Yen','currency.JPY'),(71,'KES',2,'KSh','Kenyan Shilling','currency.KES'),(72,'KGS',2,NULL,'Kyrgyzstan Som','currency.KGS'),(73,'KHR',2,NULL,'Cambodia Riel','currency.KHR'),(74,'KMF',0,NULL,'Comoro Franc','currency.KMF'),(75,'KPW',2,NULL,'North Korean Won','currency.KPW'),(76,'KRW',0,NULL,'Korean Won','currency.KRW'),(77,'KWD',3,NULL,'Kuwaiti Dinar','currency.KWD'),(78,'KYD',2,NULL,'Cayman Islands Dollar','currency.KYD'),(79,'KZT',2,NU
 LL,'Kazakhstan Tenge','currency.KZT'),(80,'LAK',2,NULL,'Lao Kip','currency.LAK'),(81,'LBP',2,'L£','Lebanese Pound','currency.LBP'),(82,'LKR',2,NULL,'Sri Lanka Rupee','currency.LKR'),(83,'LRD',2,NULL,'Liberian Dollar','currency.LRD'),(84,'LSL',2,NULL,'Lesotho Loti','currency.LSL'),(85,'LTL',2,NULL,'Lithuanian Litas','currency.LTL'),(86,'LVL',2,NULL,'Latvian Lats','currency.LVL'),(87,'LYD',3,NULL,'Libyan Dinar','currency.LYD'),(88,'MAD',2,NULL,'Moroccan Dirham','currency.MAD'),(89,'MDL',2,NULL,'Moldovan Leu','currency.MDL'),(90,'MGA',2,NULL,'Malagasy Ariary','currency.MGA'),(91,'MKD',2,NULL,'Macedonian Denar','currency.MKD'),(92,'MMK',2,'K','Myanmar Kyat','currency.MMK'),(93,'MNT',2,NULL,'Mongolian Tugrik','currency.MNT'),(94,'MOP',2,NULL,'Macau Pataca','currency.MOP'),(95,'MRO',2,NULL,'Mauritania Ouguiya','currency.MRO'),(96,'MTL',2,NULL,'Maltese Lira','currency.MTL'),(97,'MUR',2,NULL,'Mauritius Rupee','currency.MUR'),(98,'MVR',2,NULL,'Maldives Rufiyaa','currency.MVR'),(99,'MWK',2,N
 ULL,'Malawi Kwacha','currency.MWK'),(100,'MXN',2,'$','Mexican Peso','currency.MXN'),(101,'MYR',2,NULL,'Malaysian Ringgit','currency.MYR'),(102,'MZM',2,NULL,'Mozambique Metical','currency.MZM'),(103,'NAD',2,NULL,'Namibia Dollar','currency.NAD'),(104,'NGN',2,NULL,'Nigerian Naira','currency.NGN'),(105,'NIO',2,'C$','Nicaragua Cordoba Oro','currency.NIO'),(106,'NOK',2,NULL,'Norwegian Krone','currency.NOK'),(107,'NPR',2,NULL,'Nepalese Rupee','currency.NPR'),(108,'NZD',2,NULL,'New Zealand Dollar','currency.NZD'),(109,'OMR',3,NULL,'Rial Omani','currency.OMR'),(110,'PAB',2,'B/.','Panama Balboa','currency.PAB'),(111,'PEN',2,'S/.','Peruvian Nuevo Sol','currency.PEN'),(112,'PGK',2,NULL,'Papua New Guinea Kina','currency.PGK'),(113,'PHP',2,NULL,'Philippine Peso','currency.PHP'),(114,'PKR',2,NULL,'Pakistan Rupee','currency.PKR'),(115,'PLN',2,NULL,'Polish Zloty','currency.PLN'),(116,'PYG',0,'₲','Paraguayan Guarani','currency.PYG'),(117,'QAR',2,NULL,'Qatari Rial','currency.QAR'),(118,'RON',2,NULL,
 'Romanian Leu','currency.RON'),(119,'RUB',2,NULL,'Russian Ruble','currency.RUB'),(120,'RWF',0,NULL,'Rwanda Franc','currency.RWF'),(121,'SAR',2,NULL,'Saudi Riyal','currency.SAR'),(122,'SBD',2,NULL,'Solomon Islands Dollar','currency.SBD'),(123,'SCR',2,NULL,'Seychelles Rupee','currency.SCR'),(124,'SDD',2,NULL,'Sudanese Dinar','currency.SDD'),(125,'SEK',2,NULL,'Swedish Krona','currency.SEK'),(126,'SGD',2,NULL,'Singapore Dollar','currency.SGD'),(127,'SHP',2,NULL,'St Helena Pound','currency.SHP'),(128,'SIT',2,NULL,'Slovenian Tolar','currency.SIT'),(129,'SKK',2,NULL,'Slovak Koruna','currency.SKK'),(130,'SLL',2,NULL,'Sierra Leone Leone','currency.SLL'),(131,'SOS',2,NULL,'Somali Shilling','currency.SOS'),(132,'SRD',2,NULL,'Surinam Dollar','currency.SRD'),(133,'STD',2,NULL,'Sao Tome and Principe Dobra','currency.STD'),(134,'SVC',2,NULL,'El Salvador Colon','currency.SVC'),(135,'SYP',2,NULL,'Syrian Pound','currency.SYP'),(136,'SZL',2,NULL,'Swaziland Lilangeni','currency.SZL'),(137,'THB',2,NULL,
 'Thai Baht','currency.THB'),(138,'TJS',2,NULL,'Tajik Somoni','currency.TJS'),(139,'TMM',2,NULL,'Turkmenistan Manat','currency.TMM'),(140,'TND',3,'DT','Tunisian Dinar','currency.TND'),(141,'TOP',2,NULL,'Tonga Pa\'anga','currency.TOP'),(142,'TRY',2,NULL,'Turkish Lira','currency.TRY'),(143,'TTD',2,NULL,'Trinidad and Tobago Dollar','currency.TTD'),(144,'TWD',2,NULL,'New Taiwan Dollar','currency.TWD'),(145,'TZS',2,NULL,'Tanzanian Shilling','currency.TZS'),(146,'UAH',2,NULL,'Ukraine Hryvnia','currency.UAH'),(147,'UGX',2,'USh','Uganda Shilling','currency.UGX'),(148,'USD',2,'$','US Dollar','currency.USD'),(149,'UYU',2,'$U','Peso Uruguayo','currency.UYU'),(150,'UZS',2,NULL,'Uzbekistan Sum','currency.UZS'),(151,'VEB',2,'Bs.F.','Venezuelan Bolivar','currency.VEB'),(152,'VND',2,NULL,'Vietnamese Dong','currency.VND'),(153,'VUV',0,NULL,'Vanuatu Vatu','currency.VUV'),(154,'WST',2,NULL,'Samoa Tala','currency.WST'),(155,'XAF',0,NULL,'CFA Franc BEAC','currency.XAF'),(156,'XCD',2,NULL,'East Caribbean 
 Dollar','currency.XCD'),(157,'XDR',5,NULL,'SDR (Special Drawing Rights)','currency.XDR'),(158,'XOF',0,'CFA','CFA Franc BCEAO','currency.XOF'),(159,'XPF',0,NULL,'CFP Franc','currency.XPF'),(160,'YER',2,NULL,'Yemeni Rial','currency.YER'),(161,'ZAR',2,'R','South African Rand','currency.ZAR'),(162,'ZMK',2,NULL,'Zambian Kwacha','currency.ZMK'),(163,'ZWD',2,NULL,'Zimbabwe Dollar','currency.ZWD');
-/*!40000 ALTER TABLE `m_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_document`
---
-
-DROP TABLE IF EXISTS `m_document`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_document` (
-  `id` int(20) NOT NULL AUTO_INCREMENT,
-  `parent_entity_type` varchar(50) NOT NULL,
-  `parent_entity_id` int(20) NOT NULL DEFAULT '0',
-  `name` varchar(250) NOT NULL,
-  `file_name` varchar(250) NOT NULL,
-  `size` int(20) DEFAULT '0',
-  `type` varchar(50) DEFAULT NULL,
-  `description` varchar(1000) DEFAULT NULL,
-  `location` varchar(500) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_document`
---
-
-LOCK TABLES `m_document` WRITE;
-/*!40000 ALTER TABLE `m_document` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_document` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_fund`
---
-
-DROP TABLE IF EXISTS `m_fund`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_fund` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(255) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `fund_name_org` (`name`),
-  UNIQUE KEY `fund_externalid_org` (`external_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_fund`
---
-
-LOCK TABLES `m_fund` WRITE;
-/*!40000 ALTER TABLE `m_fund` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_fund` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group`
---
-
-DROP TABLE IF EXISTS `m_group`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `staff_id` bigint(20) DEFAULT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `level_Id` int(11) NOT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `name` varchar(100) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`,`level_Id`),
-  UNIQUE KEY `external_id` (`external_id`,`level_Id`),
-  KEY `office_id` (`office_id`),
-  KEY `staff_id` (`staff_id`),
-  KEY `Parent_Id_reference` (`parent_id`),
-  KEY `FK_m_group_level` (`level_Id`),
-  CONSTRAINT `m_group_ibfk_1` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`),
-  CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group`
---
-
-LOCK TABLES `m_group` WRITE;
-/*!40000 ALTER TABLE `m_group` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group_client`
---
-
-DROP TABLE IF EXISTS `m_group_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group_client` (
-  `group_id` bigint(20) NOT NULL,
-  `client_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`group_id`,`client_id`),
-  KEY `client_id` (`client_id`),
-  CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group_client`
---
-
-LOCK TABLES `m_group_client` WRITE;
-/*!40000 ALTER TABLE `m_group_client` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group_level`
---
-
-DROP TABLE IF EXISTS `m_group_level`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group_level` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `parent_id` int(11) DEFAULT NULL,
-  `super_parent` tinyint(1) NOT NULL,
-  `level_name` varchar(100) NOT NULL,
-  `recursable` tinyint(1) NOT NULL,
-  `can_have_clients` tinyint(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `Parent_levelId_reference` (`parent_id`),
-  CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group_level`
---
-
-LOCK TABLES `m_group_level` WRITE;
-/*!40000 ALTER TABLE `m_group_level` DISABLE KEYS */;
-INSERT INTO `m_group_level` VALUES (1,NULL,1,'Center',1,0),(2,1,0,'Group',0,1);
-/*!40000 ALTER TABLE `m_group_level` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_guarantor`
---
-
-DROP TABLE IF EXISTS `m_guarantor`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_guarantor` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `dob` date DEFAULT NULL,
-  `address_line_1` varchar(500) DEFAULT NULL,
-  `address_line_2` varchar(500) DEFAULT NULL,
-  `city` varchar(50) DEFAULT NULL,
-  `state` varchar(50) DEFAULT NULL,
-  `country` varchar(50) DEFAULT NULL,
-  `zip` varchar(20) DEFAULT NULL,
-  `house_phone_number` varchar(20) DEFAULT NULL,
-  `mobile_number` varchar(20) DEFAULT NULL,
-  `comment` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_guarantor_m_loan` (`loan_id`),
-  CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_guarantor`
---
-
-LOCK TABLES `m_guarantor` WRITE;
-/*!40000 ALTER TABLE `m_guarantor` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_guarantor` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan`
---
-
-DROP TABLE IF EXISTS `m_loan`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `fund_id` bigint(20) DEFAULT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `loanpurpose_cv_id` int(11) DEFAULT NULL,
-  `loan_status_id` smallint(5) NOT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) NOT NULL,
-  `arrearstolerance_amount` decimal(19,6) DEFAULT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `interest_period_frequency_enum` smallint(5) NOT NULL,
-  `annual_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `interest_method_enum` smallint(5) NOT NULL,
-  `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1',
-  `term_frequency` smallint(5) NOT NULL DEFAULT '0',
-  `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2',
-  `repay_every` smallint(5) NOT NULL,
-  `repayment_period_frequency_enum` smallint(5) NOT NULL,
-  `number_of_repayments` smallint(5) NOT NULL,
-  `amortization_method_enum` smallint(5) NOT NULL,
-  `submittedon_date` date DEFAULT NULL,
-  `submittedon_userid` bigint(20) DEFAULT NULL,
-  `approvedon_date` date DEFAULT NULL,
-  `approvedon_userid` bigint(20) DEFAULT NULL,
-  `expected_disbursedon_date` date DEFAULT NULL,
-  `expected_firstrepaymenton_date` date DEFAULT NULL,
-  `interest_calculated_from_date` date DEFAULT NULL,
-  `disbursedon_date` date DEFAULT NULL,
-  `disbursedon_userid` bigint(20) DEFAULT NULL,
-  `expected_maturedon_date` date DEFAULT NULL,
-  `maturedon_date` date DEFAULT NULL,
-  `closedon_date` date DEFAULT NULL,
-  `closedon_userid` bigint(20) DEFAULT NULL,
-  `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL,
-  `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `rejectedon_date` date DEFAULT NULL,
-  `rejectedon_userid` bigint(20) DEFAULT NULL,
-  `rescheduledon_date` date DEFAULT NULL,
-  `withdrawnon_date` date DEFAULT NULL,
-  `withdrawnon_userid` bigint(20) DEFAULT NULL,
-  `writtenoffon_date` date DEFAULT NULL,
-  `loan_transaction_strategy_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`),
-  KEY `FKB6F935D87179A0CB` (`client_id`),
-  KEY `FKB6F935D8C8D4B434` (`product_id`),
-  KEY `FK7C885877240145` (`fund_id`),
-  KEY `FK_loan_ltp_strategy` (`loan_transaction_strategy_id`),
-  KEY `FK_m_loan_m_staff` (`loan_officer_id`),
-  KEY `group_id` (`group_id`),
-  KEY `FK_m_loanpurpose_codevalue` (`loanpurpose_cv_id`),
-  KEY `FK_submittedon_userid` (`submittedon_userid`),
-  KEY `FK_approvedon_userid` (`approvedon_userid`),
-  KEY `FK_rejectedon_userid` (`rejectedon_userid`),
-  KEY `FK_withdrawnon_userid` (`withdrawnon_userid`),
-  KEY `FK_disbursedon_userid` (`disbursedon_userid`),
-  KEY `FK_closedon_userid` (`closedon_userid`),
-  CONSTRAINT `FK7C885877240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`),
-  CONSTRAINT `FKB6F935D87179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FKB6F935D8C8D4B434` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`),
-  CONSTRAINT `FK_approvedon_userid` FOREIGN KEY (`approvedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_closedon_userid` FOREIGN KEY (`closedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_disbursedon_userid` FOREIGN KEY (`disbursedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_loan_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`),
-  CONSTRAINT `FK_m_loanpurpose_codevalue` FOREIGN KEY (`loanpurpose_cv_id`) REFERENCES `m_code_value` (`id`),
-  CONSTRAINT `FK_m_loan_m_staff` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`),
-  CONSTRAINT `FK_rejectedon_userid` FOREIGN KEY (`rejectedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan`
---
-
-LOCK TABLES `m_loan` WRITE;
-/*!40000 ALTER TABLE `m_loan` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_arrears_aging`
---
-
-DROP TABLE IF EXISTS `m_loan_arrears_aging`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_arrears_aging` (
-  `loan_id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `overdue_since_date_derived` date DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_arrears_aging`
---
-
-LOCK TABLES `m_loan_arrears_aging` WRITE;
-/*!40000 ALTER TABLE `m_loan_arrears_aging` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_arrears_aging` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_charge`
---
-
-DROP TABLE IF EXISTS `m_loan_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `charge_id` bigint(20) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `charge_time_enum` smallint(5) NOT NULL,
-  `due_for_collection_as_of_date` date DEFAULT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `calculation_percentage` decimal(19,6) DEFAULT NULL,
-  `calculation_on_amount` decimal(19,6) DEFAULT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `amount_paid_derived` decimal(19,6) DEFAULT NULL,
-  `amount_waived_derived` decimal(19,6) DEFAULT NULL,
-  `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0',
-  `waived` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  KEY `charge_id` (`charge_id`),
-  KEY `m_loan_charge_ibfk_2` (`loan_id`),
-  CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`),
-  CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_charge`
---
-
-LOCK TABLES `m_loan_charge` WRITE;
-/*!40000 ALTER TABLE `m_loan_charge` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_collateral`
---
-
-DROP TABLE IF EXISTS `m_loan_collateral`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_collateral` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `type_cv_id` int(11) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_collateral_m_loan` (`loan_id`),
-  KEY `FK_collateral_code_value` (`type_cv_id`),
-  CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_collateral`
---
-
-LOCK TABLES `m_loan_collateral` WRITE;
-/*!40000 ALTER TABLE `m_loan_collateral` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_collateral` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_officer_assignment_history`
---
-
-DROP TABLE IF EXISTS `m_loan_officer_assignment_history`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_officer_assignment_history` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`),
-  KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_officer_assignment_history`
---
-
-LOCK TABLES `m_loan_officer_assignment_history` WRITE;
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_repayment_schedule`
---
-
-DROP TABLE IF EXISTS `m_loan_repayment_schedule`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_repayment_schedule` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `fromdate` date DEFAULT NULL,
-  `duedate` date NOT NULL,
-  `installment` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) DEFAULT NULL,
-  `principal_completed_derived` decimal(19,6) DEFAULT NULL,
-  `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `interest_amount` decimal(19,6) DEFAULT NULL,
-  `interest_completed_derived` decimal(19,6) DEFAULT NULL,
-  `interest_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_amount` decimal(19,6) DEFAULT NULL,
-  `fee_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_amount` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `completed_derived` bit(1) NOT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `interest_waived_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK488B92AA40BE0710` (`loan_id`),
-  CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_repayment_schedule`
---
-
-LOCK TABLES `m_loan_repayment_schedule` WRITE;
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_transaction`
---
-
-DROP TABLE IF EXISTS `m_loan_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `is_reversed` tinyint(1) NOT NULL,
-  `transaction_type_enum` smallint(5) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `principal_portion_derived` decimal(19,6) DEFAULT NULL,
-  `interest_portion_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKCFCEA42640BE0710` (`loan_id`),
-  CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_transaction`
---
-
-LOCK TABLES `m_loan_transaction` WRITE;
-/*!40000 ALTER TABLE `m_loan_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_note`
---
-
-DROP TABLE IF EXISTS `m_note`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_note` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `loan_id` bigint(20) DEFAULT NULL,
-  `loan_transaction_id` bigint(20) DEFAULT NULL,
-  `note_type_enum` smallint(5) NOT NULL,
-  `note` varchar(1000) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK7C9708924D26803` (`loan_transaction_id`),
-  KEY `FK7C97089541F0A56` (`createdby_id`),
-  KEY `FK7C970897179A0CB` (`client_id`),
-  KEY `FK_m_note_m_group` (`group_id`),
-  KEY `FK7C970898F889C3F` (`lastmodifiedby_id`),
-  KEY `FK7C9708940BE0710` (`loan_id`),
-  CONSTRAINT `FK7C9708924D26803` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`),
-  CONSTRAINT `FK7C9708940BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK7C97089541F0A56` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_note`
---
-
-LOCK TABLES `m_note` WRITE;
-/*!40000 ALTER TABLE `m_note` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_note` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office`
---
-
-DROP TABLE IF EXISTS `m_office`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `opening_date` date NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name_org` (`name`),
-  UNIQUE KEY `externalid_org` (`external_id`),
-  KEY `FK2291C477E2551DCC` (`parent_id`),
-  CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office`
---
-
-LOCK TABLES `m_office` WRITE;
-/*!40000 ALTER TABLE `m_office` DISABLE KEYS */;
-INSERT INTO `m_office` VALUES (1,NULL,'.','1','Head Office','2009-01-01');
-/*!40000 ALTER TABLE `m_office` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office_transaction`
---
-
-DROP TABLE IF EXISTS `m_office_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `from_office_id` bigint(20) DEFAULT NULL,
-  `to_office_id` bigint(20) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` int(11) NOT NULL,
-  `transaction_amount` decimal(19,6) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK1E37728B93C6C1B6` (`to_office_id`),
-  KEY `FK1E37728B783C5C25` (`from_office_id`),
-  CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office_transaction`
---
-
-LOCK TABLES `m_office_transaction` WRITE;
-/*!40000 ALTER TABLE `m_office_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_office_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_organisation_currency`
---
-
-DROP TABLE IF EXISTS `m_organisation_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_organisation_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `name` varchar(50) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_organisation_currency`
---
-
-LOCK TABLES `m_organisation_currency` WRITE;
-/*!40000 ALTER TABLE `m_organisation_currency` DISABLE KEYS */;
-INSERT INTO `m_organisation_currency` VALUES (21,'USD',2,'US Dollar','$','currency.USD');
-/*!40000 ALTER TABLE `m_organisation_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_permission`
---
-
-DROP TABLE IF EXISTS `m_permission`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_permission` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `grouping` varchar(45) DEFAULT NULL,
-  `code` varchar(100) NOT NULL,
-  `entity_name` varchar(100) DEFAULT NULL,
-  `action_name` varchar(100) DEFAULT NULL,
-  `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=299 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_permission`
---
-
-LOCK TABLES `m_permission` WRITE;
-/*!40000 ALTER TABLE `m_permission` DISABLE KEYS */;
-INSERT INTO `m_permission` VALUES (1,'special','ALL_FUNCTIONS',NULL,NULL,0),(2,'special','ALL_FUNCTIONS_READ',NULL,NULL,0),(3,'special','CHECKER_SUPER_USER',NULL,NULL,0),(4,'special','REPORTING_SUPER_USER',NULL,NULL,0),(5,'authorisation','READ_PERMISSION','PERMISSION','READ',0),(6,'authorisation','PERMISSIONS_ROLE','ROLE','PERMISSIONS',0),(7,'authorisation','CREATE_ROLE','ROLE','CREATE',0),(8,'authorisation','CREATE_ROLE_CHECKER','ROLE','CREATE',0),(9,'authorisation','READ_ROLE','ROLE','READ',0),(10,'authorisation','UPDATE_ROLE','ROLE','UPDATE',0),(11,'authorisation','UPDATE_ROLE_CHECKER','ROLE','UPDATE',0),(12,'authorisation','DELETE_ROLE','ROLE','DELETE',0),(13,'authorisation','DELETE_ROLE_CHECKER','ROLE','DELETE',0),(14,'authorisation','CREATE_USER','USER','CREATE',0),(15,'authorisation','CREATE_USER_CHECKER','USER','CREATE',0),(16,'authorisation','READ_USER','USER','READ',0),(17,'authorisation','UPDATE_USER','USER','UPDATE',0),(18,'authorisation','UPDATE_USER_CHECKER','USER','UP
 DATE',0),(19,'authorisation','DELETE_USER','USER','DELETE',0),(20,'authorisation','DELETE_USER_CHECKER','USER','DELETE',0),(21,'configuration','READ_CONFIGURATION','CONFIGURATION','READ',0),(22,'configuration','UPDATE_CONFIGURATION','CONFIGURATION','UPDATE',0),(23,'configuration','UPDATE_CONFIGURATION_CHECKER','CONFIGURATION','UPDATE',0),(24,'configuration','READ_CODE','CODE','READ',0),(25,'configuration','CREATE_CODE','CODE','CREATE',0),(26,'configuration','CREATE_CODE_CHECKER','CODE','CREATE',0),(27,'configuration','UPDATE_CODE','CODE','UPDATE',0),(28,'configuration','UPDATE_CODE_CHECKER','CODE','UPDATE',0),(29,'configuration','DELETE_CODE','CODE','DELETE',0),(30,'configuration','DELETE_CODE_CHECKER','CODE','DELETE',0),(31,'configuration','READ_CODEVALUE','CODEVALUE','READ',0),(32,'configuration','CREATE_CODEVALUE','CODEVALUE','CREATE',0),(33,'configuration','CREATE_CODEVALUE_CHECKER','CODEVALUE','CREATE',0),(34,'configuration','UPDATE_CODEVALUE','CODEVALUE','UPDATE',0),(35,'confi
 guration','UPDATE_CODEVALUE_CHECKER','CODEVALUE','UPDATE',0),(36,'configuration','DELETE_CODEVALUE','CODEVALUE','DELETE',0),(37,'configuration','DELETE_CODEVALUE_CHECKER','CODEVALUE','DELETE',0),(38,'configuration','READ_CURRENCY','CURRENCY','READ',0),(39,'configuration','UPDATE_CURRENCY','CURRENCY','UPDATE',0),(40,'configuration','UPDATE_CURRENCY_CHECKER','CURRENCY','UPDATE',0),(41,'configuration','UPDATE_PERMISSION','PERMISSION','UPDATE',0),(42,'configuration','UPDATE_PERMISSION_CHECKER','PERMISSION','UPDATE',0),(43,'configuration','READ_DATATABLE','DATATABLE','READ',0),(44,'configuration','REGISTER_DATATABLE','DATATABLE','REGISTER',0),(45,'configuration','REGISTER_DATATABLE_CHECKER','DATATABLE','REGISTER',0),(46,'configuration','DEREGISTER_DATATABLE','DATATABLE','DEREGISTER',0),(47,'configuration','DEREGISTER_DATATABLE_CHECKER','DATATABLE','DEREGISTER',0),(48,'configuration','READ_AUDIT','AUDIT','READ',0),(49,'configuration','CREATE_CALENDAR','CALENDAR','CREATE',0),(50,'configura
 tion','READ_CALENDAR','CALENDAR','READ',0),(51,'configuration','UPDATE_CALENDAR','CALENDAR','UPDATE',0),(52,'configuration','DELETE_CALENDAR','CALENDAR','DELETE',0),(53,'configuration','CREATE_CALENDAR_CHECKER','CALENDAR','CREATE',0),(54,'configuration','UPDATE_CALENDAR_CHECKER','CALENDAR','UPDATE',0),(55,'configuration','DELETE_CALENDAR_CHECKER','CALENDAR','DELETE',0),(56,'organisation','READ_MAKERCHECKER','MAKERCHECKER','READ',0),(57,'organisation','READ_CHARGE','CHARGE','READ',0),(58,'organisation','CREATE_CHARGE','CHARGE','CREATE',0),(59,'organisation','CREATE_CHARGE_CHECKER','CHARGE','CREATE',0),(60,'organisation','UPDATE_CHARGE','CHARGE','UPDATE',0),(61,'organisation','UPDATE_CHARGE_CHECKER','CHARGE','UPDATE',0),(62,'organisation','DELETE_CHARGE','CHARGE','DELETE',0),(63,'organisation','DELETE_CHARGE_CHECKER','CHARGE','DELETE',0),(64,'organisation','READ_FUND','FUND','READ',0),(65,'organisation','CREATE_FUND','FUND','CREATE',0),(66,'organisation','CREATE_FUND_CHECKER','FUND','
 CREATE',0),(67,'organisation','UPDATE_FUND','FUND','UPDATE',0),(68,'organisation','UPDATE_FUND_CHECKER','FUND','UPDATE',0),(69,'organisation','DELETE_FUND','FUND','DELETE',0),(70,'organisation','DELETE_FUND_CHECKER','FUND','DELETE',0),(71,'organisation','READ_LOANPRODUCT','LOANPRODUCT','READ',0),(72,'organisation','CREATE_LOANPRODUCT','LOANPRODUCT','CREATE',0),(73,'organisation','CREATE_LOANPRODUCT_CHECKER','LOANPRODUCT','CREATE',0),(74,'organisation','UPDATE_LOANPRODUCT','LOANPRODUCT','UPDATE',0),(75,'organisation','UPDATE_LOANPRODUCT_CHECKER','LOANPRODUCT','UPDATE',0),(76,'organisation','DELETE_LOANPRODUCT','LOANPRODUCT','DELETE',0),(77,'organisation','DELETE_LOANPRODUCT_CHECKER','LOANPRODUCT','DELETE',0),(78,'organisation','READ_OFFICE','OFFICE','READ',0),(79,'organisation','CREATE_OFFICE','OFFICE','CREATE',0),(80,'organisation','CREATE_OFFICE_CHECKER','OFFICE','CREATE',0),(81,'organisation','UPDATE_OFFICE','OFFICE','UPDATE',0),(82,'organisation','UPDATE_OFFICE_CHECKER','OFFICE',
 'UPDATE',0),(83,'organisation','READ_OFFICETRANSACTION','OFFICETRANSACTION','READ',0),(84,'organisation','DELETE_OFFICE_CHECKER','OFFICE','DELETE',0),(85,'organisation','CREATE_OFFICETRANSACTION','OFFICETRANSACTION','CREATE',0),(86,'organisation','CREATE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','CREATE',0),(87,'organisation','DELETE_OFFICETRANSACTION','OFFICETRANSACTION','DELETE',0),(88,'organisation','DELETE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','DELETE',0),(89,'organisation','READ_STAFF','STAFF','READ',0),(90,'organisation','CREATE_STAFF','STAFF','CREATE',0),(91,'organisation','CREATE_STAFF_CHECKER','STAFF','CREATE',0),(92,'organisation','UPDATE_STAFF','STAFF','UPDATE',0),(93,'organisation','UPDATE_STAFF_CHECKER','STAFF','UPDATE',0),(94,'organisation','DELETE_STAFF','STAFF','DELETE',0),(95,'organisation','DELETE_STAFF_CHECKER','STAFF','DELETE',0),(96,'organisation','READ_SAVINGSPRODUCT','SAVINGSPRODUCT','READ',0),(97,'organisation','CREATE_SAVINGSPRODUCT','SAVINGSPR
 ODUCT','CREATE',0),(98,'organisation','CREATE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','CREATE',0),(99,'organisation','UPDATE_SAVINGSPRODUCT','SAVINGSPRODUCT','UPDATE',0),(100,'organisation','UPDATE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','UPDATE',0),(101,'organisation','DELETE_SAVINGSPRODUCT','SAVINGSPRODUCT','DELETE',0),(102,'organisation','DELETE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','DELETE',0),(103,'portfolio','READ_LOAN','LOAN','READ',0),(104,'portfolio','CREATE_LOAN','LOAN','CREATE',0),(105,'portfolio','CREATE_LOAN_CHECKER','LOAN','CREATE',0),(106,'portfolio','UPDATE_LOAN','LOAN','UPDATE',0),(107,'portfolio','UPDATE_LOAN_CHECKER','LOAN','UPDATE',0),(108,'portfolio','DELETE_LOAN','LOAN','DELETE',0),(109,'portfolio','DELETE_LOAN_CHECKER','LOAN','DELETE',0),(110,'portfolio','READ_CLIENT','CLIENT','READ',0),(111,'portfolio','CREATE_CLIENT','CLIENT','CREATE',0),(112,'portfolio','CREATE_CLIENT_CHECKER','CLIENT','CREATE',0),(113,'portfolio','UPDATE_CLIENT','CLIENT','UPDATE',0),(
 114,'portfolio','UPDATE_CLIENT_CHECKER','CLIENT','UPDATE',0),(115,'portfolio','DELETE_CLIENT','CLIENT','DELETE',0),(116,'portfolio','DELETE_CLIENT_CHECKER','CLIENT','DELETE',0),(117,'portfolio','READ_CLIENTIMAGE','CLIENTIMAGE','READ',0),(118,'portfolio','CREATE_CLIENTIMAGE','CLIENTIMAGE','CREATE',0),(119,'portfolio','CREATE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','CREATE',0),(120,'portfolio','DELETE_CLIENTIMAGE','CLIENTIMAGE','DELETE',0),(121,'portfolio','DELETE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','DELETE',0),(122,'portfolio','READ_CLIENTNOTE','CLIENTNOTE','READ',0),(123,'portfolio','CREATE_CLIENTNOTE','CLIENTNOTE','CREATE',0),(124,'portfolio','CREATE_CLIENTNOTE_CHECKER','CLIENTNOTE','CREATE',0),(125,'portfolio','UPDATE_CLIENTNOTE','CLIENTNOTE','UPDATE',0),(126,'portfolio','UPDATE_CLIENTNOTE_CHECKER','CLIENTNOTE','UPDATE',0),(127,'portfolio','DELETE_CLIENTNOTE','CLIENTNOTE','DELETE',0),(128,'portfolio','DELETE_CLIENTNOTE_CHECKER','CLIENTNOTE','DELETE',0),(129,'portfolio','READ_GROUPNOTE',
 'GROUPNOTE','READ',0),(130,'portfolio','CREATE_GROUPNOTE','GROUPNOTE','CREATE',0),(131,'portfolio','UPDATE_GROUPNOTE','GROUPNOTE','UPDATE',0),(132,'portfolio','DELETE_GROUPNOTE','GROUPNOTE','DELETE',0),(133,'portfolio','CREATE_GROUPNOTE_CHECKER','GROUPNOTE','CREATE',0),(134,'portfolio','UPDATE_GROUPNOTE_CHECKER','GROUPNOTE','UPDATE',0),(135,'portfolio','DELETE_GROUPNOTE_CHECKER','GROUPNOTE','DELETE',0),(136,'portfolio','READ_LOANNOTE','LOANNOTE','READ',0),(137,'portfolio','CREATE_LOANNOTE','LOANNOTE','CREATE',0),(138,'portfolio','UPDATE_LOANNOTE','LOANNOTE','UPDATE',0),(139,'portfolio','DELETE_LOANNOTE','LOANNOTE','DELETE',0),(140,'portfolio','CREATE_LOANNOTE_CHECKER','LOANNOTE','CREATE',0),(141,'portfolio','UPDATE_LOANNOTE_CHECKER','LOANNOTE','UPDATE',0),(142,'portfolio','DELETE_LOANNOTE_CHECKER','LOANNOTE','DELETE',0),(143,'portfolio','READ_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','READ',0),(144,'portfolio','CREATE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','CREATE',0),(145,'por
 tfolio','UPDATE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','UPDATE',0),(146,'portfolio','DELETE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','DELETE',0),(147,'portfolio','CREATE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','CREATE',0),(148,'portfolio','UPDATE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','UPDATE',0),(149,'portfolio','DELETE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','DELETE',0),(150,'portfolio','READ_SAVINGNOTE','SAVINGNOTE','READ',0),(151,'portfolio','CREATE_SAVINGNOTE','SAVINGNOTE','CREATE',0),(152,'portfolio','UPDATE_SAVINGNOTE','SAVINGNOTE','UPDATE',0),(153,'portfolio','DELETE_SAVINGNOTE','SAVINGNOTE','DELETE',0),(154,'portfolio','CREATE_SAVINGNOTE_CHECKER','SAVINGNOTE','CREATE',0),(155,'portfolio','UPDATE_SAVINGNOTE_CHECKER','SAVINGNOTE','UPDATE',0),(156,'portfolio','DELETE_SAVINGNOTE_CHECKER','SAVINGNOTE','DELETE',0),(157,'portfolio','READ_CLIENTIDENTIFIER','CLIENTIDENTIFIER','READ',0),(158,'portfolio','CREATE_CLIENTIDENTIFIER','CLIENTIDENTIFI
 ER','CREATE',0),(159,'portfolio','CREATE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','CREATE',0),(160,'portfolio','UPDATE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','UPDATE',0),(161,'portfolio','UPDATE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','UPDATE',0),(162,'portfolio','DELETE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','DELETE',0),(163,'portfolio','DELETE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','DELETE',0),(164,'portfolio','READ_DOCUMENT','DOCUMENT','READ',0),(165,'portfolio','CREATE_DOCUMENT','DOCUMENT','CREATE',0),(166,'portfolio','CREATE_DOCUMENT_CHECKER','DOCUMENT','CREATE',0),(167,'portfolio','UPDATE_DOCUMENT','DOCUMENT','UPDATE',0),(168,'portfolio','UPDATE_DOCUMENT_CHECKER','DOCUMENT','UPDATE',0),(169,'portfolio','DELETE_DOCUMENT','DOCUMENT','DELETE',0),(170,'portfolio','DELETE_DOCUMENT_CHECKER','DOCUMENT','DELETE',0),(171,'portfolio','READ_GROUP','GROUP','READ',0),(172,'portfolio','CREATE_GROUP','GROUP','CREATE',0),(173,'portfolio','CREATE_GROUP_CHECKER','GROUP','CREATE',0),(
 174,'portfolio','UPDATE_GROUP','GROUP','UPDATE',0),(175,'portfolio','UPDATE_GROUP_CHECKER','GROUP','UPDATE',0),(176,'portfolio','DELETE_GROUP','GROUP','DELETE',0),(177,'portfolio','DELETE_GROUP_CHECKER','GROUP','DELETE',0),(178,'portfolio','UNASSIGNSTAFF_GROUP','GROUP','UNASSIGNSTAFF',0),(179,'portfolio','UNASSIGNSTAFF_GROUP_CHECKER','GROUP','UNASSIGNSTAFF',0),(180,'portfolio','CREATE_LOANCHARGE','LOANCHARGE','CREATE',0),(181,'portfolio','CREATE_LOANCHARGE_CHECKER','LOANCHARGE','CREATE',0),(182,'portfolio','UPDATE_LOANCHARGE','LOANCHARGE','UPDATE',0),(183,'portfolio','UPDATE_LOANCHARGE_CHECKER','LOANCHARGE','UPDATE',0),(184,'portfolio','DELETE_LOANCHARGE','LOANCHARGE','DELETE',0),(185,'portfolio','DELETE_LOANCHARGE_CHECKER','LOANCHARGE','DELETE',0),(186,'portfolio','WAIVE_LOANCHARGE','LOANCHARGE','WAIVE',0),(187,'portfolio','WAIVE_LOANCHARGE_CHECKER','LOANCHARGE','WAIVE',0),(188,'portfolio','READ_SAVINGSACCOUNT','SAVINGSACCOUNT','READ',0),(189,'portfolio','CREATE_SAVINGSACCOUNT','SA
 VINGSACCOUNT','CREATE',0),(190,'portfolio','CREATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','CREATE',0),(191,'portfolio','UPDATE_SAVINGSACCOUNT','SAVINGSACCOUNT','UPDATE',0),(192,'portfolio','UPDATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','UPDATE',0),(193,'portfolio','DELETE_SAVINGSACCOUNT','SAVINGSACCOUNT','DELETE',0),(194,'portfolio','DELETE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','DELETE',0),(195,'portfolio','READ_GUARANTOR','GUARANTOR','READ',0),(196,'portfolio','CREATE_GUARANTOR','GUARANTOR','CREATE',0),(197,'portfolio','CREATE_GUARANTOR_CHECKER','GUARANTOR','CREATE',0),(198,'portfolio','UPDATE_GUARANTOR','GUARANTOR','UPDATE',0),(199,'portfolio','UPDATE_GUARANTOR_CHECKER','GUARANTOR','UPDATE',0),(200,'portfolio','DELETE_GUARANTOR','GUARANTOR','DELETE',0),(201,'portfolio','DELETE_GUARANTOR_CHECKER','GUARANTOR','DELETE',0),(202,'transaction_loan','APPROVE_LOAN','LOAN','APPROVE',0),(203,'transaction_loan','APPROVEINPAST_LOAN','LOAN','APPROVEINPAST',0),(204,'transaction_loan','RE
 JECT_LOAN','LOAN','REJECT',0),(205,'transaction_loan','REJECTINPAST_LOAN','LOAN','REJECTINPAST',0),(206,'transaction_loan','WITHDRAW_LOAN','LOAN','WITHDRAW',0),(207,'transaction_loan','WITHDRAWINPAST_LOAN','LOAN','WITHDRAWINPAST',0),(208,'transaction_loan','APPROVALUNDO_LOAN','LOAN','APPROVALUNDO',0),(209,'transaction_loan','DISBURSE_LOAN','LOAN','DISBURSE',0),(210,'transaction_loan','DISBURSEINPAST_LOAN','LOAN','DISBURSEINPAST',0),(211,'transaction_loan','DISBURSALUNDO_LOAN','LOAN','DISBURSALUNDO',0),(212,'transaction_loan','REPAYMENT_LOAN','LOAN','REPAYMENT',0),(213,'transaction_loan','REPAYMENTINPAST_LOAN','LOAN','REPAYMENTINPAST',0),(214,'transaction_loan','ADJUST_LOAN','LOAN','ADJUST',0),(215,'transaction_loan','WAIVEINTERESTPORTION_LOAN','LOAN','WAIVEINTERESTPORTION',0),(216,'transaction_loan','WRITEOFF_LOAN','LOAN','WRITEOFF',0),(217,'transaction_loan','CLOSE_LOAN','LOAN','CLOSE',0),(218,'transaction_loan','CLOSEASRESCHEDULED_LOAN','LOAN','CLOSEASRESCHEDULED',0),(219,'transac
 tion_loan','UPDATELOANOFFICER_LOAN','LOAN','UPDATELOANOFFICER',0),(220,'transaction_loan','UPDATELOANOFFICER_LOAN_CHECKER','LOAN','UPDATELOANOFFICER',0),(221,'transaction_loan','REMOVELOANOFFICER_LOAN','LOAN','REMOVELOANOFFICER',0),(222,'transaction_loan','REMOVELOANOFFICER_LOAN_CHECKER','LOAN','REMOVELOANOFFICER',0),(223,'transaction_loan','BULKREASSIGN_LOAN','LOAN','BULKREASSIGN',0),(224,'transaction_loan','BULKREASSIGN_LOAN_CHECKER','LOAN','BULKREASSIGN',0),(225,'transaction_loan','APPROVE_LOAN_CHECKER','LOAN','APPROVE',0),(226,'transaction_loan','APPROVEINPAST_LOAN_CHECKER','LOAN','APPROVEINPAST',0),(227,'transaction_loan','REJECT_LOAN_CHECKER','LOAN','REJECT',0),(228,'transaction_loan','REJECTINPAST_LOAN_CHECKER','LOAN','REJECTINPAST',0),(229,'transaction_loan','WITHDRAW_LOAN_CHECKER','LOAN','WITHDRAW',0),(230,'transaction_loan','WITHDRAWINPAST_LOAN_CHECKER','LOAN','WITHDRAWINPAST',0),(231,'transaction_loan','APPROVALUNDO_LOAN_CHECKER','LOAN','APPROVALUNDO',0),(232,'transaction
 _loan','DISBURSE_LOAN_CHECKER','LOAN','DISBURSE',0),(233,'transaction_loan','DISBURSEINPAST_LOAN_CHECKER','LOAN','DISBURSEINPAST',0),(234,'transaction_loan','DISBURSALUNDO_LOAN_CHECKER','LOAN','DISBURSALUNDO',0),(235,'transaction_loan','REPAYMENT_LOAN_CHECKER','LOAN','REPAYMENT',0),(236,'transaction_loan','REPAYMENTINPAST_LOAN_CHECKER','LOAN','REPAYMENTINPAST',0),(237,'transaction_loan','ADJUST_LOAN_CHECKER','LOAN','ADJUST',0),(238,'transaction_loan','WAIVEINTERESTPORTION_LOAN_CHECKER','LOAN','WAIVEINTERESTPORTION',0),(239,'transaction_loan','WRITEOFF_LOAN_CHECKER','LOAN','WRITEOFF',0),(240,'transaction_loan','CLOSE_LOAN_CHECKER','LOAN','CLOSE',0),(241,'transaction_loan','CLOSEASRESCHEDULED_LOAN_CHECKER','LOAN','CLOSEASRESCHEDULED',0),(242,'transaction_savings','DEPOSIT_SAVINGSACCOUNT','SAVINGSACCOUNT','DEPOSIT',0),(243,'transaction_savings','DEPOSIT_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','DEPOSIT',0),(244,'transaction_savings','WITHDRAWAL_SAVINGSACCOUNT','SAVINGSACCOUNT','WITHDRA
 WAL',0),(245,'transaction_savings','WITHDRAWAL_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','WITHDRAWAL',0),(246,'transaction_savings','ACTIVATE_SAVINGSACCOUNT','SAVINGSACCOUNT','ACTIVATE',0),(247,'transaction_savings','ACTIVATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','ACTIVATE',0),(248,'accounting','CREATE_GLACCOUNT','GLACCOUNT','CREATE',0),(249,'accounting','UPDATE_GLACCOUNT','GLACCOUNT','UPDATE',0),(250,'accounting','DELETE_GLACCOUNT','GLACCOUNT','DELETE',0),(251,'accounting','CREATE_GLCLOSURE','GLCLOSURE','CREATE',0),(252,'accounting','UPDATE_GLCLOSURE','GLCLOSURE','UPDATE',0),(253,'accounting','DELETE_GLCLOSURE','GLCLOSURE','DELETE',0),(254,'accounting','CREATE_JOURNALENTRY','JOURNALENTRY','CREATE',0),(255,'accounting','REVERSE_JOURNALENTRY','JOURNALENTRY','REVERSE',0),(256,'report','READ_Active Loans - Details','Active Loans - Details','READ',0),(257,'report','READ_Active Loans - Summary','Active Loans - Summary','READ',0),(258,'report','READ_Active Loans by Disbursal Period','Ac
 tive Loans by Disbursal Period','READ',0),(259,'report','READ_Active Loans in last installment','Active Loans in last installment','READ',0),(260,'report','READ_Active Loans in last installment Summary','Active Loans in last installment Summary','READ',0),(261,'report','READ_Active Loans Passed Final Maturity','Active Loans Passed Final Maturity','READ',0),(262,'report','READ_Active Loans Passed Final Maturity Summary','Active Loans Passed Final Maturity Summary','READ',0),(263,'report','READ_Aging Detail','Aging Detail','READ',0),(264,'report','READ_Aging Summary (Arrears in Months)','Aging Summary (Arrears in Months)','READ',0),(265,'report','READ_Aging Summary (Arrears in Weeks)','Aging Summary (Arrears in Weeks)','READ',0),(266,'report','READ_Balance Sheet','Balance Sheet','READ',0),(267,'report','READ_Branch Expected Cash Flow','Branch Expected Cash Flow','READ',0),(268,'report','READ_Client Listing','Client Listing','READ',0),(269,'report','READ_Client Loans Listing','Client L
 oans Listing','READ',0),(270,'report','READ_Expected Payments By Date - Basic','Expected Payments By Date - Basic','READ',0),(271,'report','READ_Expected Payments By Date - Formatted','Expected Payments By Date - Formatted','READ',0),(272,'report','READ_Funds Disbursed Between Dates Summary','Funds Disbursed Between Dates Summary','READ',0),(273,'report','READ_Funds Disbursed Between Dates Summary by Office','Funds Disbursed Between Dates Summary by Office','READ',0),(274,'report','READ_Income Statement','Income Statement','READ',0),(275,'report','READ_Loan Account Schedule','Loan Account Schedule','READ',0),(276,'report','READ_Loans Awaiting Disbursal','Loans Awaiting Disbursal','READ',0),(277,'report','READ_Loans Awaiting Disbursal Summary','Loans Awaiting Disbursal Summary','READ',0),(278,'report','READ_Loans Awaiting Disbursal Summary by Month','Loans Awaiting Disbursal Summary by Month','READ',0),(279,'report','READ_Loans Pending Approval','Loans Pending Approval','READ',0),(28
 0,'report','READ_Obligation Met Loans Details','Obligation Met Loans Details','READ',0),(281,'report','READ_Obligation Met Loans Summary','Obligation Met Loans Summary','READ',0),(282,'report','READ_Portfolio at Risk','Portfolio at Risk','READ',0),(283,'report','READ_Portfolio at Risk by Branch','Portfolio at Risk by Branch','READ',0),(284,'report','READ_Rescheduled Loans','Rescheduled Loans','READ',0),(285,'report','READ_Trial Balance','Trial Balance','READ',0),(286,'report','READ_Written-Off Loans','Written-Off Loans','READ',0),(287,'datatable','CREATE_extra_client_details','extra_client_details','CREATE',1),(288,'datatable','CREATE_extra_family_details','extra_family_details','CREATE',1),(289,'datatable','CREATE_extra_loan_details','extra_loan_details','CREATE',1),(290,'datatable','READ_extra_client_details','extra_client_details','READ',1),(291,'datatable','READ_extra_family_details','extra_family_details','READ',1),(292,'datatable','READ_extra_loan_details','extra_loan_details'
 ,'READ',1),(293,'datatable','UPDATE_extra_client_details','extra_client_details','UPDATE',1),(294,'datatable','UPDATE_extra_family_details','extra_family_details','UPDATE',1),(295,'datatable','UPDATE_extra_loan_details','extra_loan_details','UPDATE',1),(296,'datatable','DELETE_extra_client_details','extra_client_details','DELETE',1),(297,'datatable','DELETE_extra_family_details','extra_family_details','DELETE',1),(298,'datatable','DELETE_extra_loan_details','extra_loan_details','DELETE',1);
-/*!40000 ALTER TABLE `m_permission` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_portfolio_command_source`
---
-
-DROP TABLE IF EXISTS `m_portfolio_command_source`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_portfolio_command_source` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `action_name` varchar(50) NOT NULL,
-  `entity_name` varchar(50) NOT NULL,
-  `office_id` bigint(20) DEFAULT NULL,
-  `group_id` big

<TRUNCATED>


[44/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.css
----------------------------------------------------------------------
diff --git a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.css b/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.css
deleted file mode 100644
index bbda4ee..0000000
--- a/docs/system-architecture/css/bootstrap-3.0.0/bootstrap.css
+++ /dev/null
@@ -1,6805 +0,0 @@
-/*!
- * Bootstrap v3.0.0
- *
- * Copyright 2013 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world by @mdo and @fat.
- */
-
-/*! normalize.css v2.1.0 | MIT License | git.io/normalize */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
-  display: block;
-}
-
-audio,
-canvas,
-video {
-  display: inline-block;
-}
-
-audio:not([controls]) {
-  display: none;
-  height: 0;
-}
-
-[hidden] {
-  display: none;
-}
-
-html {
-  font-family: sans-serif;
-  -webkit-text-size-adjust: 100%;
-      -ms-text-size-adjust: 100%;
-}
-
-body {
-  margin: 0;
-}
-
-a:focus {
-  outline: thin dotted;
-}
-
-a:active,
-a:hover {
-  outline: 0;
-}
-
-h1 {
-  margin: 0.67em 0;
-  font-size: 2em;
-}
-
-abbr[title] {
-  border-bottom: 1px dotted;
-}
-
-b,
-strong {
-  font-weight: bold;
-}
-
-dfn {
-  font-style: italic;
-}
-
-hr {
-  height: 0;
-  -moz-box-sizing: content-box;
-       box-sizing: content-box;
-}
-
-mark {
-  color: #000;
-  background: #ff0;
-}
-
-code,
-kbd,
-pre,
-samp {
-  font-family: monospace, serif;
-  font-size: 1em;
-}
-
-pre {
-  white-space: pre-wrap;
-}
-
-q {
-  quotes: "\201C" "\201D" "\2018" "\2019";
-}
-
-small {
-  font-size: 80%;
-}
-
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-
-sup {
-  top: -0.5em;
-}
-
-sub {
-  bottom: -0.25em;
-}
-
-img {
-  border: 0;
-}
-
-svg:not(:root) {
-  overflow: hidden;
-}
-
-figure {
-  margin: 0;
-}
-
-fieldset {
-  padding: 0.35em 0.625em 0.75em;
-  margin: 0 2px;
-  border: 1px solid #c0c0c0;
-}
-
-legend {
-  padding: 0;
-  border: 0;
-}
-
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-family: inherit;
-  font-size: 100%;
-}
-
-button,
-input {
-  line-height: normal;
-}
-
-button,
-select {
-  text-transform: none;
-}
-
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-
-button[disabled],
-html input[disabled] {
-  cursor: default;
-}
-
-input[type="checkbox"],
-input[type="radio"] {
-  padding: 0;
-  box-sizing: border-box;
-}
-
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-@media print {
-  * {
-    color: #000 !important;
-    text-shadow: none !important;
-    background: transparent !important;
-    box-shadow: none !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: 2cm .5cm;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-  .navbar {
-    display: none;
-  }
-  .table td,
-  .table th {
-    background-color: #fff !important;
-  }
-  .btn > .caret,
-  .dropup > .btn > .caret {
-    border-top-color: #000 !important;
-  }
-  .label {
-    border: 1px solid #000;
-  }
-  .table {
-    border-collapse: collapse !important;
-  }
-  .table-bordered th,
-  .table-bordered td {
-    border: 1px solid #ddd !important;
-  }
-}
-
-*,
-*:before,
-*:after {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-html {
-  font-size: 62.5%;
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-
-body {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 14px;
-  line-height: 1.428571429;
-  color: #333333;
-  background-color: #ffffff;
-}
-
-input,
-button,
-select,
-textarea {
-  font-family: inherit;
-  font-size: inherit;
-  line-height: inherit;
-}
-
-button,
-input,
-select[multiple],
-textarea {
-  background-image: none;
-}
-
-a {
-  color: #428bca;
-  text-decoration: none;
-}
-
-a:hover,
-a:focus {
-  color: #2a6496;
-  text-decoration: underline;
-}
-
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-img {
-  vertical-align: middle;
-}
-
-.img-responsive {
-  display: block;
-  height: auto;
-  max-width: 100%;
-}
-
-.img-rounded {
-  border-radius: 6px;
-}
-
-.img-thumbnail {
-  display: inline-block;
-  height: auto;
-  max-width: 100%;
-  padding: 4px;
-  line-height: 1.428571429;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  border-radius: 4px;
-  -webkit-transition: all 0.2s ease-in-out;
-          transition: all 0.2s ease-in-out;
-}
-
-.img-circle {
-  border-radius: 50%;
-}
-
-hr {
-  margin-top: 20px;
-  margin-bottom: 20px;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-}
-
-.sr-only {
-  position: absolute;
-  width: 1px;
-  height: 1px;
-  padding: 0;
-  margin: -1px;
-  overflow: hidden;
-  clip: rect(0 0 0 0);
-  border: 0;
-}
-
-p {
-  margin: 0 0 10px;
-}
-
-.lead {
-  margin-bottom: 20px;
-  font-size: 16.099999999999998px;
-  font-weight: 200;
-  line-height: 1.4;
-}
-
-@media (min-width: 768px) {
-  .lead {
-    font-size: 21px;
-  }
-}
-
-small {
-  font-size: 85%;
-}
-
-cite {
-  font-style: normal;
-}
-
-.text-muted {
-  color: #999999;
-}
-
-.text-primary {
-  color: #428bca;
-}
-
-.text-warning {
-  color: #c09853;
-}
-
-.text-danger {
-  color: #b94a48;
-}
-
-.text-success {
-  color: #468847;
-}
-
-.text-info {
-  color: #3a87ad;
-}
-
-.text-left {
-  text-align: left;
-}
-
-.text-right {
-  text-align: right;
-}
-
-.text-center {
-  text-align: center;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-weight: 500;
-  line-height: 1.1;
-}
-
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small,
-.h1 small,
-.h2 small,
-.h3 small,
-.h4 small,
-.h5 small,
-.h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #999999;
-}
-
-h1,
-h2,
-h3 {
-  margin-top: 20px;
-  margin-bottom: 10px;
-}
-
-h4,
-h5,
-h6 {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-
-h1,
-.h1 {
-  font-size: 36px;
-}
-
-h2,
-.h2 {
-  font-size: 30px;
-}
-
-h3,
-.h3 {
-  font-size: 24px;
-}
-
-h4,
-.h4 {
-  font-size: 18px;
-}
-
-h5,
-.h5 {
-  font-size: 14px;
-}
-
-h6,
-.h6 {
-  font-size: 12px;
-}
-
-h1 small,
-.h1 small {
-  font-size: 24px;
-}
-
-h2 small,
-.h2 small {
-  font-size: 18px;
-}
-
-h3 small,
-.h3 small,
-h4 small,
-.h4 small {
-  font-size: 14px;
-}
-
-.page-header {
-  padding-bottom: 9px;
-  margin: 40px 0 20px;
-  border-bottom: 1px solid #eeeeee;
-}
-
-ul,
-ol {
-  margin-top: 0;
-  margin-bottom: 10px;
-}
-
-ul ul,
-ol ul,
-ul ol,
-ol ol {
-  margin-bottom: 0;
-}
-
-.list-unstyled {
-  padding-left: 0;
-  list-style: none;
-}
-
-.list-inline {
-  padding-left: 0;
-  list-style: none;
-}
-
-.list-inline > li {
-  display: inline-block;
-  padding-right: 5px;
-  padding-left: 5px;
-}
-
-dl {
-  margin-bottom: 20px;
-}
-
-dt,
-dd {
-  line-height: 1.428571429;
-}
-
-dt {
-  font-weight: bold;
-}
-
-dd {
-  margin-left: 0;
-}
-
-@media (min-width: 768px) {
-  .dl-horizontal dt {
-    float: left;
-    width: 160px;
-    overflow: hidden;
-    clear: left;
-    text-align: right;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-  }
-  .dl-horizontal dd {
-    margin-left: 180px;
-  }
-  .dl-horizontal dd:before,
-  .dl-horizontal dd:after {
-    display: table;
-    content: " ";
-  }
-  .dl-horizontal dd:after {
-    clear: both;
-  }
-  .dl-horizontal dd:before,
-  .dl-horizontal dd:after {
-    display: table;
-    content: " ";
-  }
-  .dl-horizontal dd:after {
-    clear: both;
-  }
-}
-
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #999999;
-}
-
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-
-blockquote {
-  padding: 10px 20px;
-  margin: 0 0 20px;
-  border-left: 5px solid #eeeeee;
-}
-
-blockquote p {
-  font-size: 17.5px;
-  font-weight: 300;
-  line-height: 1.25;
-}
-
-blockquote p:last-child {
-  margin-bottom: 0;
-}
-
-blockquote small {
-  display: block;
-  line-height: 1.428571429;
-  color: #999999;
-}
-
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-
-blockquote.pull-right {
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-
-blockquote.pull-right small:before {
-  content: '';
-}
-
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-}
-
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-
-address {
-  display: block;
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 1.428571429;
-}
-
-code,
-pre {
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-}
-
-code {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #c7254e;
-  white-space: nowrap;
-  background-color: #f9f2f4;
-  border-radius: 4px;
-}
-
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 1.428571429;
-  color: #333333;
-  word-break: break-all;
-  word-wrap: break-word;
-  background-color: #f5f5f5;
-  border: 1px solid #cccccc;
-  border-radius: 4px;
-}
-
-pre.prettyprint {
-  margin-bottom: 20px;
-}
-
-pre code {
-  padding: 0;
-  font-size: inherit;
-  color: inherit;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border: 0;
-}
-
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-
-.container {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-right: auto;
-  margin-left: auto;
-}
-
-.container:before,
-.container:after {
-  display: table;
-  content: " ";
-}
-
-.container:after {
-  clear: both;
-}
-
-.container:before,
-.container:after {
-  display: table;
-  content: " ";
-}
-
-.container:after {
-  clear: both;
-}
-
-.row {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-
-.row:before,
-.row:after {
-  display: table;
-  content: " ";
-}
-
-.row:after {
-  clear: both;
-}
-
-.row:before,
-.row:after {
-  display: table;
-  content: " ";
-}
-
-.row:after {
-  clear: both;
-}
-
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12,
-.col-sm-1,
-.col-sm-2,
-.col-sm-3,
-.col-sm-4,
-.col-sm-5,
-.col-sm-6,
-.col-sm-7,
-.col-sm-8,
-.col-sm-9,
-.col-sm-10,
-.col-sm-11,
-.col-sm-12,
-.col-md-1,
-.col-md-2,
-.col-md-3,
-.col-md-4,
-.col-md-5,
-.col-md-6,
-.col-md-7,
-.col-md-8,
-.col-md-9,
-.col-md-10,
-.col-md-11,
-.col-md-12,
-.col-lg-1,
-.col-lg-2,
-.col-lg-3,
-.col-lg-4,
-.col-lg-5,
-.col-lg-6,
-.col-lg-7,
-.col-lg-8,
-.col-lg-9,
-.col-lg-10,
-.col-lg-11,
-.col-lg-12 {
-  position: relative;
-  min-height: 1px;
-  padding-right: 15px;
-  padding-left: 15px;
-}
-
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11 {
-  float: left;
-}
-
-.col-xs-1 {
-  width: 8.333333333333332%;
-}
-
-.col-xs-2 {
-  width: 16.666666666666664%;
-}
-
-.col-xs-3 {
-  width: 25%;
-}
-
-.col-xs-4 {
-  width: 33.33333333333333%;
-}
-
-.col-xs-5 {
-  width: 41.66666666666667%;
-}
-
-.col-xs-6 {
-  width: 50%;
-}
-
-.col-xs-7 {
-  width: 58.333333333333336%;
-}
-
-.col-xs-8 {
-  width: 66.66666666666666%;
-}
-
-.col-xs-9 {
-  width: 75%;
-}
-
-.col-xs-10 {
-  width: 83.33333333333334%;
-}
-
-.col-xs-11 {
-  width: 91.66666666666666%;
-}
-
-.col-xs-12 {
-  width: 100%;
-}
-
-@media (min-width: 768px) {
-  .container {
-    max-width: 750px;
-  }
-  .col-sm-1,
-  .col-sm-2,
-  .col-sm-3,
-  .col-sm-4,
-  .col-sm-5,
-  .col-sm-6,
-  .col-sm-7,
-  .col-sm-8,
-  .col-sm-9,
-  .col-sm-10,
-  .col-sm-11 {
-    float: left;
-  }
-  .col-sm-1 {
-    width: 8.333333333333332%;
-  }
-  .col-sm-2 {
-    width: 16.666666666666664%;
-  }
-  .col-sm-3 {
-    width: 25%;
-  }
-  .col-sm-4 {
-    width: 33.33333333333333%;
-  }
-  .col-sm-5 {
-    width: 41.66666666666667%;
-  }
-  .col-sm-6 {
-    width: 50%;
-  }
-  .col-sm-7 {
-    width: 58.333333333333336%;
-  }
-  .col-sm-8 {
-    width: 66.66666666666666%;
-  }
-  .col-sm-9 {
-    width: 75%;
-  }
-  .col-sm-10 {
-    width: 83.33333333333334%;
-  }
-  .col-sm-11 {
-    width: 91.66666666666666%;
-  }
-  .col-sm-12 {
-    width: 100%;
-  }
-  .col-sm-push-1 {
-    left: 8.333333333333332%;
-  }
-  .col-sm-push-2 {
-    left: 16.666666666666664%;
-  }
-  .col-sm-push-3 {
-    left: 25%;
-  }
-  .col-sm-push-4 {
-    left: 33.33333333333333%;
-  }
-  .col-sm-push-5 {
-    left: 41.66666666666667%;
-  }
-  .col-sm-push-6 {
-    left: 50%;
-  }
-  .col-sm-push-7 {
-    left: 58.333333333333336%;
-  }
-  .col-sm-push-8 {
-    left: 66.66666666666666%;
-  }
-  .col-sm-push-9 {
-    left: 75%;
-  }
-  .col-sm-push-10 {
-    left: 83.33333333333334%;
-  }
-  .col-sm-push-11 {
-    left: 91.66666666666666%;
-  }
-  .col-sm-pull-1 {
-    right: 8.333333333333332%;
-  }
-  .col-sm-pull-2 {
-    right: 16.666666666666664%;
-  }
-  .col-sm-pull-3 {
-    right: 25%;
-  }
-  .col-sm-pull-4 {
-    right: 33.33333333333333%;
-  }
-  .col-sm-pull-5 {
-    right: 41.66666666666667%;
-  }
-  .col-sm-pull-6 {
-    right: 50%;
-  }
-  .col-sm-pull-7 {
-    right: 58.333333333333336%;
-  }
-  .col-sm-pull-8 {
-    right: 66.66666666666666%;
-  }
-  .col-sm-pull-9 {
-    right: 75%;
-  }
-  .col-sm-pull-10 {
-    right: 83.33333333333334%;
-  }
-  .col-sm-pull-11 {
-    right: 91.66666666666666%;
-  }
-  .col-sm-offset-1 {
-    margin-left: 8.333333333333332%;
-  }
-  .col-sm-offset-2 {
-    margin-left: 16.666666666666664%;
-  }
-  .col-sm-offset-3 {
-    margin-left: 25%;
-  }
-  .col-sm-offset-4 {
-    margin-left: 33.33333333333333%;
-  }
-  .col-sm-offset-5 {
-    margin-left: 41.66666666666667%;
-  }
-  .col-sm-offset-6 {
-    margin-left: 50%;
-  }
-  .col-sm-offset-7 {
-    margin-left: 58.333333333333336%;
-  }
-  .col-sm-offset-8 {
-    margin-left: 66.66666666666666%;
-  }
-  .col-sm-offset-9 {
-    margin-left: 75%;
-  }
-  .col-sm-offset-10 {
-    margin-left: 83.33333333333334%;
-  }
-  .col-sm-offset-11 {
-    margin-left: 91.66666666666666%;
-  }
-}
-
-@media (min-width: 992px) {
-  .container {
-    max-width: 970px;
-  }
-  .col-md-1,
-  .col-md-2,
-  .col-md-3,
-  .col-md-4,
-  .col-md-5,
-  .col-md-6,
-  .col-md-7,
-  .col-md-8,
-  .col-md-9,
-  .col-md-10,
-  .col-md-11 {
-    float: left;
-  }
-  .col-md-1 {
-    width: 8.333333333333332%;
-  }
-  .col-md-2 {
-    width: 16.666666666666664%;
-  }
-  .col-md-3 {
-    width: 25%;
-  }
-  .col-md-4 {
-    width: 33.33333333333333%;
-  }
-  .col-md-5 {
-    width: 41.66666666666667%;
-  }
-  .col-md-6 {
-    width: 50%;
-  }
-  .col-md-7 {
-    width: 58.333333333333336%;
-  }
-  .col-md-8 {
-    width: 66.66666666666666%;
-  }
-  .col-md-9 {
-    width: 75%;
-  }
-  .col-md-10 {
-    width: 83.33333333333334%;
-  }
-  .col-md-11 {
-    width: 91.66666666666666%;
-  }
-  .col-md-12 {
-    width: 100%;
-  }
-  .col-md-push-0 {
-    left: auto;
-  }
-  .col-md-push-1 {
-    left: 8.333333333333332%;
-  }
-  .col-md-push-2 {
-    left: 16.666666666666664%;
-  }
-  .col-md-push-3 {
-    left: 25%;
-  }
-  .col-md-push-4 {
-    left: 33.33333333333333%;
-  }
-  .col-md-push-5 {
-    left: 41.66666666666667%;
-  }
-  .col-md-push-6 {
-    left: 50%;
-  }
-  .col-md-push-7 {
-    left: 58.333333333333336%;
-  }
-  .col-md-push-8 {
-    left: 66.66666666666666%;
-  }
-  .col-md-push-9 {
-    left: 75%;
-  }
-  .col-md-push-10 {
-    left: 83.33333333333334%;
-  }
-  .col-md-push-11 {
-    left: 91.66666666666666%;
-  }
-  .col-md-pull-0 {
-    right: auto;
-  }
-  .col-md-pull-1 {
-    right: 8.333333333333332%;
-  }
-  .col-md-pull-2 {
-    right: 16.666666666666664%;
-  }
-  .col-md-pull-3 {
-    right: 25%;
-  }
-  .col-md-pull-4 {
-    right: 33.33333333333333%;
-  }
-  .col-md-pull-5 {
-    right: 41.66666666666667%;
-  }
-  .col-md-pull-6 {
-    right: 50%;
-  }
-  .col-md-pull-7 {
-    right: 58.333333333333336%;
-  }
-  .col-md-pull-8 {
-    right: 66.66666666666666%;
-  }
-  .col-md-pull-9 {
-    right: 75%;
-  }
-  .col-md-pull-10 {
-    right: 83.33333333333334%;
-  }
-  .col-md-pull-11 {
-    right: 91.66666666666666%;
-  }
-  .col-md-offset-0 {
-    margin-left: 0;
-  }
-  .col-md-offset-1 {
-    margin-left: 8.333333333333332%;
-  }
-  .col-md-offset-2 {
-    margin-left: 16.666666666666664%;
-  }
-  .col-md-offset-3 {
-    margin-left: 25%;
-  }
-  .col-md-offset-4 {
-    margin-left: 33.33333333333333%;
-  }
-  .col-md-offset-5 {
-    margin-left: 41.66666666666667%;
-  }
-  .col-md-offset-6 {
-    margin-left: 50%;
-  }
-  .col-md-offset-7 {
-    margin-left: 58.333333333333336%;
-  }
-  .col-md-offset-8 {
-    margin-left: 66.66666666666666%;
-  }
-  .col-md-offset-9 {
-    margin-left: 75%;
-  }
-  .col-md-offset-10 {
-    margin-left: 83.33333333333334%;
-  }
-  .col-md-offset-11 {
-    margin-left: 91.66666666666666%;
-  }
-}
-
-@media (min-width: 1200px) {
-  .container {
-    max-width: 1170px;
-  }
-  .col-lg-1,
-  .col-lg-2,
-  .col-lg-3,
-  .col-lg-4,
-  .col-lg-5,
-  .col-lg-6,
-  .col-lg-7,
-  .col-lg-8,
-  .col-lg-9,
-  .col-lg-10,
-  .col-lg-11 {
-    float: left;
-  }
-  .col-lg-1 {
-    width: 8.333333333333332%;
-  }
-  .col-lg-2 {
-    width: 16.666666666666664%;
-  }
-  .col-lg-3 {
-    width: 25%;
-  }
-  .col-lg-4 {
-    width: 33.33333333333333%;
-  }
-  .col-lg-5 {
-    width: 41.66666666666667%;
-  }
-  .col-lg-6 {
-    width: 50%;
-  }
-  .col-lg-7 {
-    width: 58.333333333333336%;
-  }
-  .col-lg-8 {
-    width: 66.66666666666666%;
-  }
-  .col-lg-9 {
-    width: 75%;
-  }
-  .col-lg-10 {
-    width: 83.33333333333334%;
-  }
-  .col-lg-11 {
-    width: 91.66666666666666%;
-  }
-  .col-lg-12 {
-    width: 100%;
-  }
-  .col-lg-push-0 {
-    left: auto;
-  }
-  .col-lg-push-1 {
-    left: 8.333333333333332%;
-  }
-  .col-lg-push-2 {
-    left: 16.666666666666664%;
-  }
-  .col-lg-push-3 {
-    left: 25%;
-  }
-  .col-lg-push-4 {
-    left: 33.33333333333333%;
-  }
-  .col-lg-push-5 {
-    left: 41.66666666666667%;
-  }
-  .col-lg-push-6 {
-    left: 50%;
-  }
-  .col-lg-push-7 {
-    left: 58.333333333333336%;
-  }
-  .col-lg-push-8 {
-    left: 66.66666666666666%;
-  }
-  .col-lg-push-9 {
-    left: 75%;
-  }
-  .col-lg-push-10 {
-    left: 83.33333333333334%;
-  }
-  .col-lg-push-11 {
-    left: 91.66666666666666%;
-  }
-  .col-lg-pull-0 {
-    right: auto;
-  }
-  .col-lg-pull-1 {
-    right: 8.333333333333332%;
-  }
-  .col-lg-pull-2 {
-    right: 16.666666666666664%;
-  }
-  .col-lg-pull-3 {
-    right: 25%;
-  }
-  .col-lg-pull-4 {
-    right: 33.33333333333333%;
-  }
-  .col-lg-pull-5 {
-    right: 41.66666666666667%;
-  }
-  .col-lg-pull-6 {
-    right: 50%;
-  }
-  .col-lg-pull-7 {
-    right: 58.333333333333336%;
-  }
-  .col-lg-pull-8 {
-    right: 66.66666666666666%;
-  }
-  .col-lg-pull-9 {
-    right: 75%;
-  }
-  .col-lg-pull-10 {
-    right: 83.33333333333334%;
-  }
-  .col-lg-pull-11 {
-    right: 91.66666666666666%;
-  }
-  .col-lg-offset-0 {
-    margin-left: 0;
-  }
-  .col-lg-offset-1 {
-    margin-left: 8.333333333333332%;
-  }
-  .col-lg-offset-2 {
-    margin-left: 16.666666666666664%;
-  }
-  .col-lg-offset-3 {
-    margin-left: 25%;
-  }
-  .col-lg-offset-4 {
-    margin-left: 33.33333333333333%;
-  }
-  .col-lg-offset-5 {
-    margin-left: 41.66666666666667%;
-  }
-  .col-lg-offset-6 {
-    margin-left: 50%;
-  }
-  .col-lg-offset-7 {
-    margin-left: 58.333333333333336%;
-  }
-  .col-lg-offset-8 {
-    margin-left: 66.66666666666666%;
-  }
-  .col-lg-offset-9 {
-    margin-left: 75%;
-  }
-  .col-lg-offset-10 {
-    margin-left: 83.33333333333334%;
-  }
-  .col-lg-offset-11 {
-    margin-left: 91.66666666666666%;
-  }
-}
-
-table {
-  max-width: 100%;
-  background-color: transparent;
-}
-
-th {
-  text-align: left;
-}
-
-.table {
-  width: 100%;
-  margin-bottom: 20px;
-}
-
-.table thead > tr > th,
-.table tbody > tr > th,
-.table tfoot > tr > th,
-.table thead > tr > td,
-.table tbody > tr > td,
-.table tfoot > tr > td {
-  padding: 8px;
-  line-height: 1.428571429;
-  vertical-align: top;
-  border-top: 1px solid #dddddd;
-}
-
-.table thead > tr > th {
-  vertical-align: bottom;
-  border-bottom: 2px solid #dddddd;
-}
-
-.table caption + thead tr:first-child th,
-.table colgroup + thead tr:first-child th,
-.table thead:first-child tr:first-child th,
-.table caption + thead tr:first-child td,
-.table colgroup + thead tr:first-child td,
-.table thead:first-child tr:first-child td {
-  border-top: 0;
-}
-
-.table tbody + tbody {
-  border-top: 2px solid #dddddd;
-}
-
-.table .table {
-  background-color: #ffffff;
-}
-
-.table-condensed thead > tr > th,
-.table-condensed tbody > tr > th,
-.table-condensed tfoot > tr > th,
-.table-condensed thead > tr > td,
-.table-condensed tbody > tr > td,
-.table-condensed tfoot > tr > td {
-  padding: 5px;
-}
-
-.table-bordered {
-  border: 1px solid #dddddd;
-}
-
-.table-bordered > thead > tr > th,
-.table-bordered > tbody > tr > th,
-.table-bordered > tfoot > tr > th,
-.table-bordered > thead > tr > td,
-.table-bordered > tbody > tr > td,
-.table-bordered > tfoot > tr > td {
-  border: 1px solid #dddddd;
-}
-
-.table-bordered > thead > tr > th,
-.table-bordered > thead > tr > td {
-  border-bottom-width: 2px;
-}
-
-.table-striped > tbody > tr:nth-child(odd) > td,
-.table-striped > tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-}
-
-.table-hover > tbody > tr:hover > td,
-.table-hover > tbody > tr:hover > th {
-  background-color: #f5f5f5;
-}
-
-table col[class*="col-"] {
-  display: table-column;
-  float: none;
-}
-
-table td[class*="col-"],
-table th[class*="col-"] {
-  display: table-cell;
-  float: none;
-}
-
-.table > thead > tr > td.active,
-.table > tbody > tr > td.active,
-.table > tfoot > tr > td.active,
-.table > thead > tr > th.active,
-.table > tbody > tr > th.active,
-.table > tfoot > tr > th.active,
-.table > thead > tr.active > td,
-.table > tbody > tr.active > td,
-.table > tfoot > tr.active > td,
-.table > thead > tr.active > th,
-.table > tbody > tr.active > th,
-.table > tfoot > tr.active > th {
-  background-color: #f5f5f5;
-}
-
-.table > thead > tr > td.success,
-.table > tbody > tr > td.success,
-.table > tfoot > tr > td.success,
-.table > thead > tr > th.success,
-.table > tbody > tr > th.success,
-.table > tfoot > tr > th.success,
-.table > thead > tr.success > td,
-.table > tbody > tr.success > td,
-.table > tfoot > tr.success > td,
-.table > thead > tr.success > th,
-.table > tbody > tr.success > th,
-.table > tfoot > tr.success > th {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-}
-
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td {
-  background-color: #d0e9c6;
-  border-color: #c9e2b3;
-}
-
-.table > thead > tr > td.danger,
-.table > tbody > tr > td.danger,
-.table > tfoot > tr > td.danger,
-.table > thead > tr > th.danger,
-.table > tbody > tr > th.danger,
-.table > tfoot > tr > th.danger,
-.table > thead > tr.danger > td,
-.table > tbody > tr.danger > td,
-.table > tfoot > tr.danger > td,
-.table > thead > tr.danger > th,
-.table > tbody > tr.danger > th,
-.table > tfoot > tr.danger > th {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-}
-
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td {
-  background-color: #ebcccc;
-  border-color: #e6c1c7;
-}
-
-.table > thead > tr > td.warning,
-.table > tbody > tr > td.warning,
-.table > tfoot > tr > td.warning,
-.table > thead > tr > th.warning,
-.table > tbody > tr > th.warning,
-.table > tfoot > tr > th.warning,
-.table > thead > tr.warning > td,
-.table > tbody > tr.warning > td,
-.table > tfoot > tr.warning > td,
-.table > thead > tr.warning > th,
-.table > tbody > tr.warning > th,
-.table > tfoot > tr.warning > th {
-  background-color: #fcf8e3;
-  border-color: #fbeed5;
-}
-
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td {
-  background-color: #faf2cc;
-  border-color: #f8e5be;
-}
-
-@media (max-width: 768px) {
-  .table-responsive {
-    width: 100%;
-    margin-bottom: 15px;
-    overflow-x: scroll;
-    overflow-y: hidden;
-    border: 1px solid #dddddd;
-  }
-  .table-responsive > .table {
-    margin-bottom: 0;
-    background-color: #fff;
-  }
-  .table-responsive > .table > thead > tr > th,
-  .table-responsive > .table > tbody > tr > th,
-  .table-responsive > .table > tfoot > tr > th,
-  .table-responsive > .table > thead > tr > td,
-  .table-responsive > .table > tbody > tr > td,
-  .table-responsive > .table > tfoot > tr > td {
-    white-space: nowrap;
-  }
-  .table-responsive > .table-bordered {
-    border: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:first-child,
-  .table-responsive > .table-bordered > tbody > tr > th:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-  .table-responsive > .table-bordered > thead > tr > td:first-child,
-  .table-responsive > .table-bordered > tbody > tr > td:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
-    border-left: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:last-child,
-  .table-responsive > .table-bordered > tbody > tr > th:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-  .table-responsive > .table-bordered > thead > tr > td:last-child,
-  .table-responsive > .table-bordered > tbody > tr > td:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
-    border-right: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr:last-child > th,
-  .table-responsive > .table-bordered > tbody > tr:last-child > th,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
-  .table-responsive > .table-bordered > thead > tr:last-child > td,
-  .table-responsive > .table-bordered > tbody > tr:last-child > td,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
-    border-bottom: 0;
-  }
-}
-
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 21px;
-  line-height: inherit;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-
-label {
-  display: inline-block;
-  margin-bottom: 5px;
-  font-weight: bold;
-}
-
-input[type="search"] {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  /* IE8-9 */
-
-  line-height: normal;
-}
-
-input[type="file"] {
-  display: block;
-}
-
-select[multiple],
-select[size] {
-  height: auto;
-}
-
-select optgroup {
-  font-family: inherit;
-  font-size: inherit;
-  font-style: inherit;
-}
-
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-input[type="number"]::-webkit-outer-spin-button,
-input[type="number"]::-webkit-inner-spin-button {
-  height: auto;
-}
-
-.form-control:-moz-placeholder {
-  color: #999999;
-}
-
-.form-control::-moz-placeholder {
-  color: #999999;
-}
-
-.form-control:-ms-input-placeholder {
-  color: #999999;
-}
-
-.form-control::-webkit-input-placeholder {
-  color: #999999;
-}
-
-.form-control {
-  display: block;
-  width: 100%;
-  height: 34px;
-  padding: 6px 12px;
-  font-size: 14px;
-  line-height: 1.428571429;
-  color: #555555;
-  vertical-align: middle;
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
-          transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
-}
-
-.form-control:focus {
-  border-color: #66afe9;
-  outline: 0;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
-}
-
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-
-textarea.form-control {
-  height: auto;
-}
-
-.form-group {
-  margin-bottom: 15px;
-}
-
-.radio,
-.checkbox {
-  display: block;
-  min-height: 20px;
-  padding-left: 20px;
-  margin-top: 10px;
-  margin-bottom: 10px;
-  vertical-align: middle;
-}
-
-.radio label,
-.checkbox label {
-  display: inline;
-  margin-bottom: 0;
-  font-weight: normal;
-  cursor: pointer;
-}
-
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-
-.radio + .radio,
-.checkbox + .checkbox {
-  margin-top: -5px;
-}
-
-.radio-inline,
-.checkbox-inline {
-  display: inline-block;
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: normal;
-  vertical-align: middle;
-  cursor: pointer;
-}
-
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
-  margin-top: 0;
-  margin-left: 10px;
-}
-
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-.radio[disabled],
-.radio-inline[disabled],
-.checkbox[disabled],
-.checkbox-inline[disabled],
-fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"],
-fieldset[disabled] .radio,
-fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox,
-fieldset[disabled] .checkbox-inline {
-  cursor: not-allowed;
-}
-
-.input-sm {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-
-select.input-sm {
-  height: 30px;
-  line-height: 30px;
-}
-
-textarea.input-sm {
-  height: auto;
-}
-
-.input-lg {
-  height: 45px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-
-select.input-lg {
-  height: 45px;
-  line-height: 45px;
-}
-
-textarea.input-lg {
-  height: auto;
-}
-
-.has-warning .help-block,
-.has-warning .control-label {
-  color: #c09853;
-}
-
-.has-warning .form-control {
-  border-color: #c09853;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.has-warning .form-control:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-}
-
-.has-warning .input-group-addon {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-
-.has-error .help-block,
-.has-error .control-label {
-  color: #b94a48;
-}
-
-.has-error .form-control {
-  border-color: #b94a48;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.has-error .form-control:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-}
-
-.has-error .input-group-addon {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-
-.has-success .help-block,
-.has-success .control-label {
-  color: #468847;
-}
-
-.has-success .form-control {
-  border-color: #468847;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.has-success .form-control:focus {
-  border-color: #356635;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-}
-
-.has-success .input-group-addon {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-
-.form-control-static {
-  padding-top: 7px;
-  margin-bottom: 0;
-}
-
-.help-block {
-  display: block;
-  margin-top: 5px;
-  margin-bottom: 10px;
-  color: #737373;
-}
-
-@media (min-width: 768px) {
-  .form-inline .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .form-control {
-    display: inline-block;
-  }
-  .form-inline .radio,
-  .form-inline .checkbox {
-    display: inline-block;
-    padding-left: 0;
-    margin-top: 0;
-    margin-bottom: 0;
-  }
-  .form-inline .radio input[type="radio"],
-  .form-inline .checkbox input[type="checkbox"] {
-    float: none;
-    margin-left: 0;
-  }
-}
-
-.form-horizontal .control-label,
-.form-horizontal .radio,
-.form-horizontal .checkbox,
-.form-horizontal .radio-inline,
-.form-horizontal .checkbox-inline {
-  padding-top: 7px;
-  margin-top: 0;
-  margin-bottom: 0;
-}
-
-.form-horizontal .form-group {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-
-.form-horizontal .form-group:before,
-.form-horizontal .form-group:after {
-  display: table;
-  content: " ";
-}
-
-.form-horizontal .form-group:after {
-  clear: both;
-}
-
-.form-horizontal .form-group:before,
-.form-horizontal .form-group:after {
-  display: table;
-  content: " ";
-}
-
-.form-horizontal .form-group:after {
-  clear: both;
-}
-
-@media (min-width: 768px) {
-  .form-horizontal .control-label {
-    text-align: right;
-  }
-}
-
-.btn {
-  display: inline-block;
-  padding: 6px 12px;
-  margin-bottom: 0;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 1.428571429;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: middle;
-  cursor: pointer;
-  border: 1px solid transparent;
-  border-radius: 4px;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-       -o-user-select: none;
-          user-select: none;
-}
-
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-.btn:hover,
-.btn:focus {
-  color: #333333;
-  text-decoration: none;
-}
-
-.btn:active,
-.btn.active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-          box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn {
-  pointer-events: none;
-  cursor: not-allowed;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-
-.btn-default {
-  color: #333333;
-  background-color: #ffffff;
-  border-color: #cccccc;
-}
-
-.btn-default:hover,
-.btn-default:focus,
-.btn-default:active,
-.btn-default.active,
-.open .dropdown-toggle.btn-default {
-  color: #333333;
-  background-color: #ebebeb;
-  border-color: #adadad;
-}
-
-.btn-default:active,
-.btn-default.active,
-.open .dropdown-toggle.btn-default {
-  background-image: none;
-}
-
-.btn-default.disabled,
-.btn-default[disabled],
-fieldset[disabled] .btn-default,
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled:active,
-.btn-default[disabled]:active,
-fieldset[disabled] .btn-default:active,
-.btn-default.disabled.active,
-.btn-default[disabled].active,
-fieldset[disabled] .btn-default.active {
-  background-color: #ffffff;
-  border-color: #cccccc;
-}
-
-.btn-primary {
-  color: #ffffff;
-  background-color: #428bca;
-  border-color: #357ebd;
-}
-
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.open .dropdown-toggle.btn-primary {
-  color: #ffffff;
-  background-color: #3276b1;
-  border-color: #285e8e;
-}
-
-.btn-primary:active,
-.btn-primary.active,
-.open .dropdown-toggle.btn-primary {
-  background-image: none;
-}
-
-.btn-primary.disabled,
-.btn-primary[disabled],
-fieldset[disabled] .btn-primary,
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled:active,
-.btn-primary[disabled]:active,
-fieldset[disabled] .btn-primary:active,
-.btn-primary.disabled.active,
-.btn-primary[disabled].active,
-fieldset[disabled] .btn-primary.active {
-  background-color: #428bca;
-  border-color: #357ebd;
-}
-
-.btn-warning {
-  color: #ffffff;
-  background-color: #f0ad4e;
-  border-color: #eea236;
-}
-
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.open .dropdown-toggle.btn-warning {
-  color: #ffffff;
-  background-color: #ed9c28;
-  border-color: #d58512;
-}
-
-.btn-warning:active,
-.btn-warning.active,
-.open .dropdown-toggle.btn-warning {
-  background-image: none;
-}
-
-.btn-warning.disabled,
-.btn-warning[disabled],
-fieldset[disabled] .btn-warning,
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled:active,
-.btn-warning[disabled]:active,
-fieldset[disabled] .btn-warning:active,
-.btn-warning.disabled.active,
-.btn-warning[disabled].active,
-fieldset[disabled] .btn-warning.active {
-  background-color: #f0ad4e;
-  border-color: #eea236;
-}
-
-.btn-danger {
-  color: #ffffff;
-  background-color: #d9534f;
-  border-color: #d43f3a;
-}
-
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.open .dropdown-toggle.btn-danger {
-  color: #ffffff;
-  background-color: #d2322d;
-  border-color: #ac2925;
-}
-
-.btn-danger:active,
-.btn-danger.active,
-.open .dropdown-toggle.btn-danger {
-  background-image: none;
-}
-
-.btn-danger.disabled,
-.btn-danger[disabled],
-fieldset[disabled] .btn-danger,
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled:active,
-.btn-danger[disabled]:active,
-fieldset[disabled] .btn-danger:active,
-.btn-danger.disabled.active,
-.btn-danger[disabled].active,
-fieldset[disabled] .btn-danger.active {
-  background-color: #d9534f;
-  border-color: #d43f3a;
-}
-
-.btn-success {
-  color: #ffffff;
-  background-color: #5cb85c;
-  border-color: #4cae4c;
-}
-
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.open .dropdown-toggle.btn-success {
-  color: #ffffff;
-  background-color: #47a447;
-  border-color: #398439;
-}
-
-.btn-success:active,
-.btn-success.active,
-.open .dropdown-toggle.btn-success {
-  background-image: none;
-}
-
-.btn-success.disabled,
-.btn-success[disabled],
-fieldset[disabled] .btn-success,
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled:active,
-.btn-success[disabled]:active,
-fieldset[disabled] .btn-success:active,
-.btn-success.disabled.active,
-.btn-success[disabled].active,
-fieldset[disabled] .btn-success.active {
-  background-color: #5cb85c;
-  border-color: #4cae4c;
-}
-
-.btn-info {
-  color: #ffffff;
-  background-color: #5bc0de;
-  border-color: #46b8da;
-}
-
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.open .dropdown-toggle.btn-info {
-  color: #ffffff;
-  background-color: #39b3d7;
-  border-color: #269abc;
-}
-
-.btn-info:active,
-.btn-info.active,
-.open .dropdown-toggle.btn-info {
-  background-image: none;
-}
-
-.btn-info.disabled,
-.btn-info[disabled],
-fieldset[disabled] .btn-info,
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled:active,
-.btn-info[disabled]:active,
-fieldset[disabled] .btn-info:active,
-.btn-info.disabled.active,
-.btn-info[disabled].active,
-fieldset[disabled] .btn-info.active {
-  background-color: #5bc0de;
-  border-color: #46b8da;
-}
-
-.btn-link {
-  font-weight: normal;
-  color: #428bca;
-  cursor: pointer;
-  border-radius: 0;
-}
-
-.btn-link,
-.btn-link:active,
-.btn-link[disabled],
-fieldset[disabled] .btn-link {
-  background-color: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-
-.btn-link,
-.btn-link:hover,
-.btn-link:focus,
-.btn-link:active {
-  border-color: transparent;
-}
-
-.btn-link:hover,
-.btn-link:focus {
-  color: #2a6496;
-  text-decoration: underline;
-  background-color: transparent;
-}
-
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:hover,
-.btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:focus {
-  color: #999999;
-  text-decoration: none;
-}
-
-.btn-lg {
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-
-.btn-sm,
-.btn-xs {
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-
-.btn-xs {
-  padding: 1px 5px;
-}
-
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-right: 0;
-  padding-left: 0;
-}
-
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity 0.15s linear;
-          transition: opacity 0.15s linear;
-}
-
-.fade.in {
-  opacity: 1;
-}
-
-.collapse {
-  display: none;
-}
-
-.collapse.in {
-  display: block;
-}
-
-.collapsing {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition: height 0.35s ease;
-          transition: height 0.35s ease;
-}
-
-@font-face {
-  font-family: 'Glyphicons Halflings';
-  src: url('../fonts/glyphicons-halflings-regular.eot');
-  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');
-}
-
-.glyphicon {
-  position: relative;
-  top: 1px;
-  display: inline-block;
-  font-family: 'Glyphicons Halflings';
-  -webkit-font-smoothing: antialiased;
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1;
-}
-
-.glyphicon-asterisk:before {
-  content: "\2a";
-}
-
-.glyphicon-plus:before {
-  content: "\2b";
-}
-
-.glyphicon-euro:before {
-  content: "\20ac";
-}
-
-.glyphicon-minus:before {
-  content: "\2212";
-}
-
-.glyphicon-cloud:before {
-  content: "\2601";
-}
-
-.glyphicon-envelope:before {
-  content: "\2709";
-}
-
-.glyphicon-pencil:before {
-  content: "\270f";
-}
-
-.glyphicon-glass:before {
-  content: "\e001";
-}
-
-.glyphicon-music:before {
-  content: "\e002";
-}
-
-.glyphicon-search:before {
-  content: "\e003";
-}
-
-.glyphicon-heart:before {
-  content: "\e005";
-}
-
-.glyphicon-star:before {
-  content: "\e006";
-}
-
-.glyphicon-star-empty:before {
-  content: "\e007";
-}
-
-.glyphicon-user:before {
-  content: "\e008";
-}
-
-.glyphicon-film:before {
-  content: "\e009";
-}
-
-.glyphicon-th-large:before {
-  content: "\e010";
-}
-
-.glyphicon-th:before {
-  content: "\e011";
-}
-
-.glyphicon-th-list:before {
-  content: "\e012";
-}
-
-.glyphicon-ok:before {
-  content: "\e013";
-}
-
-.glyphicon-remove:before {
-  content: "\e014";
-}
-
-.glyphicon-zoom-in:before {
-  content: "\e015";
-}
-
-.glyphicon-zoom-out:before {
-  content: "\e016";
-}
-
-.glyphicon-off:before {
-  content: "\e017";
-}
-
-.glyphicon-signal:before {
-  content: "\e018";
-}
-
-.glyphicon-cog:before {
-  content: "\e019";
-}
-
-.glyphicon-trash:before {
-  content: "\e020";
-}
-
-.glyphicon-home:before {
-  content: "\e021";
-}
-
-.glyphicon-file:before {
-  content: "\e022";
-}
-
-.glyphicon-time:before {
-  content: "\e023";
-}
-
-.glyphicon-road:before {
-  content: "\e024";
-}
-
-.glyphicon-download-alt:before {
-  content: "\e025";
-}
-
-.glyphicon-download:before {
-  content: "\e026";
-}
-
-.glyphicon-upload:before {
-  content: "\e027";
-}
-
-.glyphicon-inbox:before {
-  content: "\e028";
-}
-
-.glyphicon-play-circle:before {
-  content: "\e029";
-}
-
-.glyphicon-repeat:before {
-  content: "\e030";
-}
-
-.glyphicon-refresh:before {
-  content: "\e031";
-}
-
-.glyphicon-list-alt:before {
-  content: "\e032";
-}
-
-.glyphicon-flag:before {
-  content: "\e034";
-}
-
-.glyphicon-headphones:before {
-  content: "\e035";
-}
-
-.glyphicon-volume-off:before {
-  content: "\e036";
-}
-
-.glyphicon-volume-down:before {
-  content: "\e037";
-}
-
-.glyphicon-volume-up:before {
-  content: "\e038";
-}
-
-.glyphicon-qrcode:before {
-  content: "\e039";
-}
-
-.glyphicon-barcode:before {
-  content: "\e040";
-}
-
-.glyphicon-tag:before {
-  content: "\e041";
-}
-
-.glyphicon-tags:before {
-  content: "\e042";
-}
-
-.glyphicon-book:before {
-  content: "\e043";
-}
-
-.glyphicon-print:before {
-  content: "\e045";
-}
-
-.glyphicon-font:before {
-  content: "\e047";
-}
-
-.glyphicon-bold:before {
-  content: "\e048";
-}
-
-.glyphicon-italic:before {
-  content: "\e049";
-}
-
-.glyphicon-text-height:before {
-  content: "\e050";
-}
-
-.glyphicon-text-width:before {
-  content: "\e051";
-}
-
-.glyphicon-align-left:before {
-  content: "\e052";
-}
-
-.glyphicon-align-center:before {
-  content: "\e053";
-}
-
-.glyphicon-align-right:before {
-  content: "\e054";
-}
-
-.glyphicon-align-justify:before {
-  content: "\e055";
-}
-
-.glyphicon-list:before {
-  content: "\e056";
-}
-
-.glyphicon-indent-left:before {
-  content: "\e057";
-}
-
-.glyphicon-indent-right:before {
-  content: "\e058";
-}
-
-.glyphicon-facetime-video:before {
-  content: "\e059";
-}
-
-.glyphicon-picture:before {
-  content: "\e060";
-}
-
-.glyphicon-map-marker:before {
-  content: "\e062";
-}
-
-.glyphicon-adjust:before {
-  content: "\e063";
-}
-
-.glyphicon-tint:before {
-  content: "\e064";
-}
-
-.glyphicon-edit:before {
-  content: "\e065";
-}
-
-.glyphicon-share:before {
-  content: "\e066";
-}
-
-.glyphicon-check:before {
-  content: "\e067";
-}
-
-.glyphicon-move:before {
-  content: "\e068";
-}
-
-.glyphicon-step-backward:before {
-  content: "\e069";
-}
-
-.glyphicon-fast-backward:before {
-  content: "\e070";
-}
-
-.glyphicon-backward:before {
-  content: "\e071";
-}
-
-.glyphicon-play:before {
-  content: "\e072";
-}
-
-.glyphicon-pause:before {
-  content: "\e073";
-}
-
-.glyphicon-stop:before {
-  content: "\e074";
-}
-
-.glyphicon-forward:before {
-  content: "\e075";
-}
-
-.glyphicon-fast-forward:before {
-  content: "\e076";
-}
-
-.glyphicon-step-forward:before {
-  content: "\e077";
-}
-
-.glyphicon-eject:before {
-  content: "\e078";
-}
-
-.glyphicon-chevron-left:before {
-  content: "\e079";
-}
-
-.glyphicon-chevron-right:before {
-  content: "\e080";
-}
-
-.glyphicon-plus-sign:before {
-  content: "\e081";
-}
-
-.glyphicon-minus-sign:before {
-  content: "\e082";
-}
-
-.glyphicon-remove-sign:before {
-  content: "\e083";
-}
-
-.glyphicon-ok-sign:before {
-  content: "\e084";
-}
-
-.glyphicon-question-sign:before {
-  content: "\e085";
-}
-
-.glyphicon-info-sign:before {
-  content: "\e086";
-}
-
-.glyphicon-screenshot:before {
-  content: "\e087";
-}
-
-.glyphicon-remove-circle:before {
-  content: "\e088";
-}
-
-.glyphicon-ok-circle:before {
-  content: "\e089";
-}
-
-.glyphicon-ban-circle:before {
-  content: "\e090";
-}
-
-.glyphicon-arrow-left:before {
-  content: "\e091";
-}
-
-.glyphicon-arrow-right:before {
-  content: "\e092";
-}
-
-.glyphicon-arrow-up:before {
-  content: "\e093";
-}
-
-.glyphicon-arrow-down:before {
-  content: "\e094";
-}
-
-.glyphicon-share-alt:before {
-  content: "\e095";
-}
-
-.glyphicon-resize-full:before {
-  content: "\e096";
-}
-
-.glyphicon-resize-small:before {
-  content: "\e097";
-}
-
-.glyphicon-exclamation-sign:before {
-  content: "\e101";
-}
-
-.glyphicon-gift:before {
-  content: "\e102";
-}
-
-.glyphicon-leaf:before {
-  content: "\e103";
-}
-
-.glyphicon-eye-open:before {
-  content: "\e105";
-}
-
-.glyphicon-eye-close:before {
-  content: "\e106";
-}
-
-.glyphicon-warning-sign:before {
-  content: "\e107";
-}
-
-.glyphicon-plane:before {
-  content: "\e108";
-}
-
-.glyphicon-random:before {
-  content: "\e110";
-}
-
-.glyphicon-comment:before {
-  content: "\e111";
-}
-
-.glyphicon-magnet:before {
-  content: "\e112";
-}
-
-.glyphicon-chevron-up:before {
-  content: "\e113";
-}
-
-.glyphicon-chevron-down:before {
-  content: "\e114";
-}
-
-.glyphicon-retweet:before {
-  content: "\e115";
-}
-
-.glyphicon-shopping-cart:before {
-  content: "\e116";
-}
-
-.glyphicon-folder-close:before {
-  content: "\e117";
-}
-
-.glyphicon-folder-open:before {
-  content: "\e118";
-}
-
-.glyphicon-resize-vertical:before {
-  content: "\e119";
-}
-
-.glyphicon-resize-horizontal:before {
-  content: "\e120";
-}
-
-.glyphicon-hdd:before {
-  content: "\e121";
-}
-
-.glyphicon-bullhorn:before {
-  content: "\e122";
-}
-
-.glyphicon-certificate:before {
-  content: "\e124";
-}
-
-.glyphicon-thumbs-up:before {
-  content: "\e125";
-}
-
-.glyphicon-thumbs-down:before {
-  content: "\e126";
-}
-
-.glyphicon-hand-right:before {
-  content: "\e127";
-}
-
-.glyphicon-hand-left:before {
-  content: "\e128";
-}
-
-.glyphicon-hand-up:before {
-  content: "\e129";
-}
-
-.glyphicon-hand-down:before {
-  content: "\e130";
-}
-
-.glyphicon-circle-arrow-right:before {
-  content: "\e131";
-}
-
-.glyphicon-circle-arrow-left:before {
-  content: "\e132";
-}
-
-.glyphicon-circle-arrow-up:before {
-  content: "\e133";
-}
-
-.glyphicon-circle-arrow-down:before {
-  content: "\e134";
-}
-
-.glyphicon-globe:before {
-  content: "\e135";
-}
-
-.glyphicon-tasks:before {
-  content: "\e137";
-}
-
-.glyphicon-filter:before {
-  content: "\e138";
-}
-
-.glyphicon-fullscreen:before {
-  content: "\e140";
-}
-
-.glyphicon-dashboard:before {
-  content: "\e141";
-}
-
-.glyphicon-heart-empty:before {
-  content: "\e143";
-}
-
-.glyphicon-link:before {
-  content: "\e144";
-}
-
-.glyphicon-phone:before {
-  content: "\e145";
-}
-
-.glyphicon-usd:before {
-  content: "\e148";
-}
-
-.glyphicon-gbp:before {
-  content: "\e149";
-}
-
-.glyphicon-sort:before {
-  content: "\e150";
-}
-
-.glyphicon-sort-by-alphabet:before {
-  content: "\e151";
-}
-
-.glyphicon-sort-by-alphabet-alt:before {
-  content: "\e152";
-}
-
-.glyphicon-sort-by-order:before {
-  content: "\e153";
-}
-
-.glyphicon-sort-by-order-alt:before {
-  content: "\e154";
-}
-
-.glyphicon-sort-by-attributes:before {
-  content: "\e155";
-}
-
-.glyphicon-sort-by-attributes-alt:before {
-  content: "\e156";
-}
-
-.glyphicon-unchecked:before {
-  content: "\e157";
-}
-
-.glyphicon-expand:before {
-  content: "\e158";
-}
-
-.glyphicon-collapse-down:before {
-  content: "\e159";
-}
-
-.glyphicon-collapse-up:before {
-  content: "\e160";
-}
-
-.glyphicon-log-in:before {
-  content: "\e161";
-}
-
-.glyphicon-flash:before {
-  content: "\e162";
-}
-
-.glyphicon-log-out:before {
-  content: "\e163";
-}
-
-.glyphicon-new-window:before {
-  content: "\e164";
-}
-
-.glyphicon-record:before {
-  content: "\e165";
-}
-
-.glyphicon-save:before {
-  content: "\e166";
-}
-
-.glyphicon-open:before {
-  content: "\e167";
-}
-
-.glyphicon-saved:before {
-  content: "\e168";
-}
-
-.glyphicon-import:before {
-  content: "\e169";
-}
-
-.glyphicon-export:before {
-  content: "\e170";
-}
-
-.glyphicon-send:before {
-  content: "\e171";
-}
-
-.glyphicon-floppy-disk:before {
-  content: "\e172";
-}
-
-.glyphicon-floppy-saved:before {
-  content: "\e173";
-}
-
-.glyphicon-floppy-remove:before {
-  content: "\e174";
-}
-
-.glyphicon-floppy-save:before {
-  content: "\e175";
-}
-
-.glyphicon-floppy-open:before {
-  content: "\e176";
-}
-
-.glyphicon-credit-card:before {
-  content: "\e177";
-}
-
-.glyphicon-transfer:before {
-  content: "\e178";
-}
-
-.glyphicon-cutlery:before {
-  content: "\e179";
-}
-
-.glyphicon-header:before {
-  content: "\e180";
-}
-
-.glyphicon-compressed:before {
-  content: "\e181";
-}
-
-.glyphicon-earphone:before {
-  content: "\e182";
-}
-
-.glyphicon-phone-alt:before {
-  content: "\e183";
-}
-
-.glyphicon-tower:before {
-  content: "\e184";
-}
-
-.glyphicon-stats:before {
-  content: "\e185";
-}
-
-.glyphicon-sd-video:before {
-  content: "\e186";
-}
-
-.glyphicon-hd-video:before {
-  content: "\e187";
-}
-
-.glyphicon-subtitles:before {
-  content: "\e188";
-}
-
-.glyphicon-sound-stereo:before {
-  content: "\e189";
-}
-
-.glyphicon-sound-dolby:before {
-  content: "\e190";
-}
-
-.glyphicon-sound-5-1:before {
-  content: "\e191";
-}
-
-.glyphicon-sound-6-1:before {
-  content: "\e192";
-}
-
-.glyphicon-sound-7-1:before {
-  content: "\e193";
-}
-
-.glyphicon-copyright-mark:before {
-  content: "\e194";
-}
-
-.glyphicon-registration-mark:before {
-  content: "\e195";
-}
-
-.glyphicon-cloud-download:before {
-  content: "\e197";
-}
-
-.glyphicon-cloud-upload:before {
-  content: "\e198";
-}
-
-.glyphicon-tree-conifer:before {
-  content: "\e199";
-}
-
-.glyphicon-tree-deciduous:before {
-  content: "\e200";
-}
-
-.glyphicon-briefcase:before {
-  content: "\1f4bc";
-}
-
-.glyphicon-calendar:before {
-  content: "\1f4c5";
-}
-
-.glyphicon-pushpin:before {
-  content: "\1f4cc";
-}
-
-.glyphicon-paperclip:before {
-  content: "\1f4ce";
-}
-
-.glyphicon-camera:before {
-  content: "\1f4f7";
-}
-
-.glyphicon-lock:before {
-  content: "\1f512";
-}
-
-.glyphicon-bell:before {
-  content: "\1f514";
-}
-
-.glyphicon-bookmark:before {
-  content: "\1f516";
-}
-
-.glyphicon-fire:before {
-  content: "\1f525";
-}
-
-.glyphicon-wrench:before {
-  content: "\1f527";
-}
-
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-left: 2px;
-  vertical-align: middle;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-bottom: 0 dotted;
-  border-left: 4px solid transparent;
-  content: "";
-}
-
-.dropdown {
-  position: relative;
-}
-
-.dropdown-toggle:focus {
-  outline: 0;
-}
-
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  font-size: 14px;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  border-radius: 4px;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-          box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-  background-clip: padding-box;
-}
-
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 1.428571429;
-  color: #333333;
-  white-space: nowrap;
-}
-
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #428bca;
-}
-
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #428bca;
-  outline: 0;
-}
-
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #999999;
-}
-
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.open > .dropdown-menu {
-  display: block;
-}
-
-.open > a {
-  outline: 0;
-}
-
-.dropdown-header {
-  display: block;
-  padding: 3px 20px;
-  font-size: 12px;
-  line-height: 1.428571429;
-  color: #999999;
-}
-
-.dropdown-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 990;
-}
-
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0 dotted;
-  border-bottom: 4px solid #000000;
-  content: "";
-}
-
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-
-@media (min-width: 768px) {
-  .navbar-right .dropdown-menu {
-    right: 0;
-    left: auto;
-  }
-}
-
-.btn-default .caret {
-  border-top-color: #333333;
-}
-
-.btn-primary .caret,
-.btn-success .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret {
-  border-top-color: #fff;
-}
-
-.dropup .btn-default .caret {
-  border-bottom-color: #333333;
-}
-
-.dropup .btn-primary .caret,
-.dropup .btn-success .caret,
-.dropup .btn-warning .caret,
-.dropup .btn-danger .caret,
-.dropup .btn-info .caret {
-  border-bottom-color: #fff;
-}
-
-.btn-group,
-.btn-group-vertical {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-}
-
-.btn-group > .btn,
-.btn-group-vertical > .btn {
-  position: relative;
-  float: left;
-}
-
-.btn-group > .btn:hover,
-.btn-group-vertical > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus,
-.btn-group > .btn:active,
-.btn-group-vertical > .btn:active,
-.btn-group > .btn.active,
-.btn-group-vertical > .btn.active {
-  z-index: 2;
-}
-
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus {
-  outline: none;
-}
-
-.btn-group .btn + .btn,
-.btn-group .btn + .btn-group,
-.btn-group .btn-group + .btn,
-.btn-group .btn-group + .btn-group {
-  margin-left: -1px;
-}
-
-.btn-toolbar:before,
-.btn-toolbar:after {
-  display: table;
-  content: " ";
-}
-
-.btn-toolbar:after {
-  clear: both;
-}
-
-.btn-toolbar:before,
-.btn-toolbar:after {
-  display: table;
-  content: " ";
-}
-
-.btn-toolbar:after {
-  clear: both;
-}
-
-.btn-toolbar .btn-group {
-  float: left;
-}
-
-.btn-toolbar > .btn + .btn,
-.btn-toolbar > .btn-group + .btn,
-.btn-toolbar > .btn + .btn-group,
-.btn-toolbar > .btn-group + .btn-group {
-  margin-left: 5px;
-}
-
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
-  border-radius: 0;
-}
-
-.btn-group > .btn:first-child {
-  margin-left: 0;
-}
-
-.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.btn-group > .btn-group {
-  float: left;
-}
-
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-
-.btn-group > .btn-group:first-child > .btn:last-child,
-.btn-group > .btn-group:first-child > .dropdown-toggle {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-
-.btn-group > .btn-group:last-child > .btn:first-child {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-
-.btn-group-xs > .btn {
-  padding: 5px 10px;
-  padding: 1px 5px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-
-.btn-group-sm > .btn {
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-
-.btn-group-lg > .btn {
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-
-.btn-group > .btn + .dropdown-toggle {
-  padding-right: 8px;
-  padding-left: 8px;
-}
-
-.btn-group > .btn-lg + .dropdown-toggle {
-  padding-right: 12px;
-  padding-left: 12px;
-}
-
-.btn-group.open .dropdown-toggle {
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-          box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-
-.btn .caret {
-  margin-left: 0;
-}
-
-.btn-lg .caret {
-  border-width: 5px 5px 0;
-  border-bottom-width: 0;
-}
-
-.dropup .btn-lg .caret {
-  border-width: 0 5px 5px;
-}
-
-.btn-group-vertical > .btn,
-.btn-group-vertical > .btn-group {
-  display: block;
-  float: none;
-  width: 100%;
-  max-width: 100%;
-}
-
-.btn-group-vertical > .btn-group:before,
-.btn-group-vertical > .btn-group:after {
-  display: table;
-  content: " ";
-}
-
-.btn-group-vertical > .btn-group:after {
-  clear: both;
-}
-
-.btn-group-vertical > .btn-group:before,
-.btn-group-vertical > .btn-group:after {
-  display: table;
-  content: " ";
-}
-
-.btn-group-vertical > .btn-group:after {
-  clear: both;
-}
-
-.btn-group-vertical > .btn-group > .btn {
-  float: none;
-}
-
-.btn-group-vertical > .btn + .btn,
-.btn-group-vertical > .btn + .btn-group,
-.btn-group-vertical > .btn-group + .btn,
-.btn-group-vertical > .btn-group + .btn-group {
-  margin-top: -1px;
-  margin-left: 0;
-}
-
-.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-
-.btn-group-vertical > .btn:first-child:not(:last-child) {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-
-.btn-group-vertical > .btn:last-child:not(:first-child) {
-  border-top-right-radius: 0;
-  border-bottom-left-radius: 4px;
-  border-top-left-radius: 0;
-}
-
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-
-.btn-group-vertical > .btn-group:first-child > .btn:last-child,
-.btn-group-vertical > .btn-group:first-child > .dropdown-toggle {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-
-.btn-group-vertical > .btn-group:last-child > .btn:first-child {
-  border-top-right-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.btn-group-justified {
-  display: table;
-  width: 100%;
-  border-collapse: separate;
-  table-layout: fixed;
-}
-
-.btn-group-justified .btn {
-  display: table-cell;
-  float: none;
-  width: 1%;
-}
-
-[data-toggle="buttons"] > .btn > input[type="radio"],
-[data-toggle="buttons"] > .btn > input[type="checkbox"] {
-  display: none;
-}
-
-.input-group {
-  position: relative;
-  display: table;
-  border-collapse: separate;
-}
-
-.input-group.col {
-  float: none;
-  padding-right: 0;
-  padding-left: 0;
-}
-
-.input-group .form-control {
-  width: 100%;
-  margin-bottom: 0;
-}
-
-.input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
-  height: 45px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-
-select.input-group-lg > .form-control,
-select.input-group-lg > .input-group-addon,
-select.input-group-lg > .input-group-btn > .btn {
-  height: 45px;
-  line-height: 45px;
-}
-
-textarea.input-group-lg > .form-control,
-textarea.input-group-lg > .input-group-addon,
-textarea.input-group-lg > .input-group-btn > .btn {
-  height: auto;
-}
-
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-
-select.input-group-sm > .form-control,
-select.input-group-sm > .input-group-addon,
-select.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  line-height: 30px;
-}
-
-textarea.input-group-sm > .form-control,
-textarea.input-group-sm > .input-group-addon,
-textarea.input-group-sm > .input-group-btn > .btn {
-  height: auto;
-}
-
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
-  display: table-cell;
-}
-
-.input-group-addon:not(:first-child):not(:last-child),
-.input-group-btn:not(:first-child):not(:last-child),
-.input-group .form-control:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-
-.input-group-addon,
-.input-group-btn {
-  width: 1%;
-  white-space: nowrap;
-  vertical-align: middle;
-}
-
-.input-group-addon {
-  padding: 6px 12px;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 1;
-  text-align: center;
-  background-color: #eeeeee;
-  border: 1px solid #cccccc;
-  border-radius: 4px;
-}
-
-.input-group-addon.input-sm {
-  padding: 5px 10px;
-  font-size: 12px;
-  border-radius: 3px;
-}
-
-.input-group-addon.input-lg {
-  padding: 10px 16px;
-  font-size: 18px;
-  border-radius: 6px;
-}
-
-.input-group-addon input[type="radio"],
-.input-group-addon input[type="checkbox"] {
-  margin-top: 0;
-}
-
-.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-
-.input-group-addon:first-child {
-  border-right: 0;
-}
-
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child) {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.input-group-addon:last-child {
-  border-left: 0;
-}
-
-.input-group-btn {
-  position: relative;
-  white-space: nowrap;
-}
-
-.input-group-btn > .btn {
-  position: relative;
-}
-
-.input-group-btn > .btn + .btn {
-  margin-left: -4px;
-}
-
-.input-group-btn > .btn:hover,
-.input-group-btn > .btn:active {
-  z-index: 2;
-}
-
-.nav {
-  padding-left: 0;
-  margin-bottom: 0;
-  list-style: none;
-}
-
-.nav:before,
-.nav:after {
-  display: table;
-  content: " ";
-}
-
-.nav:after {
-  clear: both;
-}
-
-.nav:before,
-.nav:after {
-  display: table;
-  content: " ";
-}
-
-.nav:after {
-  clear: both;
-}
-
-.nav > li {
-  position: relative;
-  display: block;
-}
-
-.nav > li > a {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-}
-
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-
-.nav > li.disabled > a {
-  color: #999999;
-}
-
-.nav > li.disabled > a:hover,
-.nav > li.disabled > a:focus {
-  color: #999999;
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-}
-
-.nav .open > a,
-.nav .open > a:hover,
-.nav .open > a:focus {
-  background-color: #eeeeee;
-  border-color: #428bca;
-}
-
-.nav .nav-divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-
-.nav > li > a > img {
-  max-width: none;
-}
-
-.nav-tabs {
-  border-bottom: 1px solid #dddddd;
-}
-
-.nav-tabs > li {
-  float: left;
-  margin-bottom: -1px;
-}
-
-.nav-tabs > li > a {
-  margin-right: 2px;
-  line-height: 1.428571429;
-  border: 1px solid transparent;
-  border-radius: 4px 4px 0 0;
-}
-
-.nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-
-.nav-tabs > li.active > a,
-.nav-tabs > li.active > a:hover,
-.nav-tabs > li.active > a:focus {
-  color: #555555;
-  cursor: default;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  border-bottom-color: transparent;
-}
-
-.nav-tabs.nav-justified {
-  width: 100%;
-  border-bottom: 0;
-}
-
-.nav-tabs.nav-justified > li {
-  float: none;
-}
-
-.nav-tabs.nav-justified > li > a {
-  text-align: center;
-}
-
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-}
-
-.nav-tabs.nav-justified > li > a {
-  margin-right: 0;
-  border-bottom: 1px solid #dddddd;
-}
-
-.nav-tabs.nav-justified > .active > a {
-  border-bottom-color: #ffffff;
-}
-
-.nav-pills > li {
-  float: left;
-}
-
-.nav-pills > li > a {
-  border-radius: 5px;
-}
-
-.nav-pills > li + li {
-  margin-left: 2px;
-}
-
-.nav-pills > li.active > a,
-.nav-pills > li.active > a:hover,
-.nav-pills > li.active > a:focus {
-  color: #ffffff;
-  background-color: #428bca;
-}
-
-.nav-stacked > li {
-  float: none;
-}
-
-.nav-stacked > li + li {
-  margin-top: 2px;
-  margin-left: 0;
-}
-
-.nav-justified {
-  width: 100%;
-}
-
-.nav-justified > li {
-  float: none;
-}
-
-.nav-justified > li > a {
-  text-align: center;
-}
-
-@media (min-width: 768px) {
-  .nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-}
-
-.nav-tabs-justified {
-  border-bottom: 0;
-}
-
-.nav-tabs-justified > li > a {
-  margin-right: 0;
-  border-bottom: 1px solid #dddddd;
-}
-
-.nav-tabs-justified > .active > a {
-  border-bottom-color: #ffffff;
-}
-
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: " ";
-}
-
-.tabbable:after {
-  clear: both;
-}
-
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: " ";
-}
-
-.tabbable:after {
-  clear: both;
-}
-
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-
-.nav .caret {
-  border-top-color: #428bca;
-  border-bottom-color: #428bca;
-}
-
-.nav a:hover .caret {
-  border-top-color: #2a6496;
-  border-bottom-color: #2a6496;
-}
-
-.nav-tabs .dropdown-menu {
-  margin-top: -1px;
-  border-top-right-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.navbar {
-  position: relative;
-  z-index: 1000;
-  min-height: 50px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-}
-
-.navbar:before,
-.navbar:after {
-  display: table;
-  content: " ";
-}
-
-.navbar:after {
-  clear: both;
-}
-
-.navbar:before,
-.navbar:after {
-  display: table;
-  content: " ";
-}
-
-.navbar:after {
-  clear: both;
-}
-
-@media (min-width: 768px) {
-  .navbar {
-    border-radius: 4px;
-  }
-}
-
-.navbar-header:before,
-.navbar-header:after {
-  display: table;
-  content: " ";
-}
-
-.navbar-header:after {
-  clear: both;
-}
-
-.navbar-header:before,
-.navbar-header:after {
-  display: table;
-  content: " ";
-}
-
-.navbar-header:after {
-  clear: both;
-}
-
-@media (min-width: 768px) {
-  .navbar-header {
-    float: left;
-  }
-}
-
-.navbar-collapse {
-  max-height: 340px;
-  padding-right: 15px;
-  padding-left: 15px;
-  overflow-x: visible;
-  border-top: 1px solid transparent;
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
-  -webkit-overflow-scrolling: touch;
-}
-
-.navbar-collapse:before,
-.navbar-collapse:after {
-  display: table;
-  content: " ";
-}
-
-.navbar-collapse:after {
-  clear: both;
-}
-
-.navbar-collapse:before,
-.navbar-collapse:after {
-  display: table;
-  content: " ";
-}
-
-.navbar-collapse:after {
-  clear: both;
-}
-
-.navbar-collapse.in {
-  overflow-y: auto;
-}
-
-@media (min-width: 768px) {
-  .navbar-collapse {
-    width: auto;
-    border-top: 0;
-    box-shadow: none;
-  }
-  .navbar-collapse.collapse {
-    display: block !important;
-    height: auto !important;
-    padding-bottom: 0;
-    overflow: visible !important;
-  }
-  .navbar-collapse.in {
-    overflow-y: visible;
-  }
-  .navbar-collapse .navbar-nav.navbar-left:first-child {
-    margin-left: -15px;
-  }
-  .navbar-collapse .navbar-nav.navbar-right:last-child {
-    margin-right: -15px;
-  }
-  .navbar-collapse .navbar-text:last-child {
-    margin-right: 0;
-  }
-}
-
-.container > .navbar-header,
-.container > .navbar-collapse {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-
-@media (min-width: 768px) {
-  .container > .navbar-header,
-  .container > .navbar-collapse {
-    margin-right: 0;
-    margin-left: 0;
-  }
-}
-
-.navbar-static-top {
-  border-width: 0 0 1px;
-}
-
-@media (min-width: 768px) {
-  .navbar-static-top {
-    border-radius: 0;
-  }
-}
-
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  border-width: 0 0 1px;
-}
-
-@media (min-width: 768px) {
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    border-radius: 0;
-  }
-}
-
-.navbar-fixed-top {
-  top: 0;
-  z-index: 1030;
-}
-
-.navbar-fixed-bottom {
-  bottom: 0;
-  margin-bottom: 0;
-}
-
-.navbar-brand {
-  float: left;
-  padding: 15px 15px;
-  font-size: 18px;
-  line-height: 20px;
-}
-
-.navbar-brand:hover,
-.navbar-brand:focus {
-  text-decoration: none;
-}
-
-@media (min-width: 768px) {
-  .navbar > .container .navbar-brand {
-    margin-left: -15px;
-  }
-}
-
-.navbar-toggle {
-  position: relative;
-  float: right;
-  padding: 9px 10px;
-  margin-top: 8px;
-  margin-right: 15px;
-  margin-bottom: 8px;
-  background-color: transparent;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-
-.navbar-toggle .icon-bar {
-  display: block;
-  width: 22px;
-  height: 2px;
-  border-radius: 1px;
-}
-
-.navbar-toggle .icon-bar + .icon-bar {
-  margin-top: 4px;
-}
-
-@media (min-width: 768px) {
-  .navbar-toggle {
-    display: none;
-  }
-}
-
-.navbar-nav {
-  margin: 7.5px -15px;
-}
-
-.navbar-nav > li > a {
-  padding-top: 10px;
-  padding-bottom: 10px;
-  line-height: 20px;
-}
-
-@media (max-width: 767px) {
-  .navbar-nav .open .dropdown-menu {
-    position: static;
-    float: none;
-    width: auto;
-    margin-top: 0;
-    background-color: transparent;
-    border: 0;
-    box-shadow: none;
-  }
-  .navbar-nav .open .dropdown-menu > li > a,
-  .navbar-nav .open .dropdown-menu .dropdown-header {
-    padding: 5px 15px 5px 25px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a {
-    line-height: 20px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-nav .open .dropdown-menu > li > a:focus {
-    background-image: none;
-  }
-}
-
-@media (min-width: 768px) {
-  .navbar-nav {
-    float: left;
-    margin: 0;
-  }
-  .navbar-nav > li {
-    float: left;
-  }
-  .navbar-nav > li > a {
-    padding-top: 15px;
-    padding-bottom: 15px;
-  }
-}
-
-@media (min-width: 768px) {
-  .navbar-left {
-    float: left !important;
-  }
-  .navbar-right {
-    float: right !important;
-  }
-}
-
-.navbar-form {
-  padding: 10px 15px;
-  margin-top: 8px;
-  margin-right: -15px;
-  margin-bottom: 8px;
-  margin-left: -15px;
-  border-top: 1px solid transparent;
-  border-bottom: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-}
-
-@media (min-width: 768px) {
-  .navbar-form .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .form-control {
-    display: inline-block;
-  }
-  .navbar-form .radio,
-  .navbar-form .checkbox {
-    display: inline-block;
-    padding-left: 0;
-    margin-top: 0;
-    margin-bottom: 0;
-  }
-  .navbar-form .radio input[type="radio"],
-  .navbar-form .checkbox input[type="checkbox"] {
-    float: none;
-    margin-left: 0;
-  }
-}
-
-@media (max-width: 767px) {
-  .navbar-form .form-group {
-    margin-bottom: 5px;
-  }
-}
-
-@media (min-width: 768px) {
-  .navbar-form {
-    width: auto;
-    padding-top: 0;
-    padding-bottom: 0;
-    margin-right: 0;
-    margin-left: 0;
-    border: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-  }
-}
-
-.navbar-nav > li > .dropdown-menu {
-  margin-top: 0;
-  border-top-right-radius: 0;
-  border-top-left-radius: 0;
-}
-
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-
-.navbar-nav.pull-right > li > .dropdown-menu,
-.navbar-nav > li > .dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-
-.navbar-btn {
-  margin-top: 8px;
-  margin-bottom: 8px;
-}
-
-.navbar-text {
-  float: left;
-  margin-top: 15px;
-  margin-bottom: 15px;
-}
-
-@media (min-width: 768px) {
-  .navbar-text {
-    margin-right: 15px;
-    margin-left: 15px;
-  }
-}
-
-.navbar-default {
-  background-color: #f8f8f8;
-  border-color: #e7e7e7;
-}
-
-.navbar-default .navbar-brand {
-  color: #777777;
-}
-
-.navbar-default .navbar-brand:hover,
-.navbar-default .navbar-brand:focus {
-  color: #5e5e5e;
-  background-color: transparent;
-}
-
-.navbar-default .navbar-text {
-  color: #777777;
-}
-
-.navbar-default .navbar-nav > li > a {
-  color: #777777;
-}
-
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
-  color: #333333;
-  background-color: transparent;
-}
-
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
-  color: #555555;
-  background-color: #e7e7e7;
-}
-
-.navbar-default .navbar-nav > .disabled > a,
-.navbar-default .navbar-nav > .disabled > a:hover,
-.navbar-default .navbar-nav > .disabled > a:focus {
-  color: #cccccc;
-  background-color: transparent;
-}
-
-.navbar-default .navbar-toggle {
-  border-color: #dddddd;
-}
-
-.navbar-default .navbar-toggle:hover,
-.navbar-default .navbar-toggle:focus {
-  background-color: #dddddd;
-}
-
-.navbar-default .navbar-toggle .icon-bar {
-  background-color: #cccccc;
-}
-
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
-  border-color: #e6e6e6;
-}
-
-.navbar-default .navbar-nav > .dropdown > a:hover .caret,
-.navbar-default .navbar-nav > .dropdown > a:focus .caret {
-  border-top-color: #333333;
-  border-bottom-color: #333333;
-}
-
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .open > a:hover,
-.navbar-default .navbar-nav > .open > a:focus {
-  color: #555555;
-  background-color: #e7e7e7;
-}
-
-.navbar-default .navbar-nav > .open > a .caret,
-.navbar-default .navbar-nav > .open > a:hover .caret,
-.navbar-default .navbar-nav > .open > a:focus .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-
-.navbar-default .navbar-nav > .dropdown > a .caret {
-  border-top-color: #777777;
-  border-bottom-color: #777777;
-}
-
-@media (max-width: 767px) {
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
-    color: #777777;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #333333;
-    background-color: transparent;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #555555;
-    background-color: #e7e7e7;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #cccccc;
-    background-color: transparent;
-  }
-}
-
-.navbar-default .navbar-link {
-  color: #777777;
-}
-
-.navbar-default .navbar-link:hover {
-  color: #333333;
-}
-
-.navbar-inverse {
-  background-color: #222222;
-  border-color: #080808;
-}
-
-.navbar-inverse .navbar-brand {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-brand:hover,
-.navbar-inverse .navbar-brand:focus {
-  color: #ffffff;
-  background-color: transparent;
-}
-
-.navbar-inverse .navbar-text {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-nav > li > a {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-nav > li > a:hover,
-.navbar-inverse .navbar-nav > li > a:focus {
-  color: #ffffff;
-  background-color: transparent;
-}
-
-.navbar-inverse .navbar-nav > .active > a,
-.navbar-inverse .navbar-nav > .active > a:hover,
-.navbar-inverse .navbar-nav > .active > a:focus {
-  color: #ffffff;
-  background-color: #080808;
-}
-
-.navbar-inverse .navbar-nav > .disabled > a,
-.navbar-inverse .navbar-nav > .disabled > a:hover,
-.navbar-inverse .navbar-nav > .disabled > a:focus {
-  color: #444444;
-  background-color: transparent;
-}
-
-.navbar-inverse .navbar-toggle {
-  border-color: #333333;
-}
-
-.navbar-inverse .navbar-toggle:hover,
-.navbar-inverse .navbar-toggle:focus {
-  background-color: #333333;
-}
-
-.navbar-inverse .navbar-toggle .icon-bar {
-  background-color: #ffffff;
-}
-
-.navbar-inverse .navbar-collapse,
-.navbar-inverse .navbar-form {
-  border-color: #101010;
-}
-
-.navbar-inverse .navbar-nav > .open > a,
-.navbar-inverse .navbar-nav > .open > a:hover,
-.navbar-inverse .navbar-nav > .open > a:focus {
-  color: #ffffff;
-  background-color: #080808;
-}
-
-.navbar-inverse .navbar-nav > .dropdown > a:hover .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.navbar-inverse .navbar-nav > .dropdown > a .caret {
-  border-top-color: #999999;
-  border-bottom-color: #999999;
-}
-
-.navbar-inverse .navbar-nav > .open > a .caret,
-.navbar-inverse .navbar-nav > .open > a:hover .caret,
-.navbar-inverse .navbar-nav > .open > a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-@media (max-width: 767px) {
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
-    border-color: #080808;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
-    color: #999999;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #ffffff;
-    background-color: transparent;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #ffffff;
-    background-color: #080808;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #444444;
-    background-color: transparent;
-  }
-}
-
-.navbar-inverse .navbar-link {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-link:hover {
-  color: #ffffff;
-}
-
-.breadcrumb {
-  padding: 8px 15px;
-  margin-bottom: 20px;
-  list-style: none;
-  background-color: #f5f5f5;
-  border-radius: 4px;
-}
-
-.breadcrumb > li {
-  display: inline-block;
-}
-
-.breadcrumb > li + li:before {
-  padding: 0 5px;
-  color: #cccccc;
-  content: "/\00a0";
-}
-
-.breadcrumb > .active {
-  color: #999999;
-}
-
-.pagination {
-  display: inline-block;
-  padding-left: 0;
-  margin: 20px 0;
-  border-radius: 4px;
-}
-
-.pagination > li {
-  display: inline;
-}
-
-.pagination > li > a,
-.pagination > li > span {
-  position: relative;
-  float: left;
-  padding: 6px 12px;
-  margin-left: -1px;
-  line-height: 1.428571429;
-  text-decoration: none;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-}
-
-.pagination > li:first-child > a,
-.pagination > li:first-child > span {
-  margin-left: 0;
-  border-bottom-left-radius: 4px;
-  border-top-left-radius: 4px;
-}
-
-.pagination > li:last-child > a,
-.pagination > li:last-child > span {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-}
-
-.pagination > li > a:hover,
-.pagination > li > span:hover,
-.pagination > li > a:focus,
-.pagination > li > span:focus {
-  background-color: #eeeeee;
-}
-
-.pagination > .active > a,
-.pagination > .active > span,
-.pagination > .active > a:hover,
-.pagination > .active > span:hover,
-.pagination > .active > a:focus,
-.pagination > .active > span:focus {
-  z-index: 2;
-  color: #ffffff;
-  cursor: default;
-  background-color: #428bca;
-  border-color: #428bca;
-}
-
-.pagination > .disabled > span,
-.pagination > .disabled > a,
-.pagination > .disabled > a:hover,
-.pagination > .disabled > a:focus {
-  color: #999999;
-  cursor: not-allowed;
-  background-color: #ffffff;
-  border-color: #dddddd;
-}
-
-.pagination-lg > li > a,
-.pagination-lg > li > span {
-  padding: 10px 16px;
-  font-size: 18px;
-}
-
-.pagination-lg > li:first-child > a,
-.pagination-lg > li:first-child > span {
-  border-bottom-left-radius: 6px;
-  border-top-left-radius: 6px;
-}
-
-.pagination-lg > li:last-child > a,
-.pagination-lg > li:last-child > span {
-  border-top-right-radius: 6px;
-  border-bottom-right-radius: 6px;
-}
-
-.pagination-sm > li > a,
-.pagination-sm > li > span {
-  padding: 5px 10px;
-  font-size: 12px;
-}
-
-.pagination-sm > li:first-child > a,
-.pagination-sm > li:first-child > span {
-  border-bottom-left-radius: 3px;
-  border-top-left-radius: 3px;
-}
-
-.pagination-sm > li:last-child > a,
-.pagination-sm > li:last-child > span {
-  border-top-right-radius: 3px;
-  border-bottom-right-radius: 3px;
-}
-
-.pager {
-  padding-left: 0;
-  margin: 20px 0;
-  text-align: center;
-  list-style: none;
-}
-
-.pager:before,
-.pager:after {
-  display: table;
-  content: " ";
-}
-
-.pager:after {
-  clear: both;
-}
-
-.pager:before,
-.pager:after {
-  display: table;
-  content: " ";
-}
-
-.pager:after {
-  clear: both;
-}
-
-.pager li {
-  display: inline;
-}
-
-.pager li > a,
-.pager li > span {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  border-radius: 15px;
-}
-
-.pager li > a:hover,
-.pager li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-
-.pager .next > a,
-.pager .next > span {
-  float: right;
-}
-
-.pager .previous > a,
-.pager .previous > span {
-  float: left;
-}
-
-.pager .disabled > a,
-.pager .disabled > a:hover,
-.pager .disabled > a:focus,
-.pager .disabled > span {
-  color: #999999;
-  cursor: not-allowed;
-  background-color: #ffffff;
-}
-
-.label {
-  display: inline;
-  padding: .2em .6em .3em;
-  font-size: 75%;
-  font-weight: bold;
-  line-height: 1;
-  color: #ffffff;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: baseline;
-  border-radius: .25em;
-}
-
-.label[href]:hover,
-.label[href]:focus {
-  color: #ffffff;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-.label:empty {
-  display: none;
-}
-
-.label-default {
-  background-color: #999999;
-}
-
-.label-default[href]:hover,
-.label-default[href]:focus {
-  background-color: #808080;
-}
-
-.label-primary {
-  background-color: #428bca;
-}
-
-.label-primary[href]:hover,
-.label-primary[href]:focus {
-  background-color: #3071a9;
-}
-
-.label-success {
-  background-color: #5cb85c;
-}
-
-.label-success[href]:hover,
-.label-success[href]:focus {
-  background-color: #449d44;
-}
-
-.label-info {
-  background-color: #5bc0de;
-}
-
-.label-info[href]:hover,
-.label-info[href]:focus {
-  background-color: #31b0d5;
-}
-
-.label-warning {
-  background-color: #f0ad4e;
-}
-
-.label-warning[href]:hover,
-.label-warning[href]:focus {
-  background-color: #ec971f;
-}
-
-.label-danger {
-  background-color: #d9534f;
-}
-
-.label-danger[href]:hover,
-.label-danger[href]:focus {
-  background-color: #c9302c;
-}
-
-.badge {
-  display: inline-block;
-  min-width: 10px;
-  padding: 3px 7px;
-  font-size: 12px;
-  font-weight: bold;
-  line-height: 1;
-  color: #ffffff;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: baseline;
-  background-color: #999999;
-  border-radius: 10px;
-}
-
-.badge:empty {
-  display: none;
-}
-
-a.badge:hover,
-a.badge:focus {
-  color: #ffffff;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-.btn .badge {
-  position: relative;
-  top: -1px;
-}
-
-a.list-group-item.active > .badge,
-.nav-pills > .active > a > .badge {
-  color: #428bca;
-  background-color: #ffffff;
-}
-
-.nav-pills > li > a > .badge {
-  margin-left: 3px;
-}
-
-.jumbotron {
-  padding: 30px;
-  margin-bottom: 30px;
-  font-size: 21px;
-  font-weight: 200;
-  line-height: 2.1428571435;
-  color: inherit;
-  background-color: #eeeeee;
-}
-
-.jumbotron h1 {
-  line-height: 1;
-  color: inherit;
-}
-
-.jumbotron p {
-  line-height: 1.4;
-}
-
-.container .jumbotron {
-  border-radius: 6px;
-}
-
-@media screen and (min-width: 768px) {
-  .jumbotron {
-    padding-top: 48px;
-    padding-bottom: 48px;
-  }
-  .container .jumbotron {
-    padding-right: 60px;
-    padding-left: 60px;
-  }
-  .jumbotron h1 {
-    font-size: 63px;
-  }
-}
-
-.thumbnail {
-  display: inline-block;
-  display: block;
-  height: auto;
-  max-width: 100%;
-  padding: 4px;
-  line-height: 1.428571429;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
-  border-radius: 4px;
-  -webkit-transition: all 0.2s ease-in-out;
-          transition: all 0.2s ease-in-out;
-}
-
-.thumbnail > img {
-  display: block;
-  height: auto;
-  max-width: 100%;
-}
-
-a.thumbnail:hover,
-a.thumbnail:focus {
-  border-color: #428bca;
-}
-
-.thumbnail > img {
-  margi

<TRUNCATED>


[23/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/ceda/ceda-schema-customisations.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/ceda/ceda-schema-customisations.sql b/fineract-db/multi-tenant-demo-backups/ceda/ceda-schema-customisations.sql
deleted file mode 100644
index 8a8fab8..0000000
--- a/fineract-db/multi-tenant-demo-backups/ceda/ceda-schema-customisations.sql
+++ /dev/null
@@ -1,344 +0,0 @@
-DELETE FROM `ref_loan_transaction_processing_strategy` WHERE id in (1, 3, 4);
-
-INSERT INTO `m_code` (`code_name`, `is_system_defined`)
-VALUES
-('FieldOfEmployment', '0'),
-('EducationLevel', '0'),
-('MaritalStatus', '0'),
-('PovertyStatus', '0');
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Banker', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "FieldOfEmployment";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.SoftwareDeveloper', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "FieldOfEmployment";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.University', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "EducationLevel";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Secondary', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "EducationLevel";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Primary', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "EducationLevel";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Married', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "MaritalStatus";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Single', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "MaritalStatus";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Divorced', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "MaritalStatus";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Widow', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "MaritalStatus";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.PovertyStatus.Band1', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "PovertyStatus";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.PovertyStatus.Band2', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "PovertyStatus";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.PovertyStatus.Band3', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "PovertyStatus";
-
--- ======= ADD in loan purspose and collateral values to enable this functionality
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.House', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "LoanCollateral";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Television', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "LoanCollateral";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Gold', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "LoanCollateral";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Agriculture', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "LoanPurpose";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Manufacturing', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "LoanPurpose";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.HousingImprovement', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "LoanPurpose";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Male', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "Gender";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Female', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "Gender";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.Yes', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "YesNo";
-
-INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
-select mc.id, 'option.No', ifnull(max(mv.id), 1)
-from m_code mc
-join m_code_value mv on mv.code_id = mc.id
-where mc.`code_name` = "YesNo";
-
-
-
-DROP TABLE IF EXISTS `client additional data`;
-CREATE TABLE `client additional data` (
-  `client_id` bigint(20) NOT NULL,
-  `Gender_cd` int(11) NOT NULL,
-  `Date of Birth` date NOT NULL,
-  `Home address` text NOT NULL,
-  `Telephone number` varchar(20) NOT NULL,
-  `Telephone number (2nd)` varchar(20) NOT NULL,
-  `Email address` varchar(50) NOT NULL,
-  `EducationLevel_cd` int(11) NOT NULL,
-  `MaritalStatus_cd` int(11) NOT NULL,
-  `Number of children` int(11) NOT NULL,
-  `Citizenship` varchar(50) NOT NULL,
-  `PovertyStatus_cd` int(11) NOT NULL,
-  `YesNo_cd_Employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL,
-  `Employer name` varchar(50) DEFAULT NULL,
-  `Number of years` int(11) DEFAULT NULL,
-  `Monthly salary` decimal(19,6) DEFAULT NULL,
-  `YesNo_cd_Self employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL,
-  `Business address` text,
-  `Number of employees` int(11) DEFAULT NULL,
-  `Monthly salaries paid` decimal(19,6) DEFAULT NULL,
-  `Monthly net income of business activity` decimal(19,6) DEFAULT NULL,
-  `Monthly rent` decimal(19,6) DEFAULT NULL,
-  `Other income generating activities` varchar(100) DEFAULT NULL,
-  `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL,
-  `YesNo_cd_Loans with other institutions` int(11) NOT NULL,
-  `From whom` varchar(100) DEFAULT NULL,
-  `Amount` decimal(19,6) DEFAULT NULL,
-  `Interest rate pa` decimal(19,6) DEFAULT NULL,
-  `Number of people depending on overal income` int(11) NOT NULL,
-  `YesNo_cd_Bank account` int(11) NOT NULL,
-  `YesNo_cd_Business plan provided` int(11) NOT NULL,
-  `YesNo_cd_Access to internet` int(11) DEFAULT NULL,
-  `Introduced by` varchar(100) DEFAULT NULL,
-  `Known to introducer since` varchar(100) NOT NULL,
-  `Last visited by` varchar(100) DEFAULT NULL,
-  `Last visited on` date NOT NULL,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-DROP TABLE IF EXISTS `impact measurement`;
-CREATE TABLE `impact measurement` (
-  `loan_id` bigint(20) NOT NULL,
-  `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL,
-  `ReasonNotRepaidOnSchedule` text DEFAULT NULL,
-  `How was Loan Amount Invested` text NOT NULL,
-  `Additional Income Generated` decimal(19,6) NOT NULL,
-  `Additional Income Used For` text NOT NULL,
-  `YesNo_cd_NewJobsCreated` int(11) NOT NULL,
-  `Number of Jobs Created` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-DROP TABLE IF EXISTS `loan additional data`;
-CREATE TABLE `loan additional data` (
-  `loan_id` bigint(20) NOT NULL,
-  `PurposeOfLoan_cd` int(11) NOT NULL,
-  `CollateralType_cd` int(11) NOT NULL,
-  `Collateral notes` text NOT NULL,
-  `YesNo_cd_Guarantor` int(11) NOT NULL,
-  `Guarantor name` varchar(100) DEFAULT NULL,
-  `Guarantor relation` varchar(100) DEFAULT NULL,
-  `Guarantor address` varchar(100) DEFAULT NULL,
-  `Guarantor telephone number` varchar(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
--- datatables mapping
-INSERT INTO `x_registered_table`
-(`registered_table_name`,
-`application_table_name`)
-VALUES
-('client additional data', 'm_client'),
-('impact measurement', 'm_loan'),
-('loan additional data', 'm_loan');
-
--- make sure permissions created for registered datatables
-/* add a create, read, update and delete permission for each registered datatable */
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('CREATE_', r.registered_table_name), r.registered_table_name, 'CREATE'
-from x_registered_table r;
-
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('READ_', r.registered_table_name), r.registered_table_name, 'READ'
-from x_registered_table r;
-
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('UPDATE_', r.registered_table_name), r.registered_table_name, 'UPDATE'
-from x_registered_table r;
-
-insert into m_permission(grouping, `code`, entity_name, action_name)
-select 'datatable', concat('DELETE_', r.registered_table_name), r.registered_table_name, 'DELETE'
-from x_registered_table r;
-
-
--- ==== Chart of Accounts =====
-truncate `acc_gl_account`;
-INSERT INTO `acc_gl_account` VALUES 
-(1,'Petty Cash Balances',NULL,'11100',0,1,2,1,NULL),
-(2,'Cash in Valut 1',NULL,'11101',0,1,1,1,NULL),
-(3,'Bank Balances',NULL,'11200',0,1,2,1,NULL),
-(4,'Centenary Opening Account',NULL,'11201',0,1,1,1,NULL),
-(5,'Centenary Expense Account',NULL,'11202',0,1,1,1,NULL),
-(6,'Centenary USD Account',NULL,'11203',0,1,1,1,NULL),
-(7,'Loans and Advances',NULL,'13100',0,1,2,1,NULL),
-(8,'Loans to Clients',NULL,'13101',0,1,1,1,NULL),
-(9,'Outstanding Interest',NULL,'13102',0,1,1,1,NULL),
-(10,'Outstanding Late Payment Interest',NULL,'13103',0,1,1,1,NULL),
-(11,'Outstanding Bank Fees to be collected',NULL,'13104',0,1,1,1,NULL),
-(12,'WriteOff Accounts',NULL,'13200',0,1,2,1,NULL),
-(13,'Write-offs (use for funds coming in)',NULL,'13201',0,1,1,1,NULL),
-(14,'Write-offs outstanding principal',NULL,'13202',0,1,1,1,NULL),
-(15,'Write-offs outstanding interest',NULL,'13203',0,1,1,1,NULL),
-(16,'Write-offs collected bank fees',NULL,'13204',0,1,1,1,NULL),
-(17,'Write-offs hardware/furniture',NULL,'13205',0,1,1,1,NULL),
-(18,'Fixed Assets',NULL,'14100',0,1,2,1,NULL),
-(19,'Office Equipment',NULL,'14101',0,1,1,1,NULL),
-(20,'Suspense Items (unidentified deposits)',NULL,'15000',0,1,2,1,NULL),
-(21,'Assets',NULL,'10000',0,1,2,1,NULL),
-(22,'Liabilities',NULL,'20000',0,1,2,2,NULL),
-(23,'Shares Account',NULL,'26100',0,1,2,2,NULL),
-(24,'Shares Captial',NULL,'26101',0,1,1,2,NULL),
-(25,'Donated Equity',NULL,'26300',0,1,2,2,NULL),
-(26,'Donated Equity Ameropa Foundation',NULL,'26301',0,1,1,2,NULL),
-(27,'Donated Equity e.h',NULL,'26302',0,1,1,2,NULL),
-(28,'Overpaid Amounts',NULL,'27000',0,1,2,2,NULL),
-(29,'Loss Provision',NULL,'28000',0,1,2,2,NULL),
-(30,'Provision Outstanding Principal',NULL,'28001',0,1,1,2,NULL),
-(31,'Provision Oustanding Interest',NULL,'28002',0,1,1,2,NULL),(32,'Income',NULL,'30000',0,1,2,4,NULL),
-(33,'Interest Income from Loans',NULL,'31100',0,1,2,4,NULL),
-(34,'Interest on Loans',NULL,'31101',0,1,1,4,NULL),
-(35,'Late Payment Interest',NULL,'31102',0,1,1,4,NULL),
-(36,'Income from Micro credit & Lending Activities',NULL,'31300',0,1,2,4,NULL),
-(37,'Collected Bank Fees Receivable',NULL,'6201',0,1,1,4,NULL),
-(38,'Deposits from Loans Write Off',NULL,'31400',0,1,2,4,NULL),
-(39,'Expenditure',NULL,'40000',0,1,2,5,NULL),
-(40,'Office Expenditure Account',NULL,'42100',0,1,2,5,NULL),
-(41,'Water Charges',NULL,'42102',0,1,1,5,NULL),
-(42,'Electricity Charges',NULL,'42103',0,1,1,5,NULL),
-(43,'Printing and Stationary',NULL,'42105',0,1,1,5,NULL),
-(44,'Office Rent',NULL,'42107',0,1,1,5,NULL),
-(45,'Marketing Expense',NULL,'42109',0,1,1,5,NULL),
-(46,'Office utilities',NULL,'42112',0,1,1,5,'(supplies, toiletries, kitchen)'),
-(47,'Furniture',NULL,'42113',0,1,1,5,NULL),
-(48,'CEDA Meeting Expense',NULL,'42114',0,1,1,5,NULL),
-(49,'Employee Personal Expsense Account',NULL,'42200',0,1,2,5,NULL),
-(50,'Salary Alice',NULL,'42201',0,1,1,5,NULL),
-(51,'Salary Irene',NULL,'42202',0,1,1,5,NULL),
-(52,'Salary Richard',NULL,'42203',0,1,1,5,NULL),
-(53,'Salary Loan Officer TBA',NULL,'42204',0,1,1,5,NULL),
-(54,'Medical Insurance Alice & Family',NULL,'42205',0,1,1,5,NULL),
-(55,'Medical Insurance Irene',NULL,'42206',0,1,1,5,NULL),
-(56,'Medical Insurance Richard',NULL,'42207',0,1,1,5,NULL),
-(57,'Medical Insurance Loan Officer TBA',NULL,'42208',0,1,1,5,NULL),
-(58,'PAYE all employees',NULL,'42209',0,1,1,5,NULL),
-(59,'NSSF all employees',NULL,'42210',0,1,1,5,NULL),
-(60,'Lunch Allowances all employees',NULL,'42211',0,1,1,5,NULL),
-(61,'IT software and maintenance',NULL,'42300',0,1,2,5,NULL),
-(62,'Mifos maintenance contract 12 months',NULL,'42301',0,1,1,5,NULL),
-(63,'VPS Contract 12 months',NULL,'42302',0,1,1,5,NULL),
-(64,'Bulk SMS Service',NULL,'42303',0,1,1,5,NULL),
-(65,'Support Accounting Software',NULL,'42304',0,1,1,5,NULL),
-(66,'Mifos Instance Setup',NULL,'42305',0,1,1,5,NULL),
-(67,'Misc support expense',NULL,'42306',0,1,1,5,NULL),
-(68,'Warid Mobile Line',NULL,'42307',0,1,1,5,NULL),
-(69,'Landline',NULL,'42308',0,1,1,5,NULL),
-(70,'Modem Alice',NULL,'42309',0,1,1,5,NULL),
-(71,'Modem Irene',NULL,'42310',0,1,1,5,NULL),
-(72,'Modem Richard',NULL,'42311',0,1,1,5,NULL),
-(73,'Repairs',NULL,'42312',0,1,1,5,NULL),
-(74,'Airtime Expenses',NULL,'42400',0,1,2,5,NULL),
-(75,'Airtime Alice',NULL,'42401',0,1,1,5,NULL),
-(76,'Airtime Richard',NULL,'42402',0,1,1,5,NULL),
-(77,'Airtime Loan Office TBA',NULL,'42403',0,1,1,5,NULL),
-(78,'Special Airtime Alice',NULL,'42404',0,1,1,5,NULL),
-(79,'Transportation',NULL,'42500',0,1,2,5,NULL),
-(80,'Flat monthly transportation cost',NULL,'42501',0,1,1,5,NULL),
-(81,'Faciliation cost for Richard',NULL,'42502',0,1,1,5,NULL),
-(82,'Faciliation cost for Loan Officer TBA',NULL,'42503',0,1,1,5,NULL),
-(83,'Consultancy Expenses',NULL,'42600',0,1,2,5,NULL),
-(84,'Audit Fees',NULL,'42601',0,1,1,5,NULL),
-(85,'Legal Fees',NULL,'42602',0,1,1,5,NULL),
-(86,'Miscellaneous Expenses Account',NULL,'42700',0,1,2,5,NULL),
-(87,'MFI License',NULL,'42703',0,1,1,5,NULL),
-(88,'Sundy Expenses',NULL,'42704',0,1,1,5,NULL),
-(89,'Bank Fees',NULL,'42800',0,1,2,5,NULL),
-(90,'Bank Charges Operating Account',NULL,'42801',0,1,1,5,NULL),
-(91,'Bank Charges Expense Account',NULL,'42802',0,1,1,5,NULL),
-(92,'E.H Account',NULL,'42900',0,1,2,5,NULL),
-(93,'Airtime',NULL,'42901',0,1,1,5,NULL),
-(94,'Modem',NULL,'42902',0,1,1,5,NULL),
-(95,'Meals',NULL,'42903',0,1,1,5,NULL),
-(96,'Transportation',NULL,'42904',0,1,1,5,NULL),
-(97,'Miscellaneous',NULL,'42905',0,1,1,5,NULL);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/ceda/ceda-user-office-product-setup.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/ceda/ceda-user-office-product-setup.sql b/fineract-db/multi-tenant-demo-backups/ceda/ceda-user-office-product-setup.sql
deleted file mode 100644
index 0590448..0000000
--- a/fineract-db/multi-tenant-demo-backups/ceda/ceda-user-office-product-setup.sql
+++ /dev/null
@@ -1,104 +0,0 @@
-DELETE FROM `m_organisation_currency` WHERE id>0;
-
-INSERT INTO `m_organisation_currency`
-(
-`code`,
-`decimal_places`,
-`name`,
-`display_symbol`,
-`internationalized_name_code`)
-VALUES
-('UGX', 2, 'Uganda Shilling', 'USh', 'currency.UGX');
-
-
-UPDATE `m_appuser` SET `username` = 'admin' WHERE id=1;
-
-INSERT INTO `m_appuser`
-(`is_deleted`,
-`office_id`,
-`username`,
-`firstname`,
-`lastname`,
-`password`,
-`email`,
-`firsttime_login_remaining`,
-`nonexpired`,
-`nonlocked`,
-`nonexpired_credentials`,
-`enabled`)
-VALUES
-(0, 1, 'keithwoodlock', 'Keith', 'Woodlock', 
-'4f607e9b6cffbe7d3db92d4bfa3391c7aa751727b4ea29d08fddf9dd72e6e7e3', 'keithwoodlock@gmail.com', 0, 1, 1, 1, 1);
-
-INSERT INTO `m_appuser_role`
-(`appuser_id`,`role_id`) VALUES (2,1);
-
-UPDATE `m_office` SET `name` = 'CEDA Microfinance Ltd.' WHERE id=1;
-
-INSERT INTO `m_office`
-(
-`parent_id`,
-`hierarchy`,
-`external_id`,
-`name`,
-`opening_date`)
-VALUES 
-(1, '.2.', 2, 'Uganda (Kampala)', '2009-01-01');
-
-
-INSERT INTO `m_staff`
-(
-`is_loan_officer`,
-`office_id`,
-`firstname`,
-`lastname`,
-`display_name`)
-VALUES
-(1, 1, 'CEDA HO', 'LoanOfficer', 'LoanOfficer, CEDA HO'),
-(1, 2, 'Kampala', 'LoanOfficer', 'LoanOfficer, Kampala');
-
-
-INSERT INTO `m_charge`
-(
-`name`,
-`currency_code`,
-`charge_applies_to_enum`,
-`charge_time_enum`,
-`charge_calculation_enum`,
-`amount`,
-`is_penalty`,
-`is_active`,
-`is_deleted`)
-VALUES ('Bank Fee (per installment)', 'UGX', 1, 2, 1, 1500.000000, 0, 1, 0);
-
-
-INSERT INTO `m_product_loan`
-(
-`currency_code`,
-`currency_digits`,
-`principal_amount`,
-`min_principal_amount`,
-`max_principal_amount`,
-`arrearstolerance_amount`,
-`name`,
-`description`,
-`fund_id`,
-`nominal_interest_rate_per_period`,
-`interest_period_frequency_enum`,
-`annual_nominal_interest_rate`,
-`interest_method_enum`,
-`interest_calculated_in_period_enum`,
-`repay_every`,
-`repayment_period_frequency_enum`,
-`number_of_repayments`,
-`amortization_method_enum`,
-`accounting_type`,
-`loan_transaction_strategy_id`)
-VALUES
-('UGX', 2, 1000000.000000, 0, 1000000000000.000000, null , 'Kampala Product (with cash accounting)', 
-'Typical Kampala loan product with cash accounting enabled for testing.', null , 
-24.000000, 3, 24.000000, 1, 1, 1, 2, 12, 1, 2, 2);
-
--- mapping of that loan product to GL Accounts
-INSERT INTO `acc_product_mapping` 
-VALUES (1,4,1,1,1),(2,8,1,1,2),(3,34,1,1,3),(4,37,1,1,4),(5,35,1,1,5),(6,97,1,1,6);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/default-demo/README.md
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/default-demo/README.md b/fineract-db/multi-tenant-demo-backups/default-demo/README.md
deleted file mode 100644
index 6cdf3ec..0000000
--- a/fineract-db/multi-tenant-demo-backups/default-demo/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-default Demo
-======
-
-This demo database contains:
-
-- DDL of latest schema
-
-- Minimum reference data required for deployment of platform which is:
-  -  Its mandatory to have one selected currency so we default to several of latin-america currencies
-  -  Its mandatory to have one root or head office, so we have one created by default called a 'Latam HO'
-  -  Permissions supported/needed by latest release of software are setup
-  -  Its mandatory to have at least one role when creating new users so we have one role created by default called 'Super user' which has the special permission 'Full Authorisation'. Any user with this role can do anything in the system.
-  -  Its required to have at least one application user setup so remaining setup can be done through ui so we have on application user created by default with username 'quipo' with a password of 'quipo'. Application users must be associated with an office and a role so this user is associated with 'Latam HO' and 'Super user' role allowing this user to do any operation in any office(branch).
-
-Minimum amount of data to support api-docs interaction.
\ No newline at end of file


[11/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java
deleted file mode 100644
index 3d6a4ef..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java
+++ /dev/null
@@ -1,2079 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.math.BigDecimal;
-import java.text.DateFormat;
-import java.text.DecimalFormat;
-import java.text.DecimalFormatSymbols;
-import java.text.NumberFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.fineract.accounting.common.AccountingConstants.FINANCIAL_ACTIVITY;
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.accounting.Account;
-import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
-import org.apache.fineract.integrationtests.common.accounting.FinancialActivityAccountHelper;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntry;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntryHelper;
-import org.apache.fineract.integrationtests.common.accounting.Account.AccountType;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositAccountHelper;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositAccountStatusChecker;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositProductHelper;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsStatusChecker;
-import org.joda.time.DateTime;
-import org.joda.time.Days;
-import org.joda.time.Months;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "unused", "unchecked", "rawtypes", "static-access" })
-public class FixedDepositTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private FixedDepositProductHelper fixedDepositProductHelper;
-    private FixedDepositAccountHelper fixedDepositAccountHelper;
-    private AccountHelper accountHelper;
-    private SavingsAccountHelper savingsAccountHelper;
-    private JournalEntryHelper journalEntryHelper;
-    private FinancialActivityAccountHelper financialActivityAccountHelper;
-
-    public static final String WHOLE_TERM = "1";
-    public static final String TILL_PREMATURE_WITHDRAWAL = "2";
-    private static final String DAILY = "1";
-    private static final String MONTHLY = "4";
-    private static final String QUARTERLY = "5";
-    private static final String BI_ANNUALLY = "6";
-    private static final String ANNUALLY = "7";
-    private static final String INTEREST_CALCULATION_USING_DAILY_BALANCE = "1";
-    private static final String INTEREST_CALCULATION_USING_AVERAGE_DAILY_BALANCE = "2";
-    private static final String DAYS_360 = "360";
-    private static final String DAYS_365 = "365";
-
-    private static final String NONE = "1";
-    private static final String CASH_BASED = "2";
-
-    public static final String MINIMUM_OPENING_BALANCE = "1000.0";
-    public static final String ACCOUNT_TYPE_INDIVIDUAL = "INDIVIDUAL";
-    public static final String CLOSURE_TYPE_WITHDRAW_DEPOSIT = "100";
-    public static final String CLOSURE_TYPE_TRANSFER_TO_SAVINGS = "200";
-    public static final String CLOSURE_TYPE_REINVEST = "300";
-    public static final Integer DAILY_COMPOUNDING_INTERVAL = 0;
-    public static final Integer MONTHLY_INTERVAL = 1;
-    public static final Integer QUARTERLY_INTERVAL = 3;
-    public static final Integer BIANNULLY_INTERVAL = 6;
-    public static final Integer ANNUL_INTERVAL = 12;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.requestSpec.header("Fineract-Platform-TenantId", "default");
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.journalEntryHelper = new JournalEntryHelper(this.requestSpec, this.responseSpec);
-        this.financialActivityAccountHelper = new FinancialActivityAccountHelper(this.requestSpec);
-    }
-
-    /***
-     * Test case for Fixed Deposit Account premature closure with
-     * transaction type withdrawal and Cash Based accounting enabled
-     */
-    @Test
-    public void testFixedDepositAccountWithPrematureClosureTypeWithdrawal() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-        
-        /***
-         * Create GL Accounts for product account mapping
-         */
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        Integer numberOfDaysLeft = (daysInMonth - currentDate) + 1;
-        todaysDate.add(Calendar.DATE, numberOfDaysLeft);
-        final String INTEREST_POSTED_DATE = dateFormat.format(todaysDate.getTime());
-        final String CLOSED_ON_DATE = dateFormat.format(Calendar.getInstance().getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        /***
-         * Create FD product with CashBased accounting enabled
-         */
-        final String accountingRule = CASH_BASED;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule, assetAccount, liabilityAccount,
-                incomeAccount, expenseAccount);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        /***
-         * Apply for FD account with created product and verify status
-         */
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        /***
-         * Approve the FD account and verify whether account is approved
-         */
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        /***
-         * Activate the FD Account and verify whether account is activated
-         */
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.activateFixedDeposit(fixedDepositAccountId, ACTIVATION_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsActive(fixedDepositAccountStatusHashMap);
-        
-        HashMap accountSummary = this.fixedDepositAccountHelper.getFixedDepositSummary(fixedDepositAccountId);
-
-        Float depositAmount = (Float) accountSummary.get("totalDeposits");
-        
-        /***
-         * Verify journal entries posted for initial deposit transaction which
-         * happened at activation time
-         */
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(depositAmount, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountInitialEntry = { new JournalEntry(depositAmount, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, ACTIVATION_DATE, assetAccountInitialEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, ACTIVATION_DATE, liablilityAccountInitialEntry);
-
-        /***
-         * Update interest earned of FD account
-         */
-        fixedDepositAccountId = this.fixedDepositAccountHelper.calculateInterestForFixedDeposit(fixedDepositAccountId);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        /***
-         * Post interest and verify the account summary
-         */
-        Integer transactionIdForPostInterest = this.fixedDepositAccountHelper.postInterestForFixedDeposit(fixedDepositAccountId);
-        Assert.assertNotNull(transactionIdForPostInterest);
-        
-        accountSummary = this.fixedDepositAccountHelper.getFixedDepositSummary(fixedDepositAccountId);
-        Float totalInterestPosted = (Float) accountSummary.get("totalInterestPosted");
-
-        /***
-         * Verify journal entries transactions for interest posting transaction
-         */
-        final JournalEntry[] expenseAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(expenseAccount, INTEREST_POSTED_DATE, expenseAccountEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, INTEREST_POSTED_DATE, liablilityAccountEntry);
-
-        /***
-         * Preclose the FD account verify whether account is preClosed
-         */
-        HashMap fixedDepositPrematureData = this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
-
-        Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
-                fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(prematureClosureTransactionId);
-
-        fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositAccountIsPrematureClosed(fixedDepositAccountStatusHashMap);
-
-        /***
-         * Verify journal entry transactions for preclosure transaction
-         */
-        HashMap accountDetails = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        Float maturityAmount = Float.valueOf(accountDetails.get("maturityAmount").toString());
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount,
-                JournalEntry.TransactionType.CREDIT));
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount,
-                JournalEntry.TransactionType.DEBIT));
-
-    }
-
-    /***
-     * Test case for FD Account premature closure with transaction transfers to
-     * savings account and Cash Based accounting enabled
-     */
-    @Test
-    public void testFixedDepositAccountWithPrematureClosureTypeTransferToSavings() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-        
-        /***
-         * Create GL Accounts for product account mapping
-         */
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        Integer numberOfDaysLeft = (daysInMonth - currentDate) + 1;
-        todaysDate.add(Calendar.DATE, numberOfDaysLeft);
-        final String INTEREST_POSTED_DATE = dateFormat.format(todaysDate.getTime());
-        final String CLOSED_ON_DATE = dateFormat.format(Calendar.getInstance().getTime());
-        
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        /***
-         * Create Savings product with CashBased accounting enabled
-         */
-        final String accountingRule = CASH_BASED;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE, accountingRule,
-                assetAccount, liabilityAccount, incomeAccount, expenseAccount);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientId, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        /***
-         * Create FD product with CashBased accounting enabled
-         */
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule, assetAccount, liabilityAccount,
-                incomeAccount, expenseAccount);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.activateFixedDeposit(fixedDepositAccountId, ACTIVATION_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsActive(fixedDepositAccountStatusHashMap);
-
-        HashMap accountSummary = this.fixedDepositAccountHelper.getFixedDepositSummary(fixedDepositAccountId);
-
-        Float depositAmount = (Float) accountSummary.get("totalDeposits");
-        
-        /***
-         * Verify journal entries posted for initial deposit transaction which
-         * happened at activation time
-         */
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(depositAmount, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountInitialEntry = { new JournalEntry(depositAmount, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, ACTIVATION_DATE, assetAccountInitialEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, ACTIVATION_DATE, liablilityAccountInitialEntry);
-
-        /***
-         * Update interest earned of FD account
-         */
-        fixedDepositAccountId = this.fixedDepositAccountHelper.calculateInterestForFixedDeposit(fixedDepositAccountId);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        /***
-         * Post interest and verify the account summary
-         */
-        Integer transactionIdForPostInterest = this.fixedDepositAccountHelper.postInterestForFixedDeposit(fixedDepositAccountId);
-        Assert.assertNotNull(transactionIdForPostInterest);
-
-        accountSummary = this.fixedDepositAccountHelper.getFixedDepositSummary(fixedDepositAccountId);
-        Float totalInterestPosted = (Float) accountSummary.get("totalInterestPosted");
-
-        /***
-         * Verify journal entries transactions for interest posting transaction
-         */
-        final JournalEntry[] expenseAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(expenseAccount, INTEREST_POSTED_DATE, expenseAccountEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, INTEREST_POSTED_DATE, liablilityAccountEntry);
-        
-        HashMap savingsSummaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        Float balanceBefore = (Float) savingsSummaryBefore.get("accountBalance");
-        
-        /***
-         * Retrieve mapped financial account for liability transfer
-         */
-        Account financialAccount = getMappedLiabilityFinancialAccount();
-
-        HashMap fixedDepositPrematureData = this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
-
-        /***
-         * Preclose the account and verify journal entries
-         */
-        Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
-                fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_TRANSFER_TO_SAVINGS, savingsId, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(prematureClosureTransactionId);
-
-        fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositAccountIsPrematureClosed(fixedDepositAccountStatusHashMap);
-
-        HashMap fixedDepositData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        Float prematurityAmount = (Float) fixedDepositData.get("maturityAmount");
-
-        /***
-         * Verify journal entry transactions for preclosure transaction As this
-         * transaction is an account transfer you should get financial account
-         * mapping details and verify amounts
-         */
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, CLOSED_ON_DATE, new JournalEntry(prematurityAmount,
-                JournalEntry.TransactionType.CREDIT), new JournalEntry(prematurityAmount, JournalEntry.TransactionType.DEBIT));
-
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(financialAccount, CLOSED_ON_DATE, new JournalEntry(prematurityAmount,
-                JournalEntry.TransactionType.DEBIT), new JournalEntry(prematurityAmount, JournalEntry.TransactionType.CREDIT));
-        
-        HashMap savingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        Float balanceAfter = (Float) savingsSummaryAfter.get("accountBalance");
-        Float expectedSavingsBalance = balanceBefore + prematurityAmount;
-
-        Assert.assertEquals("Verifying Savings Account Balance after Premature Closure", expectedSavingsBalance, balanceAfter);
-
-    }
-
-    /***
-     * Test case for Fixed Deposit Account premature closure with
-     * transaction type ReInvest and Cash Based accounting enabled
-     */
-    @Test
-    public void testFixedDepositAccountWithPrematureClosureTypeReinvest() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        FixedDepositAccountHelper fixedDepositAccountHelperValidationError = new FixedDepositAccountHelper(this.requestSpec,
-                new ResponseSpecBuilder().build());
-
-        /***
-         * Create GL Accounts for product account mapping
-         */
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-        
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        Integer numberOfDaysLeft = (daysInMonth - currentDate) + 1;
-        todaysDate.add(Calendar.DATE, numberOfDaysLeft);
-        final String INTEREST_POSTED_DATE = dateFormat.format(todaysDate.getTime());
-        final String CLOSED_ON_DATE = dateFormat.format(Calendar.getInstance().getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        /***
-         * Create FD product with CashBased accounting enabled
-         */
-        final String accountingRule = CASH_BASED;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule, assetAccount, liabilityAccount,
-                incomeAccount, expenseAccount);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.activateFixedDeposit(fixedDepositAccountId, ACTIVATION_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsActive(fixedDepositAccountStatusHashMap);
-        
-        HashMap accountSummary = this.fixedDepositAccountHelper.getFixedDepositSummary(fixedDepositAccountId);
-
-        Float depositAmount = (Float) accountSummary.get("totalDeposits");
-        
-        /***
-         * Verify journal entries posted for initial deposit transaction which
-         * happened at activation time
-         */
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(depositAmount, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountInitialEntry = { new JournalEntry(depositAmount, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, ACTIVATION_DATE, assetAccountInitialEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, ACTIVATION_DATE, liablilityAccountInitialEntry);
-
-        fixedDepositAccountId = this.fixedDepositAccountHelper.calculateInterestForFixedDeposit(fixedDepositAccountId);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        Integer transactionIdForPostInterest = this.fixedDepositAccountHelper.postInterestForFixedDeposit(fixedDepositAccountId);
-        Assert.assertNotNull(transactionIdForPostInterest);
-
-        accountSummary = this.fixedDepositAccountHelper.getFixedDepositSummary(fixedDepositAccountId);
-        Float totalInterestPosted = (Float) accountSummary.get("totalInterestPosted");
-
-        /***
-         * Verify journal entries transactions for interest posting transaction
-         */
-        final JournalEntry[] expenseAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(expenseAccount, INTEREST_POSTED_DATE, expenseAccountEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, INTEREST_POSTED_DATE, liablilityAccountEntry);
-
-        HashMap fixedDepositPrematureData = this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
-
-        ArrayList<HashMap> errorResponse = (ArrayList<HashMap>) fixedDepositAccountHelperValidationError.prematureCloseForFixedDeposit(
-                fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_REINVEST, null, CommonConstants.RESPONSE_ERROR);
-
-        assertEquals("validation.msg.fixeddepositaccount.onAccountClosureId.reinvest.not.allowed",
-                errorResponse.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-    }
-
-    @Test
-    public void testFixedDepositAccountUpdation() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-        String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        ArrayList<HashMap> allFixedDepositProductsData = this.fixedDepositProductHelper.retrieveAllFixedDepositProducts(this.requestSpec,
-                this.responseSpec);
-        HashMap fixedDepositProductData = this.fixedDepositProductHelper.retrieveFixedDepositProductById(this.requestSpec,
-                this.responseSpec, fixedDepositProductId.toString());
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        todaysDate.add(Calendar.DATE, -1);
-        SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        HashMap modificationsHashMap = this.fixedDepositAccountHelper.updateFixedDepositAccount(clientId.toString(),
-                fixedDepositProductId.toString(), fixedDepositAccountId.toString(), VALID_FROM, VALID_TO, WHOLE_TERM, SUBMITTED_ON_DATE);
-        Assert.assertTrue(modificationsHashMap.containsKey("submittedOnDate"));
-
-    }
-
-    @Test
-    public void testFixedDepositAccountUndoApproval() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.undoApproval(fixedDepositAccountId);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-    }
-
-    @Test
-    public void testFixedDepositAccountRejectedAndClosed() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String REJECTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.rejectApplication(fixedDepositAccountId, REJECTED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsRejected(fixedDepositAccountStatusHashMap);
-        FixedDepositAccountStatusChecker.verifyFixedDepositAccountIsClosed(fixedDepositAccountStatusHashMap);
-    }
-
-    @Test
-    public void testFixedDepositAccountWithdrawnByClientAndClosed() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String WITHDRAWN_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.withdrawApplication(fixedDepositAccountId, WITHDRAWN_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsWithdrawn(fixedDepositAccountStatusHashMap);
-        FixedDepositAccountStatusChecker.verifyFixedDepositAccountIsClosed(fixedDepositAccountStatusHashMap);
-    }
-
-    @Test
-    public void testFixedDepositAccountIsDeleted() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountId = (Integer) this.fixedDepositAccountHelper.deleteFixedDepositApplication(fixedDepositAccountId, "resourceId");
-        Assert.assertNotNull(fixedDepositAccountId);
-    }
-
-    @Test
-    public void testMaturityAmountForMonthlyCompoundingAndMonthlyPosting_With_365_Days() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        todaysDate.add(Calendar.DATE, -(currentDate - 1));
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        HashMap fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        Float principal = (Float) fixedDepositAccountData.get("depositAmount");
-        Float maturityAmount = (Float) fixedDepositAccountData.get("maturityAmount");
-        Integer depositPeriod = (Integer) fixedDepositAccountData.get("depositPeriod");
-        HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
-        Float interestRate = this.fixedDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-
-        principal = this.fixedDepositAccountHelper.getPrincipalAfterCompoundingInterest(todaysDate, principal, depositPeriod,
-                interestPerDay, MONTHLY_INTERVAL, MONTHLY_INTERVAL);
-
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-        principal = new Float(decimalFormat.format(principal));
-        maturityAmount = new Float(decimalFormat.format(maturityAmount));
-        System.out.println(principal);
-        Assert.assertEquals("Verifying Maturity amount for Fixed Deposit Account", principal, maturityAmount);
-    }
-
-    @Test
-    public void testMaturityAmountForMonthlyCompoundingAndMonthlyPosting_With_360_Days() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        todaysDate.add(Calendar.DATE, -(currentDate - 1));
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap modificationsHashMap = this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(),
-                fixedDepositProductId.toString(), fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_360,
-                WHOLE_TERM, INTEREST_CALCULATION_USING_DAILY_BALANCE, MONTHLY, MONTHLY);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        HashMap fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        Float principal = (Float) fixedDepositAccountData.get("depositAmount");
-        Float maturityAmount = (Float) fixedDepositAccountData.get("maturityAmount");
-        Integer depositPeriod = (Integer) fixedDepositAccountData.get("depositPeriod");
-        HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
-        Float interestRate = this.fixedDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-
-        principal = this.fixedDepositAccountHelper.getPrincipalAfterCompoundingInterest(todaysDate, principal, depositPeriod,
-                interestPerDay, MONTHLY_INTERVAL, MONTHLY_INTERVAL);
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-        principal = new Float(decimalFormat.format(principal));
-        maturityAmount = new Float(decimalFormat.format(maturityAmount));
-        System.out.println(principal);
-        Assert.assertEquals("Verifying Maturity amount for Fixed Deposit Account", principal, maturityAmount);
-    }
-
-    @Test
-    public void testPrematureClosureAmountWithPenalInterestForWholeTerm_With_365() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.MONTH, 1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, 1);
-        final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.activateFixedDeposit(fixedDepositAccountId, ACTIVATION_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsActive(fixedDepositAccountStatusHashMap);
-
-        HashMap fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        Float principal = (Float) fixedDepositAccountData.get("depositAmount");
-        Integer depositPeriod = (Integer) fixedDepositAccountData.get("depositPeriod");
-        HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
-        Float preClosurePenalInterestRate = (Float) fixedDepositAccountData.get("preClosurePenalInterest");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
-
-        Float interestRate = this.fixedDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
-        interestRate -= preClosurePenalInterestRate;
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        todaysDate.add(Calendar.MONTH, -1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        daysInMonth = (daysInMonth - currentDate) + 1;
-        Float interestPerMonth = (float) (interestPerDay * principal * daysInMonth);
-        principal += interestPerMonth;
-        todaysDate.add(Calendar.DATE, daysInMonth);
-        System.out.println(monthDayFormat.format(todaysDate.getTime()));
-
-        interestPerMonth = (float) (interestPerDay * principal * currentDate);
-        System.out.println("IPM = " + interestPerMonth);
-        principal += interestPerMonth;
-        System.out.println("principal = " + principal);
-
-        HashMap fixedDepositPrematureData = this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
-
-        Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
-                fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(prematureClosureTransactionId);
-
-        fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositAccountIsPrematureClosed(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-
-        principal = new Float(decimalFormat.format(principal));
-        Float maturityAmount = new Float(decimalFormat.format(fixedDepositAccountData.get("maturityAmount")));
-
-        Assert.assertEquals("Verifying Pre-Closure maturity amount", principal, maturityAmount);
-
-    }
-
-    @Test
-    public void testPrematureClosureAmountWithPenalInterestForWholeTerm_With_360() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.MONTH, 1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, 1);
-        final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap modificationsHashMap = this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(),
-                fixedDepositProductId.toString(), fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_360,
-                WHOLE_TERM, INTEREST_CALCULATION_USING_DAILY_BALANCE, MONTHLY, MONTHLY);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.activateFixedDeposit(fixedDepositAccountId, ACTIVATION_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsActive(fixedDepositAccountStatusHashMap);
-
-        HashMap fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        Float principal = (Float) fixedDepositAccountData.get("depositAmount");
-        Integer depositPeriod = (Integer) fixedDepositAccountData.get("depositPeriod");
-        HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
-        Float preClosurePenalInterestRate = (Float) fixedDepositAccountData.get("preClosurePenalInterest");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
-
-        Float interestRate = this.fixedDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
-        interestRate -= preClosurePenalInterestRate;
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        todaysDate.add(Calendar.MONTH, -1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        daysInMonth = (daysInMonth - currentDate) + 1;
-        Float interestPerMonth = (float) (interestPerDay * principal * daysInMonth);
-        principal += interestPerMonth;
-        todaysDate.add(Calendar.DATE, daysInMonth);
-        System.out.println(monthDayFormat.format(todaysDate.getTime()));
-
-        interestPerMonth = (float) (interestPerDay * principal * currentDate);
-        System.out.println("IPM = " + interestPerMonth);
-        principal += interestPerMonth;
-        System.out.println("principal = " + principal);
-
-        HashMap fixedDepositPrematureData = this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
-
-        Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
-                fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(prematureClosureTransactionId);
-
-        fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositAccountIsPrematureClosed(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-
-        principal = new Float(decimalFormat.format(principal));
-        Float maturityAmount = new Float(decimalFormat.format(fixedDepositAccountData.get("maturityAmount")));
-
-        Assert.assertEquals("Verifying Pre-Closure maturity amount", principal, maturityAmount);
-
-    }
-
-    @Test
-    public void testPrematureClosureAmountWithPenalInterestTillPrematureWithdrawal_With_365_Days() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.MONTH, 1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, 1);
-        final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, TILL_PREMATURE_WITHDRAWAL);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.activateFixedDeposit(fixedDepositAccountId, ACTIVATION_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsActive(fixedDepositAccountStatusHashMap);
-
-        HashMap fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        Float principal = (Float) fixedDepositAccountData.get("depositAmount");
-        HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
-        Float preClosurePenalInterestRate = (Float) fixedDepositAccountData.get("preClosurePenalInterest");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
-
-        Calendar activationDate = Calendar.getInstance();
-        activationDate.add(Calendar.MONTH, -1);
-        activationDate.add(Calendar.DAY_OF_MONTH, -1);
-        DateTime startDate = new DateTime(activationDate.getTime());
-
-        Calendar prematureClosureDate = Calendar.getInstance();
-        DateTime endDate = new DateTime(prematureClosureDate.getTime());
-
-        Integer depositedPeriod = Months.monthsBetween(startDate, endDate).getMonths();
-
-        Float interestRate = this.fixedDepositAccountHelper.getInterestRate(interestRateChartData, depositedPeriod);
-        interestRate -= preClosurePenalInterestRate;
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        todaysDate.add(Calendar.MONTH, -1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        daysInMonth = (daysInMonth - currentDate) + 1;
-        Float interestPerMonth = (float) (interestPerDay * principal * daysInMonth);
-        principal += interestPerMonth;
-        todaysDate.add(Calendar.DATE, daysInMonth);
-        System.out.println(monthDayFormat.format(todaysDate.getTime()));
-
-        interestPerMonth = (float) (interestPerDay * principal * currentDate);
-        System.out.println("IPM = " + interestPerMonth);
-        principal += interestPerMonth;
-        System.out.println("principal = " + principal);
-
-        HashMap fixedDepositPrematureData = this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
-
-        Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
-                fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(prematureClosureTransactionId);
-
-        fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositAccountIsPrematureClosed(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-        Float expectedPrematureAmount = new Float(decimalFormat.format(principal));
-        Float maturityAmount = new Float(decimalFormat.format(fixedDepositAccountData.get("maturityAmount")));
-
-        Assert.assertEquals("Verifying Pre-Closure maturity amount", expectedPrematureAmount, maturityAmount);
-
-    }
-
-    @Test
-    public void testPrematureClosureAmountWithPenalInterestTillPrematureWithdrawal_With_360_Days() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.MONTH, 1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, 1);
-        final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, TILL_PREMATURE_WITHDRAWAL);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap modificationsHashMap = this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(),
-                fixedDepositProductId.toString(), fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_360,
-                TILL_PREMATURE_WITHDRAWAL, INTEREST_CALCULATION_USING_DAILY_BALANCE, MONTHLY, MONTHLY);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.activateFixedDeposit(fixedDepositAccountId, ACTIVATION_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsActive(fixedDepositAccountStatusHashMap);
-
-        HashMap fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        Float principal = (Float) fixedDepositAccountData.get("depositAmount");
-        HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
-        Float preClosurePenalInterestRate = (Float) fixedDepositAccountData.get("preClosurePenalInterest");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
-
-        Calendar activationDate = Calendar.getInstance();
-        activationDate.add(Calendar.MONTH, -1);
-        activationDate.add(Calendar.DAY_OF_MONTH, -1);
-        DateTime startDate = new DateTime(activationDate.getTime());
-
-        Calendar prematureClosureDate = Calendar.getInstance();
-        DateTime endDate = new DateTime(prematureClosureDate.getTime());
-
-        Integer depositedPeriod = Months.monthsBetween(startDate, endDate).getMonths();
-
-        Float interestRate = this.fixedDepositAccountHelper.getInterestRate(interestRateChartData, depositedPeriod);
-        interestRate -= preClosurePenalInterestRate;
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        todaysDate.add(Calendar.MONTH, -1);
-        todaysDate.add(Calendar.DAY_OF_MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        daysInMonth = (daysInMonth - currentDate) + 1;
-        Float interestPerMonth = (float) (interestPerDay * principal * daysInMonth);
-        principal += interestPerMonth;
-        todaysDate.add(Calendar.DATE, daysInMonth);
-        System.out.println(monthDayFormat.format(todaysDate.getTime()));
-
-        interestPerMonth = (float) (interestPerDay * principal * currentDate);
-        System.out.println("IPM = " + interestPerMonth);
-        principal += interestPerMonth;
-        System.out.println("principal = " + principal);
-
-        HashMap fixedDepositPrematureData = this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
-
-        Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
-                fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(prematureClosureTransactionId);
-
-        fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositAccountIsPrematureClosed(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-        Float expectedPrematureAmount = new Float(decimalFormat.format(principal));
-        Float maturityAmount = new Float(decimalFormat.format(fixedDepositAccountData.get("maturityAmount")));
-
-        Assert.assertEquals("Verifying Pre-Closure maturity amount", expectedPrematureAmount, maturityAmount);
-
-    }
-
-    @Test
-    public void testMaturityAmountForDailyCompoundingAndMonthlyPosting_With_365_Days() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        todaysDate.add(Calendar.DATE, -(currentDate - 1));
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap modificationsHashMap = this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(),
-                fixedDepositProductId.toString(), fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_365,
-                WHOLE_TERM, INTEREST_CALCULATION_USING_DAILY_BALANCE, DAILY, MONTHLY);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        HashMap fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        Float principal = (Float) fixedDepositAccountData.get("depositAmount");
-        Float maturityAmount = (Float) fixedDepositAccountData.get("maturityAmount");
-        Integer depositPeriod = (Integer) fixedDepositAccountData.get("depositPeriod");
-        HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
-
-        Float interestRate = this.fixedDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-
-        principal = this.fixedDepositAccountHelper.getPrincipalAfterCompoundingInterest(todaysDate, principal, depositPeriod,
-                interestPerDay, DAILY_COMPOUNDING_INTERVAL, MONTHLY_INTERVAL);
-
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-        principal = new Float(decimalFormat.format(principal));
-        maturityAmount = new Float(decimalFormat.format(maturityAmount));
-        System.out.println(principal);
-        Assert.assertEquals("Verifying Maturity amount for Fixed Deposit Account", principal, maturityAmount);
-
-    }
-
-    @Test
-    public void testMaturityAmountForDailyCompoundingAndMonthlyPosting_With_360_Days() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        todaysDate.add(Calendar.DATE, -(currentDate - 1));
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        System.out.println("Submitted Date:"+SUBMITTED_ON_DATE);
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap modificationsHashMap = this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(),
-                fixedDepositProductId.toString(), fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_360,
-                WHOLE_TERM, INTEREST_CALCULATION_USING_DAILY_BALANCE, DAILY, MONTHLY);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        HashMap fixedDepositAccountData = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
-                fixedDepositAccountId);
-        Float principal = (Float) fixedDepositAccountData.get("depositAmount");
-        Float maturityAmount = (Float) fixedDepositAccountData.get("maturityAmount");
-        Integer depositPeriod = (Integer) fixedDepositAccountData.get("depositPeriod");
-        HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, t

<TRUNCATED>


[37/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/jquery.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/jquery.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/jquery.js
deleted file mode 100644
index 76d21a4..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/jquery.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery-1.10.2.min.map
-*/
-(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;
 if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){retur
 n x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.ran
 dom()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);fo
 r(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t)
 {e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length
 =i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply
 (e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<
 <31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?
 :\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.ge
 tElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t
 .parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r
 .attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e
 ):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.
 call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);wh
 ile(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at
 .getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0]
 .slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(
 m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(
 e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"
 option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);retu
 rn e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!
 0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e
 .length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]
 ||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached
 =ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n
 ,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:functi
 on(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},
 when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.
 getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.c
 hecked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.d
 isplay="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offs
 etWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
-}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,
 embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeDat
 a(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:functi
 on(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.le
 ngth>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while
 (i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+=""
 :x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:funct
 ion(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!=
 =t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r
 )?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","c
 ontentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g
 =y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.
 test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i
 )){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.
 isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t
 =r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.tar
 get?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n
 ){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i
 ))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e)
 {this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof
  e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))
 /,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.len
 gth>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},sibl
 ings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!=
 =n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","
 </map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domMani
 p(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhites
 pace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++
 )i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.
 data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagNa
 me!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.
 nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=
 x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
-u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,
 $t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style
 &&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||
 x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.widt
 h=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i
 ||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return I
 t.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidde
 n(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURI
 Component(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return
  this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x
 .ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text
 /javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),
 this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn+
 +)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.if
 Modified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[
 0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPr
 efilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(
 o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.usernam
 e,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){v
 ar n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.dur
 ation,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[
 r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&
 (f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(th
 is),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};ret
 urn a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t

<TRUNCATED>


[22/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/default-demo/bk_mifostenant-default.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/default-demo/bk_mifostenant-default.sql b/fineract-db/multi-tenant-demo-backups/default-demo/bk_mifostenant-default.sql
deleted file mode 100644
index 306570a..0000000
--- a/fineract-db/multi-tenant-demo-backups/default-demo/bk_mifostenant-default.sql
+++ /dev/null
@@ -1,1935 +0,0 @@
--- MySQL dump 10.13  Distrib 5.1.60, for Win32 (ia32)
---
--- Host: localhost    Database: mifostenant-default
--- ------------------------------------------------------
--- Server version	5.1.60-community
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `acc_gl_account`
---
-
-DROP TABLE IF EXISTS `acc_gl_account`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_account` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(45) NOT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `gl_code` varchar(45) NOT NULL,
-  `disabled` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1',
-  `account_usage` tinyint(1) NOT NULL DEFAULT '2',
-  `classification_enum` smallint(5) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `acc_gl_code` (`gl_code`),
-  KEY `FK_ACC_0000000001` (`parent_id`),
-  CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_account`
---
-
-LOCK TABLES `acc_gl_account` WRITE;
-/*!40000 ALTER TABLE `acc_gl_account` DISABLE KEYS */;
-INSERT INTO `acc_gl_account` VALUES (1,'Petty Cash Balances',NULL,'11100',0,1,2,1,NULL),(2,'Cash in Valut 1',NULL,'11101',0,1,1,1,NULL),(3,'Bank Balances',NULL,'11200',0,1,2,1,NULL),(4,'Centenary Opening Account',NULL,'11201',0,1,1,1,NULL),(5,'Centenary Expense Account',NULL,'11202',0,1,1,1,NULL),(6,'Centenary USD Account',NULL,'11203',0,1,1,1,NULL),(7,'Loans and Advances',NULL,'13100',0,1,2,1,NULL),(8,'Loans to Clients',NULL,'13101',0,1,1,1,NULL),(9,'Outstanding Interest',NULL,'13102',0,1,1,1,NULL),(10,'Outstanding Late Payment Interest',NULL,'13103',0,1,1,1,NULL),(11,'Outstanding Bank Fees to be collected',NULL,'13104',0,1,1,1,NULL),(12,'WriteOff Accounts',NULL,'13200',0,1,2,1,NULL),(13,'Write-offs (use for funds coming in)',NULL,'13201',0,1,1,1,NULL),(14,'Write-offs outstanding principal',NULL,'13202',0,1,1,1,NULL),(15,'Write-offs outstanding interest',NULL,'13203',0,1,1,1,NULL),(16,'Write-offs collected bank fees',NULL,'13204',0,1,1,1,NULL),(17,'Write-offs hardware/furniture',NU
 LL,'13205',0,1,1,1,NULL),(18,'Fixed Assets',NULL,'14100',0,1,2,1,NULL),(19,'Office Equipment',NULL,'14101',0,1,1,1,NULL),(20,'Suspense Items (unidentified deposits)',NULL,'15000',0,1,2,1,NULL),(21,'Assets',NULL,'10000',0,1,2,1,NULL),(22,'Liabilities',NULL,'20000',0,1,2,2,NULL),(23,'Shares Account',NULL,'26100',0,1,2,2,NULL),(24,'Shares Captial',NULL,'26101',0,1,1,2,NULL),(25,'Donated Equity',NULL,'26300',0,1,2,2,NULL),(26,'Donated Equity Ameropa Foundation',NULL,'26301',0,1,1,2,NULL),(27,'Donated Equity e.h',NULL,'26302',0,1,1,2,NULL),(28,'Overpaid Amounts',NULL,'27000',0,1,2,2,NULL),(29,'Loss Provision',NULL,'28000',0,1,2,2,NULL),(30,'Provision Outstanding Principal',NULL,'28001',0,1,1,2,NULL),(31,'Provision Oustanding Interest',NULL,'28002',0,1,1,2,NULL),(32,'Income',NULL,'30000',0,1,2,4,NULL),(33,'Interest Income from Loans',NULL,'31100',0,1,2,4,NULL),(34,'Interest on Loans',NULL,'31101',0,1,1,4,NULL),(35,'Late Payment Interest',NULL,'31102',0,1,1,4,NULL),(36,'Income from Micro c
 redit & Lending Activities',NULL,'31300',0,1,2,4,NULL),(37,'Collected Bank Fees Receivable',NULL,'6201',0,1,1,4,NULL),(38,'Deposits from Loans Write Off',NULL,'31400',0,1,2,4,NULL),(39,'Expenditure',NULL,'40000',0,1,2,5,NULL),(40,'Office Expenditure Account',NULL,'42100',0,1,2,5,NULL),(41,'Water Charges',NULL,'42102',0,1,1,5,NULL),(42,'Electricity Charges',NULL,'42103',0,1,1,5,NULL),(43,'Printing and Stationary',NULL,'42105',0,1,1,5,NULL),(44,'Office Rent',NULL,'42107',0,1,1,5,NULL),(45,'Marketing Expense',NULL,'42109',0,1,1,5,NULL),(46,'Office utilities',NULL,'42112',0,1,1,5,'(supplies, toiletries, kitchen)'),(47,'Furniture',NULL,'42113',0,1,1,5,NULL),(48,'CEDA Meeting Expense',NULL,'42114',0,1,1,5,NULL),(49,'Employee Personal Expsense Account',NULL,'42200',0,1,2,5,NULL),(50,'Salary Alice',NULL,'42201',0,1,1,5,NULL),(51,'Salary Irene',NULL,'42202',0,1,1,5,NULL),(52,'Salary Richard',NULL,'42203',0,1,1,5,NULL),(53,'Salary Loan Officer TBA',NULL,'42204',0,1,1,5,NULL),(54,'Medical Insu
 rance Alice & Family',NULL,'42205',0,1,1,5,NULL),(55,'Medical Insurance Irene',NULL,'42206',0,1,1,5,NULL),(56,'Medical Insurance Richard',NULL,'42207',0,1,1,5,NULL),(57,'Medical Insurance Loan Officer TBA',NULL,'42208',0,1,1,5,NULL),(58,'PAYE all employees',NULL,'42209',0,1,1,5,NULL),(59,'NSSF all employees',NULL,'42210',0,1,1,5,NULL),(60,'Lunch Allowances all employees',NULL,'42211',0,1,1,5,NULL),(61,'IT software and maintenance',NULL,'42300',0,1,2,5,NULL),(62,'Mifos maintenance contract 12 months',NULL,'42301',0,1,1,5,NULL),(63,'VPS Contract 12 months',NULL,'42302',0,1,1,5,NULL),(64,'Bulk SMS Service',NULL,'42303',0,1,1,5,NULL),(65,'Support Accounting Software',NULL,'42304',0,1,1,5,NULL),(66,'Mifos Instance Setup',NULL,'42305',0,1,1,5,NULL),(67,'Misc support expense',NULL,'42306',0,1,1,5,NULL),(68,'Warid Mobile Line',NULL,'42307',0,1,1,5,NULL),(69,'Landline',NULL,'42308',0,1,1,5,NULL),(70,'Modem Alice',NULL,'42309',0,1,1,5,NULL),(71,'Modem Irene',NULL,'42310',0,1,1,5,NULL),(72,'Mo
 dem Richard',NULL,'42311',0,1,1,5,NULL),(73,'Repairs',NULL,'42312',0,1,1,5,NULL),(74,'Airtime Expenses',NULL,'42400',0,1,2,5,NULL),(75,'Airtime Alice',NULL,'42401',0,1,1,5,NULL),(76,'Airtime Richard',NULL,'42402',0,1,1,5,NULL),(77,'Airtime Loan Office TBA',NULL,'42403',0,1,1,5,NULL),(78,'Special Airtime Alice',NULL,'42404',0,1,1,5,NULL),(79,'Transportation',NULL,'42500',0,1,2,5,NULL),(80,'Flat monthly transportation cost',NULL,'42501',0,1,1,5,NULL),(81,'Faciliation cost for Richard',NULL,'42502',0,1,1,5,NULL),(82,'Faciliation cost for Loan Officer TBA',NULL,'42503',0,1,1,5,NULL),(83,'Consultancy Expenses',NULL,'42600',0,1,2,5,NULL),(84,'Audit Fees',NULL,'42601',0,1,1,5,NULL),(85,'Legal Fees',NULL,'42602',0,1,1,5,NULL),(86,'Miscellaneous Expenses Account',NULL,'42700',0,1,2,5,NULL),(87,'MFI License',NULL,'42703',0,1,1,5,NULL),(88,'Sundy Expenses',NULL,'42704',0,1,1,5,NULL),(89,'Bank Fees',NULL,'42800',0,1,2,5,NULL),(90,'Bank Charges Operating Account',NULL,'42801',0,1,1,5,NULL),(91,'
 Bank Charges Expense Account',NULL,'42802',0,1,1,5,NULL),(92,'E.H Account',NULL,'42900',0,1,2,5,NULL),(93,'Airtime',NULL,'42901',0,1,1,5,NULL),(94,'Modem',NULL,'42902',0,1,1,5,NULL),(95,'Meals',NULL,'42903',0,1,1,5,NULL),(96,'Transportation',NULL,'42904',0,1,1,5,NULL),(97,'Miscellaneous',NULL,'42905',0,1,1,5,NULL);
-/*!40000 ALTER TABLE `acc_gl_account` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_closure`
---
-
-DROP TABLE IF EXISTS `acc_gl_closure`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_closure` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `closing_date` date NOT NULL,
-  `is_deleted` int(20) NOT NULL DEFAULT '0',
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `comments` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `office_id_closing_date` (`office_id`,`closing_date`),
-  KEY `FK_acc_gl_closure_m_office` (`office_id`),
-  KEY `FK_acc_gl_closure_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_closure_m_appuser_2` (`lastmodifiedby_id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_closure`
---
-
-LOCK TABLES `acc_gl_closure` WRITE;
-/*!40000 ALTER TABLE `acc_gl_closure` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_closure` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_journal_entry`
---
-
-DROP TABLE IF EXISTS `acc_gl_journal_entry`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_journal_entry` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_id` bigint(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `reversal_id` bigint(20) DEFAULT NULL,
-  `transaction_id` varchar(50) NOT NULL,
-  `reversed` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_entry` tinyint(1) NOT NULL DEFAULT '0',
-  `entry_date` date NOT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `entity_type_enum` smallint(5) DEFAULT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `createdby_id` bigint(20) NOT NULL,
-  `lastmodifiedby_id` bigint(20) NOT NULL,
-  `created_date` datetime NOT NULL,
-  `lastmodified_date` datetime NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_acc_gl_journal_entry_m_office` (`office_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser_2` (`lastmodifiedby_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_journal_entry` (`reversal_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_account` (`account_id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_account` FOREIGN KEY (`account_id`) REFERENCES `acc_gl_account` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_journal_entry` FOREIGN KEY (`reversal_id`) REFERENCES `acc_gl_journal_entry` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_journal_entry`
---
-
-LOCK TABLES `acc_gl_journal_entry` WRITE;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_product_mapping`
---
-
-DROP TABLE IF EXISTS `acc_product_mapping`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_product_mapping` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `gl_account_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `product_type` smallint(5) DEFAULT NULL,
-  `financial_account_type` smallint(5) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_product_mapping`
---
-
-LOCK TABLES `acc_product_mapping` WRITE;
-/*!40000 ALTER TABLE `acc_product_mapping` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_product_mapping` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `c_configuration`
---
-
-DROP TABLE IF EXISTS `c_configuration`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `c_configuration` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(50) DEFAULT NULL,
-  `enabled` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `c_configuration`
---
-
-LOCK TABLES `c_configuration` WRITE;
-/*!40000 ALTER TABLE `c_configuration` DISABLE KEYS */;
-INSERT INTO `c_configuration` VALUES (1,'maker-checker',0);
-/*!40000 ALTER TABLE `c_configuration` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `client additional data`
---
-
-DROP TABLE IF EXISTS `client additional data`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `client additional data` (
-  `client_id` bigint(20) NOT NULL,
-  `Gender_cd` int(11) NOT NULL,
-  `Date of Birth` date NOT NULL,
-  `Home address` text NOT NULL,
-  `Telephone number` varchar(20) NOT NULL,
-  `Telephone number (2nd)` varchar(20) NOT NULL,
-  `Email address` varchar(50) NOT NULL,
-  `EducationLevel_cd` int(11) NOT NULL,
-  `MaritalStatus_cd` int(11) NOT NULL,
-  `Number of children` int(11) NOT NULL,
-  `Citizenship` varchar(50) NOT NULL,
-  `PovertyStatus_cd` int(11) NOT NULL,
-  `YesNo_cd_Employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL,
-  `Employer name` varchar(50) DEFAULT NULL,
-  `Number of years` int(11) DEFAULT NULL,
-  `Monthly salary` decimal(19,6) DEFAULT NULL,
-  `YesNo_cd_Self employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL,
-  `Business address` text,
-  `Number of employees` int(11) DEFAULT NULL,
-  `Monthly salaries paid` decimal(19,6) DEFAULT NULL,
-  `Monthly net income of business activity` decimal(19,6) DEFAULT NULL,
-  `Monthly rent` decimal(19,6) DEFAULT NULL,
-  `Other income generating activities` varchar(100) DEFAULT NULL,
-  `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL,
-  `YesNo_cd_Loans with other institutions` int(11) NOT NULL,
-  `From whom` varchar(100) DEFAULT NULL,
-  `Amount` decimal(19,6) DEFAULT NULL,
-  `Interest rate pa` decimal(19,6) DEFAULT NULL,
-  `Number of people depending on overal income` int(11) NOT NULL,
-  `YesNo_cd_Bank account` int(11) NOT NULL,
-  `YesNo_cd_Business plan provided` int(11) NOT NULL,
-  `YesNo_cd_Access to internet` int(11) DEFAULT NULL,
-  `Introduced by` varchar(100) DEFAULT NULL,
-  `Known to introducer since` varchar(100) NOT NULL,
-  `Last visited by` varchar(100) DEFAULT NULL,
-  `Last visited on` date NOT NULL,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `client additional data`
---
-
-LOCK TABLES `client additional data` WRITE;
-/*!40000 ALTER TABLE `client additional data` DISABLE KEYS */;
-/*!40000 ALTER TABLE `client additional data` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_client_details`
---
-
-DROP TABLE IF EXISTS `extra_client_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_client_details` (
-  `client_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_client_details`
---
-
-LOCK TABLES `extra_client_details` WRITE;
-/*!40000 ALTER TABLE `extra_client_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_client_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_family_details`
---
-
-DROP TABLE IF EXISTS `extra_family_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_family_details` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `Name` varchar(40) DEFAULT NULL,
-  `Date of Birth` date DEFAULT NULL,
-  `Points Score` int(11) DEFAULT NULL,
-  `Education_cd_Highest` int(11) DEFAULT NULL,
-  `Other Notes` text,
-  PRIMARY KEY (`id`),
-  KEY `FK_Extra Family Details Data_1` (`client_id`),
-  CONSTRAINT `FK_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_family_details`
---
-
-LOCK TABLES `extra_family_details` WRITE;
-/*!40000 ALTER TABLE `extra_family_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_family_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_loan_details`
---
-
-DROP TABLE IF EXISTS `extra_loan_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_loan_details` (
-  `loan_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_loan_details`
---
-
-LOCK TABLES `extra_loan_details` WRITE;
-/*!40000 ALTER TABLE `extra_loan_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_loan_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `impact measurement`
---
-
-DROP TABLE IF EXISTS `impact measurement`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `impact measurement` (
-  `loan_id` bigint(20) NOT NULL,
-  `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL,
-  `ReasonNotRepaidOnSchedule` text,
-  `How was Loan Amount Invested` text NOT NULL,
-  `Additional Income Generated` decimal(19,6) NOT NULL,
-  `Additional Income Used For` text NOT NULL,
-  `YesNo_cd_NewJobsCreated` int(11) NOT NULL,
-  `Number of Jobs Created` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `impact measurement`
---
-
-LOCK TABLES `impact measurement` WRITE;
-/*!40000 ALTER TABLE `impact measurement` DISABLE KEYS */;
-/*!40000 ALTER TABLE `impact measurement` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `loan additional data`
---
-
-DROP TABLE IF EXISTS `loan additional data`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `loan additional data` (
-  `loan_id` bigint(20) NOT NULL,
-  `PurposeOfLoan_cd` int(11) NOT NULL,
-  `CollateralType_cd` int(11) NOT NULL,
-  `Collateral notes` text NOT NULL,
-  `YesNo_cd_Guarantor` int(11) NOT NULL,
-  `Guarantor name` varchar(100) DEFAULT NULL,
-  `Guarantor relation` varchar(100) DEFAULT NULL,
-  `Guarantor address` varchar(100) DEFAULT NULL,
-  `Guarantor telephone number` varchar(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `loan additional data`
---
-
-LOCK TABLES `loan additional data` WRITE;
-/*!40000 ALTER TABLE `loan additional data` DISABLE KEYS */;
-/*!40000 ALTER TABLE `loan additional data` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser`
---
-
-DROP TABLE IF EXISTS `m_appuser`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `office_id` bigint(20) DEFAULT NULL,
-  `username` varchar(100) NOT NULL,
-  `firstname` varchar(100) NOT NULL,
-  `lastname` varchar(100) NOT NULL,
-  `password` varchar(255) NOT NULL,
-  `email` varchar(100) NOT NULL,
-  `firsttime_login_remaining` bit(1) NOT NULL,
-  `nonexpired` bit(1) NOT NULL,
-  `nonlocked` bit(1) NOT NULL,
-  `nonexpired_credentials` bit(1) NOT NULL,
-  `enabled` bit(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `username_org` (`username`),
-  KEY `FKB3D587CE0DD567A` (`office_id`),
-  CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser`
---
-
-LOCK TABLES `m_appuser` WRITE;
-/*!40000 ALTER TABLE `m_appuser` DISABLE KEYS */;
-INSERT INTO `m_appuser` VALUES (1,0,1,'mifos','App','Administrator','5787039480429368bf94732aacc771cd0a3ea02bcf504ffe1185ab94213bc63a','demomfi@mifos.org','\0','','','','');
-/*!40000 ALTER TABLE `m_appuser` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser_role`
---
-
-DROP TABLE IF EXISTS `m_appuser_role`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser_role` (
-  `appuser_id` bigint(20) NOT NULL,
-  `role_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`appuser_id`,`role_id`),
-  KEY `FK7662CE59B4100309` (`appuser_id`),
-  KEY `FK7662CE5915CEC7AB` (`role_id`),
-  CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`),
-  CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser_role`
---
-
-LOCK TABLES `m_appuser_role` WRITE;
-/*!40000 ALTER TABLE `m_appuser_role` DISABLE KEYS */;
-INSERT INTO `m_appuser_role` VALUES (1,1);
-/*!40000 ALTER TABLE `m_appuser_role` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_calendar`
---
-
-DROP TABLE IF EXISTS `m_calendar`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_calendar` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `title` varchar(50) NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  `location` varchar(50) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `duration` smallint(6) DEFAULT NULL,
-  `calendar_type_enum` smallint(5) NOT NULL,
-  `repeating` tinyint(1) NOT NULL DEFAULT '0',
-  `recurrence` varchar(100) DEFAULT NULL,
-  `remind_by_enum` smallint(5) DEFAULT NULL,
-  `first_reminder` smallint(11) DEFAULT NULL,
-  `second_reminder` smallint(11) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_calendar`
---
-
-LOCK TABLES `m_calendar` WRITE;
-/*!40000 ALTER TABLE `m_calendar` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_calendar` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_calendar_instance`
---
-
-DROP TABLE IF EXISTS `m_calendar_instance`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_calendar_instance` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `calendar_id` bigint(20) NOT NULL,
-  `entity_id` bigint(20) NOT NULL,
-  `entity_type_enum` smallint(5) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`),
-  CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_calendar_instance`
---
-
-LOCK TABLES `m_calendar_instance` WRITE;
-/*!40000 ALTER TABLE `m_calendar_instance` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_calendar_instance` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_charge`
---
-
-DROP TABLE IF EXISTS `m_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `charge_applies_to_enum` smallint(5) NOT NULL,
-  `charge_time_enum` smallint(5) NOT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `is_active` tinyint(1) NOT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_charge`
---
-
-LOCK TABLES `m_charge` WRITE;
-/*!40000 ALTER TABLE `m_charge` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client`
---
-
-DROP TABLE IF EXISTS `m_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `middlename` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `fullname` varchar(100) DEFAULT NULL,
-  `display_name` varchar(100) NOT NULL,
-  `image_key` varchar(500) DEFAULT NULL,
-  `joined_date` date DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `external_id` (`external_id`),
-  KEY `FKCE00CAB3E0DD567A` (`office_id`),
-  CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client`
---
-
-LOCK TABLES `m_client` WRITE;
-/*!40000 ALTER TABLE `m_client` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client_identifier`
---
-
-DROP TABLE IF EXISTS `m_client_identifier`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client_identifier` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `document_type_id` int(11) NOT NULL,
-  `document_key` varchar(50) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `unique_identifier_key` (`document_type_id`,`document_key`),
-  UNIQUE KEY `unique_client_identifier` (`client_id`,`document_type_id`),
-  KEY `FK_m_client_document_m_client` (`client_id`),
-  KEY `FK_m_client_document_m_code_value` (`document_type_id`),
-  CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client_identifier`
---
-
-LOCK TABLES `m_client_identifier` WRITE;
-/*!40000 ALTER TABLE `m_client_identifier` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_client_identifier` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code`
---
-
-DROP TABLE IF EXISTS `m_code`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_name` varchar(100) DEFAULT NULL,
-  `is_system_defined` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_name` (`code_name`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code`
---
-
-LOCK TABLES `m_code` WRITE;
-/*!40000 ALTER TABLE `m_code` DISABLE KEYS */;
-INSERT INTO `m_code` VALUES (1,'Customer Identifier',1),(2,'LoanCollateral',1),(3,'LoanPurpose',1),(4,'Gender',1),(5,'YesNo',1),(6,'Education',1);
-/*!40000 ALTER TABLE `m_code` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code_value`
---
-
-DROP TABLE IF EXISTS `m_code_value`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code_value` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_id` int(11) NOT NULL,
-  `code_value` varchar(100) DEFAULT NULL,
-  `order_position` int(11) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_value` (`code_id`,`code_value`),
-  KEY `FKCFCEA42640BE071Z` (`code_id`),
-  CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code_value`
---
-
-LOCK TABLES `m_code_value` WRITE;
-/*!40000 ALTER TABLE `m_code_value` DISABLE KEYS */;
-INSERT INTO `m_code_value` VALUES (1,1,'Passport',1),(2,1,'Id',1),(3,1,'Drivers License',2),(4,1,'Any Other Id Type',3),(5,4,'option.Male',1),(6,4,'option.Female',5),(7,5,'option.Yes',1),(8,5,'option.No',7),(9,6,'Primary',1),(10,6,'Secondary',9),(11,6,'University',10);
-/*!40000 ALTER TABLE `m_code_value` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_currency`
---
-
-DROP TABLE IF EXISTS `m_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_currency`
---
-
-LOCK TABLES `m_currency` WRITE;
-/*!40000 ALTER TABLE `m_currency` DISABLE KEYS */;
-INSERT INTO `m_currency` VALUES (1,'AED',2,NULL,'UAE Dirham','currency.AED'),(2,'AFN',2,NULL,'Afghanistan Afghani','currency.AFN'),(3,'ALL',2,NULL,'Albanian Lek','currency.ALL'),(4,'AMD',2,NULL,'Armenian Dram','currency.AMD'),(5,'ANG',2,NULL,'Netherlands Antillian Guilder','currency.ANG'),(6,'AOA',2,NULL,'Angolan Kwanza','currency.AOA'),(7,'ARS',2,'$','Argentine Peso','currency.ARS'),(8,'AUD',2,'A$','Australian Dollar','currency.AUD'),(9,'AWG',2,NULL,'Aruban Guilder','currency.AWG'),(10,'AZM',2,NULL,'Azerbaijanian Manat','currency.AZM'),(11,'BAM',2,NULL,'Bosnia and Herzegovina Convertible Marks','currency.BAM'),(12,'BBD',2,NULL,'Barbados Dollar','currency.BBD'),(13,'BDT',2,NULL,'Bangladesh Taka','currency.BDT'),(14,'BGN',2,NULL,'Bulgarian Lev','currency.BGN'),(15,'BHD',3,NULL,'Bahraini Dinar','currency.BHD'),(16,'BIF',0,NULL,'Burundi Franc','currency.BIF'),(17,'BMD',2,NULL,'Bermudian Dollar','currency.BMD'),(18,'BND',2,'B$','Brunei Dollar','currency.BND'),(19,'BOB',2,'Bs.','Bolivian
  Boliviano','currency.BOB'),(20,'BRL',2,'R$','Brazilian Real','currency.BRL'),(21,'BSD',2,NULL,'Bahamian Dollar','currency.BSD'),(22,'BTN',2,NULL,'Bhutan Ngultrum','currency.BTN'),(23,'BWP',2,NULL,'Botswana Pula','currency.BWP'),(24,'BYR',0,NULL,'Belarussian Ruble','currency.BYR'),(25,'BZD',2,'BZ$','Belize Dollar','currency.BZD'),(26,'CAD',2,NULL,'Canadian Dollar','currency.CAD'),(27,'CDF',2,NULL,'Franc Congolais','currency.CDF'),(28,'CHF',2,NULL,'Swiss Franc','currency.CHF'),(29,'CLP',0,'$','Chilean Peso','currency.CLP'),(30,'CNY',2,NULL,'Chinese Yuan Renminbi','currency.CNY'),(31,'COP',2,'$','Colombian Peso','currency.COP'),(32,'CRC',2,'₡','Costa Rican Colon','currency.CRC'),(33,'CSD',2,NULL,'Serbian Dinar','currency.CSD'),(34,'CUP',2,'$MN','Cuban Peso','currency.CUP'),(35,'CVE',2,NULL,'Cape Verde Escudo','currency.CVE'),(36,'CYP',2,NULL,'Cyprus Pound','currency.CYP'),(37,'CZK',2,NULL,'Czech Koruna','currency.CZK'),(38,'DJF',0,NULL,'Djibouti Franc','currency.DJF'),(39,'DKK',2,NU
 LL,'Danish Krone','currency.DKK'),(40,'DOP',2,'RD$','Dominican Peso','currency.DOP'),(41,'DZD',2,NULL,'Algerian Dinar','currency.DZD'),(42,'EEK',2,NULL,'Estonian Kroon','currency.EEK'),(43,'EGP',2,NULL,'Egyptian Pound','currency.EGP'),(44,'ERN',2,NULL,'Eritrea Nafka','currency.ERN'),(45,'ETB',2,NULL,'Ethiopian Birr','currency.ETB'),(46,'EUR',2,'€','Euro','currency.EUR'),(47,'FJD',2,NULL,'Fiji Dollar','currency.FJD'),(48,'FKP',2,NULL,'Falkland Islands Pound','currency.FKP'),(49,'GBP',2,NULL,'Pound Sterling','currency.GBP'),(50,'GEL',2,NULL,'Georgian Lari','currency.GEL'),(51,'GHC',2,'GHc','Ghana Cedi','currency.GHC'),(52,'GIP',2,NULL,'Gibraltar Pound','currency.GIP'),(53,'GMD',2,NULL,'Gambian Dalasi','currency.GMD'),(54,'GNF',0,NULL,'Guinea Franc','currency.GNF'),(55,'GTQ',2,'Q','Guatemala Quetzal','currency.GTQ'),(56,'GYD',2,NULL,'Guyana Dollar','currency.GYD'),(57,'HKD',2,NULL,'Hong Kong Dollar','currency.HKD'),(58,'HNL',2,'L','Honduras Lempira','currency.HNL'),(59,'HRK',2,NULL,'
 Croatian Kuna','currency.HRK'),(60,'HTG',2,'G','Haiti Gourde','currency.HTG'),(61,'HUF',2,NULL,'Hungarian Forint','currency.HUF'),(62,'IDR',2,NULL,'Indonesian Rupiah','currency.IDR'),(63,'ILS',2,NULL,'New Israeli Shekel','currency.ILS'),(64,'INR',2,'₹','Indian Rupee','currency.INR'),(65,'IQD',3,NULL,'Iraqi Dinar','currency.IQD'),(66,'IRR',2,NULL,'Iranian Rial','currency.IRR'),(67,'ISK',0,NULL,'Iceland Krona','currency.ISK'),(68,'JMD',2,NULL,'Jamaican Dollar','currency.JMD'),(69,'JOD',3,NULL,'Jordanian Dinar','currency.JOD'),(70,'JPY',0,NULL,'Japanese Yen','currency.JPY'),(71,'KES',2,'KSh','Kenyan Shilling','currency.KES'),(72,'KGS',2,NULL,'Kyrgyzstan Som','currency.KGS'),(73,'KHR',2,NULL,'Cambodia Riel','currency.KHR'),(74,'KMF',0,NULL,'Comoro Franc','currency.KMF'),(75,'KPW',2,NULL,'North Korean Won','currency.KPW'),(76,'KRW',0,NULL,'Korean Won','currency.KRW'),(77,'KWD',3,NULL,'Kuwaiti Dinar','currency.KWD'),(78,'KYD',2,NULL,'Cayman Islands Dollar','currency.KYD'),(79,'KZT',2,NU
 LL,'Kazakhstan Tenge','currency.KZT'),(80,'LAK',2,NULL,'Lao Kip','currency.LAK'),(81,'LBP',2,'L£','Lebanese Pound','currency.LBP'),(82,'LKR',2,NULL,'Sri Lanka Rupee','currency.LKR'),(83,'LRD',2,NULL,'Liberian Dollar','currency.LRD'),(84,'LSL',2,NULL,'Lesotho Loti','currency.LSL'),(85,'LTL',2,NULL,'Lithuanian Litas','currency.LTL'),(86,'LVL',2,NULL,'Latvian Lats','currency.LVL'),(87,'LYD',3,NULL,'Libyan Dinar','currency.LYD'),(88,'MAD',2,NULL,'Moroccan Dirham','currency.MAD'),(89,'MDL',2,NULL,'Moldovan Leu','currency.MDL'),(90,'MGA',2,NULL,'Malagasy Ariary','currency.MGA'),(91,'MKD',2,NULL,'Macedonian Denar','currency.MKD'),(92,'MMK',2,'K','Myanmar Kyat','currency.MMK'),(93,'MNT',2,NULL,'Mongolian Tugrik','currency.MNT'),(94,'MOP',2,NULL,'Macau Pataca','currency.MOP'),(95,'MRO',2,NULL,'Mauritania Ouguiya','currency.MRO'),(96,'MTL',2,NULL,'Maltese Lira','currency.MTL'),(97,'MUR',2,NULL,'Mauritius Rupee','currency.MUR'),(98,'MVR',2,NULL,'Maldives Rufiyaa','currency.MVR'),(99,'MWK',2,N
 ULL,'Malawi Kwacha','currency.MWK'),(100,'MXN',2,'$','Mexican Peso','currency.MXN'),(101,'MYR',2,NULL,'Malaysian Ringgit','currency.MYR'),(102,'MZM',2,NULL,'Mozambique Metical','currency.MZM'),(103,'NAD',2,NULL,'Namibia Dollar','currency.NAD'),(104,'NGN',2,NULL,'Nigerian Naira','currency.NGN'),(105,'NIO',2,'C$','Nicaragua Cordoba Oro','currency.NIO'),(106,'NOK',2,NULL,'Norwegian Krone','currency.NOK'),(107,'NPR',2,NULL,'Nepalese Rupee','currency.NPR'),(108,'NZD',2,NULL,'New Zealand Dollar','currency.NZD'),(109,'OMR',3,NULL,'Rial Omani','currency.OMR'),(110,'PAB',2,'B/.','Panama Balboa','currency.PAB'),(111,'PEN',2,'S/.','Peruvian Nuevo Sol','currency.PEN'),(112,'PGK',2,NULL,'Papua New Guinea Kina','currency.PGK'),(113,'PHP',2,NULL,'Philippine Peso','currency.PHP'),(114,'PKR',2,NULL,'Pakistan Rupee','currency.PKR'),(115,'PLN',2,NULL,'Polish Zloty','currency.PLN'),(116,'PYG',0,'₲','Paraguayan Guarani','currency.PYG'),(117,'QAR',2,NULL,'Qatari Rial','currency.QAR'),(118,'RON',2,NULL,
 'Romanian Leu','currency.RON'),(119,'RUB',2,NULL,'Russian Ruble','currency.RUB'),(120,'RWF',0,NULL,'Rwanda Franc','currency.RWF'),(121,'SAR',2,NULL,'Saudi Riyal','currency.SAR'),(122,'SBD',2,NULL,'Solomon Islands Dollar','currency.SBD'),(123,'SCR',2,NULL,'Seychelles Rupee','currency.SCR'),(124,'SDD',2,NULL,'Sudanese Dinar','currency.SDD'),(125,'SEK',2,NULL,'Swedish Krona','currency.SEK'),(126,'SGD',2,NULL,'Singapore Dollar','currency.SGD'),(127,'SHP',2,NULL,'St Helena Pound','currency.SHP'),(128,'SIT',2,NULL,'Slovenian Tolar','currency.SIT'),(129,'SKK',2,NULL,'Slovak Koruna','currency.SKK'),(130,'SLL',2,NULL,'Sierra Leone Leone','currency.SLL'),(131,'SOS',2,NULL,'Somali Shilling','currency.SOS'),(132,'SRD',2,NULL,'Surinam Dollar','currency.SRD'),(133,'STD',2,NULL,'Sao Tome and Principe Dobra','currency.STD'),(134,'SVC',2,NULL,'El Salvador Colon','currency.SVC'),(135,'SYP',2,NULL,'Syrian Pound','currency.SYP'),(136,'SZL',2,NULL,'Swaziland Lilangeni','currency.SZL'),(137,'THB',2,NULL,
 'Thai Baht','currency.THB'),(138,'TJS',2,NULL,'Tajik Somoni','currency.TJS'),(139,'TMM',2,NULL,'Turkmenistan Manat','currency.TMM'),(140,'TND',3,'DT','Tunisian Dinar','currency.TND'),(141,'TOP',2,NULL,'Tonga Pa\'anga','currency.TOP'),(142,'TRY',2,NULL,'Turkish Lira','currency.TRY'),(143,'TTD',2,NULL,'Trinidad and Tobago Dollar','currency.TTD'),(144,'TWD',2,NULL,'New Taiwan Dollar','currency.TWD'),(145,'TZS',2,NULL,'Tanzanian Shilling','currency.TZS'),(146,'UAH',2,NULL,'Ukraine Hryvnia','currency.UAH'),(147,'UGX',2,'USh','Uganda Shilling','currency.UGX'),(148,'USD',2,'$','US Dollar','currency.USD'),(149,'UYU',2,'$U','Peso Uruguayo','currency.UYU'),(150,'UZS',2,NULL,'Uzbekistan Sum','currency.UZS'),(151,'VEB',2,'Bs.F.','Venezuelan Bolivar','currency.VEB'),(152,'VND',2,NULL,'Vietnamese Dong','currency.VND'),(153,'VUV',0,NULL,'Vanuatu Vatu','currency.VUV'),(154,'WST',2,NULL,'Samoa Tala','currency.WST'),(155,'XAF',0,NULL,'CFA Franc BEAC','currency.XAF'),(156,'XCD',2,NULL,'East Caribbean 
 Dollar','currency.XCD'),(157,'XDR',5,NULL,'SDR (Special Drawing Rights)','currency.XDR'),(158,'XOF',0,'CFA','CFA Franc BCEAO','currency.XOF'),(159,'XPF',0,NULL,'CFP Franc','currency.XPF'),(160,'YER',2,NULL,'Yemeni Rial','currency.YER'),(161,'ZAR',2,'R','South African Rand','currency.ZAR'),(162,'ZMK',2,NULL,'Zambian Kwacha','currency.ZMK'),(163,'ZWD',2,NULL,'Zimbabwe Dollar','currency.ZWD');
-/*!40000 ALTER TABLE `m_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_document`
---
-
-DROP TABLE IF EXISTS `m_document`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_document` (
-  `id` int(20) NOT NULL AUTO_INCREMENT,
-  `parent_entity_type` varchar(50) NOT NULL,
-  `parent_entity_id` int(20) NOT NULL DEFAULT '0',
-  `name` varchar(250) NOT NULL,
-  `file_name` varchar(250) NOT NULL,
-  `size` int(20) DEFAULT '0',
-  `type` varchar(50) DEFAULT NULL,
-  `description` varchar(1000) DEFAULT NULL,
-  `location` varchar(500) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_document`
---
-
-LOCK TABLES `m_document` WRITE;
-/*!40000 ALTER TABLE `m_document` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_document` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_fund`
---
-
-DROP TABLE IF EXISTS `m_fund`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_fund` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(255) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `fund_name_org` (`name`),
-  UNIQUE KEY `fund_externalid_org` (`external_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_fund`
---
-
-LOCK TABLES `m_fund` WRITE;
-/*!40000 ALTER TABLE `m_fund` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_fund` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group`
---
-
-DROP TABLE IF EXISTS `m_group`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `staff_id` bigint(20) DEFAULT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `level_Id` int(11) NOT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `name` varchar(100) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`,`level_Id`),
-  UNIQUE KEY `external_id` (`external_id`,`level_Id`),
-  KEY `office_id` (`office_id`),
-  KEY `staff_id` (`staff_id`),
-  KEY `Parent_Id_reference` (`parent_id`),
-  KEY `FK_m_group_level` (`level_Id`),
-  CONSTRAINT `m_group_ibfk_1` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`),
-  CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group`
---
-
-LOCK TABLES `m_group` WRITE;
-/*!40000 ALTER TABLE `m_group` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group_client`
---
-
-DROP TABLE IF EXISTS `m_group_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group_client` (
-  `group_id` bigint(20) NOT NULL,
-  `client_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`group_id`,`client_id`),
-  KEY `client_id` (`client_id`),
-  CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group_client`
---
-
-LOCK TABLES `m_group_client` WRITE;
-/*!40000 ALTER TABLE `m_group_client` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group_level`
---
-
-DROP TABLE IF EXISTS `m_group_level`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group_level` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `parent_id` int(11) DEFAULT NULL,
-  `super_parent` tinyint(1) NOT NULL,
-  `level_name` varchar(100) NOT NULL,
-  `recursable` tinyint(1) NOT NULL,
-  `can_have_clients` tinyint(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `Parent_levelId_reference` (`parent_id`),
-  CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group_level`
---
-
-LOCK TABLES `m_group_level` WRITE;
-/*!40000 ALTER TABLE `m_group_level` DISABLE KEYS */;
-INSERT INTO `m_group_level` VALUES (1,NULL,1,'Center',1,0),(2,1,0,'Group',0,1);
-/*!40000 ALTER TABLE `m_group_level` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_guarantor`
---
-
-DROP TABLE IF EXISTS `m_guarantor`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_guarantor` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `dob` date DEFAULT NULL,
-  `address_line_1` varchar(500) DEFAULT NULL,
-  `address_line_2` varchar(500) DEFAULT NULL,
-  `city` varchar(50) DEFAULT NULL,
-  `state` varchar(50) DEFAULT NULL,
-  `country` varchar(50) DEFAULT NULL,
-  `zip` varchar(20) DEFAULT NULL,
-  `house_phone_number` varchar(20) DEFAULT NULL,
-  `mobile_number` varchar(20) DEFAULT NULL,
-  `comment` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_guarantor_m_loan` (`loan_id`),
-  CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_guarantor`
---
-
-LOCK TABLES `m_guarantor` WRITE;
-/*!40000 ALTER TABLE `m_guarantor` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_guarantor` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan`
---
-
-DROP TABLE IF EXISTS `m_loan`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `fund_id` bigint(20) DEFAULT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `loanpurpose_cv_id` int(11) DEFAULT NULL,
-  `loan_status_id` smallint(5) NOT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) NOT NULL,
-  `arrearstolerance_amount` decimal(19,6) DEFAULT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `interest_period_frequency_enum` smallint(5) NOT NULL,
-  `annual_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `interest_method_enum` smallint(5) NOT NULL,
-  `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1',
-  `term_frequency` smallint(5) NOT NULL DEFAULT '0',
-  `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2',
-  `repay_every` smallint(5) NOT NULL,
-  `repayment_period_frequency_enum` smallint(5) NOT NULL,
-  `number_of_repayments` smallint(5) NOT NULL,
-  `amortization_method_enum` smallint(5) NOT NULL,
-  `submittedon_date` date DEFAULT NULL,
-  `submittedon_userid` bigint(20) DEFAULT NULL,
-  `approvedon_date` date DEFAULT NULL,
-  `approvedon_userid` bigint(20) DEFAULT NULL,
-  `expected_disbursedon_date` date DEFAULT NULL,
-  `expected_firstrepaymenton_date` date DEFAULT NULL,
-  `interest_calculated_from_date` date DEFAULT NULL,
-  `disbursedon_date` date DEFAULT NULL,
-  `disbursedon_userid` bigint(20) DEFAULT NULL,
-  `expected_maturedon_date` date DEFAULT NULL,
-  `maturedon_date` date DEFAULT NULL,
-  `closedon_date` date DEFAULT NULL,
-  `closedon_userid` bigint(20) DEFAULT NULL,
-  `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL,
-  `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `rejectedon_date` date DEFAULT NULL,
-  `rejectedon_userid` bigint(20) DEFAULT NULL,
-  `rescheduledon_date` date DEFAULT NULL,
-  `withdrawnon_date` date DEFAULT NULL,
-  `withdrawnon_userid` bigint(20) DEFAULT NULL,
-  `writtenoffon_date` date DEFAULT NULL,
-  `loan_transaction_strategy_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`),
-  KEY `FKB6F935D87179A0CB` (`client_id`),
-  KEY `FKB6F935D8C8D4B434` (`product_id`),
-  KEY `FK7C885877240145` (`fund_id`),
-  KEY `FK_loan_ltp_strategy` (`loan_transaction_strategy_id`),
-  KEY `FK_m_loan_m_staff` (`loan_officer_id`),
-  KEY `group_id` (`group_id`),
-  KEY `FK_m_loanpurpose_codevalue` (`loanpurpose_cv_id`),
-  KEY `FK_submittedon_userid` (`submittedon_userid`),
-  KEY `FK_approvedon_userid` (`approvedon_userid`),
-  KEY `FK_rejectedon_userid` (`rejectedon_userid`),
-  KEY `FK_withdrawnon_userid` (`withdrawnon_userid`),
-  KEY `FK_disbursedon_userid` (`disbursedon_userid`),
-  KEY `FK_closedon_userid` (`closedon_userid`),
-  CONSTRAINT `FK7C885877240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`),
-  CONSTRAINT `FKB6F935D87179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FKB6F935D8C8D4B434` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`),
-  CONSTRAINT `FK_approvedon_userid` FOREIGN KEY (`approvedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_closedon_userid` FOREIGN KEY (`closedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_disbursedon_userid` FOREIGN KEY (`disbursedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_loan_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`),
-  CONSTRAINT `FK_m_loanpurpose_codevalue` FOREIGN KEY (`loanpurpose_cv_id`) REFERENCES `m_code_value` (`id`),
-  CONSTRAINT `FK_m_loan_m_staff` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`),
-  CONSTRAINT `FK_rejectedon_userid` FOREIGN KEY (`rejectedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan`
---
-
-LOCK TABLES `m_loan` WRITE;
-/*!40000 ALTER TABLE `m_loan` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_arrears_aging`
---
-
-DROP TABLE IF EXISTS `m_loan_arrears_aging`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_arrears_aging` (
-  `loan_id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `overdue_since_date_derived` date DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_arrears_aging`
---
-
-LOCK TABLES `m_loan_arrears_aging` WRITE;
-/*!40000 ALTER TABLE `m_loan_arrears_aging` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_arrears_aging` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_charge`
---
-
-DROP TABLE IF EXISTS `m_loan_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `charge_id` bigint(20) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `charge_time_enum` smallint(5) NOT NULL,
-  `due_for_collection_as_of_date` date DEFAULT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `calculation_percentage` decimal(19,6) DEFAULT NULL,
-  `calculation_on_amount` decimal(19,6) DEFAULT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `amount_paid_derived` decimal(19,6) DEFAULT NULL,
-  `amount_waived_derived` decimal(19,6) DEFAULT NULL,
-  `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0',
-  `waived` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  KEY `charge_id` (`charge_id`),
-  KEY `m_loan_charge_ibfk_2` (`loan_id`),
-  CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`),
-  CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_charge`
---
-
-LOCK TABLES `m_loan_charge` WRITE;
-/*!40000 ALTER TABLE `m_loan_charge` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_collateral`
---
-
-DROP TABLE IF EXISTS `m_loan_collateral`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_collateral` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `type_cv_id` int(11) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_collateral_m_loan` (`loan_id`),
-  KEY `FK_collateral_code_value` (`type_cv_id`),
-  CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_collateral`
---
-
-LOCK TABLES `m_loan_collateral` WRITE;
-/*!40000 ALTER TABLE `m_loan_collateral` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_collateral` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_officer_assignment_history`
---
-
-DROP TABLE IF EXISTS `m_loan_officer_assignment_history`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_officer_assignment_history` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`),
-  KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_officer_assignment_history`
---
-
-LOCK TABLES `m_loan_officer_assignment_history` WRITE;
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_repayment_schedule`
---
-
-DROP TABLE IF EXISTS `m_loan_repayment_schedule`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_repayment_schedule` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `fromdate` date DEFAULT NULL,
-  `duedate` date NOT NULL,
-  `installment` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) DEFAULT NULL,
-  `principal_completed_derived` decimal(19,6) DEFAULT NULL,
-  `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `interest_amount` decimal(19,6) DEFAULT NULL,
-  `interest_completed_derived` decimal(19,6) DEFAULT NULL,
-  `interest_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_amount` decimal(19,6) DEFAULT NULL,
-  `fee_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_amount` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `completed_derived` bit(1) NOT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `interest_waived_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK488B92AA40BE0710` (`loan_id`),
-  CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_repayment_schedule`
---
-
-LOCK TABLES `m_loan_repayment_schedule` WRITE;
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_transaction`
---
-
-DROP TABLE IF EXISTS `m_loan_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `is_reversed` tinyint(1) NOT NULL,
-  `transaction_type_enum` smallint(5) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `principal_portion_derived` decimal(19,6) DEFAULT NULL,
-  `interest_portion_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKCFCEA42640BE0710` (`loan_id`),
-  CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_transaction`
---
-
-LOCK TABLES `m_loan_transaction` WRITE;
-/*!40000 ALTER TABLE `m_loan_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_note`
---
-
-DROP TABLE IF EXISTS `m_note`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_note` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `loan_id` bigint(20) DEFAULT NULL,
-  `loan_transaction_id` bigint(20) DEFAULT NULL,
-  `note_type_enum` smallint(5) NOT NULL,
-  `note` varchar(1000) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK7C9708924D26803` (`loan_transaction_id`),
-  KEY `FK7C97089541F0A56` (`createdby_id`),
-  KEY `FK7C970897179A0CB` (`client_id`),
-  KEY `FK_m_note_m_group` (`group_id`),
-  KEY `FK7C970898F889C3F` (`lastmodifiedby_id`),
-  KEY `FK7C9708940BE0710` (`loan_id`),
-  CONSTRAINT `FK7C9708924D26803` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`),
-  CONSTRAINT `FK7C9708940BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK7C97089541F0A56` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_note`
---
-
-LOCK TABLES `m_note` WRITE;
-/*!40000 ALTER TABLE `m_note` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_note` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office`
---
-
-DROP TABLE IF EXISTS `m_office`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `opening_date` date NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name_org` (`name`),
-  UNIQUE KEY `externalid_org` (`external_id`),
-  KEY `FK2291C477E2551DCC` (`parent_id`),
-  CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office`
---
-
-LOCK TABLES `m_office` WRITE;
-/*!40000 ALTER TABLE `m_office` DISABLE KEYS */;
-INSERT INTO `m_office` VALUES (1,NULL,'.','1','Head Office','2009-01-01');
-/*!40000 ALTER TABLE `m_office` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office_transaction`
---
-
-DROP TABLE IF EXISTS `m_office_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `from_office_id` bigint(20) DEFAULT NULL,
-  `to_office_id` bigint(20) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` int(11) NOT NULL,
-  `transaction_amount` decimal(19,6) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK1E37728B93C6C1B6` (`to_office_id`),
-  KEY `FK1E37728B783C5C25` (`from_office_id`),
-  CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office_transaction`
---
-
-LOCK TABLES `m_office_transaction` WRITE;
-/*!40000 ALTER TABLE `m_office_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_office_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_organisation_currency`
---
-
-DROP TABLE IF EXISTS `m_organisation_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_organisation_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `name` varchar(50) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_organisation_currency`
---
-
-LOCK TABLES `m_organisation_currency` WRITE;
-/*!40000 ALTER TABLE `m_organisation_currency` DISABLE KEYS */;
-INSERT INTO `m_organisation_currency` VALUES (21,'USD',2,'US Dollar','$','currency.USD');
-/*!40000 ALTER TABLE `m_organisation_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_permission`
---
-
-DROP TABLE IF EXISTS `m_permission`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_permission` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `grouping` varchar(45) DEFAULT NULL,
-  `code` varchar(100) NOT NULL,
-  `entity_name` varchar(100) DEFAULT NULL,
-  `action_name` varchar(100) DEFAULT NULL,
-  `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=299 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_permission`
---
-
-LOCK TABLES `m_permission` WRITE;
-/*!40000 ALTER TABLE `m_permission` DISABLE KEYS */;
-INSERT INTO `m_permission` VALUES (1,'special','ALL_FUNCTIONS',NULL,NULL,0),(2,'special','ALL_FUNCTIONS_READ',NULL,NULL,0),(3,'special','CHECKER_SUPER_USER',NULL,NULL,0),(4,'special','REPORTING_SUPER_USER',NULL,NULL,0),(5,'authorisation','READ_PERMISSION','PERMISSION','READ',0),(6,'authorisation','PERMISSIONS_ROLE','ROLE','PERMISSIONS',0),(7,'authorisation','CREATE_ROLE','ROLE','CREATE',0),(8,'authorisation','CREATE_ROLE_CHECKER','ROLE','CREATE',0),(9,'authorisation','READ_ROLE','ROLE','READ',0),(10,'authorisation','UPDATE_ROLE','ROLE','UPDATE',0),(11,'authorisation','UPDATE_ROLE_CHECKER','ROLE','UPDATE',0),(12,'authorisation','DELETE_ROLE','ROLE','DELETE',0),(13,'authorisation','DELETE_ROLE_CHECKER','ROLE','DELETE',0),(14,'authorisation','CREATE_USER','USER','CREATE',0),(15,'authorisation','CREATE_USER_CHECKER','USER','CREATE',0),(16,'authorisation','READ_USER','USER','READ',0),(17,'authorisation','UPDATE_USER','USER','UPDATE',0),(18,'authorisation','UPDATE_USER_CHECKER','USER','UP
 DATE',0),(19,'authorisation','DELETE_USER','USER','DELETE',0),(20,'authorisation','DELETE_USER_CHECKER','USER','DELETE',0),(21,'configuration','READ_CONFIGURATION','CONFIGURATION','READ',0),(22,'configuration','UPDATE_CONFIGURATION','CONFIGURATION','UPDATE',0),(23,'configuration','UPDATE_CONFIGURATION_CHECKER','CONFIGURATION','UPDATE',0),(24,'configuration','READ_CODE','CODE','READ',0),(25,'configuration','CREATE_CODE','CODE','CREATE',0),(26,'configuration','CREATE_CODE_CHECKER','CODE','CREATE',0),(27,'configuration','UPDATE_CODE','CODE','UPDATE',0),(28,'configuration','UPDATE_CODE_CHECKER','CODE','UPDATE',0),(29,'configuration','DELETE_CODE','CODE','DELETE',0),(30,'configuration','DELETE_CODE_CHECKER','CODE','DELETE',0),(31,'configuration','READ_CODEVALUE','CODEVALUE','READ',0),(32,'configuration','CREATE_CODEVALUE','CODEVALUE','CREATE',0),(33,'configuration','CREATE_CODEVALUE_CHECKER','CODEVALUE','CREATE',0),(34,'configuration','UPDATE_CODEVALUE','CODEVALUE','UPDATE',0),(35,'confi
 guration','UPDATE_CODEVALUE_CHECKER','CODEVALUE','UPDATE',0),(36,'configuration','DELETE_CODEVALUE','CODEVALUE','DELETE',0),(37,'configuration','DELETE_CODEVALUE_CHECKER','CODEVALUE','DELETE',0),(38,'configuration','READ_CURRENCY','CURRENCY','READ',0),(39,'configuration','UPDATE_CURRENCY','CURRENCY','UPDATE',0),(40,'configuration','UPDATE_CURRENCY_CHECKER','CURRENCY','UPDATE',0),(41,'configuration','UPDATE_PERMISSION','PERMISSION','UPDATE',0),(42,'configuration','UPDATE_PERMISSION_CHECKER','PERMISSION','UPDATE',0),(43,'configuration','READ_DATATABLE','DATATABLE','READ',0),(44,'configuration','REGISTER_DATATABLE','DATATABLE','REGISTER',0),(45,'configuration','REGISTER_DATATABLE_CHECKER','DATATABLE','REGISTER',0),(46,'configuration','DEREGISTER_DATATABLE','DATATABLE','DEREGISTER',0),(47,'configuration','DEREGISTER_DATATABLE_CHECKER','DATATABLE','DEREGISTER',0),(48,'configuration','READ_AUDIT','AUDIT','READ',0),(49,'configuration','CREATE_CALENDAR','CALENDAR','CREATE',0),(50,'configura
 tion','READ_CALENDAR','CALENDAR','READ',0),(51,'configuration','UPDATE_CALENDAR','CALENDAR','UPDATE',0),(52,'configuration','DELETE_CALENDAR','CALENDAR','DELETE',0),(53,'configuration','CREATE_CALENDAR_CHECKER','CALENDAR','CREATE',0),(54,'configuration','UPDATE_CALENDAR_CHECKER','CALENDAR','UPDATE',0),(55,'configuration','DELETE_CALENDAR_CHECKER','CALENDAR','DELETE',0),(56,'organisation','READ_MAKERCHECKER','MAKERCHECKER','READ',0),(57,'organisation','READ_CHARGE','CHARGE','READ',0),(58,'organisation','CREATE_CHARGE','CHARGE','CREATE',0),(59,'organisation','CREATE_CHARGE_CHECKER','CHARGE','CREATE',0),(60,'organisation','UPDATE_CHARGE','CHARGE','UPDATE',0),(61,'organisation','UPDATE_CHARGE_CHECKER','CHARGE','UPDATE',0),(62,'organisation','DELETE_CHARGE','CHARGE','DELETE',0),(63,'organisation','DELETE_CHARGE_CHECKER','CHARGE','DELETE',0),(64,'organisation','READ_FUND','FUND','READ',0),(65,'organisation','CREATE_FUND','FUND','CREATE',0),(66,'organisation','CREATE_FUND_CHECKER','FUND','
 CREATE',0),(67,'organisation','UPDATE_FUND','FUND','UPDATE',0),(68,'organisation','UPDATE_FUND_CHECKER','FUND','UPDATE',0),(69,'organisation','DELETE_FUND','FUND','DELETE',0),(70,'organisation','DELETE_FUND_CHECKER','FUND','DELETE',0),(71,'organisation','READ_LOANPRODUCT','LOANPRODUCT','READ',0),(72,'organisation','CREATE_LOANPRODUCT','LOANPRODUCT','CREATE',0),(73,'organisation','CREATE_LOANPRODUCT_CHECKER','LOANPRODUCT','CREATE',0),(74,'organisation','UPDATE_LOANPRODUCT','LOANPRODUCT','UPDATE',0),(75,'organisation','UPDATE_LOANPRODUCT_CHECKER','LOANPRODUCT','UPDATE',0),(76,'organisation','DELETE_LOANPRODUCT','LOANPRODUCT','DELETE',0),(77,'organisation','DELETE_LOANPRODUCT_CHECKER','LOANPRODUCT','DELETE',0),(78,'organisation','READ_OFFICE','OFFICE','READ',0),(79,'organisation','CREATE_OFFICE','OFFICE','CREATE',0),(80,'organisation','CREATE_OFFICE_CHECKER','OFFICE','CREATE',0),(81,'organisation','UPDATE_OFFICE','OFFICE','UPDATE',0),(82,'organisation','UPDATE_OFFICE_CHECKER','OFFICE',
 'UPDATE',0),(83,'organisation','READ_OFFICETRANSACTION','OFFICETRANSACTION','READ',0),(84,'organisation','DELETE_OFFICE_CHECKER','OFFICE','DELETE',0),(85,'organisation','CREATE_OFFICETRANSACTION','OFFICETRANSACTION','CREATE',0),(86,'organisation','CREATE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','CREATE',0),(87,'organisation','DELETE_OFFICETRANSACTION','OFFICETRANSACTION','DELETE',0),(88,'organisation','DELETE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','DELETE',0),(89,'organisation','READ_STAFF','STAFF','READ',0),(90,'organisation','CREATE_STAFF','STAFF','CREATE',0),(91,'organisation','CREATE_STAFF_CHECKER','STAFF','CREATE',0),(92,'organisation','UPDATE_STAFF','STAFF','UPDATE',0),(93,'organisation','UPDATE_STAFF_CHECKER','STAFF','UPDATE',0),(94,'organisation','DELETE_STAFF','STAFF','DELETE',0),(95,'organisation','DELETE_STAFF_CHECKER','STAFF','DELETE',0),(96,'organisation','READ_SAVINGSPRODUCT','SAVINGSPRODUCT','READ',0),(97,'organisation','CREATE_SAVINGSPRODUCT','SAVINGSPR
 ODUCT','CREATE',0),(98,'organisation','CREATE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','CREATE',0),(99,'organisation','UPDATE_SAVINGSPRODUCT','SAVINGSPRODUCT','UPDATE',0),(100,'organisation','UPDATE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','UPDATE',0),(101,'organisation','DELETE_SAVINGSPRODUCT','SAVINGSPRODUCT','DELETE',0),(102,'organisation','DELETE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','DELETE',0),(103,'portfolio','READ_LOAN','LOAN','READ',0),(104,'portfolio','CREATE_LOAN','LOAN','CREATE',0),(105,'portfolio','CREATE_LOAN_CHECKER','LOAN','CREATE',0),(106,'portfolio','UPDATE_LOAN','LOAN','UPDATE',0),(107,'portfolio','UPDATE_LOAN_CHECKER','LOAN','UPDATE',0),(108,'portfolio','DELETE_LOAN','LOAN','DELETE',0),(109,'portfolio','DELETE_LOAN_CHECKER','LOAN','DELETE',0),(110,'portfolio','READ_CLIENT','CLIENT','READ',0),(111,'portfolio','CREATE_CLIENT','CLIENT','CREATE',0),(112,'portfolio','CREATE_CLIENT_CHECKER','CLIENT','CREATE',0),(113,'portfolio','UPDATE_CLIENT','CLIENT','UPDATE',0),(
 114,'portfolio','UPDATE_CLIENT_CHECKER','CLIENT','UPDATE',0),(115,'portfolio','DELETE_CLIENT','CLIENT','DELETE',0),(116,'portfolio','DELETE_CLIENT_CHECKER','CLIENT','DELETE',0),(117,'portfolio','READ_CLIENTIMAGE','CLIENTIMAGE','READ',0),(118,'portfolio','CREATE_CLIENTIMAGE','CLIENTIMAGE','CREATE',0),(119,'portfolio','CREATE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','CREATE',0),(120,'portfolio','DELETE_CLIENTIMAGE','CLIENTIMAGE','DELETE',0),(121,'portfolio','DELETE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','DELETE',0),(122,'portfolio','READ_CLIENTNOTE','CLIENTNOTE','READ',0),(123,'portfolio','CREATE_CLIENTNOTE','CLIENTNOTE','CREATE',0),(124,'portfolio','CREATE_CLIENTNOTE_CHECKER','CLIENTNOTE','CREATE',0),(125,'portfolio','UPDATE_CLIENTNOTE','CLIENTNOTE','UPDATE',0),(126,'portfolio','UPDATE_CLIENTNOTE_CHECKER','CLIENTNOTE','UPDATE',0),(127,'portfolio','DELETE_CLIENTNOTE','CLIENTNOTE','DELETE',0),(128,'portfolio','DELETE_CLIENTNOTE_CHECKER','CLIENTNOTE','DELETE',0),(129,'portfolio','READ_GROUPNOTE',
 'GROUPNOTE','READ',0),(130,'portfolio','CREATE_GROUPNOTE','GROUPNOTE','CREATE',0),(131,'portfolio','UPDATE_GROUPNOTE','GROUPNOTE','UPDATE',0),(132,'portfolio','DELETE_GROUPNOTE','GROUPNOTE','DELETE',0),(133,'portfolio','CREATE_GROUPNOTE_CHECKER','GROUPNOTE','CREATE',0),(134,'portfolio','UPDATE_GROUPNOTE_CHECKER','GROUPNOTE','UPDATE',0),(135,'portfolio','DELETE_GROUPNOTE_CHECKER','GROUPNOTE','DELETE',0),(136,'portfolio','READ_LOANNOTE','LOANNOTE','READ',0),(137,'portfolio','CREATE_LOANNOTE','LOANNOTE','CREATE',0),(138,'portfolio','UPDATE_LOANNOTE','LOANNOTE','UPDATE',0),(139,'portfolio','DELETE_LOANNOTE','LOANNOTE','DELETE',0),(140,'portfolio','CREATE_LOANNOTE_CHECKER','LOANNOTE','CREATE',0),(141,'portfolio','UPDATE_LOANNOTE_CHECKER','LOANNOTE','UPDATE',0),(142,'portfolio','DELETE_LOANNOTE_CHECKER','LOANNOTE','DELETE',0),(143,'portfolio','READ_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','READ',0),(144,'portfolio','CREATE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','CREATE',0),(145,'por
 tfolio','UPDATE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','UPDATE',0),(146,'portfolio','DELETE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','DELETE',0),(147,'portfolio','CREATE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','CREATE',0),(148,'portfolio','UPDATE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','UPDATE',0),(149,'portfolio','DELETE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','DELETE',0),(150,'portfolio','READ_SAVINGNOTE','SAVINGNOTE','READ',0),(151,'portfolio','CREATE_SAVINGNOTE','SAVINGNOTE','CREATE',0),(152,'portfolio','UPDATE_SAVINGNOTE','SAVINGNOTE','UPDATE',0),(153,'portfolio','DELETE_SAVINGNOTE','SAVINGNOTE','DELETE',0),(154,'portfolio','CREATE_SAVINGNOTE_CHECKER','SAVINGNOTE','CREATE',0),(155,'portfolio','UPDATE_SAVINGNOTE_CHECKER','SAVINGNOTE','UPDATE',0),(156,'portfolio','DELETE_SAVINGNOTE_CHECKER','SAVINGNOTE','DELETE',0),(157,'portfolio','READ_CLIENTIDENTIFIER','CLIENTIDENTIFIER','READ',0),(158,'portfolio','CREATE_CLIENTIDENTIFIER','CLIENTIDENTIFI
 ER','CREATE',0),(159,'portfolio','CREATE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','CREATE',0),(160,'portfolio','UPDATE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','UPDATE',0),(161,'portfolio','UPDATE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','UPDATE',0),(162,'portfolio','DELETE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','DELETE',0),(163,'portfolio','DELETE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','DELETE',0),(164,'portfolio','READ_DOCUMENT','DOCUMENT','READ',0),(165,'portfolio','CREATE_DOCUMENT','DOCUMENT','CREATE',0),(166,'portfolio','CREATE_DOCUMENT_CHECKER','DOCUMENT','CREATE',0),(167,'portfolio','UPDATE_DOCUMENT','DOCUMENT','UPDATE',0),(168,'portfolio','UPDATE_DOCUMENT_CHECKER','DOCUMENT','UPDATE',0),(169,'portfolio','DELETE_DOCUMENT','DOCUMENT','DELETE',0),(170,'portfolio','DELETE_DOCUMENT_CHECKER','DOCUMENT','DELETE',0),(171,'portfolio','READ_GROUP','GROUP','READ',0),(172,'portfolio','CREATE_GROUP','GROUP','CREATE',0),(173,'portfolio','CREATE_GROUP_CHECKER','GROUP','CREATE',0),(
 174,'portfolio','UPDATE_GROUP','GROUP','UPDATE',0),(175,'portfolio','UPDATE_GROUP_CHECKER','GROUP','UPDATE',0),(176,'portfolio','DELETE_GROUP','GROUP','DELETE',0),(177,'portfolio','DELETE_GROUP_CHECKER','GROUP','DELETE',0),(178,'portfolio','UNASSIGNSTAFF_GROUP','GROUP','UNASSIGNSTAFF',0),(179,'portfolio','UNASSIGNSTAFF_GROUP_CHECKER','GROUP','UNASSIGNSTAFF',0),(180,'portfolio','CREATE_LOANCHARGE','LOANCHARGE','CREATE',0),(181,'portfolio','CREATE_LOANCHARGE_CHECKER','LOANCHARGE','CREATE',0),(182,'portfolio','UPDATE_LOANCHARGE','LOANCHARGE','UPDATE',0),(183,'portfolio','UPDATE_LOANCHARGE_CHECKER','LOANCHARGE','UPDATE',0),(184,'portfolio','DELETE_LOANCHARGE','LOANCHARGE','DELETE',0),(185,'portfolio','DELETE_LOANCHARGE_CHECKER','LOANCHARGE','DELETE',0),(186,'portfolio','WAIVE_LOANCHARGE','LOANCHARGE','WAIVE',0),(187,'portfolio','WAIVE_LOANCHARGE_CHECKER','LOANCHARGE','WAIVE',0),(188,'portfolio','READ_SAVINGSACCOUNT','SAVINGSACCOUNT','READ',0),(189,'portfolio','CREATE_SAVINGSACCOUNT','SA
 VINGSACCOUNT','CREATE',0),(190,'portfolio','CREATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','CREATE',0),(191,'portfolio','UPDATE_SAVINGSACCOUNT','SAVINGSACCOUNT','UPDATE',0),(192,'portfolio','UPDATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','UPDATE',0),(193,'portfolio','DELETE_SAVINGSACCOUNT','SAVINGSACCOUNT','DELETE',0),(194,'portfolio','DELETE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','DELETE',0),(195,'portfolio','READ_GUARANTOR','GUARANTOR','READ',0),(196,'portfolio','CREATE_GUARANTOR','GUARANTOR','CREATE',0),(197,'portfolio','CREATE_GUARANTOR_CHECKER','GUARANTOR','CREATE',0),(198,'portfolio','UPDATE_GUARANTOR','GUARANTOR','UPDATE',0),(199,'portfolio','UPDATE_GUARANTOR_CHECKER','GUARANTOR','UPDATE',0),(200,'portfolio','DELETE_GUARANTOR','GUARANTOR','DELETE',0),(201,'portfolio','DELETE_GUARANTOR_CHECKER','GUARANTOR','DELETE',0),(202,'transaction_loan','APPROVE_LOAN','LOAN','APPROVE',0),(203,'transaction_loan','APPROVEINPAST_LOAN','LOAN','APPROVEINPAST',0),(204,'transaction_loan','RE
 JECT_LOAN','LOAN','REJECT',0),(205,'transaction_loan','REJECTINPAST_LOAN','LOAN','REJECTINPAST',0),(206,'transaction_loan','WITHDRAW_LOAN','LOAN','WITHDRAW',0),(207,'transaction_loan','WITHDRAWINPAST_LOAN','LOAN','WITHDRAWINPAST',0),(208,'transaction_loan','APPROVALUNDO_LOAN','LOAN','APPROVALUNDO',0),(209,'transaction_loan','DISBURSE_LOAN','LOAN','DISBURSE',0),(210,'transaction_loan','DISBURSEINPAST_LOAN','LOAN','DISBURSEINPAST',0),(211,'transaction_loan','DISBURSALUNDO_LOAN','LOAN','DISBURSALUNDO',0),(212,'transaction_loan','REPAYMENT_LOAN','LOAN','REPAYMENT',0),(213,'transaction_loan','REPAYMENTINPAST_LOAN','LOAN','REPAYMENTINPAST',0),(214,'transaction_loan','ADJUST_LOAN','LOAN','ADJUST',0),(215,'transaction_loan','WAIVEINTERESTPORTION_LOAN','LOAN','WAIVEINTERESTPORTION',0),(216,'transaction_loan','WRITEOFF_LOAN','LOAN','WRITEOFF',0),(217,'transaction_loan','CLOSE_LOAN','LOAN','CLOSE',0),(218,'transaction_loan','CLOSEASRESCHEDULED_LOAN','LOAN','CLOSEASRESCHEDULED',0),(219,'transac
 tion_loan','UPDATELOANOFFICER_LOAN','LOAN','UPDATELOANOFFICER',0),(220,'transaction_loan','UPDATELOANOFFICER_LOAN_CHECKER','LOAN','UPDATELOANOFFICER',0),(221,'transaction_loan','REMOVELOANOFFICER_LOAN','LOAN','REMOVELOANOFFICER',0),(222,'transaction_loan','REMOVELOANOFFICER_LOAN_CHECKER','LOAN','REMOVELOANOFFICER',0),(223,'transaction_loan','BULKREASSIGN_LOAN','LOAN','BULKREASSIGN',0),(224,'transaction_loan','BULKREASSIGN_LOAN_CHECKER','LOAN','BULKREASSIGN',0),(225,'transaction_loan','APPROVE_LOAN_CHECKER','LOAN','APPROVE',0),(226,'transaction_loan','APPROVEINPAST_LOAN_CHECKER','LOAN','APPROVEINPAST',0),(227,'transaction_loan','REJECT_LOAN_CHECKER','LOAN','REJECT',0),(228,'transaction_loan','REJECTINPAST_LOAN_CHECKER','LOAN','REJECTINPAST',0),(229,'transaction_loan','WITHDRAW_LOAN_CHECKER','LOAN','WITHDRAW',0),(230,'transaction_loan','WITHDRAWINPAST_LOAN_CHECKER','LOAN','WITHDRAWINPAST',0),(231,'transaction_loan','APPROVALUNDO_LOAN_CHECKER','LOAN','APPROVALUNDO',0),(232,'transaction
 _loan','DISBURSE_LOAN_CHECKER','LOAN','DISBURSE',0),(233,'transaction_loan','DISBURSEINPAST_LOAN_CHECKER','LOAN','DISBURSEINPAST',0),(234,'transaction_loan','DISBURSALUNDO_LOAN_CHECKER','LOAN','DISBURSALUNDO',0),(235,'transaction_loan','REPAYMENT_LOAN_CHECKER','LOAN','REPAYMENT',0),(236,'transaction_loan','REPAYMENTINPAST_LOAN_CHECKER','LOAN','REPAYMENTINPAST',0),(237,'transaction_loan','ADJUST_LOAN_CHECKER','LOAN','ADJUST',0),(238,'transaction_loan','WAIVEINTERESTPORTION_LOAN_CHECKER','LOAN','WAIVEINTERESTPORTION',0),(239,'transaction_loan','WRITEOFF_LOAN_CHECKER','LOAN','WRITEOFF',0),(240,'transaction_loan','CLOSE_LOAN_CHECKER','LOAN','CLOSE',0),(241,'transaction_loan','CLOSEASRESCHEDULED_LOAN_CHECKER','LOAN','CLOSEASRESCHEDULED',0),(242,'transaction_savings','DEPOSIT_SAVINGSACCOUNT','SAVINGSACCOUNT','DEPOSIT',0),(243,'transaction_savings','DEPOSIT_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','DEPOSIT',0),(244,'transaction_savings','WITHDRAWAL_SAVINGSACCOUNT','SAVINGSACCOUNT','WITHDRA
 WAL',0),(245,'transaction_savings','WITHDRAWAL_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','WITHDRAWAL',0),(246,'transaction_savings','ACTIVATE_SAVINGSACCOUNT','SAVINGSACCOUNT','ACTIVATE',0),(247,'transaction_savings','ACTIVATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','ACTIVATE',0),(248,'accounting','CREATE_GLACCOUNT','GLACCOUNT','CREATE',0),(249,'accounting','UPDATE_GLACCOUNT','GLACCOUNT','UPDATE',0),(250,'accounting','DELETE_GLACCOUNT','GLACCOUNT','DELETE',0),(251,'accounting','CREATE_GLCLOSURE','GLCLOSURE','CREATE',0),(252,'accounting','UPDATE_GLCLOSURE','GLCLOSURE','UPDATE',0),(253,'accounting','DELETE_GLCLOSURE','GLCLOSURE','DELETE',0),(254,'accounting','CREATE_JOURNALENTRY','JOURNALENTRY','CREATE',0),(255,'accounting','REVERSE_JOURNALENTRY','JOURNALENTRY','REVERSE',0),(256,'report','READ_Active Loans - Details','Active Loans - Details','READ',0),(257,'report','READ_Active Loans - Summary','Active Loans - Summary','READ',0),(258,'report','READ_Active Loans by Disbursal Period','Ac
 tive Loans by Disbursal Period','READ',0),(259,'report','READ_Active Loans in last installment','Active Loans in last installment','READ',0),(260,'report','READ_Active Loans in last installment Summary','Active Loans in last installment Summary','READ',0),(261,'report','READ_Active Loans Passed Final Maturity','Active Loans Passed Final Maturity','READ',0),(262,'report','READ_Active Loans Passed Final Maturity Summary','Active Loans Passed Final Maturity Summary','READ',0),(263,'report','READ_Aging Detail','Aging Detail','READ',0),(264,'report','READ_Aging Summary (Arrears in Months)','Aging Summary (Arrears in Months)','READ',0),(265,'report','READ_Aging Summary (Arrears in Weeks)','Aging Summary (Arrears in Weeks)','READ',0),(266,'report','READ_Balance Sheet','Balance Sheet','READ',0),(267,'report','READ_Branch Expected Cash Flow','Branch Expected Cash Flow','READ',0),(268,'report','READ_Client Listing','Client Listing','READ',0),(269,'report','READ_Client Loans Listing','Client L
 oans Listing','READ',0),(270,'report','READ_Expected Payments By Date - Basic','Expected Payments By Date - Basic','READ',0),(271,'report','READ_Expected Payments By Date - Formatted','Expected Payments By Date - Formatted','READ',0),(272,'report','READ_Funds Disbursed Between Dates Summary','Funds Disbursed Between Dates Summary','READ',0),(273,'report','READ_Funds Disbursed Between Dates Summary by Office','Funds Disbursed Between Dates Summary by Office','READ',0),(274,'report','READ_Income Statement','Income Statement','READ',0),(275,'report','READ_Loan Account Schedule','Loan Account Schedule','READ',0),(276,'report','READ_Loans Awaiting Disbursal','Loans Awaiting Disbursal','READ',0),(277,'report','READ_Loans Awaiting Disbursal Summary','Loans Awaiting Disbursal Summary','READ',0),(278,'report','READ_Loans Awaiting Disbursal Summary by Month','Loans Awaiting Disbursal Summary by Month','READ',0),(279,'report','READ_Loans Pending Approval','Loans Pending Approval','READ',0),(28
 0,'report','READ_Obligation Met Loans Details','Obligation Met Loans Details','READ',0),(281,'report','READ_Obligation Met Loans Summary','Obligation Met Loans Summary','READ',0),(282,'report','READ_Portfolio at Risk','Portfolio at Risk','READ',0),(283,'report','READ_Portfolio at Risk by Branch','Portfolio at Risk by Branch','READ',0),(284,'report','READ_Rescheduled Loans','Rescheduled Loans','READ',0),(285,'report','READ_Trial Balance','Trial Balance','READ',0),(286,'report','READ_Written-Off Loans','Written-Off Loans','READ',0),(287,'datatable','CREATE_extra_client_details','extra_client_details','CREATE',1),(288,'datatable','CREATE_extra_family_details','extra_family_details','CREATE',1),(289,'datatable','CREATE_extra_loan_details','extra_loan_details','CREATE',1),(290,'datatable','READ_extra_client_details','extra_client_details','READ',1),(291,'datatable','READ_extra_family_details','extra_family_details','READ',1),(292,'datatable','READ_extra_loan_details','extra_loan_details'
 ,'READ',1),(293,'datatable','UPDATE_extra_client_details','extra_client_details','UPDATE',1),(294,'datatable','UPDATE_extra_family_details','extra_family_details','UPDATE',1),(295,'datatable','UPDATE_extra_loan_details','extra_loan_details','UPDATE',1),(296,'datatable','DELETE_extra_client_details','extra_client_details','DELETE',1),(297,'datatable','DELETE_extra_family_details','extra_family_details','DELETE',1),(298,'datatable','DELETE_extra_loan_details','extra_loan_details','DELETE',1);
-/*!40000 ALTER TABLE `m_permission` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_portfolio_command_source`
---
-
-DROP TABLE IF EXISTS `m_portfolio_command_source`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_portfolio_command_source` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `action_name` varchar(50) NOT NULL,
-  `entity_name` varchar(50) NOT NULL,
-  `o

<TRUNCATED>


[20/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/latam-demo/bk_latam.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/latam-demo/bk_latam.sql b/fineract-db/multi-tenant-demo-backups/latam-demo/bk_latam.sql
deleted file mode 100644
index 770877b..0000000
--- a/fineract-db/multi-tenant-demo-backups/latam-demo/bk_latam.sql
+++ /dev/null
@@ -1,1847 +0,0 @@
--- MySQL dump 10.13  Distrib 5.1.60, for Win32 (ia32)
---
--- Host: localhost    Database: mifostenant-default
--- ------------------------------------------------------
--- Server version	5.1.60-community
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `acc_gl_account`
---
-
-DROP TABLE IF EXISTS `acc_gl_account`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_account` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(45) NOT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `gl_code` varchar(45) NOT NULL,
-  `disabled` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1',
-  `account_usage` tinyint(1) NOT NULL DEFAULT '2',
-  `classification_enum` smallint(5) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `acc_gl_code` (`gl_code`),
-  KEY `FK_ACC_0000000001` (`parent_id`),
-  CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_account`
---
-
-LOCK TABLES `acc_gl_account` WRITE;
-/*!40000 ALTER TABLE `acc_gl_account` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_account` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_closure`
---
-
-DROP TABLE IF EXISTS `acc_gl_closure`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_closure` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `closing_date` date NOT NULL,
-  `is_deleted` int(20) NOT NULL DEFAULT '0',
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `comments` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `office_id_closing_date` (`office_id`,`closing_date`),
-  KEY `FK_acc_gl_closure_m_office` (`office_id`),
-  KEY `FK_acc_gl_closure_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_closure_m_appuser_2` (`lastmodifiedby_id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_closure`
---
-
-LOCK TABLES `acc_gl_closure` WRITE;
-/*!40000 ALTER TABLE `acc_gl_closure` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_closure` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_journal_entry`
---
-
-DROP TABLE IF EXISTS `acc_gl_journal_entry`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_journal_entry` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_id` bigint(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `reversal_id` bigint(20) DEFAULT NULL,
-  `transaction_id` varchar(50) NOT NULL,
-  `reversed` tinyint(1) NOT NULL DEFAULT '0',
-  `portfolio_generated` tinyint(1) NOT NULL DEFAULT '0',
-  `entry_date` date NOT NULL,
-  `type_enum` smallint(50) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `entity_type` varchar(50) DEFAULT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `createdby_id` bigint(20) NOT NULL,
-  `lastmodifiedby_id` bigint(20) NOT NULL,
-  `created_date` datetime NOT NULL,
-  `lastmodified_date` datetime NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_acc_gl_journal_entry_m_office` (`office_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser_2` (`lastmodifiedby_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_journal_entry` (`reversal_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_account` (`account_id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_account` FOREIGN KEY (`account_id`) REFERENCES `acc_gl_account` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_journal_entry` FOREIGN KEY (`reversal_id`) REFERENCES `acc_gl_journal_entry` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_journal_entry`
---
-
-LOCK TABLES `acc_gl_journal_entry` WRITE;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_product_mapping`
---
-
-DROP TABLE IF EXISTS `acc_product_mapping`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_product_mapping` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `gl_account_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `product_type` smallint(5) DEFAULT NULL,
-  `financial_account_type` smallint(5) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_product_mapping`
---
-
-LOCK TABLES `acc_product_mapping` WRITE;
-/*!40000 ALTER TABLE `acc_product_mapping` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_product_mapping` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `c_configuration`
---
-
-DROP TABLE IF EXISTS `c_configuration`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `c_configuration` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(50) DEFAULT NULL,
-  `enabled` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `c_configuration`
---
-
-LOCK TABLES `c_configuration` WRITE;
-/*!40000 ALTER TABLE `c_configuration` DISABLE KEYS */;
-INSERT INTO `c_configuration` VALUES (1,'maker-checker',0);
-/*!40000 ALTER TABLE `c_configuration` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_client_details`
---
-
-DROP TABLE IF EXISTS `extra_client_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_client_details` (
-  `client_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_latam_extra_client_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_client_details`
---
-
-LOCK TABLES `extra_client_details` WRITE;
-/*!40000 ALTER TABLE `extra_client_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_client_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_family_details`
---
-
-DROP TABLE IF EXISTS `extra_family_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_family_details` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `Name` varchar(40) DEFAULT NULL,
-  `Date of Birth` date DEFAULT NULL,
-  `Points Score` int(11) DEFAULT NULL,
-  `Education_cd_Highest` int(11) DEFAULT NULL,
-  `Other Notes` text,
-  PRIMARY KEY (`id`),
-  KEY `FK_Extra Family Details Data_1` (`client_id`),
-  CONSTRAINT `FK_latam_family_details` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_family_details`
---
-
-LOCK TABLES `extra_family_details` WRITE;
-/*!40000 ALTER TABLE `extra_family_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_family_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `extra_loan_details`
---
-
-DROP TABLE IF EXISTS `extra_loan_details`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `extra_loan_details` (
-  `loan_id` bigint(20) NOT NULL,
-  `Business Description` varchar(100) DEFAULT NULL,
-  `Years in Business` int(11) DEFAULT NULL,
-  `Gender_cd` int(11) DEFAULT NULL,
-  `Education_cv` varchar(60) DEFAULT NULL,
-  `Next Visit` date DEFAULT NULL,
-  `Highest Rate Paid` decimal(19,6) DEFAULT NULL,
-  `Comment` text,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_latam_extra_loan_details` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `extra_loan_details`
---
-
-LOCK TABLES `extra_loan_details` WRITE;
-/*!40000 ALTER TABLE `extra_loan_details` DISABLE KEYS */;
-/*!40000 ALTER TABLE `extra_loan_details` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser`
---
-
-DROP TABLE IF EXISTS `m_appuser`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `office_id` bigint(20) DEFAULT NULL,
-  `username` varchar(100) NOT NULL,
-  `firstname` varchar(100) NOT NULL,
-  `lastname` varchar(100) NOT NULL,
-  `password` varchar(255) NOT NULL,
-  `email` varchar(100) NOT NULL,
-  `firsttime_login_remaining` bit(1) NOT NULL,
-  `nonexpired` bit(1) NOT NULL,
-  `nonlocked` bit(1) NOT NULL,
-  `nonexpired_credentials` bit(1) NOT NULL,
-  `enabled` bit(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `username_org` (`username`),
-  KEY `FKB3D587CE0DD567A` (`office_id`),
-  CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser`
---
-
-LOCK TABLES `m_appuser` WRITE;
-/*!40000 ALTER TABLE `m_appuser` DISABLE KEYS */;
-INSERT INTO `m_appuser` VALUES (1,0,1,'mifos','App','Administrator','5787039480429368bf94732aacc771cd0a3ea02bcf504ffe1185ab94213bc63a','demomfi@mifos.org','\0','','','','');
-/*!40000 ALTER TABLE `m_appuser` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser_role`
---
-
-DROP TABLE IF EXISTS `m_appuser_role`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser_role` (
-  `appuser_id` bigint(20) NOT NULL,
-  `role_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`appuser_id`,`role_id`),
-  KEY `FK7662CE59B4100309` (`appuser_id`),
-  KEY `FK7662CE5915CEC7AB` (`role_id`),
-  CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`),
-  CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser_role`
---
-
-LOCK TABLES `m_appuser_role` WRITE;
-/*!40000 ALTER TABLE `m_appuser_role` DISABLE KEYS */;
-INSERT INTO `m_appuser_role` VALUES (1,1);
-/*!40000 ALTER TABLE `m_appuser_role` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_charge`
---
-
-DROP TABLE IF EXISTS `m_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `charge_applies_to_enum` smallint(5) NOT NULL,
-  `charge_time_enum` smallint(5) NOT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `is_active` tinyint(1) NOT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_charge`
---
-
-LOCK TABLES `m_charge` WRITE;
-/*!40000 ALTER TABLE `m_charge` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client`
---
-
-DROP TABLE IF EXISTS `m_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `middlename` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `fullname` varchar(100) DEFAULT NULL,
-  `display_name` varchar(100) NOT NULL,
-  `image_key` varchar(500) DEFAULT NULL,
-  `joined_date` date DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `external_id` (`external_id`),
-  KEY `FKCE00CAB3E0DD567A` (`office_id`),
-  CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client`
---
-
-LOCK TABLES `m_client` WRITE;
-/*!40000 ALTER TABLE `m_client` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client_identifier`
---
-
-DROP TABLE IF EXISTS `m_client_identifier`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client_identifier` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `document_type_id` int(11) NOT NULL,
-  `document_key` varchar(50) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `unique_identifier_key` (`document_type_id`,`document_key`),
-  UNIQUE KEY `unique_client_identifier` (`client_id`,`document_type_id`),
-  KEY `FK_m_client_document_m_client` (`client_id`),
-  KEY `FK_m_client_document_m_code_value` (`document_type_id`),
-  CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client_identifier`
---
-
-LOCK TABLES `m_client_identifier` WRITE;
-/*!40000 ALTER TABLE `m_client_identifier` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_client_identifier` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code`
---
-
-DROP TABLE IF EXISTS `m_code`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_name` varchar(100) DEFAULT NULL,
-  `is_system_defined` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_name` (`code_name`)
-) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code`
---
-
-LOCK TABLES `m_code` WRITE;
-/*!40000 ALTER TABLE `m_code` DISABLE KEYS */;
-INSERT INTO `m_code` VALUES (1,'Customer Identifier',1),(2,'Gender',1),(3,'Education',1);
-/*!40000 ALTER TABLE `m_code` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code_value`
---
-
-DROP TABLE IF EXISTS `m_code_value`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code_value` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_id` int(11) NOT NULL,
-  `code_value` varchar(100) DEFAULT NULL,
-  `order_position` int(11) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_value` (`code_id`,`code_value`),
-  KEY `FKCFCEA42640BE071Z` (`code_id`),
-  CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code_value`
---
-
-LOCK TABLES `m_code_value` WRITE;
-/*!40000 ALTER TABLE `m_code_value` DISABLE KEYS */;
-INSERT INTO `m_code_value` VALUES (1,1,'Passport number',0),(2,2,'Male',1),(3,2,'Female',2),(4,3,'Primary',1),(5,3,'Secondary',2),(6,3,'University',3);
-/*!40000 ALTER TABLE `m_code_value` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_currency`
---
-
-DROP TABLE IF EXISTS `m_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_currency`
---
-
-LOCK TABLES `m_currency` WRITE;
-/*!40000 ALTER TABLE `m_currency` DISABLE KEYS */;
-INSERT INTO `m_currency` VALUES (1,'AED',2,NULL,'UAE Dirham','currency.AED'),(2,'AFN',2,NULL,'Afghanistan Afghani','currency.AFN'),(3,'ALL',2,NULL,'Albanian Lek','currency.ALL'),(4,'AMD',2,NULL,'Armenian Dram','currency.AMD'),(5,'ANG',2,NULL,'Netherlands Antillian Guilder','currency.ANG'),(6,'AOA',2,NULL,'Angolan Kwanza','currency.AOA'),(7,'ARS',2,'$','Argentine Peso','currency.ARS'),(8,'AUD',2,'A$','Australian Dollar','currency.AUD'),(9,'AWG',2,NULL,'Aruban Guilder','currency.AWG'),(10,'AZM',2,NULL,'Azerbaijanian Manat','currency.AZM'),(11,'BAM',2,NULL,'Bosnia and Herzegovina Convertible Marks','currency.BAM'),(12,'BBD',2,NULL,'Barbados Dollar','currency.BBD'),(13,'BDT',2,NULL,'Bangladesh Taka','currency.BDT'),(14,'BGN',2,NULL,'Bulgarian Lev','currency.BGN'),(15,'BHD',3,NULL,'Bahraini Dinar','currency.BHD'),(16,'BIF',0,NULL,'Burundi Franc','currency.BIF'),(17,'BMD',2,NULL,'Bermudian Dollar','currency.BMD'),(18,'BND',2,'B$','Brunei Dollar','currency.BND'),(19,'BOB',2,'Bs.','Bolivian
  Boliviano','currency.BOB'),(20,'BRL',2,'R$','Brazilian Real','currency.BRL'),(21,'BSD',2,NULL,'Bahamian Dollar','currency.BSD'),(22,'BTN',2,NULL,'Bhutan Ngultrum','currency.BTN'),(23,'BWP',2,NULL,'Botswana Pula','currency.BWP'),(24,'BYR',0,NULL,'Belarussian Ruble','currency.BYR'),(25,'BZD',2,'BZ$','Belize Dollar','currency.BZD'),(26,'CAD',2,NULL,'Canadian Dollar','currency.CAD'),(27,'CDF',2,NULL,'Franc Congolais','currency.CDF'),(28,'CHF',2,NULL,'Swiss Franc','currency.CHF'),(29,'CLP',0,'$','Chilean Peso','currency.CLP'),(30,'CNY',2,NULL,'Chinese Yuan Renminbi','currency.CNY'),(31,'COP',2,'$','Colombian Peso','currency.COP'),(32,'CRC',2,'₡','Costa Rican Colon','currency.CRC'),(33,'CSD',2,NULL,'Serbian Dinar','currency.CSD'),(34,'CUP',2,'$MN','Cuban Peso','currency.CUP'),(35,'CVE',2,NULL,'Cape Verde Escudo','currency.CVE'),(36,'CYP',2,NULL,'Cyprus Pound','currency.CYP'),(37,'CZK',2,NULL,'Czech Koruna','currency.CZK'),(38,'DJF',0,NULL,'Djibouti Franc','currency.DJF'),(39,'DKK',2,NU
 LL,'Danish Krone','currency.DKK'),(40,'DOP',2,'RD$','Dominican Peso','currency.DOP'),(41,'DZD',2,NULL,'Algerian Dinar','currency.DZD'),(42,'EEK',2,NULL,'Estonian Kroon','currency.EEK'),(43,'EGP',2,NULL,'Egyptian Pound','currency.EGP'),(44,'ERN',2,NULL,'Eritrea Nafka','currency.ERN'),(45,'ETB',2,NULL,'Ethiopian Birr','currency.ETB'),(46,'EUR',2,'€','Euro','currency.EUR'),(47,'FJD',2,NULL,'Fiji Dollar','currency.FJD'),(48,'FKP',2,NULL,'Falkland Islands Pound','currency.FKP'),(49,'GBP',2,NULL,'Pound Sterling','currency.GBP'),(50,'GEL',2,NULL,'Georgian Lari','currency.GEL'),(51,'GHC',2,'GHc','Ghana Cedi','currency.GHC'),(52,'GIP',2,NULL,'Gibraltar Pound','currency.GIP'),(53,'GMD',2,NULL,'Gambian Dalasi','currency.GMD'),(54,'GNF',0,NULL,'Guinea Franc','currency.GNF'),(55,'GTQ',2,'Q','Guatemala Quetzal','currency.GTQ'),(56,'GYD',2,NULL,'Guyana Dollar','currency.GYD'),(57,'HKD',2,NULL,'Hong Kong Dollar','currency.HKD'),(58,'HNL',2,'L','Honduras Lempira','currency.HNL'),(59,'HRK',2,NULL,'
 Croatian Kuna','currency.HRK'),(60,'HTG',2,'G','Haiti Gourde','currency.HTG'),(61,'HUF',2,NULL,'Hungarian Forint','currency.HUF'),(62,'IDR',2,NULL,'Indonesian Rupiah','currency.IDR'),(63,'ILS',2,NULL,'New Israeli Shekel','currency.ILS'),(64,'INR',2,'₹','Indian Rupee','currency.INR'),(65,'IQD',3,NULL,'Iraqi Dinar','currency.IQD'),(66,'IRR',2,NULL,'Iranian Rial','currency.IRR'),(67,'ISK',0,NULL,'Iceland Krona','currency.ISK'),(68,'JMD',2,NULL,'Jamaican Dollar','currency.JMD'),(69,'JOD',3,NULL,'Jordanian Dinar','currency.JOD'),(70,'JPY',0,NULL,'Japanese Yen','currency.JPY'),(71,'KES',2,'KSh','Kenyan Shilling','currency.KES'),(72,'KGS',2,NULL,'Kyrgyzstan Som','currency.KGS'),(73,'KHR',2,NULL,'Cambodia Riel','currency.KHR'),(74,'KMF',0,NULL,'Comoro Franc','currency.KMF'),(75,'KPW',2,NULL,'North Korean Won','currency.KPW'),(76,'KRW',0,NULL,'Korean Won','currency.KRW'),(77,'KWD',3,NULL,'Kuwaiti Dinar','currency.KWD'),(78,'KYD',2,NULL,'Cayman Islands Dollar','currency.KYD'),(79,'KZT',2,NU
 LL,'Kazakhstan Tenge','currency.KZT'),(80,'LAK',2,NULL,'Lao Kip','currency.LAK'),(81,'LBP',2,'L£','Lebanese Pound','currency.LBP'),(82,'LKR',2,NULL,'Sri Lanka Rupee','currency.LKR'),(83,'LRD',2,NULL,'Liberian Dollar','currency.LRD'),(84,'LSL',2,NULL,'Lesotho Loti','currency.LSL'),(85,'LTL',2,NULL,'Lithuanian Litas','currency.LTL'),(86,'LVL',2,NULL,'Latvian Lats','currency.LVL'),(87,'LYD',3,NULL,'Libyan Dinar','currency.LYD'),(88,'MAD',2,NULL,'Moroccan Dirham','currency.MAD'),(89,'MDL',2,NULL,'Moldovan Leu','currency.MDL'),(90,'MGA',2,NULL,'Malagasy Ariary','currency.MGA'),(91,'MKD',2,NULL,'Macedonian Denar','currency.MKD'),(92,'MMK',2,'K','Myanmar Kyat','currency.MMK'),(93,'MNT',2,NULL,'Mongolian Tugrik','currency.MNT'),(94,'MOP',2,NULL,'Macau Pataca','currency.MOP'),(95,'MRO',2,NULL,'Mauritania Ouguiya','currency.MRO'),(96,'MTL',2,NULL,'Maltese Lira','currency.MTL'),(97,'MUR',2,NULL,'Mauritius Rupee','currency.MUR'),(98,'MVR',2,NULL,'Maldives Rufiyaa','currency.MVR'),(99,'MWK',2,N
 ULL,'Malawi Kwacha','currency.MWK'),(100,'MXN',2,'$','Mexican Peso','currency.MXN'),(101,'MYR',2,NULL,'Malaysian Ringgit','currency.MYR'),(102,'MZM',2,NULL,'Mozambique Metical','currency.MZM'),(103,'NAD',2,NULL,'Namibia Dollar','currency.NAD'),(104,'NGN',2,NULL,'Nigerian Naira','currency.NGN'),(105,'NIO',2,'C$','Nicaragua Cordoba Oro','currency.NIO'),(106,'NOK',2,NULL,'Norwegian Krone','currency.NOK'),(107,'NPR',2,NULL,'Nepalese Rupee','currency.NPR'),(108,'NZD',2,NULL,'New Zealand Dollar','currency.NZD'),(109,'OMR',3,NULL,'Rial Omani','currency.OMR'),(110,'PAB',2,'B/.','Panama Balboa','currency.PAB'),(111,'PEN',2,'S/.','Peruvian Nuevo Sol','currency.PEN'),(112,'PGK',2,NULL,'Papua New Guinea Kina','currency.PGK'),(113,'PHP',2,NULL,'Philippine Peso','currency.PHP'),(114,'PKR',2,NULL,'Pakistan Rupee','currency.PKR'),(115,'PLN',2,NULL,'Polish Zloty','currency.PLN'),(116,'PYG',0,'₲','Paraguayan Guarani','currency.PYG'),(117,'QAR',2,NULL,'Qatari Rial','currency.QAR'),(118,'RON',2,NULL,
 'Romanian Leu','currency.RON'),(119,'RUB',2,NULL,'Russian Ruble','currency.RUB'),(120,'RWF',0,NULL,'Rwanda Franc','currency.RWF'),(121,'SAR',2,NULL,'Saudi Riyal','currency.SAR'),(122,'SBD',2,NULL,'Solomon Islands Dollar','currency.SBD'),(123,'SCR',2,NULL,'Seychelles Rupee','currency.SCR'),(124,'SDD',2,NULL,'Sudanese Dinar','currency.SDD'),(125,'SEK',2,NULL,'Swedish Krona','currency.SEK'),(126,'SGD',2,NULL,'Singapore Dollar','currency.SGD'),(127,'SHP',2,NULL,'St Helena Pound','currency.SHP'),(128,'SIT',2,NULL,'Slovenian Tolar','currency.SIT'),(129,'SKK',2,NULL,'Slovak Koruna','currency.SKK'),(130,'SLL',2,NULL,'Sierra Leone Leone','currency.SLL'),(131,'SOS',2,NULL,'Somali Shilling','currency.SOS'),(132,'SRD',2,NULL,'Surinam Dollar','currency.SRD'),(133,'STD',2,NULL,'Sao Tome and Principe Dobra','currency.STD'),(134,'SVC',2,NULL,'El Salvador Colon','currency.SVC'),(135,'SYP',2,NULL,'Syrian Pound','currency.SYP'),(136,'SZL',2,NULL,'Swaziland Lilangeni','currency.SZL'),(137,'THB',2,NULL,
 'Thai Baht','currency.THB'),(138,'TJS',2,NULL,'Tajik Somoni','currency.TJS'),(139,'TMM',2,NULL,'Turkmenistan Manat','currency.TMM'),(140,'TND',3,'DT','Tunisian Dinar','currency.TND'),(141,'TOP',2,NULL,'Tonga Pa\'anga','currency.TOP'),(142,'TRY',2,NULL,'Turkish Lira','currency.TRY'),(143,'TTD',2,NULL,'Trinidad and Tobago Dollar','currency.TTD'),(144,'TWD',2,NULL,'New Taiwan Dollar','currency.TWD'),(145,'TZS',2,NULL,'Tanzanian Shilling','currency.TZS'),(146,'UAH',2,NULL,'Ukraine Hryvnia','currency.UAH'),(147,'UGX',2,'USh','Uganda Shilling','currency.UGX'),(148,'USD',2,'$','US Dollar','currency.USD'),(149,'UYU',2,'$U','Peso Uruguayo','currency.UYU'),(150,'UZS',2,NULL,'Uzbekistan Sum','currency.UZS'),(151,'VEB',2,'Bs.F.','Venezuelan Bolivar','currency.VEB'),(152,'VND',2,NULL,'Vietnamese Dong','currency.VND'),(153,'VUV',0,NULL,'Vanuatu Vatu','currency.VUV'),(154,'WST',2,NULL,'Samoa Tala','currency.WST'),(155,'XAF',0,NULL,'CFA Franc BEAC','currency.XAF'),(156,'XCD',2,NULL,'East Caribbean 
 Dollar','currency.XCD'),(157,'XDR',5,NULL,'SDR (Special Drawing Rights)','currency.XDR'),(158,'XOF',0,'CFA','CFA Franc BCEAO','currency.XOF'),(159,'XPF',0,NULL,'CFP Franc','currency.XPF'),(160,'YER',2,NULL,'Yemeni Rial','currency.YER'),(161,'ZAR',2,'R','South African Rand','currency.ZAR'),(162,'ZMK',2,NULL,'Zambian Kwacha','currency.ZMK'),(163,'ZWD',2,NULL,'Zimbabwe Dollar','currency.ZWD');
-/*!40000 ALTER TABLE `m_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_deposit_account`
---
-
-DROP TABLE IF EXISTS `m_deposit_account`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_deposit_account` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `status_enum` smallint(5) NOT NULL DEFAULT '0',
-  `external_id` varchar(100) DEFAULT NULL,
-  `client_id` bigint(20) NOT NULL,
-  `product_id` bigint(20) NOT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `deposit_amount` decimal(19,6) DEFAULT NULL,
-  `maturity_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `tenure_months` int(11) NOT NULL,
-  `interest_compounded_every` smallint(5) NOT NULL DEFAULT '1',
-  `interest_compounded_every_period_enum` smallint(5) NOT NULL DEFAULT '2',
-  `projected_commencement_date` date NOT NULL,
-  `actual_commencement_date` date DEFAULT NULL,
-  `matures_on_date` datetime DEFAULT NULL,
-  `projected_interest_accrued_on_maturity` decimal(19,6) NOT NULL,
-  `actual_interest_accrued` decimal(19,6) DEFAULT NULL,
-  `projected_total_maturity_amount` decimal(19,6) NOT NULL,
-  `actual_total_amount` decimal(19,6) DEFAULT NULL,
-  `is_compounding_interest_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `interest_paid` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `is_interest_withdrawable` tinyint(1) NOT NULL DEFAULT '0',
-  `available_interest` decimal(19,6) DEFAULT '0.000000',
-  `interest_posted_amount` decimal(19,6) DEFAULT '0.000000',
-  `last_interest_posted_date` date DEFAULT NULL,
-  `next_interest_posting_date` date DEFAULT NULL,
-  `is_renewal_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `renewed_account_id` bigint(20) DEFAULT NULL,
-  `is_preclosure_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `pre_closure_interest_rate` decimal(19,6) NOT NULL,
-  `is_lock_in_period_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `lock_in_period` bigint(20) DEFAULT NULL,
-  `lock_in_period_type` smallint(5) NOT NULL DEFAULT '2',
-  `withdrawnon_date` datetime DEFAULT NULL,
-  `rejectedon_date` datetime DEFAULT NULL,
-  `closedon_date` datetime DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `deposit_acc_external_id` (`external_id`),
-  KEY `FKKW0000000000001` (`client_id`),
-  KEY `FKKW0000000000002` (`product_id`),
-  KEY `FKKW0000000000003` (`renewed_account_id`),
-  CONSTRAINT `FKKW0000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FKKW0000000000002` FOREIGN KEY (`product_id`) REFERENCES `m_product_deposit` (`id`),
-  CONSTRAINT `FKKW0000000000003` FOREIGN KEY (`renewed_account_id`) REFERENCES `m_deposit_account` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_deposit_account`
---
-
-LOCK TABLES `m_deposit_account` WRITE;
-/*!40000 ALTER TABLE `m_deposit_account` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_deposit_account` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_deposit_account_transaction`
---
-
-DROP TABLE IF EXISTS `m_deposit_account_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_deposit_account_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `deposit_account_id` bigint(20) NOT NULL,
-  `transaction_type_enum` smallint(5) NOT NULL,
-  `contra_id` bigint(20) DEFAULT NULL,
-  `transaction_date` date NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `interest` decimal(19,6) NOT NULL,
-  `total` decimal(19,6) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKKW00000000000005` (`deposit_account_id`),
-  KEY `FKKW00000000000006` (`contra_id`),
-  CONSTRAINT `FKKW00000000000005` FOREIGN KEY (`deposit_account_id`) REFERENCES `m_deposit_account` (`id`),
-  CONSTRAINT `FKKW00000000000006` FOREIGN KEY (`contra_id`) REFERENCES `m_deposit_account_transaction` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_deposit_account_transaction`
---
-
-LOCK TABLES `m_deposit_account_transaction` WRITE;
-/*!40000 ALTER TABLE `m_deposit_account_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_deposit_account_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_document`
---
-
-DROP TABLE IF EXISTS `m_document`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_document` (
-  `id` int(20) NOT NULL AUTO_INCREMENT,
-  `parent_entity_type` varchar(50) NOT NULL,
-  `parent_entity_id` int(20) NOT NULL DEFAULT '0',
-  `name` varchar(250) NOT NULL,
-  `file_name` varchar(250) NOT NULL,
-  `size` int(20) DEFAULT '0',
-  `type` varchar(50) DEFAULT NULL,
-  `description` varchar(1000) DEFAULT NULL,
-  `location` varchar(500) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_document`
---
-
-LOCK TABLES `m_document` WRITE;
-/*!40000 ALTER TABLE `m_document` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_document` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_fund`
---
-
-DROP TABLE IF EXISTS `m_fund`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_fund` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(255) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `fund_name_org` (`name`),
-  UNIQUE KEY `fund_externalid_org` (`external_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_fund`
---
-
-LOCK TABLES `m_fund` WRITE;
-/*!40000 ALTER TABLE `m_fund` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_fund` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group`
---
-
-DROP TABLE IF EXISTS `m_group`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `name` varchar(100) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`),
-  UNIQUE KEY `external_id` (`external_id`),
-  KEY `office_id` (`office_id`),
-  CONSTRAINT `m_group_ibfk_1` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group`
---
-
-LOCK TABLES `m_group` WRITE;
-/*!40000 ALTER TABLE `m_group` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group_client`
---
-
-DROP TABLE IF EXISTS `m_group_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group_client` (
-  `group_id` bigint(20) NOT NULL,
-  `client_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`group_id`,`client_id`),
-  KEY `client_id` (`client_id`),
-  CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group_client`
---
-
-LOCK TABLES `m_group_client` WRITE;
-/*!40000 ALTER TABLE `m_group_client` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_guarantor`
---
-
-DROP TABLE IF EXISTS `m_guarantor`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_guarantor` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `dob` date DEFAULT NULL,
-  `address_line_1` varchar(500) DEFAULT NULL,
-  `address_line_2` varchar(500) DEFAULT NULL,
-  `city` varchar(50) DEFAULT NULL,
-  `state` varchar(50) DEFAULT NULL,
-  `country` varchar(50) DEFAULT NULL,
-  `zip` varchar(20) DEFAULT NULL,
-  `house_phone_number` varchar(20) DEFAULT NULL,
-  `mobile_number` varchar(20) DEFAULT NULL,
-  `comment` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_guarantor_m_loan` (`loan_id`),
-  CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_guarantor`
---
-
-LOCK TABLES `m_guarantor` WRITE;
-/*!40000 ALTER TABLE `m_guarantor` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_guarantor` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan`
---
-
-DROP TABLE IF EXISTS `m_loan`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `fund_id` bigint(20) DEFAULT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `guarantor_id` bigint(20) DEFAULT NULL,
-  `loan_status_id` smallint(5) NOT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) NOT NULL,
-  `arrearstolerance_amount` decimal(19,6) DEFAULT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `interest_period_frequency_enum` smallint(5) NOT NULL,
-  `annual_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `interest_method_enum` smallint(5) NOT NULL,
-  `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1',
-  `term_frequency` smallint(5) NOT NULL DEFAULT '0',
-  `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2',
-  `repay_every` smallint(5) NOT NULL,
-  `repayment_period_frequency_enum` smallint(5) NOT NULL,
-  `number_of_repayments` smallint(5) NOT NULL,
-  `amortization_method_enum` smallint(5) NOT NULL,
-  `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL,
-  `submittedon_date` datetime DEFAULT NULL,
-  `approvedon_date` datetime DEFAULT NULL,
-  `expected_disbursedon_date` date DEFAULT NULL,
-  `expected_firstrepaymenton_date` date DEFAULT NULL,
-  `interest_calculated_from_date` date DEFAULT NULL,
-  `disbursedon_date` date DEFAULT NULL,
-  `expected_maturedon_date` date DEFAULT NULL,
-  `maturedon_date` date DEFAULT NULL,
-  `closedon_date` datetime DEFAULT NULL,
-  `rejectedon_date` datetime DEFAULT NULL,
-  `rescheduledon_date` datetime DEFAULT NULL,
-  `withdrawnon_date` datetime DEFAULT NULL,
-  `writtenoffon_date` datetime DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `loan_transaction_strategy_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`),
-  KEY `FKB6F935D87179A0CB` (`client_id`),
-  KEY `FKB6F935D8C8D4B434` (`product_id`),
-  KEY `FK7C885877240145` (`fund_id`),
-  KEY `FK_loan_ltp_strategy` (`loan_transaction_strategy_id`),
-  KEY `FK_m_loan_m_staff` (`loan_officer_id`),
-  KEY `group_id` (`group_id`),
-  KEY `FK_m_loan_guarantor` (`guarantor_id`),
-  CONSTRAINT `FK_m_loan_guarantor` FOREIGN KEY (`guarantor_id`) REFERENCES `m_guarantor` (`id`),
-  CONSTRAINT `FK7C885877240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`),
-  CONSTRAINT `FKB6F935D87179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FKB6F935D8C8D4B434` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`),
-  CONSTRAINT `FK_loan_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`),
-  CONSTRAINT `FK_m_loan_m_staff` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`),
-  CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan`
---
-
-LOCK TABLES `m_loan` WRITE;
-/*!40000 ALTER TABLE `m_loan` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_charge`
---
-
-DROP TABLE IF EXISTS `m_loan_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `charge_id` bigint(20) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `charge_time_enum` smallint(5) NOT NULL,
-  `due_for_collection_as_of_date` date DEFAULT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `calculation_percentage` decimal(19,6) DEFAULT NULL,
-  `calculation_on_amount` decimal(19,6) DEFAULT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `amount_paid_derived` decimal(19,6) DEFAULT NULL,
-  `amount_waived_derived` decimal(19,6) DEFAULT NULL,
-  `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  KEY `charge_id` (`charge_id`),
-  KEY `m_loan_charge_ibfk_2` (`loan_id`),
-  CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`),
-  CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_charge`
---
-
-LOCK TABLES `m_loan_charge` WRITE;
-/*!40000 ALTER TABLE `m_loan_charge` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_officer_assignment_history`
---
-
-DROP TABLE IF EXISTS `m_loan_officer_assignment_history`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_officer_assignment_history` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`),
-  KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_officer_assignment_history`
---
-
-LOCK TABLES `m_loan_officer_assignment_history` WRITE;
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_repayment_schedule`
---
-
-DROP TABLE IF EXISTS `m_loan_repayment_schedule`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_repayment_schedule` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `fromdate` date DEFAULT NULL,
-  `duedate` date NOT NULL,
-  `installment` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) DEFAULT NULL,
-  `principal_completed_derived` decimal(19,6) DEFAULT NULL,
-  `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `interest_amount` decimal(19,6) DEFAULT NULL,
-  `interest_completed_derived` decimal(19,6) DEFAULT NULL,
-  `interest_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_amount` decimal(19,6) DEFAULT NULL,
-  `fee_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_amount` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `completed_derived` bit(1) NOT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `interest_waived_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK488B92AA40BE0710` (`loan_id`),
-  CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_repayment_schedule`
---
-
-LOCK TABLES `m_loan_repayment_schedule` WRITE;
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_transaction`
---
-
-DROP TABLE IF EXISTS `m_loan_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `transaction_type_enum` smallint(5) NOT NULL,
-  `contra_id` bigint(20) DEFAULT NULL,
-  `transaction_date` date NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `principal_portion_derived` decimal(19,6) DEFAULT NULL,
-  `interest_portion_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKCFCEA42640BE0710` (`loan_id`),
-  KEY `FKCFCEA426FC69F3F1` (`contra_id`),
-  CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FKCFCEA426FC69F3F1` FOREIGN KEY (`contra_id`) REFERENCES `m_loan_transaction` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_transaction`
---
-
-LOCK TABLES `m_loan_transaction` WRITE;
-/*!40000 ALTER TABLE `m_loan_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_note`
---
-
-DROP TABLE IF EXISTS `m_note`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_note` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `loan_id` bigint(20) DEFAULT NULL,
-  `loan_transaction_id` bigint(20) DEFAULT NULL,
-  `deposit_account_id` bigint(20) DEFAULT NULL,
-  `saving_account_id` bigint(20) DEFAULT NULL,
-  `note_type_enum` smallint(5) NOT NULL,
-  `note` varchar(1000) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK7C9708924D26803` (`loan_transaction_id`),
-  KEY `FK7C97089541F0A56` (`createdby_id`),
-  KEY `FK7C970897179A0CB` (`client_id`),
-  KEY `FK7C970898F889C3F` (`lastmodifiedby_id`),
-  KEY `FK7C9708940BE0710` (`loan_id`),
-  KEY `FK_m_note_m_deposit_account` (`deposit_account_id`),
-  KEY `FK_m_note_m_saving_account` (`saving_account_id`),
-  CONSTRAINT `FK_m_note_m_saving_account` FOREIGN KEY (`saving_account_id`) REFERENCES `m_saving_account` (`id`),
-  CONSTRAINT `FK7C9708924D26803` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`),
-  CONSTRAINT `FK7C9708940BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK7C97089541F0A56` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_m_note_m_deposit_account` FOREIGN KEY (`deposit_account_id`) REFERENCES `m_deposit_account` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_note`
---
-
-LOCK TABLES `m_note` WRITE;
-/*!40000 ALTER TABLE `m_note` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_note` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office`
---
-
-DROP TABLE IF EXISTS `m_office`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `opening_date` date NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name_org` (`name`),
-  UNIQUE KEY `externalid_org` (`external_id`),
-  KEY `FK2291C477E2551DCC` (`parent_id`),
-  CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office`
---
-
-LOCK TABLES `m_office` WRITE;
-/*!40000 ALTER TABLE `m_office` DISABLE KEYS */;
-INSERT INTO `m_office` VALUES (1,NULL,'.','1','Head Office','2009-01-01');
-/*!40000 ALTER TABLE `m_office` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office_transaction`
---
-
-DROP TABLE IF EXISTS `m_office_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `from_office_id` bigint(20) DEFAULT NULL,
-  `to_office_id` bigint(20) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` int(11) NOT NULL,
-  `transaction_amount` decimal(19,6) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK1E37728B93C6C1B6` (`to_office_id`),
-  KEY `FK1E37728B783C5C25` (`from_office_id`),
-  CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office_transaction`
---
-
-LOCK TABLES `m_office_transaction` WRITE;
-/*!40000 ALTER TABLE `m_office_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_office_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_organisation_currency`
---
-
-DROP TABLE IF EXISTS `m_organisation_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_organisation_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `name` varchar(50) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_organisation_currency`
---
-
-LOCK TABLES `m_organisation_currency` WRITE;
-/*!40000 ALTER TABLE `m_organisation_currency` DISABLE KEYS */;
-INSERT INTO `m_organisation_currency` VALUES (21,'USD',2,'US Dollar','$','currency.USD');
-/*!40000 ALTER TABLE `m_organisation_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_permission`
---
-
-DROP TABLE IF EXISTS `m_permission`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_permission` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `grouping` varchar(45) DEFAULT NULL,
-  `code` varchar(100) NOT NULL,
-  `entity_name` varchar(100) DEFAULT NULL,
-  `action_name` varchar(100) DEFAULT NULL,
-  `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=237 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_permission`
---
-
-LOCK TABLES `m_permission` WRITE;
-/*!40000 ALTER TABLE `m_permission` DISABLE KEYS */;
-INSERT INTO `m_permission` VALUES (1,'special','ALL_FUNCTIONS',NULL,NULL,0),(2,'special','ALL_FUNCTIONS_READ',NULL,NULL,0),(3,'special','CHECKER_SUPER_USER',NULL,NULL,0),(4,'special','REPORTING_SUPER_USER',NULL,NULL,0),(5,'authorisation','READ_PERMISSION','PERMISSION','READ',0),(6,'authorisation','PERMISSIONS_ROLE','ROLE','PERMISSIONS',1),(7,'authorisation','CREATE_ROLE','ROLE','CREATE',1),(8,'authorisation','CREATE_ROLE_CHECKER','ROLE','CREATE',1),(9,'authorisation','READ_ROLE','ROLE','READ',0),(10,'authorisation','UPDATE_ROLE','ROLE','UPDATE',1),(11,'authorisation','UPDATE_ROLE_CHECKER','ROLE','UPDATE',1),(12,'authorisation','DELETE_ROLE','ROLE','DELETE',1),(13,'authorisation','DELETE_ROLE_CHECKER','ROLE','DELETE',1),(14,'authorisation','CREATE_USER','USER','CREATE',1),(15,'authorisation','CREATE_USER_CHECKER','USER','CREATE',1),(16,'authorisation','READ_USER','USER','READ',0),(17,'authorisation','UPDATE_USER','USER','UPDATE',1),(18,'authorisation','UPDATE_USER_CHECKER','USER','UP
 DATE',1),(19,'authorisation','DELETE_USER','USER','DELETE',1),(20,'authorisation','DELETE_USER_CHECKER','USER','DELETE',1),(21,'configuration','READ_CONFIGURATION','CONFIGURATION','READ',1),(22,'configuration','UPDATE_CONFIGURATION','CONFIGURATION','UPDATE',1),(23,'configuration','UPDATE_CONFIGURATION_CHECKER','CONFIGURATION','UPDATE',1),(24,'configuration','READ_CODE','CODE','READ',0),(25,'configuration','CREATE_CODE','CODE','CREATE',1),(26,'configuration','CREATE_CODE_CHECKER','CODE','CREATE',1),(27,'configuration','UPDATE_CODE','CODE','UPDATE',1),(28,'configuration','UPDATE_CODE_CHECKER','CODE','UPDATE',1),(29,'configuration','DELETE_CODE','CODE','DELETE',1),(30,'configuration','DELETE_CODE_CHECKER','CODE','DELETE',1),(31,'configuration','READ_CURRENCY','CURRENCY','READ',0),(32,'configuration','UPDATE_CURRENCY','CURRENCY','UPDATE',1),(33,'configuration','UPDATE_CURRENCY_CHECKER','CURRENCY','UPDATE',1),(34,'configuration','UPDATE_PERMISSION','PERMISSION','UPDATE',1),(35,'configura
 tion','UPDATE_PERMISSION_CHECKER','PERMISSION','UPDATE',1),(36,'configuration','READ_DATATABLE','DATATABLE','READ',0),(37,'configuration','REGISTER_DATATABLE','DATATABLE','REGISTER',1),(38,'configuration','REGISTER_DATATABLE_CHECKER','DATATABLE','REGISTER',1),(39,'configuration','DEREGISTER_DATATABLE','DATATABLE','DEREGISTER',1),(40,'configuration','DEREGISTER_DATATABLE_CHECKER','DATATABLE','DEREGISTER',1),(41,'configuration','READ_AUDIT','AUDIT','READ',0),(42,'organisation','READ_MAKERCHECKER','MAKERCHECKER','READ',0),(43,'organisation','READ_CHARGE','CHARGE','READ',0),(44,'organisation','CREATE_CHARGE','CHARGE','CREATE',1),(45,'organisation','CREATE_CHARGE_CHECKER','CHARGE','CREATE',1),(46,'organisation','UPDATE_CHARGE','CHARGE','UPDATE',1),(47,'organisation','UPDATE_CHARGE_CHECKER','CHARGE','UPDATE',1),(48,'organisation','DELETE_CHARGE','CHARGE','DELETE',1),(49,'organisation','DELETE_CHARGE_CHECKER','CHARGE','DELETE',1),(50,'organisation','READ_FUND','FUND','READ',0),(51,'organis
 ation','CREATE_FUND','FUND','CREATE',1),(52,'organisation','CREATE_FUND_CHECKER','FUND','CREATE',1),(53,'organisation','UPDATE_FUND','FUND','UPDATE',1),(54,'organisation','UPDATE_FUND_CHECKER','FUND','UPDATE',1),(55,'organisation','DELETE_FUND','FUND','DELETE',1),(56,'organisation','DELETE_FUND_CHECKER','FUND','DELETE',1),(57,'organisation','READ_LOANPRODUCT','LOANPRODUCT','READ',0),(58,'organisation','CREATE_LOANPRODUCT','LOANPRODUCT','CREATE',1),(59,'organisation','CREATE_LOANPRODUCT_CHECKER','LOANPRODUCT','CREATE',1),(60,'organisation','UPDATE_LOANPRODUCT','LOANPRODUCT','UPDATE',1),(61,'organisation','UPDATE_LOANPRODUCT_CHECKER','LOANPRODUCT','UPDATE',1),(62,'organisation','DELETE_LOANPRODUCT','LOANPRODUCT','DELETE',1),(63,'organisation','DELETE_LOANPRODUCT_CHECKER','LOANPRODUCT','DELETE',1),(64,'organisation','READ_OFFICE','OFFICE','READ',0),(65,'organisation','CREATE_OFFICE','OFFICE','CREATE',1),(66,'organisation','CREATE_OFFICE_CHECKER','OFFICE','CREATE',1),(67,'organisation',
 'UPDATE_OFFICE','OFFICE','UPDATE',1),(68,'organisation','UPDATE_OFFICE_CHECKER','OFFICE','UPDATE',1),(69,'organisation','READ_OFFICETRANSACTION','OFFICETRANSACTION','READ',0),(70,'organisation','DELETE_OFFICE_CHECKER','OFFICE','DELETE',1),(71,'organisation','CREATE_OFFICETRANSACTION','OFFICETRANSACTION','CREATE',1),(72,'organisation','CREATE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','CREATE',1),(73,'organisation','DELETE_OFFICETRANSACTION','OFFICETRANSACTION','DELETE',1),(74,'organisation','DELETE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','DELETE',1),(75,'organisation','READ_STAFF','STAFF','READ',0),(76,'organisation','CREATE_STAFF','STAFF','CREATE',1),(77,'organisation','CREATE_STAFF_CHECKER','STAFF','CREATE',1),(78,'organisation','UPDATE_STAFF','STAFF','UPDATE',1),(79,'organisation','UPDATE_STAFF_CHECKER','STAFF','UPDATE',1),(80,'organisation','DELETE_STAFF','STAFF','DELETE',1),(81,'organisation','DELETE_STAFF_CHECKER','STAFF','DELETE',1),(82,'organisation','READ_SAVINGS
 PRODUCT','SAVINGSPRODUCT','READ',0),(83,'organisation','CREATE_SAVINGSPRODUCT','SAVINGSPRODUCT','CREATE',1),(84,'organisation','CREATE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','CREATE',1),(85,'organisation','UPDATE_SAVINGSPRODUCT','SAVINGSPRODUCT','UPDATE',1),(86,'organisation','UPDATE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','UPDATE',1),(87,'organisation','DELETE_SAVINGSPRODUCT','SAVINGSPRODUCT','DELETE',1),(88,'organisation','DELETE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','DELETE',1),(89,'organisation','READ_DEPOSITPRODUCT','DEPOSITPRODUCT','READ',0),(90,'organisation','CREATE_DEPOSITPRODUCT','DEPOSITPRODUCT','CREATE',1),(91,'organisation','CREATE_DEPOSITPRODUCT_CHECKER','DEPOSITPRODUCT','CREATE',1),(92,'organisation','UPDATE_DEPOSITPRODUCT','DEPOSITPRODUCT','UPDATE',1),(93,'organisation','UPDATE_DEPOSITPRODUCT_CHECKER','DEPOSITPRODUCT','UPDATE',1),(94,'organisation','DELETE_DEPOSITPRODUCT','DEPOSITPRODUCT','DELETE',1),(95,'organisation','DELETE_DEPOSITPRODUCT_CHECKER','DEPOSITPR
 ODUCT','DELETE',1),(96,'portfolio','READ_LOAN','LOAN','READ',0),(97,'portfolio','CREATE_LOAN','LOAN','CREATE',1),(98,'portfolio','CREATE_LOAN_CHECKER','LOAN','CREATE',1),(99,'portfolio','UPDATE_LOAN','LOAN','UPDATE',1),(100,'portfolio','UPDATE_LOAN_CHECKER','LOAN','UPDATE',1),(101,'portfolio','DELETE_LOAN','LOAN','DELETE',1),(102,'portfolio','DELETE_LOAN_CHECKER','LOAN','DELETE',1),(103,'portfolio','READ_CLIENT','CLIENT','READ',0),(104,'portfolio','CREATE_CLIENT','CLIENT','CREATE',1),(105,'portfolio','CREATE_CLIENT_CHECKER','CLIENT','CREATE',1),(106,'portfolio','UPDATE_CLIENT','CLIENT','UPDATE',1),(107,'portfolio','UPDATE_CLIENT_CHECKER','CLIENT','UPDATE',1),(108,'portfolio','DELETE_CLIENT','CLIENT','DELETE',1),(109,'portfolio','DELETE_CLIENT_CHECKER','CLIENT','DELETE',1),(110,'portfolio','READ_CLIENTIMAGE','CLIENTIMAGE','READ',0),(111,'portfolio','CREATE_CLIENTIMAGE','CLIENTIMAGE','CREATE',1),(112,'portfolio','CREATE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','CREATE',1),(113,'portfolio','
 DELETE_CLIENTIMAGE','CLIENTIMAGE','DELETE',1),(114,'portfolio','DELETE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','DELETE',1),(115,'portfolio','READ_CLIENTNOTE','CLIENTNOTE','READ',0),(116,'portfolio','CREATE_CLIENTNOTE','CLIENTNOTE','CREATE',1),(117,'portfolio','CREATE_CLIENTNOTE_CHECKER','CLIENTNOTE','CREATE',1),(118,'portfolio','UPDATE_CLIENTNOTE','CLIENTNOTE','UPDATE',1),(119,'portfolio','UPDATE_CLIENTNOTE_CHECKER','CLIENTNOTE','UPDATE',1),(120,'portfolio','DELETE_CLIENTNOTE','CLIENTNOTE','DELETE',1),(121,'portfolio','DELETE_CLIENTNOTE_CHECKER','CLIENTNOTE','DELETE',1),(122,'portfolio','READ_CLIENTIDENTIFIER','CLIENTIDENTIFIER','READ',0),(123,'portfolio','CREATE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','CREATE',1),(124,'portfolio','CREATE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','CREATE',1),(125,'portfolio','UPDATE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','UPDATE',1),(126,'portfolio','UPDATE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','UPDATE',1),(127,'portfolio','DELETE_CLIENTIDENTIFIER',
 'CLIENTIDENTIFIER','DELETE',1),(128,'portfolio','DELETE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','DELETE',1),(129,'portfolio','READ_DOCUMENT','DOCUMENT','READ',0),(130,'portfolio','CREATE_DOCUMENT','DOCUMENT','CREATE',1),(131,'portfolio','CREATE_DOCUMENT_CHECKER','DOCUMENT','CREATE',1),(132,'portfolio','UPDATE_DOCUMENT','DOCUMENT','UPDATE',1),(133,'portfolio','UPDATE_DOCUMENT_CHECKER','DOCUMENT','UPDATE',1),(134,'portfolio','DELETE_DOCUMENT','DOCUMENT','DELETE',1),(135,'portfolio','DELETE_DOCUMENT_CHECKER','DOCUMENT','DELETE',1),(136,'portfolio','READ_GROUP','GROUP','READ',0),(137,'portfolio','CREATE_GROUP','GROUP','CREATE',1),(138,'portfolio','CREATE_GROUP_CHECKER','GROUP','CREATE',1),(139,'portfolio','UPDATE_GROUP','GROUP','UPDATE',1),(140,'portfolio','UPDATE_GROUP_CHECKER','GROUP','UPDATE',1),(141,'portfolio','DELETE_GROUP','GROUP','DELETE',1),(142,'portfolio','DELETE_GROUP_CHECKER','GROUP','DELETE',1),(143,'portfolio','CREATE_LOANCHARGE','LOANCHARGE','CREATE',1),(144,'portfo
 lio','CREATE_LOANCHARGE_CHECKER','LOANCHARGE','CREATE',1),(145,'portfolio','UPDATE_LOANCHARGE','LOANCHARGE','UPDATE',1),(146,'portfolio','UPDATE_LOANCHARGE_CHECKER','LOANCHARGE','UPDATE',1),(147,'portfolio','DELETE_LOANCHARGE','LOANCHARGE','DELETE',1),(148,'portfolio','DELETE_LOANCHARGE_CHECKER','LOANCHARGE','DELETE',1),(149,'portfolio','WAIVE_LOANCHARGE','LOANCHARGE','WAIVE',1),(150,'portfolio','WAIVE_LOANCHARGE_CHECKER','LOANCHARGE','WAIVE',1),(151,'portfolio','READ_DEPOSITACCOUNT','DEPOSITACCOUNT','READ',0),(152,'portfolio','CREATE_DEPOSITACCOUNT','DEPOSITACCOUNT','CREATE',1),(153,'portfolio','CREATE_DEPOSITACCOUNT_CHECKER','DEPOSITACCOUNT','CREATE',1),(154,'portfolio','UPDATE_DEPOSITACCOUNT','DEPOSITACCOUNT','UPDATE',1),(155,'portfolio','UPDATE_DEPOSITACCOUNT_CHECKER','DEPOSITACCOUNT','UPDATE',1),(156,'portfolio','DELETE_DEPOSITACCOUNT','DEPOSITACCOUNT','DELETE',1),(157,'portfolio','DELETE_DEPOSITACCOUNT_CHECKER','DEPOSITACCOUNT','DELETE',1),(158,'portfolio','READ_SAVINGSACCOUNT
 ','SAVINGSACCOUNT','READ',0),(159,'portfolio','CREATE_SAVINGSACCOUNT','SAVINGSACCOUNT','CREATE',1),(160,'portfolio','CREATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','CREATE',1),(161,'portfolio','UPDATE_SAVINGSACCOUNT','SAVINGSACCOUNT','UPDATE',1),(162,'portfolio','UPDATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','UPDATE',1),(163,'portfolio','DELETE_SAVINGSACCOUNT','SAVINGSACCOUNT','DELETE',1),(164,'portfolio','DELETE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','DELETE',1),(165,'portfolio','READ_GUARANTOR','GUARANTOR','READ',0),(166,'portfolio','CREATE_GUARANTOR','GUARANTOR','CREATE',1),(167,'portfolio','CREATE_GUARANTOR_CHECKER','GUARANTOR','CREATE',1),(168,'portfolio','UPDATE_GUARANTOR','GUARANTOR','UPDATE',1),(169,'portfolio','UPDATE_GUARANTOR_CHECKER','GUARANTOR','UPDATE',1),(170,'portfolio','DELETE_GUARANTOR','GUARANTOR','DELETE',1),(171,'portfolio','DELETE_GUARANTOR_CHECKER','GUARANTOR','DELETE',1),(172,'transaction_loan','APPROVE_LOAN','LOAN','APPROVE',1),(173,'transaction_loan','
 APPROVEINPAST_LOAN','LOAN','APPROVEINPAST',1),(174,'transaction_loan','REJECT_LOAN','LOAN','REJECT',1),(175,'transaction_loan','REJECTINPAST_LOAN','LOAN','REJECTINPAST',1),(176,'transaction_loan','WITHDRAW_LOAN','LOAN','WITHDRAW',1),(177,'transaction_loan','WITHDRAWINPAST_LOAN','LOAN','WITHDRAWINPAST',1),(178,'transaction_loan','APPROVALUNDO_LOAN','LOAN','APPROVALUNDO',1),(179,'transaction_loan','DISBURSE_LOAN','LOAN','DISBURSE',1),(180,'transaction_loan','DISBURSEINPAST_LOAN','LOAN','DISBURSEINPAST',1),(181,'transaction_loan','DISBURSALUNDO_LOAN','LOAN','DISBURSALUNDO',1),(182,'transaction_loan','REPAYMENT_LOAN','LOAN','REPAYMENT',1),(183,'transaction_loan','REPAYMENTINPAST_LOAN','LOAN','REPAYMENTINPAST',1),(184,'transaction_loan','BULKREASSIGN_LOAN','LOAN','BULKREASSIGN',1),(185,'transaction_loan','ADJUST_LOAN','LOAN','ADJUST',1),(186,'transaction_loan','WAIVEINTERESTPORTION_LOAN','LOAN','WAIVEINTERESTPORTION',1),(187,'transaction_loan','WRITEOFF_LOAN','LOAN','WRITEOFF',1),(188,'t
 ransaction_loan','CLOSE_LOAN','LOAN','CLOSE',1),(189,'transaction_loan','CLOSEASRESCHEDULED_LOAN','LOAN','CLOSEASRESCHEDULED',1),(190,'transaction_loan','APPROVE_LOAN_CHECKER','LOAN','APPROVE',1),(191,'transaction_loan','APPROVEINPAST_LOAN_CHECKER','LOAN','APPROVEINPAST',1),(192,'transaction_loan','REJECT_LOAN_CHECKER','LOAN','REJECT',1),(193,'transaction_loan','REJECTINPAST_LOAN_CHECKER','LOAN','REJECTINPAST',1),(194,'transaction_loan','WITHDRAW_LOAN_CHECKER','LOAN','WITHDRAW',1),(195,'transaction_loan','WITHDRAWINPAST_LOAN_CHECKER','LOAN','WITHDRAWINPAST',1),(196,'transaction_loan','APPROVALUNDO_LOAN_CHECKER','LOAN','APPROVALUNDO',1),(197,'transaction_loan','DISBURSE_LOAN_CHECKER','LOAN','DISBURSE',1),(198,'transaction_loan','DISBURSEINPAST_LOAN_CHECKER','LOAN','DISBURSEINPAST',1),(199,'transaction_loan','DISBURSALUNDO_LOAN_CHECKER','LOAN','DISBURSALUNDO',1),(200,'transaction_loan','REPAYMENT_LOAN_CHECKER','LOAN','REPAYMENT',1),(201,'transaction_loan','REPAYMENTINPAST_LOAN_CHECKER
 ','LOAN','REPAYMENTINPAST',1),(202,'transaction_loan','BULKREASSIGN_LOAN_CHECKER','LOAN','BULKREASSIGN',1),(203,'transaction_loan','ADJUST_LOAN_CHECKER','LOAN','ADJUST',1),(204,'transaction_loan','WAIVEINTERESTPORTION_LOAN_CHECKER','LOAN','WAIVEINTERESTPORTION',1),(205,'transaction_loan','WRITEOFF_LOAN_CHECKER','LOAN','WRITEOFF',1),(206,'transaction_loan','CLOSE_LOAN_CHECKER','LOAN','CLOSE',1),(207,'transaction_loan','CLOSEASRESCHEDULED_LOAN_CHECKER','LOAN','CLOSEASRESCHEDULED',1),(208,'transaction_deposit','APPROVE_DEPOSITACCOUNT','DEPOSITACCOUNT','APPROVE',1),(209,'transaction_deposit','REJECT_DEPOSITACCOUNT','DEPOSITACCOUNT','REJECT',1),(210,'transaction_deposit','WITHDRAW_DEPOSITACCOUNT','DEPOSITACCOUNT','WITHDRAW',1),(211,'transaction_deposit','APPROVALUNDO_DEPOSITACCOUNT','DEPOSITACCOUNT','APPROVALUNDO',1),(212,'transaction_deposit','WITHDRAWAL_DEPOSITACCOUNT','DEPOSITACCOUNT','WITHDRAWAL',1),(213,'transaction_deposit','INTEREST_DEPOSITACCOUNT','DEPOSITACCOUNT','INTEREST',1),(
 214,'transaction_deposit','RENEW_DEPOSITACCOUNT','DEPOSITACCOUNT','RENEW',1),(215,'transaction_deposit','APPROVE_DEPOSITACCOUNT_CHECKER','DEPOSITACCOUNT','APPROVE',1),(216,'transaction_deposit','REJECT_DEPOSITACCOUNT_CHECKER','DEPOSITACCOUNT','REJECT',1),(217,'transaction_deposit','WITHDRAW_DEPOSITACCOUNT_CHECKER','DEPOSITACCOUNT','WITHDRAW',1),(218,'transaction_deposit','APPROVALUNDO_DEPOSITACCOUNT_CHECKER','DEPOSITACCOUNT','APPROVALUNDO',1),(219,'transaction_deposit','WITHDRAWAL_DEPOSITACCOUNT_CHECKER','DEPOSITACCOUNT','WITHDRAWAL',1),(220,'transaction_deposit','INTEREST_DEPOSITACCOUNT_CHECKER','DEPOSITACCOUNT','INTEREST',1),(221,'transaction_deposit','RENEW_DEPOSITACCOUNT_CHECKER','DEPOSITACCOUNT','RENEW',1),(222,'report','READ_Active Loans Portfolio Status','Active Loans Portfolio Status','READ',1),(223,'report','READ_Active Loans Summary per Branch','Active Loans Summary per Branch','READ',1),(224,'report','READ_Balance Sheet','Balance Sheet','READ',1),(225,'report','READ_Clien
 t Listing','Client Listing','READ',1),(226,'report','READ_Client Loans Listing','Client Loans Listing','READ',1),(227,'report','READ_Funds Disbursed Between Dates Summary','Funds Disbursed Between Dates Summary','READ',1),(228,'report','READ_Funds Disbursed Between Dates Summary by Office','Funds Disbursed Between Dates Summary by Office','READ',1),(229,'report','READ_Income Statement','Income Statement','READ',1),(230,'report','READ_Loans Awaiting Disbursal','Loans Awaiting Disbursal','READ',1),(231,'report','READ_Loans Awaiting Disbursal Summary','Loans Awaiting Disbursal Summary','READ',1),(232,'report','READ_Loans Awaiting Disbursal Summary by Month','Loans Awaiting Disbursal Summary by Month','READ',1),(233,'report','READ_Portfolio at Risk','Portfolio at Risk','READ',1),(234,'report','READ_Portfolio at Risk by Branch','Portfolio at Risk by Branch','READ',1),(235,'report','READ_Trial Balance','Trial Balance','READ',1);
-/*!40000 ALTER TABLE `m_permission` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_portfolio_command_source`
---
-
-DROP TABLE IF EXISTS `m_portfolio_command_source`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_portfolio_command_source` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `action_name` varchar(50) NOT NULL,
-  `entity_name` varchar(50) NOT NULL,
-  `office_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `client_id` bigint(20) DEFAULT NULL,
-  `loan_id` bigint(20) DEFAULT NULL,
-  `api_get_url` varchar(100) NOT NULL,
-  `resource_id` bigint(20) DEFAULT NULL,
-  `command_as_json` text NOT NULL,
-  `maker_id` bigint(20) NOT NULL,
-  `made_on_date` datetime NOT NULL,
-  `checker_id` bigint(20) DEFAULT NULL,
-  `checked_on_date` datetime DEFAULT NULL,
-  `processing_result_enum` smallint(5) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_maker_m_appuser` (`maker_id`),
-  KEY `FK_m_checker_m_appuser` (`checker_id`),
-  KEY `action_name` (`action_name`),
-  KEY `entity_name` (`entity_name`,`resource_id`),
-  KEY `made_on_date` (`made_on_date`),
-  KEY `checked_on_date` (`checked_on_date`),
-  KEY `processing_result_enum` (`processing_result_enum`),
-  KEY `office_id` (`office_id`),
-  KEY `group_id` (`office_id`),
-  KEY `client_id` (`office_id`),
-  KEY `loan_id` (`office_id`),
-  CONSTRAINT `FK_m_checker_m_appuser` FOREIGN KEY (`checker_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_m_maker_m_appuser` FOREIGN KEY (`maker_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_portfolio_command_source`
---
-
-LOCK TABLES `m_portfolio_command_source` WRITE;
-/*!40000 ALTER TABLE `m_portfolio_command_source` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_portfolio_command_source` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_product_deposit`
---
-
-DROP TABLE IF EXISTS `m_product_deposit`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_product_deposit` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) NOT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `external_id` varchar(100) DEFAULT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `minimum_balance` decimal(19,6) DEFAULT NULL,
-  `maximum_balance` decimal(19,6) DEFAULT NULL,
-  `tenure_months` int(11) NOT NULL,
-  `interest_compounded_every` smallint(5) NOT NULL DEFAULT '1',
-  `interest_compounded_every_period_enum` smallint(5) NOT NULL DEFAULT '2',
-  `maturity_default_interest_rate` decimal(19,6) NOT NULL,
-  `maturity_min_interest_rate` decimal(19,6) NOT NULL,
-  `maturity_max_interest_rate` decimal(19,6) NOT NULL,
-  `is_compounding_interest_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `is_renewal_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `is_preclosure_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `pre_closure_interest_rate` decimal(19,6) NOT NULL,
-  `is_lock_in_period_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `lock_in_period` bigint(20) DEFAULT NULL,
-  `lock_in_period_type` smallint(5) NOT NULL DEFAULT '2',
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name_deposit_product` (`name`),
-  UNIQUE KEY `externalid_deposit_product` (`external_id`),
-  KEY `FKJPW0000000000003` (`createdby_id`),
-  KEY `FKJPW0000000000004` (`lastmodifiedby_id`),
-  CONSTRAINT `FKJPX0000000000003` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FKJPX0000000000004` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_product_deposit`
---
-
-LOCK TABLES `m_product_deposit` WRITE;
-/*!40000 ALTER TABLE `m_product_deposit` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_product_deposit` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_product_loan`
---
-
-DROP TABLE IF EXISTS `m_product_loan`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_product_loan` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) NOT NULL,
-  `arrearstolerance_amount` decimal(19,6) DEFAULT NULL,
-  `name` varchar(100) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `fund_id` bigint(20) DEFAULT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `interest_period_frequency_enum` smallint(5) NOT NULL,
-  `annual_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `interest_method_enum` smallint(5) NOT NULL,
-  `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1',
-  `repay_every` smallint(5) NOT NULL,
-  `repayment_period_frequency_enum` smallint(5) NOT NULL,
-  `number_of_repayments` smallint(5) NOT NULL,
-  `amortization_method_enum` smallint(5) NOT NULL,
-  `accounting_type` smallint(5) NOT NULL,
-  `loan_transaction_strategy_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKA6A8A7D77240145` (`fund_id`),
-  KEY `FK_ltp_strategy` (`loan_transaction_strategy_id`),
-  CONSTRAINT `FKA6A8A7D77240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`),
-  CONSTRAINT `FK_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_product_loan`
---
-
-LOCK TABLES `m_product_loan` WRITE;
-/*!40000 ALTER TABLE `m_product_loan` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_product_loan` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_product_loan_charge`
---
-
-DROP TABLE IF EXISTS `m_product_loan_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_product_loan_charge` (
-  `product_loan_id` bigint(20) NOT NULL,
-  `charge_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`product_loan_id`,`charge_id`),
-  KEY `charge_id` (`charge_id`),
-  CONSTRAINT `m_product_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`),
-  CONSTRAINT `m_product_loan_charge_ibfk_2` FOREIGN KEY (`product_loan_id`) REFERENCES `m_product_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_product_loan_charge`
---
-
-LOCK TABLES `m_product_loan_charge` WRITE;
-/*!40000 ALTER TABLE `m_product_loan_charge` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_product_loan_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_product_savings`
---
-
-DROP TABLE IF EXISTS `m_product_savings`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_product_savings` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `currency_code` varchar(3) DEFAULT NULL,
-  `currency_digits` smallint(5) DEFAULT NULL,
-  `interest_rate` decimal(19,6) DEFAULT NULL,
-  `min_interest_rate` decimal(19,6) DEFAULT NULL,
-  `max_interest_rate` decimal(19,6) DEFAULT NULL,
-  `savings_deposit_amount` decimal(19,6) NOT NULL,
-  `savings_product_type` smallint(5) DEFAULT NULL,
-  `tenure_type` smallint(5) DEFAULT NULL,
-  `deposit_every` bigint(20) DEFAULT NULL,
-  `tenure` int(11) DEFAULT NULL,
-  `frequency` int(11) DEFAULT NULL,
-  `interest_type` smallint(5) DEFAULT NULL,
-  `interest_calculation_method` smallint(5) DEFAULT NULL,
-  `min_bal_for_withdrawal` decimal(19,6) NOT NULL,
-  `is_partial_deposit_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `is_lock_in_period_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `lock_in_period` bigint(20) DEFAULT NULL,
-  `lock_in_period_type` smallint(5) NOT NULL DEFAULT '1',
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKJPW0000000000003` (`createdby_id`),
-  KEY `FKJPW0000000000004` (`lastmodifiedby_id`),
-  CONSTRAINT `FKJPW0000000000003` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FKJPW0000000000004` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_product_savings`
---
-
-LOCK TABLES `m_product_savings` WRITE;
-/*!40000 ALTER TABLE `m_product_savings` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_product_savings` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_role`
---
-
-DROP TABLE IF EXISTS `m_role`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_role` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) NOT NULL,
-  `description` varchar(500) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_role`
---
-
-LOCK TABLES `m_role` WRITE;
-/*!40000 ALTER TABLE `m_role` DISABLE KEYS */;
-INSERT INTO `m_role` VALUES (1,'Super user','This role provides all application permissions.');
-/*!40000 ALTER TABLE `m_role` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_role_permission`
---
-
-DROP TABLE IF EXISTS `m_role_permission`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_role_permission` (
-  `role_id` bigint(20) NOT NULL,
-  `permission_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`role_id`,`permission_id`),
-  KEY `FK8DEDB04815CEC7AB` (`role_id`),
-  KEY `FK8DEDB048103B544B` (`permission_id`),
-  CONSTRAINT `FK8DEDB048103B544B` FOREIGN KEY (`permission_id`) REFERENCES `m_permission` (`id`),
-  CONSTRAINT `FK8DEDB04815CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_role_permission`
---
-
-LOCK TABLES `m_role_permission` WRITE;
-/*!40000 ALTER TABLE `m_role_permission` DISABLE KEYS */;
-INSERT INTO `m_role_permission` VALUES (1,1);
-/*!40000 ALTER TABLE `m_role_permission` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_saving_account`
---
-
-DROP TABLE IF EXISTS `m_saving_account`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_saving_account` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `status_enum` smallint(5) NOT NULL DEFAULT '0',
-  `external_id` varchar(100) DEFAULT NULL,
-  `client_id` bigint(20) NOT NULL,
-  `product_id` bigint(20) NOT NULL,
-  `deposit_amount_per_period` decimal(19,6) NOT NULL,
-  `savings_product_type` smallint(5) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `total_deposit_amount` decimal(19,6) NOT NULL,
-  `reccuring_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `regular_saving_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `tenure` int(11) NOT NULL,
-  `tenure_type` smallint(5) DEFAULT NULL,
-  `deposit_every` bigint(20) DEFAULT NULL,
-  `frequency` int(11) DEFAULT NULL,
-  `interest_posting_every` int(11) DEFAULT NULL,
-  `interest_posting_frequency` int(11) DEFAULT NULL,
-  `interest_type` smallint(5) DEFAULT NULL,
-  `interest_calculation_method` smallint(5) DEFAULT NULL,
-  `projected_commencement_date` date NOT NULL,
-  `actual_commencement_date` date DEFAULT NULL,
-  `matures_on_date` datetime DEFAULT NULL,
-  `projected_interest_accrued_on_maturity` decimal(19,6) NOT NULL,
-  `actual_interest_accrued` decimal(19,6) DEFAULT NULL,
-  `projected_total_maturity_amount` decimal(19,6) NOT NULL,
-  `actual_total_amount` decimal(19,6) DEFAULT NULL,
-  `is_preclosure_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `pre_closure_interest_rate` decimal(19,6) NOT NULL,
-  `outstanding_amount` decimal(19,6) NOT NULL,
-  `interest_posted_amount` decimal(19,6) DEFAULT '0.000000',
-  `last_interest_posted_date` date DEFAULT NULL,
-  `next_interest_posting_date` date DEFAULT NULL,
-  `is_lock_in_period_allowed` tinyint(1) NOT NULL DEFAULT '0',
-  `lock_in_period` bigint(20) DEFAULT NULL,
-  `lock_in_period_type` smallint(5) NOT NULL DEFAULT '1',
-  `withdrawnon_date` datetime DEFAULT NULL,
-  `rejectedon_date` datetime DEFAULT NULL,
-  `closedon_date` datetime DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `deposit_acc_external_id` (`external_id`),
-  KEY `FKSA0000000000001` (`client_id`),
-  KEY `FKSA0000000000002` (`product_id`),
-  CONSTRAINT `FKSA0000000000001` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FKSA0000000000002` FOREIGN KEY (`product_id`) REFERENCES `m_product_savings` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_saving_account`
---
-
-LOCK TABLES `m_saving_account` WRITE;
-/*!40000 ALTER TABLE `m_saving_account` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_saving_account` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_saving_account_transaction`
---
-
-DROP TABLE IF EXISTS `m_saving_account_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_saving_account_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `saving_account_id` bigint(20) NOT NULL,
-  `transaction_type_enum` smallint(5) NOT NULL,
-  `contra_id` bigint(20) DEFAULT NULL,
-  `transaction_date` date NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKSAT0000000001` (`saving_account_id`),
-  KEY `FKSAT0000000002` (`contra_id`),
-  CONSTRAINT `FKSAT0000000001` FOREIGN KEY (`saving_account_id`) REFERENCES `m_saving_account` (`id`),
-  CONSTRAINT `FKSAT0000000002` FOREIGN KEY (`contra_id`) REFERENCES `m_saving_account_transaction` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_saving_account_transaction`
---
-
-LOCK TABLES `m_saving_account_transaction` WRITE;
-/*!40000 ALTER TABLE `m_saving_account_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_saving_account_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_saving_schedule`
---
-
-DROP TABLE IF EXISTS `m_saving_schedule`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_saving_schedule` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `saving_account_id` bigint(20) NOT NULL,
-  `duedate` date NOT NULL,
-  `installment` smallint(5) NOT NULL,
-  `deposit` decimal(21,4) NOT NULL,
-  `payment_date` date DEFAULT NULL,
-  `deposit_paid` decimal(21,4) DEFAULT NULL,
-  `interest_accured` decimal(21,4) DEFAULT '0.0000',
-  `completed_derived` bit(1) NOT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKSS00000000001` (`saving_account_id`),
-  CONSTRAINT `FKSS00000000001` FOREIGN KEY (`saving_account_id`) REFERENCES `m_saving_account` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_saving_schedule`
---
-
-LOCK TABLES `m_saving_schedule` WRITE;
-/*!40000 ALTER TABLE `m_saving_schedule` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_saving_schedule` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_staff`
---
-
-DROP TABLE IF EXISTS `m_staff`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_staff` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `is_loan_officer` tinyint(1) NOT NULL DEFAULT '0',
-  `office_id` bigint(20) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `display_name` varchar(100) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `display_name` (`display_name`),
-  KEY `FK_m_staff_m_office` (`office_id`),
-  CONSTRAINT `FK_m_staff_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_staff`
---
-
-LOCK TABLES `m_staff` WRITE;
-/*!40000 ALTER TABLE `m_staff` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_staff` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `r_enum_value`
---
-
-DROP TABLE IF EXISTS `r_enum_value`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `r_enum_value` (
-  `enum_name` varchar(100) NOT NULL,
-  `enum_id` int(11) NOT NULL,
-  `enum_message_property` varchar(100) NOT NULL,
-  `enum_value` varchar(100) NOT NULL,
-  PRIMARY KEY (`enum_name`,`enum_id`),
-  UNIQUE KEY `enum_message_property` (`enum_name`,`enum_message_property`),
-  UNIQUE KEY `enum_value` (`enum_name`,`enum_value`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `r_enum_value`
---
-
-LOCK TABLES `r_enum_value` WRITE;
-/*!40000 ALTER TABLE `r_enum_value` DISABLE KEYS */;
-INSERT INTO `r_enum_value` VALUES ('amortization_method_enum',0,'Equal principle payments','Equal principle payments'),('amortization_method_enum',1,'Equal installments','Equal installments'),('interest_calculated_in_period_enum',0,'Daily','Daily'),('interest_calculated_in_period_enum',1,'Same as repayment period','Same as repayment period'),('interest_method_enum',0,'Declining Balance','Declining Balance'),('interest_method_enum',1,'Flat','Flat'),('interest_period_frequency_enum',2,'Per month','Per month'),('interest_period_frequency_enum',3,'Per year','Per year'),('loan_status_id',100,'Submitted and awaiting approval','Submitted and awaiting approv

<TRUNCATED>


[16/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountingScenarioIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountingScenarioIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountingScenarioIntegrationTest.java
deleted file mode 100644
index ef020bc..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountingScenarioIntegrationTest.java
+++ /dev/null
@@ -1,1078 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.text.DateFormat;
-import java.text.DecimalFormat;
-import java.text.DecimalFormatSymbols;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.SchedulerJobHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.accounting.Account;
-import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntry;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntryHelper;
-import org.apache.fineract.integrationtests.common.accounting.PeriodicAccrualAccountingHelper;
-import org.apache.fineract.integrationtests.common.charges.ChargesHelper;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositAccountHelper;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositAccountStatusChecker;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositProductHelper;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.apache.fineract.integrationtests.common.recurringdeposit.RecurringDepositAccountHelper;
-import org.apache.fineract.integrationtests.common.recurringdeposit.RecurringDepositAccountStatusChecker;
-import org.apache.fineract.integrationtests.common.recurringdeposit.RecurringDepositProductHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsStatusChecker;
-import org.joda.time.Days;
-import org.joda.time.LocalDate;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "unused", "rawtypes", "unchecked", "static-access" })
-public class AccountingScenarioIntegrationTest {
-
-    private static RequestSpecification requestSpec;
-    private static ResponseSpecification responseSpec;
-
-    private final String DATE_OF_JOINING = "01 January 2011";
-
-    private final Float LP_PRINCIPAL = 10000.0f;
-    private final String LP_REPAYMENTS = "5";
-    private final String LP_REPAYMENT_PERIOD = "2";
-    private final String LP_INTEREST_RATE = "1";
-    private final String EXPECTED_DISBURSAL_DATE = "04 March 2011";
-    private final String LOAN_APPLICATION_SUBMISSION_DATE = "3 March 2011";
-    private final String TRANSACTION_DATE = "01 March 2013";
-    private final String LOAN_TERM_FREQUENCY = "10";
-    private final String INDIVIDUAL_LOAN = "individual";
-    public static final String ACCOUNT_TYPE_INDIVIDUAL = "INDIVIDUAL";
-    public static final String MINIMUM_OPENING_BALANCE = "1000.0";
-    public static final String DEPOSIT_AMOUNT = "7000";
-    public static final String WITHDRAWAL_AMOUNT = "3000";
-    public static final String WITHDRAWAL_AMOUNT_ADJUSTED = "2000";
-
-    Float SP_BALANCE = new Float(MINIMUM_OPENING_BALANCE);
-    Float SP_DEPOSIT_AMOUNT = new Float(DEPOSIT_AMOUNT);
-    Float SP_WITHDRAWAL_AMOUNT = new Float(WITHDRAWAL_AMOUNT);
-    Float SP_WITHDRAWAL_AMOUNT_ADJUSTED = new Float(WITHDRAWAL_AMOUNT_ADJUSTED);
-
-    private final String REPAYMENT_DATE[] = { "", "04 May 2011", "04 July 2011", "04 September 2011", "04 November 2011", "04 January 2012" };
-    private final Float REPAYMENT_AMOUNT[] = { .0f, 2200.0f, 3000.0f, 900.0f, 2000.0f, 2500.0f };
-
-    private final Float AMOUNT_TO_BE_WAIVE = 400.0f;
-    private LoanTransactionHelper loanTransactionHelper;
-    private AccountHelper accountHelper;
-    private JournalEntryHelper journalEntryHelper;
-    private SavingsAccountHelper savingsAccountHelper;
-    private FixedDepositProductHelper fixedDepositProductHelper;
-    private FixedDepositAccountHelper fixedDepositAccountHelper;
-    private RecurringDepositProductHelper recurringDepositProductHelper;
-    private RecurringDepositAccountHelper recurringDepositAccountHelper;
-    private SchedulerJobHelper schedulerJobHelper;
-    private PeriodicAccrualAccountingHelper periodicAccrualAccountingHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.journalEntryHelper = new JournalEntryHelper(this.requestSpec, this.responseSpec);
-        this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec, this.responseSpec);
-        this.periodicAccrualAccountingHelper = new PeriodicAccrualAccountingHelper(this.requestSpec, this.responseSpec);
-    }
-
-    @Test
-    public void checkUpfrontAccrualAccountingFlow() {
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
-
-        final Integer loanProductID = createLoanProductWithUpfrontAccrualAccountingEnabled(assetAccount, incomeAccount, expenseAccount,
-                overpaymentAccount);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, this.DATE_OF_JOINING);
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(this.EXPECTED_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(this.EXPECTED_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        // CHECK ACCOUNT ENTRIES
-        System.out.println("Entries ......");
-        final float PRINCIPAL_VALUE_FOR_EACH_PERIOD = 2000.0f;
-        final float TOTAL_INTEREST = 1000.0f;
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(TOTAL_INTEREST, JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.CREDIT),
-                new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.DEBIT), };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.EXPECTED_DISBURSAL_DATE, assetAccountInitialEntry);
-        System.out.println("CHECKING INCOME: ******************************************");
-        final JournalEntry incomeJournalEntry = new JournalEntry(TOTAL_INTEREST, JournalEntry.TransactionType.CREDIT);
-        this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, this.EXPECTED_DISBURSAL_DATE, incomeJournalEntry);
-
-        // MAKE 1
-        System.out.println("Repayment 1 ......");
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[1], this.REPAYMENT_AMOUNT[1], loanID);
-        final float FIRST_INTEREST = 200.0f;
-        final float FIRST_PRINCIPAL = 2000.0f;
-        float expected_value = this.LP_PRINCIPAL - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(1, expected_value, loanID);
-        final JournalEntry[] assetAccountFirstEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[1], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(FIRST_INTEREST, JournalEntry.TransactionType.CREDIT),
-                new JournalEntry(FIRST_PRINCIPAL, JournalEntry.TransactionType.CREDIT), };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[1], assetAccountFirstEntry);
-        System.out.println("Repayment 1 Done......");
-
-        // REPAYMENT 2
-        System.out.println("Repayment 2 ......");
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[2], this.REPAYMENT_AMOUNT[2], loanID);
-        final float SECOND_AND_THIRD_INTEREST = 400.0f;
-        final float SECOND_PRINCIPAL = this.REPAYMENT_AMOUNT[2] - SECOND_AND_THIRD_INTEREST;
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(2, expected_value, loanID);
-        final JournalEntry[] assetAccountSecondEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[2], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(SECOND_AND_THIRD_INTEREST, JournalEntry.TransactionType.CREDIT),
-                new JournalEntry(SECOND_PRINCIPAL, JournalEntry.TransactionType.CREDIT), };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[2], assetAccountSecondEntry);
-        System.out.println("Repayment 2 Done ......");
-
-        // WAIVE INTEREST
-        System.out.println("Waive Interest  ......");
-        this.loanTransactionHelper.waiveInterest(this.REPAYMENT_DATE[4], this.AMOUNT_TO_BE_WAIVE.toString(), loanID);
-
-        final JournalEntry waivedEntry = new JournalEntry(this.AMOUNT_TO_BE_WAIVE, JournalEntry.TransactionType.CREDIT);
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[4], waivedEntry);
-
-        final JournalEntry expenseJournalEntry = new JournalEntry(this.AMOUNT_TO_BE_WAIVE, JournalEntry.TransactionType.DEBIT);
-        this.journalEntryHelper.checkJournalEntryForExpenseAccount(expenseAccount, this.REPAYMENT_DATE[4], expenseJournalEntry);
-        System.out.println("Waive Interest Done......");
-
-        // REPAYMENT 3
-        System.out.println("Repayment 3 ......");
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[3], this.REPAYMENT_AMOUNT[3], loanID);
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        final JournalEntry[] assetAccountThirdEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[3], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(this.REPAYMENT_AMOUNT[3], JournalEntry.TransactionType.CREDIT) };
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(3, expected_value, loanID);
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[3], assetAccountThirdEntry);
-        System.out.println("Repayment 3 Done ......");
-
-        // REPAYMENT 4
-        System.out.println("Repayment 4 ......");
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[4], this.REPAYMENT_AMOUNT[4], loanID);
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(4, expected_value, loanID);
-        final JournalEntry[] assetAccountFourthEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[4], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(this.REPAYMENT_AMOUNT[4], JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[4], assetAccountFourthEntry);
-        System.out.println("Repayment 4 Done  ......");
-
-        // Repayment 5
-        System.out.println("Repayment 5 ......");
-        final JournalEntry[] assetAccountFifthEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[5], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(this.REPAYMENT_AMOUNT[5], JournalEntry.TransactionType.CREDIT) };
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[5], this.REPAYMENT_AMOUNT[5], loanID);
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(5, expected_value, loanID);
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[5], assetAccountFifthEntry);
-        System.out.println("Repayment 5 Done  ......");
-    }
-
-    private Integer createLoanProductWithUpfrontAccrualAccountingEnabled(final Account... accounts) {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        final String loanProductJSON = new LoanProductTestBuilder().withPrincipal(this.LP_PRINCIPAL.toString()).withRepaymentTypeAsMonth()
-                .withRepaymentAfterEvery(this.LP_REPAYMENT_PERIOD).withNumberOfRepayments(this.LP_REPAYMENTS).withRepaymentTypeAsMonth()
-                .withinterestRatePerPeriod(this.LP_INTEREST_RATE).withInterestRateFrequencyTypeAsMonths()
-                .withAmortizationTypeAsEqualPrincipalPayment().withInterestTypeAsFlat().withAccountingRuleUpfrontAccrual(accounts)
-                .build(null);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(this.LP_PRINCIPAL.toString())
-                .withLoanTermFrequency(this.LOAN_TERM_FREQUENCY).withLoanTermFrequencyAsMonths().withNumberOfRepayments(this.LP_REPAYMENTS)
-                .withRepaymentEveryAfter(this.LP_REPAYMENT_PERIOD).withRepaymentFrequencyTypeAsMonths()
-                .withInterestRatePerPeriod(this.LP_INTEREST_RATE).withInterestTypeAsFlatBalance()
-                .withAmortizationTypeAsEqualPrincipalPayments().withInterestCalculationPeriodTypeSameAsRepaymentPeriod()
-                .withExpectedDisbursementDate(this.EXPECTED_DISBURSAL_DATE).withSubmittedOnDate(this.LOAN_APPLICATION_SUBMISSION_DATE)
-                .withLoanType(this.INDIVIDUAL_LOAN).build(clientID.toString(), loanProductID.toString(), null);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-    @Test
-    public void checkAccountingWithSavingsFlow() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        final Integer savingsProductID = createSavingsProduct(MINIMUM_OPENING_BALANCE, assetAccount, incomeAccount, expenseAccount,
-                liabilityAccount);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, this.DATE_OF_JOINING);
-        final Integer savingsID = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsID);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsID);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsID);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        // Checking initial Account entries.
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(this.SP_BALANCE, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountInitialEntry = { new JournalEntry(this.SP_BALANCE, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.TRANSACTION_DATE, assetAccountInitialEntry);
-        this.journalEntryHelper
-                .checkJournalEntryForLiabilityAccount(liabilityAccount, this.TRANSACTION_DATE, liablilityAccountInitialEntry);
-
-        // First Transaction-Deposit
-        this.savingsAccountHelper.depositToSavingsAccount(savingsID, DEPOSIT_AMOUNT, SavingsAccountHelper.TRANSACTION_DATE,
-                CommonConstants.RESPONSE_RESOURCE_ID);
-        Float balance = SP_BALANCE + SP_DEPOSIT_AMOUNT;
-        HashMap summary = this.savingsAccountHelper.getSavingsSummary(savingsID);
-        assertEquals("Verifying Balance after Deposit", balance, summary.get("accountBalance"));
-
-        System.out.println("----------------------Verifying Journal Entry after the Transaction Deposit----------------------------");
-        final JournalEntry[] assetAccountFirstTransactionEntry = { new JournalEntry(this.SP_DEPOSIT_AMOUNT,
-                JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liabililityAccountFirstTransactionEntry = { new JournalEntry(this.SP_DEPOSIT_AMOUNT,
-                JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.TRANSACTION_DATE, assetAccountFirstTransactionEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, this.TRANSACTION_DATE,
-                liabililityAccountFirstTransactionEntry);
-
-        // Second Transaction-Withdrawal
-        this.savingsAccountHelper.withdrawalFromSavingsAccount(savingsID, WITHDRAWAL_AMOUNT, SavingsAccountHelper.TRANSACTION_DATE,
-                CommonConstants.RESPONSE_RESOURCE_ID);
-        balance -= SP_WITHDRAWAL_AMOUNT;
-        summary = this.savingsAccountHelper.getSavingsSummary(savingsID);
-        assertEquals("Verifying Balance after Withdrawal", balance, summary.get("accountBalance"));
-
-        System.out.println("-------------------Verifying Journal Entry after the Transaction Withdrawal----------------------");
-        final JournalEntry[] assetAccountSecondTransactionEntry = { new JournalEntry(this.SP_WITHDRAWAL_AMOUNT,
-                JournalEntry.TransactionType.CREDIT) };
-        final JournalEntry[] liabililityAccountSecondTransactionEntry = { new JournalEntry(this.SP_WITHDRAWAL_AMOUNT,
-                JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.TRANSACTION_DATE, assetAccountSecondTransactionEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, this.TRANSACTION_DATE,
-                liabililityAccountSecondTransactionEntry);
-
-        // Third Transaction-Add Charges for Withdrawal Fee
-        final Integer withdrawalChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsWithdrawalFeeJSON());
-        Assert.assertNotNull(withdrawalChargeId);
-
-        this.savingsAccountHelper.addChargesForSavings(savingsID, withdrawalChargeId);
-        ArrayList<HashMap> chargesPendingState = this.savingsAccountHelper.getSavingsCharges(savingsID);
-        Assert.assertEquals(1, chargesPendingState.size());
-        HashMap savingsChargeForPay = chargesPendingState.get(0);
-        HashMap paidCharge = this.savingsAccountHelper.getSavingsCharge(savingsID, (Integer) savingsChargeForPay.get("id"));
-        Float chargeAmount = (Float) paidCharge.get("amount");
-
-        // Withdrawal after adding Charge of type Withdrawal Fee
-        this.savingsAccountHelper.withdrawalFromSavingsAccount(savingsID, WITHDRAWAL_AMOUNT_ADJUSTED,
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        summary = this.savingsAccountHelper.getSavingsSummary(savingsID);
-        balance = balance - SP_WITHDRAWAL_AMOUNT_ADJUSTED - chargeAmount;
-
-        final JournalEntry[] liabililityAccountThirdTransactionEntry = {
-                new JournalEntry(chargeAmount, JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(this.SP_WITHDRAWAL_AMOUNT_ADJUSTED, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] assetAccountThirdTransactionEntry = { new JournalEntry(this.SP_WITHDRAWAL_AMOUNT_ADJUSTED,
-                JournalEntry.TransactionType.CREDIT) };
-        final JournalEntry[] incomeAccountThirdTransactionEntry = { new JournalEntry(chargeAmount, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.TRANSACTION_DATE, assetAccountThirdTransactionEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, this.TRANSACTION_DATE,
-                liabililityAccountThirdTransactionEntry);
-        this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, this.TRANSACTION_DATE, incomeAccountThirdTransactionEntry);
-
-        // Verifying Balance after applying Charge for Withdrawal Fee
-        assertEquals("Verifying Balance", balance, summary.get("accountBalance"));
-    }
-
-    @Test
-    public void testFixedDepositAccountingFlow() {
-        this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.fixedDepositAccountHelper = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        Integer numberOfDaysLeft = (daysInMonth - currentDate) + 1;
-        todaysDate.add(Calendar.DATE, numberOfDaysLeft);
-        final String INTEREST_POSTED_DATE = dateFormat.format(todaysDate.getTime());
-
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, assetAccount, incomeAccount, expenseAccount,
-                liabilityAccount);
-        Assert.assertNotNull(fixedDepositProductId);
-
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), VALID_FROM,
-                VALID_TO, SUBMITTED_ON_DATE, FixedDepositTest.WHOLE_TERM);
-        Assert.assertNotNull(fixedDepositAccountId);
-
-        HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
-                this.responseSpec, fixedDepositAccountId.toString());
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsPending(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.approveFixedDeposit(fixedDepositAccountId, APPROVED_ON_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsApproved(fixedDepositAccountStatusHashMap);
-
-        fixedDepositAccountStatusHashMap = this.fixedDepositAccountHelper.activateFixedDeposit(fixedDepositAccountId, ACTIVATION_DATE);
-        FixedDepositAccountStatusChecker.verifyFixedDepositIsActive(fixedDepositAccountStatusHashMap);
-
-        HashMap accountSummary = this.fixedDepositAccountHelper.getFixedDepositSummary(fixedDepositAccountId);
-
-        Float depositAmount = (Float) accountSummary.get("totalDeposits");
-
-        // Checking initial Journal entries after Activation.
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(depositAmount, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountInitialEntry = { new JournalEntry(depositAmount, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, ACTIVATION_DATE, assetAccountInitialEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, ACTIVATION_DATE, liablilityAccountInitialEntry);
-
-        Integer transactionIdForPostInterest = this.fixedDepositAccountHelper.postInterestForFixedDeposit(fixedDepositAccountId);
-        Assert.assertNotNull(transactionIdForPostInterest);
-
-        accountSummary = this.fixedDepositAccountHelper.getFixedDepositSummary(fixedDepositAccountId);
-        Float totalInterestPosted = (Float) accountSummary.get("totalInterestPosted");
-
-        // Checking initial Journal entries after Interest Posting.
-        final JournalEntry[] expenseAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(expenseAccount, INTEREST_POSTED_DATE, expenseAccountEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, INTEREST_POSTED_DATE, liablilityAccountEntry);
-
-    }
-
-    @Test
-    public void testRecurringDepositAccountingFlow() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        Integer numberOfDaysLeft = (daysInMonth - currentDate) + 1;
-        todaysDate.add(Calendar.DATE, numberOfDaysLeft);
-        final String INTEREST_POSTED_DATE = dateFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, assetAccount, liabilityAccount,
-                incomeAccount, expenseAccount);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, RecurringDepositTest.WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
-                APPROVED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsApproved(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.activateRecurringDeposit(recurringDepositAccountId,
-                ACTIVATION_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsActive(recurringDepositAccountStatusHashMap);
-
-        HashMap recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Float depositAmount = (Float) recurringDepositAccountData.get("mandatoryRecommendedDepositAmount");
-
-        Integer depositTransactionId = this.recurringDepositAccountHelper.depositToRecurringDepositAccount(recurringDepositAccountId,
-                depositAmount, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(depositTransactionId);
-
-        // Checking initial Journal entries after Activation.
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(depositAmount, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountInitialEntry = { new JournalEntry(depositAmount, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, EXPECTED_FIRST_DEPOSIT_ON_DATE, assetAccountInitialEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, EXPECTED_FIRST_DEPOSIT_ON_DATE,
-                liablilityAccountInitialEntry);
-
-        Integer interestPostingTransactionId = this.recurringDepositAccountHelper
-                .postInterestForRecurringDeposit(recurringDepositAccountId);
-        Assert.assertNotNull(interestPostingTransactionId);
-
-        HashMap accountSummary = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float totalInterestPosted = (Float) accountSummary.get("totalInterestPosted");
-
-        // Checking initial Journal entries after Interest Posting.
-        final JournalEntry[] expenseAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(expenseAccount, INTEREST_POSTED_DATE, expenseAccountEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, INTEREST_POSTED_DATE, liablilityAccountEntry);
-
-    }
-
-    public static Integer createSavingsProduct(final String minOpenningBalance, final Account... accounts) {
-        System.out.println("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------");
-        final String savingsProductJSON = new SavingsProductHelper().withInterestCompoundingPeriodTypeAsDaily() //
-                .withInterestPostingPeriodTypeAsQuarterly() //
-                .withInterestCalculationPeriodTypeAsDailyBalance() //
-                .withMinimumOpenningBalance(minOpenningBalance).withAccountingRuleAsCashBased(accounts).build();
-        return SavingsProductHelper.createSavingsProduct(savingsProductJSON, requestSpec, responseSpec);
-    }
-
-    private Integer createFixedDepositProduct(final String validFrom, final String validTo, Account... accounts) {
-        System.out.println("------------------------------CREATING NEW FIXED DEPOSIT PRODUCT ---------------------------------------");
-        FixedDepositProductHelper fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
-        final String fixedDepositProductJSON = fixedDepositProductHelper //
-                .withAccountingRuleAsCashBased(accounts).build(validFrom, validTo);
-        return FixedDepositProductHelper.createFixedDepositProduct(fixedDepositProductJSON, requestSpec, responseSpec);
-    }
-
-    private Integer applyForFixedDepositApplication(final String clientID, final String productID, final String validFrom,
-            final String validTo, final String submittedOnDate, final String penalInterestType) {
-        System.out.println("--------------------------------APPLYING FOR FIXED DEPOSIT ACCOUNT --------------------------------");
-        final String fixedDepositApplicationJSON = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec) //
-                .withSubmittedOnDate(submittedOnDate).build(clientID, productID, validFrom, validTo, penalInterestType);
-        return this.fixedDepositAccountHelper
-                .applyFixedDepositApplication(fixedDepositApplicationJSON, this.requestSpec, this.responseSpec);
-    }
-
-    private Integer createRecurringDepositProduct(final String validFrom, final String validTo, Account... accounts) {
-        System.out.println("------------------------------CREATING NEW RECURRING DEPOSIT PRODUCT ---------------------------------------");
-        RecurringDepositProductHelper recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        final String recurringDepositProductJSON = recurringDepositProductHelper //
-                .withAccountingRuleAsCashBased(accounts).build(validFrom, validTo);
-        return RecurringDepositProductHelper.createRecurringDepositProduct(recurringDepositProductJSON, requestSpec, responseSpec);
-    }
-
-    private Integer applyForRecurringDepositApplication(final String clientID, final String productID, final String validFrom,
-            final String validTo, final String submittedOnDate, final String penalInterestType, final String expectedFirstDepositOnDate) {
-        System.out.println("--------------------------------APPLYING FOR RECURRING DEPOSIT ACCOUNT --------------------------------");
-        final String recurringDepositApplicationJSON = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec)
-                //
-                .withSubmittedOnDate(submittedOnDate).withExpectedFirstDepositOnDate(expectedFirstDepositOnDate)
-                .build(clientID, productID, validFrom, validTo, penalInterestType);
-        return this.recurringDepositAccountHelper.applyRecurringDepositApplication(recurringDepositApplicationJSON, this.requestSpec,
-                this.responseSpec);
-    }
-
-    @Test
-    public void checkPeriodicAccrualAccountingFlow() {
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
-
-        final Integer loanProductID = createLoanProductWithPeriodicAccrualAccountingEnabled(assetAccount, incomeAccount, expenseAccount,
-                overpaymentAccount);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, this.DATE_OF_JOINING);
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(this.EXPECTED_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(this.EXPECTED_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        // CHECK ACCOUNT ENTRIES
-        System.out.println("Entries ......");
-        final float PRINCIPAL_VALUE_FOR_EACH_PERIOD = 2000.0f;
-        final float TOTAL_INTEREST = 1000.0f;
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.CREDIT),
-                new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.DEBIT), };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.EXPECTED_DISBURSAL_DATE, assetAccountInitialEntry);
-
-        final String jobName = "Add Accrual Transactions";
-        try {
-            this.schedulerJobHelper.executeJob(jobName);
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-
-        // MAKE 1
-        System.out.println("Repayment 1 ......");
-        final float FIRST_INTEREST = 200.0f;
-        final float FIRST_PRINCIPAL = 2000.0f;
-        final float FEE_PORTION = 0.0f;
-        final float PENALTY_PORTION = 0.0f;
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(getDateAsLocalDate(this.REPAYMENT_DATE[1]), FIRST_INTEREST,
-                FEE_PORTION, PENALTY_PORTION, loanID);
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[1], this.REPAYMENT_AMOUNT[1], loanID);
-        float expected_value = this.LP_PRINCIPAL - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(1, expected_value, loanID);
-        final JournalEntry[] assetAccountFirstEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[1], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(FIRST_INTEREST, JournalEntry.TransactionType.CREDIT),
-                new JournalEntry(FIRST_PRINCIPAL, JournalEntry.TransactionType.CREDIT), };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[1], assetAccountFirstEntry);
-        System.out.println("Repayment 1 Done......");
-
-        // REPAYMENT 2
-        System.out.println("Repayment 2 ......");
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[2], this.REPAYMENT_AMOUNT[2], loanID);
-        final float SECOND_AND_THIRD_INTEREST = 400.0f;
-        final float SECOND_PRINCIPAL = this.REPAYMENT_AMOUNT[2] - SECOND_AND_THIRD_INTEREST;
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(getDateAsLocalDate(this.REPAYMENT_DATE[2]), FIRST_INTEREST,
-                FEE_PORTION, PENALTY_PORTION, loanID);
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(getDateAsLocalDate(this.REPAYMENT_DATE[3]), FIRST_INTEREST,
-                FEE_PORTION, PENALTY_PORTION, loanID);
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(2, expected_value, loanID);
-        final JournalEntry[] assetAccountSecondEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[2], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(SECOND_AND_THIRD_INTEREST, JournalEntry.TransactionType.CREDIT),
-                new JournalEntry(SECOND_PRINCIPAL, JournalEntry.TransactionType.CREDIT), };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[2], assetAccountSecondEntry);
-        System.out.println("Repayment 2 Done ......");
-
-        // WAIVE INTEREST
-        System.out.println("Waive Interest  ......");
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(getDateAsLocalDate(this.REPAYMENT_DATE[4]), FIRST_INTEREST,
-                FEE_PORTION, PENALTY_PORTION, loanID);
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(getDateAsLocalDate(this.REPAYMENT_DATE[5]), FIRST_INTEREST,
-                FEE_PORTION, PENALTY_PORTION, loanID);
-        this.loanTransactionHelper.waiveInterest(this.REPAYMENT_DATE[4], this.AMOUNT_TO_BE_WAIVE.toString(), loanID);
-
-        final JournalEntry waivedEntry = new JournalEntry(this.AMOUNT_TO_BE_WAIVE, JournalEntry.TransactionType.CREDIT);
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[4], waivedEntry);
-
-        final JournalEntry expenseJournalEntry = new JournalEntry(this.AMOUNT_TO_BE_WAIVE, JournalEntry.TransactionType.DEBIT);
-        this.journalEntryHelper.checkJournalEntryForExpenseAccount(expenseAccount, this.REPAYMENT_DATE[4], expenseJournalEntry);
-        System.out.println("Waive Interest Done......");
-
-        // REPAYMENT 3
-        System.out.println("Repayment 3 ......");
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[3], this.REPAYMENT_AMOUNT[3], loanID);
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        final JournalEntry[] assetAccountThirdEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[3], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(this.REPAYMENT_AMOUNT[3], JournalEntry.TransactionType.CREDIT) };
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(3, expected_value, loanID);
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[3], assetAccountThirdEntry);
-        System.out.println("Repayment 3 Done ......");
-
-        // REPAYMENT 4
-        System.out.println("Repayment 4 ......");
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[4], this.REPAYMENT_AMOUNT[4], loanID);
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(4, expected_value, loanID);
-        final JournalEntry[] assetAccountFourthEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[4], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(this.REPAYMENT_AMOUNT[4], JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[4], assetAccountFourthEntry);
-        System.out.println("Repayment 4 Done  ......");
-
-        // Repayment 5
-        System.out.println("Repayment 5 ......");
-        final JournalEntry[] assetAccountFifthEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[5], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(this.REPAYMENT_AMOUNT[5], JournalEntry.TransactionType.CREDIT) };
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[5], this.REPAYMENT_AMOUNT[5], loanID);
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(5, expected_value, loanID);
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[5], assetAccountFifthEntry);
-        System.out.println("Repayment 5 Done  ......");
-    }
-
-    @Test
-    public void checkPeriodicAccrualAccountingFlow_OVER_PAYMENT() {
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
-
-        final Integer loanProductID = createLoanProductWithPeriodicAccrualAccountingEnabled(assetAccount, incomeAccount, expenseAccount,
-                overpaymentAccount);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, this.DATE_OF_JOINING);
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(this.EXPECTED_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(this.EXPECTED_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        // CHECK ACCOUNT ENTRIES
-        System.out.println("Entries ......");
-        final float PRINCIPAL_VALUE_FOR_EACH_PERIOD = 2000.0f;
-        final float TOTAL_INTEREST = 1000.0f;
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.CREDIT),
-                new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.DEBIT), };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.EXPECTED_DISBURSAL_DATE, assetAccountInitialEntry);
-
-        final String jobName = "Add Accrual Transactions";
-        try {
-            this.schedulerJobHelper.executeJob(jobName);
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-
-        // MAKE 1
-        System.out.println("Repayment 1 ......");
-        final float FIRST_INTEREST = 200.0f;
-        final float FIRST_PRINCIPAL = 2000.0f;
-        final float FEE_PORTION = 0.0f;
-        final float PENALTY_PORTION = 0.0f;
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(getDateAsLocalDate(this.REPAYMENT_DATE[1]), FIRST_INTEREST,
-                FEE_PORTION, PENALTY_PORTION, loanID);
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[1], 15000f, loanID);
-        float expected_value = this.LP_PRINCIPAL - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(1, expected_value, loanID);
-        final JournalEntry[] assetAccountEntry = { new JournalEntry(15000f, JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(1000f, JournalEntry.TransactionType.CREDIT), new JournalEntry(10000f, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[1], assetAccountEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(overpaymentAccount, this.REPAYMENT_DATE[1], new JournalEntry(4000f,
-                JournalEntry.TransactionType.CREDIT));
-        System.out.println("Repayment  Done......");
-
-    }
-
-    @Test
-    public void checkPeriodicAccrualAccountingTillCurrentDateFlow() {
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
-
-        final Integer loanProductID = createLoanProductWithPeriodicAccrualAccountingEnabled(assetAccount, incomeAccount, expenseAccount,
-                overpaymentAccount);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, this.DATE_OF_JOINING);
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID);
-
-        final float FEE_PORTION = 50.0f;
-        final float PENALTY_PORTION = 100.0f;
-        Integer flat = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(FEE_PORTION), false));
-        Integer flatSpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(PENALTY_PORTION), true));
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(this.EXPECTED_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-
-        Calendar todayDate = Calendar.getInstance();
-        final String currentDate = dateFormat.format(todayDate.getTime());
-
-        todayDate.add(Calendar.DATE, -4);
-
-        final String LOAN_DISBURSEMENT_DATE = dateFormat.format(todayDate.getTime());
-
-        todayDate.add(Calendar.MONTH, 2);
-        final String FIRST_REPAYMENT_DATE = dateFormat.format(todayDate.getTime());
-
-        todayDate = Calendar.getInstance();
-        todayDate.add(Calendar.DATE, -2);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(LOAN_DISBURSEMENT_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        this.loanTransactionHelper.addChargesForLoan(
-                loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate),
-                        dateFormat.format(todayDate.getTime()), String.valueOf(PENALTY_PORTION)));
-        todayDate.add(Calendar.DATE, 1);
-        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                String.valueOf(flat), dateFormat.format(todayDate.getTime()), String.valueOf(FEE_PORTION)));
-
-        // CHECK ACCOUNT ENTRIES
-        System.out.println("Entries ......");
-        final float PRINCIPAL_VALUE_FOR_EACH_PERIOD = 2000.0f;
-        final float TOTAL_INTEREST = 1000.0f;
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.CREDIT),
-                new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.DEBIT), };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, LOAN_DISBURSEMENT_DATE, assetAccountInitialEntry);
-
-        final String jobName = "Add Periodic Accrual Transactions";
-        try {
-            this.schedulerJobHelper.executeJob(jobName);
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-
-        final ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec,
-                loanID);
-        // MAKE 1
-        List fromDateList = (List) loanSchedule.get(1).get("fromDate");
-        LocalDate fromDateLocal = LocalDate.now();
-        fromDateLocal = fromDateLocal.withYear((int) fromDateList.get(0));
-        fromDateLocal = fromDateLocal.withMonthOfYear((int) fromDateList.get(1));
-        fromDateLocal = fromDateLocal.withDayOfMonth((int) fromDateList.get(2));
-
-        List dueDateList = (List) loanSchedule.get(1).get("dueDate");
-        LocalDate dueDateLocal = LocalDate.now();
-        dueDateLocal = dueDateLocal.withYear((int) dueDateList.get(0));
-        dueDateLocal = dueDateLocal.withMonthOfYear((int) dueDateList.get(1));
-        dueDateLocal = dueDateLocal.withDayOfMonth((int) dueDateList.get(2));
-
-        int totalDaysInPeriod = Days.daysBetween(fromDateLocal, dueDateLocal).getDays();
-
-        float totalInterest = (float) loanSchedule.get(1).get("interestOriginalDue");
-        DecimalFormat numberFormat = new DecimalFormat("#.00", new DecimalFormatSymbols(Locale.US));
-        float INTEREST_4_DAYS = totalInterest / totalDaysInPeriod * 4;
-        INTEREST_4_DAYS = new Float(numberFormat.format(INTEREST_4_DAYS));
-
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(getDateAsLocalDate(currentDate), INTEREST_4_DAYS, FEE_PORTION,
-                PENALTY_PORTION, loanID);
-
-    }
-
-    @Test
-    public void checkPeriodicAccrualAccountingAPIFlow() {
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
-
-        final Integer loanProductID = createLoanProductWithPeriodicAccrualAccountingEnabled(assetAccount, incomeAccount, expenseAccount,
-                overpaymentAccount);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, this.DATE_OF_JOINING);
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID);
-
-        final float FEE_PORTION = 50.0f;
-        final float PENALTY_PORTION = 100.0f;
-        final float NEXT_FEE_PORTION = 55.0f;
-        final float NEXT_PENALTY_PORTION = 105.0f;
-
-        Integer flat = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(FEE_PORTION), false));
-        Integer flatSpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(PENALTY_PORTION), true));
-
-        Integer flatNext = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(NEXT_FEE_PORTION), false));
-        Integer flatSpecifiedDueDateNext = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(NEXT_PENALTY_PORTION), true));
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(this.EXPECTED_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-
-        Calendar todayDate = Calendar.getInstance();
-        final String currentDate = dateFormat.format(todayDate.getTime());
-
-        todayDate.add(Calendar.DATE, -4);
-
-        final String LOAN_DISBURSEMENT_DATE = dateFormat.format(todayDate.getTime());
-
-        todayDate.add(Calendar.MONTH, 2);
-        final String FIRST_REPAYMENT_DATE = dateFormat.format(todayDate.getTime());
-
-        todayDate = Calendar.getInstance();
-        todayDate.add(Calendar.DATE, -2);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(LOAN_DISBURSEMENT_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        this.loanTransactionHelper.addChargesForLoan(
-                loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate),
-                        dateFormat.format(todayDate.getTime()), String.valueOf(PENALTY_PORTION)));
-        todayDate.add(Calendar.DATE, 1);
-        String runOndate = dateFormat.format(todayDate.getTime());
-
-        this.loanTransactionHelper
-                .addChargesForLoan(
-                        loanID,
-                        LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flat), runOndate,
-                                String.valueOf(FEE_PORTION)));
-
-        todayDate.add(Calendar.DATE, 1);
-        this.loanTransactionHelper.addChargesForLoan(
-                loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDateNext),
-                        dateFormat.format(todayDate.getTime()), String.valueOf(NEXT_PENALTY_PORTION)));
-
-        this.loanTransactionHelper.addChargesForLoan(
-                loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatNext),
-                        dateFormat.format(todayDate.getTime()), String.valueOf(NEXT_FEE_PORTION)));
-
-        // CHECK ACCOUNT ENTRIES
-        System.out.println("Entries ......");
-        final float PRINCIPAL_VALUE_FOR_EACH_PERIOD = 2000.0f;
-        final float TOTAL_INTEREST = 1000.0f;
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.CREDIT),
-                new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.DEBIT), };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, LOAN_DISBURSEMENT_DATE, assetAccountInitialEntry);
-
-        this.periodicAccrualAccountingHelper.runPeriodicAccrualAccounting(runOndate);
-
-        final ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec,
-                loanID);
-        // MAKE 1
-        List fromDateList = (List) loanSchedule.get(1).get("fromDate");
-        LocalDate fromDateLocal = LocalDate.now();
-        fromDateLocal = fromDateLocal.withYear((int) fromDateList.get(0));
-        fromDateLocal = fromDateLocal.withMonthOfYear((int) fromDateList.get(1));
-        fromDateLocal = fromDateLocal.withDayOfMonth((int) fromDateList.get(2));
-
-        List dueDateList = (List) loanSchedule.get(1).get("dueDate");
-        LocalDate dueDateLocal = LocalDate.now();
-        dueDateLocal = dueDateLocal.withYear((int) dueDateList.get(0));
-        dueDateLocal = dueDateLocal.withMonthOfYear((int) dueDateList.get(1));
-        dueDateLocal = dueDateLocal.withDayOfMonth((int) dueDateList.get(2));
-
-        int totalDaysInPeriod = Days.daysBetween(fromDateLocal, dueDateLocal).getDays();
-
-        float totalInterest = (float) loanSchedule.get(1).get("interestOriginalDue");
-        DecimalFormat numberFormat = new DecimalFormat("#.00", new DecimalFormatSymbols(Locale.US));
-        float INTEREST_3_DAYS = totalInterest / totalDaysInPeriod * 3;
-        INTEREST_3_DAYS = new Float(numberFormat.format(INTEREST_3_DAYS));
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(getDateAsLocalDate(runOndate), INTEREST_3_DAYS, FEE_PORTION,
-                PENALTY_PORTION, loanID);
-
-        runOndate = dateFormat.format(todayDate.getTime());
-
-        this.periodicAccrualAccountingHelper.runPeriodicAccrualAccounting(runOndate);
-        float interestPerDay = (totalInterest / totalDaysInPeriod * 4) - INTEREST_3_DAYS;
-        interestPerDay = new Float(numberFormat.format(interestPerDay));
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(getDateAsLocalDate(runOndate), interestPerDay, NEXT_FEE_PORTION,
-                NEXT_PENALTY_PORTION, loanID);
-
-    }
-
-    private Integer createLoanProductWithPeriodicAccrualAccountingEnabled(final Account... accounts) {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        final String loanProductJSON = new LoanProductTestBuilder().withPrincipal(this.LP_PRINCIPAL.toString()).withRepaymentTypeAsMonth()
-                .withRepaymentAfterEvery(this.LP_REPAYMENT_PERIOD).withNumberOfRepayments(this.LP_REPAYMENTS).withRepaymentTypeAsMonth()
-                .withinterestRatePerPeriod(this.LP_INTEREST_RATE).withInterestRateFrequencyTypeAsMonths()
-                .withAmortizationTypeAsEqualPrincipalPayment().withInterestTypeAsFlat().withAccountingRulePeriodicAccrual(accounts)
-                .withDaysInMonth("30").withDaysInYear("365").build(null);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    @Test
-    public void checkCashBasedAccountingFlow() {
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
-
-        final Integer loanProductID = createLoanProductWithCashBasedAccountingEnabled(assetAccount, incomeAccount, expenseAccount,
-                overpaymentAccount);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, this.DATE_OF_JOINING);
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan(this.EXPECTED_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(this.EXPECTED_DISBURSAL_DATE, loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        // CHECK ACCOUNT ENTRIES
-        System.out.println("Entries ......");
-        final float PRINCIPAL_VALUE_FOR_EACH_PERIOD = 2000.0f;
-        final float TOTAL_INTEREST = 1000.0f;
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.CREDIT),
-                new JournalEntry(this.LP_PRINCIPAL, JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.EXPECTED_DISBURSAL_DATE, assetAccountInitialEntry);
-
-        // MAKE 1
-        System.out.println("Repayment 1 ......");
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[1], this.REPAYMENT_AMOUNT[1], loanID);
-        final float FIRST_INTEREST = 200.0f;
-        final float FIRST_PRINCIPAL = 2000.0f;
-        float expected_value = this.LP_PRINCIPAL - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(1, expected_value, loanID);
-        final JournalEntry[] assetAccountFirstEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[1], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(FIRST_PRINCIPAL, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[1], assetAccountFirstEntry);
-        System.out.println("CHECKING INCOME: ******************************************");
-        this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, this.REPAYMENT_DATE[1], new JournalEntry(FIRST_INTEREST,
-                JournalEntry.TransactionType.CREDIT));
-        System.out.println("Repayment 1 Done......");
-
-        // REPAYMENT 2
-        System.out.println("Repayment 2 ......");
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[2], this.REPAYMENT_AMOUNT[2], loanID);
-        final float SECOND_AND_THIRD_INTEREST = 400.0f;
-        final float SECOND_PRINCIPAL = this.REPAYMENT_AMOUNT[2] - SECOND_AND_THIRD_INTEREST;
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(2, expected_value, loanID);
-        final JournalEntry[] assetAccountSecondEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[2], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(SECOND_PRINCIPAL, JournalEntry.TransactionType.CREDIT), };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[2], assetAccountSecondEntry);
-        System.out.println("CHECKING INCOME: ******************************************");
-        this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, this.REPAYMENT_DATE[2], new JournalEntry(
-                SECOND_AND_THIRD_INTEREST, JournalEntry.TransactionType.CREDIT));
-        System.out.println("Repayment 2 Done ......");
-
-        // WAIVE INTEREST
-        System.out.println("Waive Interest  ......");
-        Integer transactionId = this.loanTransactionHelper.waiveInterestAndReturnTransactionId(this.REPAYMENT_DATE[4],
-                this.AMOUNT_TO_BE_WAIVE.toString(), loanID);
-        // waive of fees and interest are not considered in cash based
-        // accounting,
-        this.journalEntryHelper.ensureNoAccountingTransactionsWithTransactionId("L" + transactionId);
-
-        // REPAYMENT 3
-        System.out.println("Repayment 3 ......");
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[3], this.REPAYMENT_AMOUNT[3], loanID);
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        final JournalEntry[] assetAccountThirdEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[3], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(this.REPAYMENT_AMOUNT[3], JournalEntry.TransactionType.CREDIT) };
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(3, expected_value, loanID);
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[3], assetAccountThirdEntry);
-        System.out.println("Repayment 3 Done ......");
-
-        // REPAYMENT 4
-        System.out.println("Repayment 4 ......");
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[4], this.REPAYMENT_AMOUNT[4], loanID);
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(4, expected_value, loanID);
-        final JournalEntry[] assetAccountFourthEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[4], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(this.REPAYMENT_AMOUNT[4], JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[4], assetAccountFourthEntry);
-        System.out.println("Repayment 4 Done  ......");
-
-        // Repayment 5
-        System.out.println("Repayment 5 ......");
-        final JournalEntry[] assetAccountFifthEntry = { new JournalEntry(this.REPAYMENT_AMOUNT[5], JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(this.REPAYMENT_AMOUNT[5], JournalEntry.TransactionType.CREDIT) };
-        expected_value = expected_value - PRINCIPAL_VALUE_FOR_EACH_PERIOD;
-        this.loanTransactionHelper.makeRepayment(this.REPAYMENT_DATE[5], this.REPAYMENT_AMOUNT[5], loanID);
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(5, expected_value, loanID);
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[5], assetAccountFifthEntry);
-        System.out.println("Repayment 5 Done  ......");
-    }
-
-    private Integer createLoanProductWithCashBasedAccountingEnabled(final Account... accounts) {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        final String loanProductJSON = new LoanProductTestBuilder().withPrincipal(this.LP_PRINCIPAL.toString()).withRepaymentTypeAsMonth()
-                .withRepaymentAfterEvery(this.LP_REPAYMENT_PERIOD).withNumberOfRepayments(this.LP_REPAYMENTS).withRepaymentTypeAsMonth()
-                .withinterestRatePerPeriod(this.LP_INTEREST_RATE).withInterestRateFrequencyTypeAsMonths()
-                .withAmortizationTypeAsEqualPrincipalPayment().withInterestTypeAsFlat().withAccountingRuleAsCashBased(accounts).build(null);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private LocalDate getDateAsLocalDate(String dateAsString) {
-        LocalDate date = null;
-        try {
-            DateFormat df = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-            date = new LocalDate(df.parse(dateAsString));
-        } catch (ParseException e) {
-            e.printStackTrace();
-        }
-        return date;
-    }
-
-}


[33/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/raw-files.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/raw-files.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/raw-files.js
deleted file mode 100644
index 4c34c2f..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/raw-files.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var __js = {"affix.js":"/* ========================================================================\n * Bootstrap: affix.js v3.0.0\n * http://twbs.github.com/bootstrap/javascript.html#affix\n * ========================================================================\n * Copyright 2012 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n  // AF
 FIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n    this.$window = $(window)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element = $(element)\n    this.affixed  =\n    this.unpin    = null\n\n    this.checkPosition()\n  }\n\n  Affix.RESET = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var scrollHeight = $(document).height()\n    var scrollTop    = this.$window.scrollTop()\n    var position     = this.$element.offset()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\
 n    var offsetBottom = offset.bottom\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top()\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()\n\n    var affix = this.unpin   != null && (scrollTop + this.unpin <= position.top) ? false :\n                offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :\n                offsetTop    != null && (scrollTop <= offsetTop) ? 'top' : false\n\n    if (this.affixed === affix) return\n    if (this.unpin) this.$element.css('top', '')\n\n    this.affixed = affix\n    this.unpin   = affix == 'bottom' ? position.top - scrollTop : null\n\n    this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))\n\n    if (affix == 'bottom') {\n      this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })\n    }\n 
  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  var old = $.fn.affix\n\n  $.fn.affix = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop)    data.offset.top    = data.offsetTop\n\n      $s
 py.affix(data)\n    })\n  })\n\n}(window.jQuery);\n","alert.js":"/* ========================================================================\n * Bootstrap: alert.js v3.0.0\n * http://twbs.github.com/bootstrap/javascript.html#alerts\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n
 +function ($) { \"use strict\";\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.hasClass('alert') ? $this : $this.parent()\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      $parent.trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one($.support.transition.end, r
 emoveElement)\n        .emulateTransitionEnd(150) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  var old = $.fn.alert\n\n  $.fn.alert = function (option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(window.jQuery);\n","button.js":"/* ========================================================================\n * Bootstrap: button.js v3.0.0\n * http://twbs.github.com/bootstrap/javascript.html#buttons\n * =============================
 ===========================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element = $(element)\n    this.options  = $.extend({}, Button.DEFAULTS, options)\n  }\n\n  Button.
 DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state = state + 'Text'\n\n    if (!data.resetText) $el.data('resetText', $el[val]())\n\n    $el[val](data[state] || this.options[state])\n\n    // push to event loop to allow forms to submit\n    setTimeout(function () {\n      state == 'loadingText' ?\n        $el.addClass(d).attr(d, d) :\n        $el.removeClass(d).removeAttr(d);\n    }, 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n        .prop('checked', !this.$element.hasClass('active'))\n        .trigger('change')\n      if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active')\n    }\n\n    this.$element.toggleC
 lass('active')\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  var old = $.fn.button\n\n  $.fn.button = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {\n    var $btn = $(e.target)\n    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n    $btn.button('toggle')\n    e.preventDefault()\n  })\n\n}(window.jQuery);\n","carou
 sel.js":"/* ========================================================================\n * Bootstrap: carousel.js v3.0.0\n * http://twbs.github.com/bootstrap/javascript.html#carousel\n * ========================================================================\n * Copyright 2012 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n  // CAROUSEL CL
 ASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      =\n    this.sliding     =\n    this.interval    =\n    this.$active     =\n    this.$items      = null\n\n    this.options.pause == 'hover' && this.$element\n      .on('mouseenter', $.proxy(this.pause, this))\n      .on('mouseleave', $.proxy(this.cycle, this))\n  }\n\n  Carousel.DEFAULTS = {\n    interval: 5000\n  , pause: 'hover'\n  , wrap: true\n  }\n\n  Carousel.prototype.cycle =  function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getActiveIndex = function () {\n    this.$active = this.$element.fin
 d('.item.active')\n    this.$items  = this.$active.parent().children()\n\n    return this.$items.index(this.$active)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getActiveIndex()\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid', function () { that.to(pos) })\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition.end) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototy
 pe.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || $active[type]()\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var fallback  = type == 'next' ? 'first' : 'last'\n    var that      = this\n\n    if (!$next.length) {\n      if (!this.options.wrap) return\n      $next = this.$element.find('.item')[fallback]()\n    }\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })\n\n    if ($next.hasClass('active')) return\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      this.$element.one('slid', function () {\n        var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])\n        $nextIndicat
 or && $nextIndicator.addClass('active')\n      })\n    }\n\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      this.$element.trigger(e)\n      if (e.isDefaultPrevented()) return\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one($.support.transition.end, function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () { that.$element.trigger('slid') }, 0)\n        })\n        .emulateTransitionEnd(600)\n    } else {\n      this.$element.trigger(e)\n      if (e.isDefaultPrevented()) return\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger('slid')\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  /
 / CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  var old = $.fn.carousel\n\n  $.fn.carousel = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', func
 tion (e) {\n    var $this   = $(this), href\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    $target.carousel(options)\n\n    if (slideIndex = $this.attr('data-slide-to')) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  })\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      $carousel.carousel($carousel.data())\n    })\n  })\n\n}(window.jQuery);\n","collapse.js":"/* ========================================================================\n * Bootstrap: collapse.js v3.0.0\n * http://twbs.github.com/bootstrap/javascript.html#collapse\n * ========================================================================\n * Copyright
  2012 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.transitioning = null\n\n    if (this.options.p
 arent) this.$parent = $(this.options.parent)\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var actives = this.$parent && this.$parent.find('> .panel > .in')\n\n    if (actives && actives.length) {\n      var hasData = actives.data('bs.collapse')\n      if (hasData && hasData.transitioning) return\n      actives.collapse('hide')\n      hasData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')\n      [dimension](0)\
 n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('in')\n        [dimension]('auto')\n      this.transitioning = 0\n      this.$element.trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one($.support.transition.end, $.proxy(complete, this))\n      .emulateTransitionEnd(350)\n      [dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element\n      [dimension](this.$element[dimension]())\n      [0].offsetHeight\n\n    this.$element\n      .addClass('collap
 sing')\n      .removeClass('collapse')\n      .removeClass('in')\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .trigger('hidden.bs.collapse')\n        .removeClass('collapsing')\n        .addClass('collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one($.support.transition.end, $.proxy(complete, this))\n      .emulateTransitionEnd(350)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  var old = $.fn.collapse\n\n  $.fn.collapse = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.d
 ata('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {\n    var $this   = $(this), href\n    var target  = $this.attr('data-target')\n        || e.preventDefault()\n        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') //strip for ie7\n    var $target = $(target)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n    var parent  = $this.attr('data-parent')\n    var $parent = parent && $(parent)\n\n    if (!data || !data.transitioning) {\n      if ($parent) $parent.find('[data-toggle=collapse][data-parent=\"' + parent
  + '\"]').not($this).addClass('collapsed')\n      $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')\n    }\n\n    $target.collapse(option)\n  })\n\n}(window.jQuery);\n","dropdown.js":"/* ========================================================================\n * Bootstrap: dropdown.js v3.0.0\n * http://twbs.github.com/bootstrap/javascript.html#dropdowns\n * ========================================================================\n * Copyright 2012 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language
  governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=dropdown]'\n  var Dropdown = function (element) {\n    var $el = $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we we use a backdrop because click events don't delegate\n        $('<div class=\"dropdown-backdrop\"/>').insertAfter($(this)).on('click', clearMenus)\n      }\n\n      $parent.trigger(e 
 = $.Event('show.bs.dropdown'))\n\n      if (e.isDefaultPrevented()) return\n\n      $parent\n        .toggleClass('open')\n        .trigger('shown.bs.dropdown')\n\n      $this.focus()\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27)/.test(e.keyCode)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive || (isActive && e.keyCode == 27)) {\n      if (e.which == 27) $parent.find(toggle).focus()\n      return $this.click()\n    }\n\n    var $items = $('[role=menu] li:not(.divider):visible a', $parent)\n\n    if (!$items.length) return\n\n    var index = $items.index($items.filter(':focus'))\n\n    if (e.keyCode == 38 && index > 0)                 index--                        // up\n    if (e.keyCode == 40 && index < $items.length - 1) index++    
                     // down\n    if (!~index)                                      index=0\n\n    $items.eq(index).focus()\n  }\n\n  function clearMenus() {\n    $(backdrop).remove()\n    $(toggle).each(function (e) {\n      var $parent = getParent($(this))\n      if (!$parent.hasClass('open')) return\n      $parent.trigger(e = $.Event('hide.bs.dropdown'))\n      if (e.isDefaultPrevented()) return\n      $parent.removeClass('open').trigger('hidden.bs.dropdown')\n    })\n  }\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown = function (option) {\n    r
 eturn this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('dropdown')\n\n      if (!data) $this.data('dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)\n\n}(window.jQuery);\n","modal.js":"/* ========================================================================\n * Bootstrap: modal.j
 s v3.0.0\n * http://twbs.github.com/bootstrap/javascript.html#modals\n * ========================================================================\n * Copyright 2012 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options   = op
 tions\n    this.$element  = $(element)\n    this.$backdrop =\n    this.isShown   = null\n\n    if (this.options.remote) this.$element.load(this.options.remote)\n  }\n\n  Modal.DEFAULTS = {\n      backdrop: true\n    , keyboard: true\n    , show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.escape()\n\n    this.$element.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(document.body) // don't mov
 e modals dom position\n      }\n\n      that.$element.show()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element\n        .addClass('in')\n        .attr('aria-hidden', false)\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$element.find('.modal-dialog') // wait for modal to slide in\n          .one($.support.transition.end, function () {\n            that.$element.focus().trigger(e)\n          })\n          .emulateTransitionEnd(300) :\n        that.$element.focus().trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n     
  .attr('aria-hidden', true)\n      .off('click.dismiss.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one($.support.transition.end, $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(300) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n          this.$element.focus()\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keyup.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    
 var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.removeBackdrop()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that    = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $('<div class=\"modal-backdrop ' + animate + '\" />')\n        .appendTo(document.body)\n\n      this.$element.on('click.dismiss.modal', $.proxy(function (e) {\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus.call(this.$element[0])\n          : this.hide.call(this)\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force 
 reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one($.support.transition.end, callback)\n          .emulateTransitionEnd(150) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      $.support.transition && this.$element.hasClass('fade')?\n        this.$backdrop\n          .one($.support.transition.end, callback)\n          .emulateTransitionEnd(150) :\n        callback()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  var old = $.fn.modal\n\n  $.fn.modal = function (option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new 
 Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) //strip for ie7\n    var option  = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    e.preventDefault()\n\n    $target\n      .modal(option, this)\n      .one('hide', function () {\n        $this.is(':visible') && $this.focus()\n      })\n  })\n\n  $(document)\n    .on('show.bs.modal',  '.modal', 
 function () { $(document.body).addClass('modal-open') })\n    .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })\n\n}(window.jQuery);\n","popover.js":"/* ========================================================================\n * Bootstrap: popover.js v3.0.0\n * http://twbs.github.com/bootstrap/javascript.html#popovers\n * ========================================================================\n * Copyright 2012 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing perm
 issions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right'\n  , trigger: 'click'\n  , content: ''\n  , template: '<div class=\"popover\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover
 .prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return this.$ar
 row = this.$arrow || this.tip().find('.arrow')\n  }\n\n  Popover.prototype.tip = function () {\n    if (!this.$tip) this.$tip = $(this.options.template)\n    return this.$tip\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  var old = $.fn.popover\n\n  $.fn.popover = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(window.jQuery);\n","scrollspy.js":"/* ========================================================================\n * Bootstrap: scrollspy.js v3.0.0\n * http://twbs.github.com/
 bootstrap/javascript.html#scrollspy\n * ========================================================================\n * Copyright 2012 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    var href\n    var process  = $.proxy(this.proce
 ss, this)\n\n    this.$element       = $(element).is('body') ? $(window) : $(element)\n    this.$body          = $('body')\n    this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target\n      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n      || '') + ' .nav li > a'\n    this.offsets        = $([])\n    this.targets        = $([])\n    this.activeTarget   = null\n\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var offsetMethod = this.$element[0] == window ? 'offset' : 'position'\n\n    this.offsets = $([])\n    this.targets = $([])\n\n    var self     = this\n    var $targets = this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.da
 ta('target') || $el.attr('href')\n        var $href = /^#\\w/.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        self.offsets.push(this[0])\n        self.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight\n    var maxScroll    = scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets.last()[0]) && this.activate(i)\n    }\n\n    for (i 
 = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])\n        && this.activate( targets[i] )\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    $(this.selector)\n      .parents('.active')\n      .removeClass('active')\n\n    var selector = this.selector\n      + '[data-target=\"' + target + '\"],'\n      + this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length)  {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var
  data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      $spy.scrollspy($spy.data())\n    })\n  })\n\n}(window.jQuery);\n","tab.js":"/* ========================================================================\n * Bootstrap: tab.js v3.0.0\n * http://twbs.github.com/bootstrap/javascript.html#tabs\n * ========================================================================\n * Copyright 2012 Twitter, Inc.\n *\n * Licensed under t
 he Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    this.element = $(element)\n  }\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n  
     selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var previous = $ul.find('.active:last a')[0]\n    var e        = $.Event('show.bs.tab', {\n      relatedTarget: previous\n    })\n\n    $this.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.parent('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $this.trigger({\n        type: 'shown.bs.tab'\n      , relatedTarget: previous\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && $active.hasClass('fade')\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n        .removeClass('acti
 ve')\n\n      element.addClass('active')\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu')) {\n        element.closest('li.dropdown').addClass('active')\n      }\n\n      callback && callback()\n    }\n\n    transition ?\n      $active\n        .one($.support.transition.end, next)\n        .emulateTransitionEnd(150) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  var old = $.fn.tab\n\n  $.fn.tab = function ( option ) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.n
 oConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  $(document).on('click.bs.tab.data-api', '[data-toggle=\"tab\"], [data-toggle=\"pill\"]', function (e) {\n    e.preventDefault()\n    $(this).tab('show')\n  })\n\n}(window.jQuery);\n","tooltip.js":"/* ========================================================================\n * Bootstrap: tooltip.js v3.0.0\n * http://twbs.github.com/bootstrap/javascript.html#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2012 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License 
 is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       =\n    this.options    =\n    this.enabled    =\n    this.timeout    =\n    this.hoverState =\n    this.$element   = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.DEFAULTS = {\n    animation: true\n  , placement: 'top'\n  , selector: false\n  , template: '<div class=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>'\n  , trigger: 'hover focus'\n  , title: ''\n  , delay: 0\n  , html: false\n  , container: false\n  }\n\n  Tooltip.prototype.init =
  function (type, element, options) {\n    this.enabled  = true\n    this.type     = type\n    this.$element = $(element)\n    this.options  = this.getOptions(options)\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focus'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip
 .prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay\n      , hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show)
  return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.'+ this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      var $tip = this.tip()\n\n      this.setContent()\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.option
 s.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var $parent = this.$element.parent()\n\n        var orgPlacement = placement\n        var docScroll    = document.documentElement.scrollTop || document.body.scrollTop\n        var parentWidth  = this.options.container == 'body' ? window.innerWidth  : $parent.outerWidth()\n        var parentHeight = t
 his.options.container == 'body' ? window.innerHeight : $parent.outerHeight()\n        var parentLeft   = this.options.container == 'body' ? 0 : $parent.offset().left\n\n        placement = placement == 'bottom' && pos.top   + pos.height  + actualHeight - docScroll > parentHeight  ? 'top'    :\n                    placement == 'top'    && pos.top   - docScroll   - actualHeight < 0                         ? 'bottom' :\n                    placement == 'right'  && pos.right + actualWidth > parentWidth                              ? 'left'   :\n                    placement == 'left'   && pos.left  - actualWidth < parentLeft                               ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n      this.$element.trigger('shown.bs.' 
 + this.type)\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function(offset, placement) {\n    var replace\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  = offset.top  + marginTop\n    offset.left = offset.left + marginLeft\n\n    $tip\n      .offset(offset)\n      .addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      replace = true\n      offset.top = offset.top + height - actualH
 eight\n    }\n\n    if (/bottom|top/.test(placement)) {\n      var delta = 0\n\n      if (offset.left < 0) {\n        delta       = offset.left * -2\n        offset.left = 0\n\n        $tip.offset(offset)\n\n        actualWidth  = $tip[0].offsetWidth\n        actualHeight = $tip[0].offsetHeight\n      }\n\n      this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')\n    } else {\n      this.replaceArrow(actualHeight - height, actualHeight, 'top')\n    }\n\n    if (replace) $tip.offset(offset)\n  }\n\n  Tooltip.prototype.replaceArrow = function(delta, dimension, position) {\n    this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + \"%\") : '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function () {\n    var that = thi
 s\n    var $tip = this.tip()\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && this.$tip.hasClass('fade') ?\n      $tip\n        .one($.support.transition.end, complete)\n        .emulateTransitionEnd(150) :\n      complete()\n\n    this.$element.trigger('hidden.bs.' + this.type)\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function () {\n    var el = this.$element[0]\n    return $.extend({}, (typeof el.getBoundingClientRect
  == 'function') ? el.getBoundingClientRect() : {\n      width: el.offsetWidth\n    , height: el.offsetHeight\n    }, this.$element.offset())\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   }\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n
 \n  Tooltip.prototype.tip = function () {\n    return this.$tip = this.$tip || $(this.options.template)\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')\n  }\n\n  Tooltip.prototype.validate = function () {\n    if (!this.$element[0].parentNode) {\n      this.hide()\n      this.$element = null\n      this.options  = null\n    }\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this\n    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n  }\n\n  Tooltip.prototype.destroy = function () {\n    this.hide().$element.off('.' + this.type).removeData('bs.' +
  this.type)\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip = function (option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(window.jQuery);\n","transition.js":"/* ========================================================================\n * Bootstrap: transition.js v3.0.0\n * http://twbs.github.com/bootstrap/javascript.html#transitions\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licen
 sed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      'WebkitTransition' : 'webkitTransitionEnd'\n    , 'MozTransition
 '    : 'transitionend'\n    , 'OTransition'      : 'oTransitionEnd otransitionend'\n    , 'transition'       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false, $el = this\n    $(this).one($.support.transition.end, function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n  })\n\n}(window.jQuery);\n"}
-var __less = {"alerts.less":"//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n  padding: @alert-padding;\n  margin-bottom: @line-height-computed;\n  border: 1px solid transparent;\n  border-radius: @alert-border-radius;\n\n  // Headings for larger alerts\n  h4 {\n    margin-top: 0;\n    // Specified for the h4 to prevent conflicts of changing @headingsColor\n    color: inherit;\n  }\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: @alert-link-font-weight;\n  }\n\n  // Improve alignment and spacing of inner content\n  > p,\n  > ul {\n    margin-bottom: 0;\n  }\n  > p + p {\n    margin-top: 5px;\n  }\n}\n\n// Dismissable alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable {\n padding-right: (@alert-padding + 20);\n\n  // Adjust close link position\n  .close {\n    position: relative;\n    top: -2px;\n    right: -
 21px;\n    color: inherit;\n  }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n.alert-info {\n  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n.alert-warning {\n  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n.alert-danger {\n  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","badges.less":"//\n// Badges\n// --------------------------------------------------\n\n\n// Base classes\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: @font-size-small;\n  font-weight: @badge-font-weight;\n  color: @badge-color;\n  line-height: @badge-line-height;\n  vertical-align: baseline;\n  white-space: nowrap;\n  text-align: center;\n  background-color: @badge-bg;\n  border-radius: @badge-border-radius;\n\n  // E
 mpty badges collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n}\n\n// Hover state, but only for links\na.badge {\n  &:hover,\n  &:focus {\n    color: @badge-link-hover-color;\n    text-decoration: none;\n    cursor: pointer;\n  }\n}\n\n// Quick fix for labels/badges in buttons\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n// Account for counters in navs\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: @badge-active-color;\n  background-color: @badge-active-bg;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n","bootstrap.less":"/*!\n * Bootstrap v3.0.0\n *\n * Copyright 2013 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world by @mdo and @fat.\n */\n\n// Core variables and mixins\n@import \"variables.less\";\n@import \"mixins.less\";\n\n// Reset\n@import \"normalize.less\";\n@import \"
 print.less\";\n\n// Core CSS\n@import \"scaffolding.less\";\n@import \"type.less\";\n@import \"code.less\";\n@import \"grid.less\";\n@import \"tables.less\";\n@import \"forms.less\";\n@import \"buttons.less\";\n\n// Components\n@import \"component-animations.less\";\n@import \"glyphicons.less\";\n@import \"dropdowns.less\";\n@import \"button-groups.less\";\n@import \"input-groups.less\";\n@import \"navs.less\";\n@import \"navbar.less\";\n@import \"breadcrumbs.less\";\n@import \"pagination.less\";\n@import \"pager.less\";\n@import \"labels.less\";\n@import \"badges.less\";\n@import \"jumbotron.less\";\n@import \"thumbnails.less\";\n@import \"alerts.less\";\n@import \"progress-bars.less\";\n@import \"media.less\";\n@import \"list-group.less\";\n@import \"panels.less\";\n@import \"wells.less\";\n@import \"close.less\";\n\n// Components w/ JavaScript\n@import \"modals.less\";\n@import \"tooltip.less\";\n@import \"popovers.less\";\n@import \"carousel.less\";\n\n// Utility classes\n@impor
 t \"utilities.less\";\n@import \"responsive-utilities.less\";\n","breadcrumbs.less":"//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: @line-height-computed;\n  list-style: none;\n  background-color: @breadcrumb-bg;\n  border-radius: @border-radius-base;\n  > li {\n    display: inline-block;\n    &+li:before {\n      content: \"/\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n      padding: 0 5px;\n      color: @breadcrumb-color;\n    }\n  }\n  > .active {\n    color: @breadcrumb-active-color;\n  }\n}\n","button-groups.less":"//\n// Button groups\n// --------------------------------------------------\n\n// Button carets\n//\n// Match the button text color to the arrow/caret for indicating dropdown-ness.\n\n.caret {\n  .btn-default & {\n    border-top-color: @btn-default-color;\n  }\n  .btn-primary &,\n  .btn-success &,\n  .btn-warning &,\n  .btn-danger &,\n  .btn-
 info & {\n    border-top-color: #fff;\n  }\n}\n.dropup {\n  & .btn-default .caret {\n    border-bottom-color: @btn-default-color;\n  }\n  .btn-primary,\n  .btn-success,\n  .btn-warning,\n  .btn-danger,\n  .btn-info {\n   .caret {\n      border-bottom-color: #fff;\n    }\n  }\n}\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n  > .btn {\n    position: relative;\n    float: left;\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 2;\n    }\n    &:focus {\n      // Remove focus outline when dropdown JS adds it after closing the menu\n      outline: none;\n    }\n  }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -1px;\n  
 }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  .clearfix();\n\n  .btn-group {\n    float: left;\n  }\n  // Space out series of button groups\n  > .btn,\n  > .btn-group {\n    + .btn,\n    + .btn-group {\n      margin-left: 5px;\n    }\n  }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  &:not(:last-child):not(.dropdown-toggle) {\n    .border-right-radius(0);\n  }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown but
 tons within a btn-group)\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-right-radius(0);\n  }\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n  .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { .btn-xs(); }\n.btn-group-sm > .btn { .btn-sm(); }\n.btn-group-lg > .btn { .btn-lg(); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-ri
 ght: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n}\n\n\n// Reposition the caret\n.btn .caret {\n  margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n  border-width: @caret-width-large @caret-width-large 0;\n  border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n  border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n  > .btn,\n  > .btn-group {\n    display: block;\n    float: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  // Clear floats so dropdown menus can be properly placed\n  > .btn-group {\n    .clearfix();\n    > .btn {\n      float: none;\n    }\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n   
  margin-top: -1px;\n    margin-left: 0;\n  }\n}\n\n.btn-group-vertical > .btn {\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n  &:first-child:not(:last-child) {\n    border-top-right-radius: @border-radius-base;\n    .border-bottom-radius(0);\n  }\n  &:last-child:not(:first-child) {\n    border-bottom-left-radius: @border-radius-base;\n    .border-top-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-bottom-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:last-child > .btn:first-child {\n  .border-top-radius(0);\n}\n\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n  .btn {\n    float: none;\n    display: table-cell;\n    width: 1%;\n  }\n}\n\n\n// Checkbo
 x and radio options\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n  display: none;\n}\n","buttons.less":"//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n// Core styles\n.btn {\n  display: inline-block;\n  padding: @padding-base-vertical @padding-base-horizontal;\n  margin-bottom: 0; // For input.btn\n  font-size: @font-size-base;\n  font-weight: @btn-font-weight;\n  line-height: @line-height-base;\n  text-align: center;\n  vertical-align: middle;\n  cursor: pointer;\n  border: 1px solid transparent;\n  border-radius: @border-radius-base;\n  white-space: nowrap;\n  .user-select(none);\n\n  &:focus {\n    .tab-focus();\n  }\n\n  &:hover,\n  &:focus {\n    color: @btn-default-color;\n    text-decoration: none;\n  }\n\n  &:active,\n  &.active {\n    outline: 0;\n    background-image: none;\n    .box-shadow(inset 
 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: not-allowed;\n    pointer-events: none; // Future-proof disabling of clicks\n    .opacity(.65);\n    .box-shadow(none);\n  }\n\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Warning appears as orange\n.btn-warning {\n  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n// Success appears as green\n.btn-success {\n  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n  .button-variant(@btn-info-color; @btn-info-bg; @btn-info
 -border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n  color: @link-color;\n  font-weight: normal;\n  cursor: pointer;\n  border-radius: 0;\n\n  &,\n  &:active,\n  &[disabled],\n  fieldset[disabled] & {\n    background-color: transparent;\n    .box-shadow(none);\n  }\n  &,\n  &:hover,\n  &:focus,\n  &:active {\n    border-color: transparent;\n  }\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: underline;\n    background-color: transparent;\n  }\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus {\n      color: @btn-link-disabled-color;\n      text-decoration: none;\n    }\n  }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n  // line-height: ensure even-numbered height of button next to large input\n  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-la
 rge);\n}\n.btn-sm,\n.btn-xs {\n  // line-height: ensure proper height of button next to small input\n  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n  padding: 1px 5px;\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n  display: block;\n  width: 100%;\n  padding-left: 0;\n  padding-right: 0;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n","carousel.less":"//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n\n  > .item {\n    display: none;\n    positio
 n: relative;\n    .transition(.6s ease-in-out left);\n\n    // Account for jankitude on images\n    > img,\n    > a > img {\n      .img-responsive();\n      line-height: 1;\n    }\n  }\n\n  > .active,\n  > .next,\n  > .prev { display: block; }\n\n  > .active {\n    left: 0;\n  }\n\n  > .next,\n  > .prev {\n    position: absolute;\n    top: 0;\n    width: 100%;\n  }\n\n  > .next {\n    left: 100%;\n  }\n  > .prev {\n    left: -100%;\n  }\n  > .next.left,\n  > .prev.right {\n    left: 0;\n  }\n\n  > .active.left {\n    left: -100%;\n  }\n  > .active.right {\n    left: 100%;\n  }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: @carousel-control-width;\n  .opacity(@carousel-control-opacity);\n  font-size: @carousel-control-font-size;\n  color: @carousel-control-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  // We can't have this transition here bec
 ause webkit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Set gradients for backgrounds\n  &.left {\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n  }\n  &.right {\n    left: auto;\n    right: 0;\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n  }\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    color: @carousel-control-color;\n    text-decoration: none;\n    .opacity(.9);\n  }\n\n  // Toggles\n  .icon-prev,\n  .icon-next,\n  .glyphicon-chevron-left,\n  .glyphicon-chevron-right {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    z-index: 5;\n    display: inline-block;\n  }\n  .icon-prev,\n  .icon-next {\n    width:  20px;\n    height: 20px;\n    margin-top: -10px;\n    margin-left: -10px;\n    font-family: serif;\n  }\n\n  .icon-prev {\n    &:before {\n      content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK 
 (U+2039)\n    }\n  }\n  .icon-next {\n    &:before {\n      content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n    }\n  }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n\n  li {\n    display: inline-block;\n    width:  10px;\n    height: 10px;\n    margin: 1px;\n    text-indent: -999px;\n    border: 1px solid @carousel-indicator-border-color;\n    border-radius: 10px;\n    cursor: pointer;\n  }\n  .active {\n    margin: 0;\n    width:  12px;\n    height: 12px;\n    background-color: @carousel-indicator-active-bg;\n  }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n  position: absolute;\n 
  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: @carousel-caption-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  & .btn {\n    text-shadow: none; // No shadow for button elements in carousel-caption\n  }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-tablet) {\n\n  // Scale up the controls a smidge\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    margin-left: -15px;\n    font-size: 30px;\n  }\n\n  // Show and left align the captions\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n\n  // Move up the indicators\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n","close.less":"//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n  float: right;\n  font-size: (@font-size-base * 1.5);\n  font-w
 eight: @close-font-weight;\n  line-height: 1;\n  color: @close-color;\n  text-shadow: @close-text-shadow;\n  .opacity(.2);\n\n  &:hover,\n  &:focus {\n    color: @close-color;\n    text-decoration: none;\n    cursor: pointer;\n    .opacity(.5);\n  }\n\n  // Additional properties for button version\n  // iOS requires the button element instead of an anchor tag.\n  // If you want the anchor version, it requires `href=\"#\"`.\n  button& {\n    padding: 0;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    -webkit-appearance: none;\n  }\n}\n","code.less":"//\n// Code (inline and blocK)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\npre {\n  font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @code-color;\n  background-color: @code-bg;\n  white-space: nowrap;\n  border-radius: @border-radius-base;\n}\n\n// Blocks of code\npre {\n  display: block;\n  p
 adding: ((@line-height-computed - 1) / 2);\n  margin: 0 0 (@line-height-computed / 2);\n  font-size: (@font-size-base - 1); // 14px to 13px\n  line-height: @line-height-base;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: @pre-color;\n  background-color: @pre-bg;\n  border: 1px solid @pre-border-color;\n  border-radius: @border-radius-base;\n\n  // Make prettyprint styles more spaced out for readability\n  &.prettyprint {\n    margin-bottom: @line-height-computed;\n  }\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n    border: 0;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: @pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","component-animations.less":"//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't u
 se the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.\n\n.fade {\n  opacity: 0;\n  .transition(opacity .15s linear);\n  &.in {\n    opacity: 1;\n  }\n}\n\n.collapse {\n  display: none;\n  &.in {\n    display: block;\n  }\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  .transition(height .35s ease);\n}\n","dropdowns.less":"//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top:   @caret-width-base solid @dropdown-caret-color;\n  border-right: @caret-width-base solid transparent;\n  border-left:  @caret-width-base solid transparent;\n  // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once fixed,\n  // we can just straight up remove this.\n  border-bottom: 0 dotted;\n  content: \"\
 ";\n}\n\n// The dropdown wrapper (div)\n.dropdown {\n  position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n  outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: @zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0; // override default ul\n  list-style: none;\n  font-size: @font-size-base;\n  background-color: @dropdown-bg;\n  border: 1px solid @dropdown-fallback-border; // IE8 fallback\n  border: 1px solid @dropdown-border;\n  border-radius: @border-radius-base;\n  .box-shadow(0 6px 12px rgba(0,0,0,.175));\n  background-clip: padding-box;\n\n  // Aligns the dropdown menu to right\n  &.pull-right {\n    right: 0;\n    left: auto;\n  }\n\n  // Dividers (basically an hr) within the dropdown\n  .divider {\n    .nav-divider(@dropdown-divider
 -bg);\n  }\n\n  // Links within the dropdown menu\n  > li > a {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: normal;\n    line-height: @line-height-base;\n    color: @dropdown-link-color;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n  }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: @dropdown-link-hover-color;\n    background-color: @dropdown-link-hover-bg;\n  }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-active-color;\n    text-decoration: none;\n    outline: 0;\n    background-color: @dropdown-link-active-bg;\n  }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-disabled-color;\n  }\n}\n// Nuke hover/focus effects\n.dropdown-menu > .disa
 bled > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    background-color: transparent;\n    background-image: none; // Remove CSS gradient\n    .reset-filter();\n    cursor: not-allowed;\n  }\n}\n\n// Open state for the dropdown\n.open {\n  // Show the menu\n  > .dropdown-menu {\n    display: block;\n  }\n\n  // Remove the outline when :focus is triggered\n  > a {\n    outline: 0;\n  }\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: @font-size-small;\n  line-height: @line-height-base;\n  color: @dropdown-header-color;\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: @zindex-dropdown - 10;\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class 
 and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n  // Reverse the caret\n  .caret {\n    // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once this\n    // gets fixed, restore `border-top: 0;`.\n    border-top: 0 dotted;\n    border-bottom: 4px solid @dropdown-caret-color;\n    content: \"\";\n  }\n  // Different positioning for bottom up menu\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-bottom: 1px;\n  }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-right {\n    .dropdown-menu {\n      .pull-right > .dropdown-menu();\n    }\n  }\n}\n\n","forms.less":"//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  padding: 0
 ;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: @line-height-computed;\n  font-size: (@font-size-base * 1.5);\n  line-height: inherit;\n  color: @legend-color;\n  border: 0;\n  border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n  display: inline-block;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\n\n\n// Normalize form controls\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n  .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9; /* IE8-9 */\n  line-height: normal;\n}\n\n// Set the height of select and file controls to match text inputs\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Fix optgroup Firefox bug per https://github.com/twbs/boo
 tstrap/issues/7611\nselect optgroup {\n  font-size: inherit;\n  font-style: inherit;\n  font-family: inherit;\n}\n\n// Focus for select, file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  .tab-focus();\n}\n\n// Fix for Chrome number input\n// Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button.\n// See https://github.com/twbs/bootstrap/issues/8350 for more.\ninput[type=\"number\"] {\n  &::-webkit-outer-spin-button,\n  &::-webkit-inner-spin-button {\n    height: auto;\n  }\n}\n\n\n// Placeholder\n//\n// Placeholder text gets special styles because when browsers invalidate entire\n// lines if it doesn't understand a selector/\n.form-control {\n  .placeholder();\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input
 [type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n  vertical-align: middle;\n  background-color: @input-bg;\n  border: 1px solid @input-border;\n  border-radius: @input-border-radius;\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n  .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n  // Customize the `:focus` state to imitate native 
 WebKit styles.\n  .form-control-focus();\n\n  // Disabled and read-only inputs\n  // Note: HTML5 says that controls under a fieldset > legend:first-child won't\n  // be disabled if the fieldset is disabled. Due to implementation difficulty,\n  // we don't honor that edge case; we style them as disabled anyway.\n  &[disabled],\n  &[readonly],\n  fieldset[disabled] & {\n    cursor: not-allowed;\n    background-color: @input-bg-disabled;\n  }\n\n  // Reset height for `te

<TRUNCATED>


[32/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/respond.min.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/respond.min.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/respond.min.js
deleted file mode 100644
index 56418a2..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/respond.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
-/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
-window.matchMedia=window.matchMedia||function(a){"use strict";var c,d=a.documentElement,e=d.firstElementChild||d.firstChild,f=a.createElement("body"),g=a.createElement("div");return g.id="mq-test-1",g.style.cssText="position:absolute;top:-100em",f.style.background="none",f.appendChild(g),function(a){return g.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',d.insertBefore(f,e),c=42===g.offsetWidth,d.removeChild(f),{matches:c,media:a}}}(document);
-
-/*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs  */
-(function(a){"use strict";function x(){u(!0)}var b={};a.respond=b,b.update=function(){},b.mediaQueriesSupported=a.matchMedia&&a.matchMedia("only all").matches,b.mediaQueriesSupported;var q,r,t,c=a.document,d=c.documentElement,e=[],f=[],g=[],h={},i=30,j=c.getElementsByTagName("head")[0]||d,k=c.getElementsByTagName("base")[0],l=j.getElementsByTagName("link"),m=[],n=function(){for(var b=0;l.length>b;b++){var c=l[b],d=c.href,e=c.media,f=c.rel&&"stylesheet"===c.rel.toLowerCase();d&&f&&!h[d]&&(c.styleSheet&&c.styleSheet.rawCssText?(p(c.styleSheet.rawCssText,d,e),h[d]=!0):(!/^([a-zA-Z:]*\/\/)/.test(d)&&!k||d.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&m.push({href:d,media:e}))}o()},o=function(){if(m.length){var a=m.shift();v(a.href,function(b){p(b,a.href,a.media),h[a.href]=!0,setTimeout(function(){o()},0)})}},p=function(a,b,c){var d=a.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),g=d&&d.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(/(url\()
 ['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+b+"$2$3")},i=!g&&c;b.length&&(b+="/"),i&&(g=1);for(var j=0;g>j;j++){var k,l,m,n;i?(k=c,f.push(h(a))):(k=d[j].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1,f.push(RegExp.$2&&h(RegExp.$2))),m=k.split(","),n=m.length;for(var o=0;n>o;o++)l=m[o],e.push({media:l.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:f.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},s=function(){var a,b=c.createElement("div"),e=c.body,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",e||(e=f=c.createElement("body"),e.style.background="none"),e.appendChild(b),d.insertBefore(e,d.firstChild),a=b.offsetWidth,f?d.removeChild(e):e.removeChild(b),a=t=parseFloat(a)},u=function(a){var b="clientWidth",h=d[b],k="CSS1Compat"===c.compatMo
 de&&h||c.body[b]||h,m={},n=l[l.length-1],o=(new Date).getTime();if(a&&q&&i>o-q)return clearTimeout(r),r=setTimeout(u,i),void 0;q=o;for(var p in e)if(e.hasOwnProperty(p)){var v=e[p],w=v.minw,x=v.maxw,y=null===w,z=null===x,A="em";w&&(w=parseFloat(w)*(w.indexOf(A)>-1?t||s():1)),x&&(x=parseFloat(x)*(x.indexOf(A)>-1?t||s():1)),v.hasquery&&(y&&z||!(y||k>=w)||!(z||x>=k))||(m[v.media]||(m[v.media]=[]),m[v.media].push(f[v.rules]))}for(var B in g)g.hasOwnProperty(B)&&g[B]&&g[B].parentNode===j&&j.removeChild(g[B]);for(var C in m)if(m.hasOwnProperty(C)){var D=c.createElement("style"),E=m[C].join("\n");D.type="text/css",D.media=C,j.insertBefore(D,n.nextSibling),D.styleSheet?D.styleSheet.cssText=E:D.appendChild(c.createTextNode(E)),g.push(D)}},v=function(a,b){var c=w();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},w=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXO
 bject("Microsoft.XMLHTTP")}return function(){return b}}();n(),b.update=n,a.addEventListener?a.addEventListener("resize",x,!1):a.attachEvent&&a.attachEvent("onresize",x)})(this);

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/uglify.js
----------------------------------------------------------------------
diff --git a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/uglify.js b/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/uglify.js
deleted file mode 100644
index 5235dea..0000000
--- a/docs/system-architecture/js/vendor/bootstrap-3.0.0/assets/uglify.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/** @license uglifyweb Copyright (c) 2011, The Dojo Foundation All Rights Reserved.
- * The parts that are unique to this repo (not much, just some wrapper code) are
- * released under the new BSD and MIT licenses.
- *
- * This file includes UglifyJS and some parts of es5-shim, both which have
- * their own licenses:
- *
- * https://github.com/mishoo/UglifyJS (BSD)
- * https://github.com/kriskowal/es5-shim (MIT)
- *
- * More info on the project: https://github.com/jrburke/uglifyweb
- */
-
-(function(){var a=Object.prototype.toString,b="a"[0]!="a",c=function(a){if(a==null)throw new TypeError;return b&&typeof a=="string"&&a?a.split(""):Object(a)};Array.prototype.forEach||(Array.prototype.forEach=function(a){var b=c(this),d=arguments[1],e=0,f=b.length>>>0;while(e<f)e in b&&a.call(d,b[e],e,b),e++}),Array.prototype.reduce||(Array.prototype.reduce=function(a){var b=c(this),d=b.length>>>0;if(!d&&arguments.length==1)throw new TypeError;var e=0,f;if(arguments.length<2){do{if(e in b){f=b[e++];break}if(++e>=d)throw new TypeError}while(!0)}else f=arguments[1];for(;e<d;e++)e in b&&(f=a.call(void 0,f,b[e],e,b));return f});var d,e,f;(function(){function g(a,b){if(a&&a.charAt(0)==="."&&b){b=b.split("/"),b=b.slice(0,b.length-1),a=b.concat(a.split("/"));var c,d;for(c=0;d=a[c];c++)if(d===".")a.splice(c,1),c-=1;else if(d==="..")if(c!==1||a[2]!==".."&&a[0]!=="..")c>0&&(a.splice(c-1,2),c-=2);else break;a=a.join("/")}return a}function h(a,d){return function(){return c.apply(null,b.call(argu
 ments,0).concat([a,d]))}}function i(a){return function(b){return g(b,a)}}function j(b){return function(c){a[b]=c}}function k(b,c){var d,e,f=b.indexOf("!");return f!==-1?(d=g(b.slice(0,f),c),b=b.slice(f+1),e=a[d],e&&e.normalize?b=e.normalize(b,i(c)):b=g(b,c)):b=g(b,c),{f:d?d+"!"+b:b,n:b,p:e}}function l(b,c,d,e){var f=[],g,i,l,m,n,o;e||(e=b);if(typeof d=="function"){if(c)for(m=0;m<c.length;m++)o=k(c[m],e),l=o.f,l==="require"?f[m]=h(b):l==="exports"?(f[m]=a[b]={},g=!0):l==="module"?i=f[m]={id:b,uri:"",exports:a[b]}:l in a?f[m]=a[l]:o.p&&(o.p.load(o.n,h(e,!0),j(l),{}),f[m]=a[l]);n=d.apply(a[b],f),b&&(i&&i.exports!==undefined?a[b]=i.exports:g||(a[b]=n))}else b&&(a[b]=d)}var a={},b=[].slice,c;if(typeof f=="function")return;d=c=function(b,d,e,f){return typeof b=="string"?a[k(b,d).f]:(b.splice||(d.splice?(b=d,d=arguments[2]):b=[]),f?l(null,b,d,e):setTimeout(function(){l(null,b,d,e)},15),c)},c.config=function(){return c},e||(e=c),f=function(a,b,c){b.splice||(c=b,b=[]),l(a,b,c)},f.amd={}})(),
 f("almond",function(){}),f("lib/parse-js",["require","exports","module"],function(a,b,c){function r(a){return q.letter.test(a)}function s(a){return a=a.charCodeAt(0),a>=48&&a<=57}function t(a){return s(a)||r(a)}function u(a){return q.non_spacing_mark.test(a)||q.space_combining_mark.test(a)}function v(a){return q.connector_punctuation.test(a)}function w(a){return a=="$"||a=="_"||r(a)}function x(a){return w(a)||u(a)||s(a)||v(a)||a=="‌"||a=="‍"}function y(a){if(i.test(a))return parseInt(a.substr(2),16);if(j.test(a))return parseInt(a.substr(1),8);if(k.test(a))return parseFloat(a)}function z(a,b,c,d){this.message=a,this.line=b,this.col=c,this.pos=d,this.stack=(new Error).stack}function A(a,b,c,d){throw new z(a,b,c,d)}function B(a,b,c){return a.type==b&&(c==null||a.value==c)}function D(a){function c(){return b.text.charAt(b.pos)}function e(a,c){var d=b.text.charAt(b.pos++);if(a&&!d)throw C;return d=="\n"?(b.newline_before=b.newline_before||!c,++b.line,b.col=0):++b.col,d}function i(){r
 eturn!b.peek()}function j(a,c){var d=b.text.indexOf(a,b.pos);if(c&&d==-1)throw C;return d}function k(){b.tokline=b.line,b.tokcol=b.col,b.tokpos=b.pos}function p(a,c,d){b.regex_allowed=a=="operator"&&!S(F,c)||a=="keyword"&&S(f,c)||a=="punc"&&S(n,c);var e={type:a,value:c,line:b.tokline,col:b.tokcol,pos:b.tokpos,nlb:b.newline_before};return d||(e.comments_before=b.comments_before,b.comments_before=[]),b.newline_before=!1,e}function q(){while(S(m,c()))e()}function r(a){var b="",d=c(),f=0;while(d&&a(d,f++))b+=e(),d=c();return b}function u(a){A(a,b.tokline,b.tokcol,b.tokpos)}function v(a){var b=!1,c=!1,d=!1,e=a==".",f=r(function(f,g){return f=="x"||f=="X"?d?!1:d=!0:!!d||f!="E"&&f!="e"?f=="-"?c||g==0&&!a?!0:!1:f=="+"?c:(c=!1,f=="."?!e&&!d?e=!0:!1:t(f)):b?!1:b=c=!0});a&&(f=a+f);var g=y(f);if(!isNaN(g))return p("num",g);u("Invalid syntax: "+f)}function z(a){var b=e(!0,a);switch(b){case"n":return"\n";case"r":return"\r";case"t":return"\t";case"b":return"\b";case"v":return"";case"f":return"\f"
 ;case"0":return"\0";case"x":return String.fromCharCode(B(2));case"u":return String.fromCharCode(B(4));case"\n":return"";default:return b}}function B(a){var b=0;for(;a>0;--a){var c=parseInt(e(!0),16);isNaN(c)&&u("Invalid hex-character pattern in string"),b=b<<4|c}return b}function D(){return N("Unterminated string constant",function(){var a=e(),b="";for(;;){var c=e(!0);if(c=="\\"){var d=0,f=null;c=r(function(a){if(a>="0"&&a<="7"){if(!f)return f=a,++d;if(f<="3"&&d<=2)return++d;if(f>="4"&&d<=1)return++d}return!1}),d>0?c=String.fromCharCode(parseInt(c,8)):c=z(!0)}else if(c==a)break;b+=c}return p("string",b)})}function E(){e();var a=j("\n"),c;return a==-1?(c=b.text.substr(b.pos),b.pos=b.text.length):(c=b.text.substring(b.pos,a),b.pos=a),p("comment1",c,!0)}function G(){return e(),N("Unterminated multiline comment",function(){var a=j("*/",!0),c=b.text.substring(b.pos,a),d=p("comment2",c,!0);return b.pos=a+2,b.line+=c.split("\n").length-1,b.newline_before=c.indexOf("\n")>=0,/^@cc_on/i.test(
 c)&&(T("WARNING: at line "+b.line),T('*** Found "conditional comment": '+c),T("*** UglifyJS DISCARDS ALL COMMENTS.  This means your code might no longer work properly in Internet Explorer.")),d})}function H(){var a=!1,b="",d;while((d=c())!=null)if(!a)if(d=="\\")a=!0,e();else if(x(d))b+=e();else break;else d!="u"&&u("Expecting UnicodeEscapeSequence -- uXXXX"),d=z(),x(d)||u("Unicode char: "+d.charCodeAt(0)+" is not valid in identifier"),b+=d,a=!1;return b}function I(a){return N("Unterminated regular expression",function(){var b=!1,c,d=!1;while(c=e(!0))if(b)a+="\\"+c,b=!1;else if(c=="[")d=!0,a+=c;else if(c=="]"&&d)d=!1,a+=c;else{if(c=="/"&&!d)break;c=="\\"?b=!0:a+=c}var f=H();return p("regexp",[a,f])})}function J(a){function b(a){if(!c())return a;var d=a+c();return S(l,d)?(e(),b(d)):a}return p("operator",b(a||e()))}function K(){e();var a=b.regex_allowed;switch(c()){case"/":return b.comments_before.push(E()),b.regex_allowed=a,O();case"*":return b.comments_before.push(G()),b.regex_allowe
 d=a,O()}return b.regex_allowed?I(""):J("/")}function L(){return e(),s(c())?v("."):p("punc",".")}function M(){var a=H();return S(d,a)?S(l,a)?p("operator",a):S(g,a)?p("atom",a):p("keyword",a):p("name",a)}function N(a,b){try{return b()}catch(c){if(c===C)u(a);else throw c}}function O(a){if(a!=null)return I(a);q(),k();var b=c();if(!b)return p("eof");if(s(b))return v();if(b=='"'||b=="'")return D();if(S(o,b))return p("punc",e());if(b==".")return L();if(b=="/")return K();if(S(h,b))return J();if(b=="\\"||w(b))return M();u("Unexpected character '"+b+"'")}var b={text:a.replace(/\r\n?|[\n\u2028\u2029]/g,"\n").replace(/^\uFEFF/,""),pos:0,tokpos:0,line:0,tokline:0,col:0,tokcol:0,newline_before:!1,regex_allowed:!1,comments_before:[]};return O.context=function(a){return a&&(b=a),b},O}function K(a,b,c){this.name=a,this.start=b,this.end=c}function L(a,b,c){function e(a,b){return B(d.token,a,b)}function f(){return d.peeked||(d.peeked=d.input())}function g(){return d.prev=d.token,d.peeked?(d.token=d.pe
 eked,d.peeked=null):d.token=d.input(),d.token}function h(){return d.prev}function i(a,b,c,e){var f=d.input.context();A(a,b!=null?b:f.tokline,c!=null?c:f.tokcol,e!=null?e:f.tokpos)}function j(a,b){i(b,a.line,a.col)}function k(a){a==null&&(a=d.token),j(a,"Unexpected token: "+a.type+" ("+a.value+")")}function l(a,b){if(e(a,b))return g();j(d.token,"Unexpected token "+d.token.type+", expected "+a)}function m(a){return l("punc",a)}function n(){return!b&&(d.token.nlb||e("eof")||e("punc","}"))}function o(){e("punc",";")?g():n()||k()}function p(){return P(arguments)}function q(){m("(");var a=bk();return m(")"),a}function r(a,b,c){return a instanceof K?a:new K(a,b,c)}function s(a){return c?function(){var b=d.token,c=a.apply(this,arguments);return c[0]=r(c[0],b,h()),c}:a}function u(a){d.labels.push(a);var c=d.token,e=t();return b&&!S(I,e[0])&&k(c),d.labels.pop(),p("label",a,e)}function v(){return p("stat",N(bk,o))}function w(a){var b;return n()||(b=e("name")?d.token.value:null),b!=null?(g(),R(
 b,d.labels)||i("Label "+b+" without matching loop or statement")):d.in_loop==0&&i(a+" not inside a loop or switch"),o(),p(a,b)}function x(){m("(");var a=null;if(!e("punc",";")){a=e("keyword","var")?(g(),V(!0)):bk(!0,!0);if(e("operator","in"))return z(a)}return y(a)}function y(a){m(";");var b=e("punc",";")?null:bk();m(";");var c=e("punc",")")?null:bk();return m(")"),p("for",a,b,c,bl(t))}function z(a){var b=a[0]=="var"?p("name",a[1][0]):a;g();var c=bk();return m(")"),p("for-in",a,b,c,bl(t))}function L(){var a=q(),b=t(),c;return e("keyword","else")&&(g(),c=t()),p("if",a,b,c)}function O(){m("{");var a=[];while(!e("punc","}"))e("eof")&&k(),a.push(t());return g(),a}function T(){var a=O(),b,c;if(e("keyword","catch")){g(),m("("),e("name")||i("Name expected");var f=d.token.value;g(),m(")"),b=[f,O()]}return e("keyword","finally")&&(g(),c=O()),!b&&!c&&i("Missing catch/finally blocks"),p("try",a,b,c)}function U(a){var b=[];for(;;){e("name")||k();var c=d.token.value;g(),e("operator","=")?(g(),b.
 push([c,bk(!1,a)])):b.push([c]);if(!e("punc",","))break;g()}return b}function V(a){return p("var",U(a))}function W(){return p("const",U())}function X(){var a=Y(!1),b;return e("punc","(")?(g(),b=Z(")")):b=[],bc(p("new",a,b),!0)}function Z(a,b,c){var d=!0,f=[];while(!e("punc",a)){d?d=!1:m(",");if(b&&e("punc",a))break;e("punc",",")&&c?f.push(["atom","undefined"]):f.push(bk(!1))}return g(),f}function $(){return p("array",Z("]",!b,!0))}function _(){var a=!0,c=[];while(!e("punc","}")){a?a=!1:m(",");if(!b&&e("punc","}"))break;var f=d.token.type,h=ba();f!="name"||h!="get"&&h!="set"||!!e("punc",":")?(m(":"),c.push([h,bk(!1)])):c.push([bb(),C(!1),h])}return g(),p("object",c)}function ba(){switch(d.token.type){case"num":case"string":return N(d.token.value,g)}return bb()}function bb(){switch(d.token.type){case"name":case"operator":case"keyword":case"atom":return N(d.token.value,g);default:k()}}function bc(a,b){return e("punc",".")?(g(),bc(p("dot",a,bb()),b)):e("punc","[")?(g(),bc(p("sub",a,N(bk
 ,M(m,"]"))),b)):b&&e("punc","(")?(g(),bc(p("call",a,Z(")")),!0)):a}function bd(a){if(e("operator")&&S(E,d.token.value))return be("unary-prefix",N(d.token.value,g),bd(a));var b=Y(a);while(e("operator")&&S(F,d.token.value)&&!d.token.nlb)b=be("unary-postfix",d.token.value,b),g();return b}function be(a,b,c){return(b=="++"||b=="--")&&!bi(c)&&i("Invalid use of "+b+" operator"),p(a,b,c)}function bf(a,b,c){var f=e("operator")?d.token.value:null;f&&f=="in"&&c&&(f=null);var h=f!=null?H[f]:null;if(h!=null&&h>b){g();var i=bf(bd(!0),h,c);return bf(p("binary",f,a,i),b,c)}return a}function bg(a){return bf(bd(!0),0,a)}function bh(a){var b=bg(a);if(e("operator","?")){g();var c=bk(!1);return m(":"),p("conditional",b,c,bk(!1,a))}return b}function bi(a){if(!b)return!0;switch(a[0]+""){case"dot":case"sub":case"new":case"call":return!0;case"name":return a[1]!="this"}}function bj(a){var b=bh(a),c=d.token.value;if(e("operator")&&S(G,c)){if(bi(b))return g(),p("assign",G[c],b,bj(a));i("Invalid assignment")}re
 turn b}function bl(a){try{return++d.in_loop,a()}finally{--d.in_loop}}var d={input:typeof a=="string"?D(a,!0):a,token:null,prev:null,peeked:null,in_function:0,in_loop:0,labels:[]};d.token=g();var t=s(function(){if(e("operator","/")||e("operator","/="))d.peeked=null,d.token=d.input(d.token.value.substr(1));switch(d.token.type){case"num":case"string":case"regexp":case"operator":case"atom":return v();case"name":return B(f(),"punc",":")?u(N(d.token.value,g,g)):v();case"punc":switch(d.token.value){case"{":return p("block",O());case"[":case"(":return v();case";":return g(),p("block");default:k()};case"keyword":switch(N(d.token.value,g)){case"break":return w("break");case"continue":return w("continue");case"debugger":return o(),p("debugger");case"do":return function(a){return l("keyword","while"),p("do",N(q,o),a)}(bl(t));case"for":return x();case"function":return C(!0);case"if":return L();case"return":return d.in_function==0&&i("'return' outside of function"),p("return",e("punc",";")?(g(),n
 ull):n()?null:N(bk,o));case"switch":return p("switch",q(),Q());case"throw":return d.token.nlb&&i("Illegal newline after 'throw'"),p("throw",N(bk,o));case"try":return T();case"var":return N(V,o);case"const":return N(W,o);case"while":return p("while",q(),bl(t));case"with":return p("with",q(),t());default:k()}}}),C=s(function(a){var b=e("name")?N(d.token.value,g):null;return a&&!b&&k(),m("("),p(a?"defun":"function",b,function(a,b){while(!e("punc",")"))a?a=!1:m(","),e("name")||k(),b.push(d.token.value),g();return g(),b}(!0,[]),function(){++d.in_function;var a=d.in_loop;d.in_loop=0;var b=O();return--d.in_function,d.in_loop=a,b}())}),Q=M(bl,function(){m("{");var a=[],b=null;while(!e("punc","}"))e("eof")&&k(),e("keyword","case")?(g(),b=[],a.push([bk(),b]),m(":")):e("keyword","default")?(g(),m(":"),b=[],a.push([null,b])):(b||k(),b.push(t()));return g(),a}),Y=s(function(a){if(e("operator","new"))return g(),X();if(e("punc")){switch(d.token.value){case"(":return g(),bc(N(bk,M(m,")")),a);case"[
 ":return g(),bc($(),a);case"{":return g(),bc(_(),a)}k()}if(e("keyword","function"))return g(),bc(C(!1),a);if(S(J,d.token.type)){var b=d.token.type=="regexp"?p("regexp",d.token.value[0],d.token.value[1]):p(d.token.type,d.token.value);return bc(N(b,g),a)}k()}),bk=s(function(a,b){arguments.length==0&&(a=!0);var c=bj(b);return a&&e("punc",",")?(g(),p("seq",c,bk(!0,b))):c});return p("toplevel",function(a){while(!e("eof"))a.push(t());return a}([]))}function M(a){var b=P(arguments,1);return function(){return a.apply(this,b.concat(P(arguments)))}}function N(a){a instanceof Function&&(a=a());for(var b=1,c=arguments.length;--c>0;++b)arguments[b]();return a}function O(a){var b={};for(var c=0;c<a.length;++c)b[a[c]]=!0;return b}function P(a,b){return Array.prototype.slice.call(a,b||0)}function Q(a){return a.split("")}function R(a,b){for(var c=b.length;--c>=0;)if(b[c]===a)return!0;return!1}function S(a,b){return Object.prototype.hasOwnProperty.call(a,b)}var d=O(["break","case","catch","const","co
 ntinue","default","delete","do","else","finally","for","function","if","in","instanceof","new","return","switch","throw","try","typeof","var","void","while","with"]),e=O(["abstract","boolean","byte","char","class","debugger","double","enum","export","extends","final","float","goto","implements","import","int","interface","long","native","package","private","protected","public","short","static","super","synchronized","throws","transient","volatile"]),f=O(["return","new","delete","throw","else","case"]),g=O(["false","null","true","undefined"]),h=O(Q("+-*&%=<>!?|~^")),i=/^0x[0-9a-f]+$/i,j=/^0[0-7]+$/,k=/^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i,l=O(["in","instanceof","typeof","new","void","delete","++","--","+","-","!","~","&","|","^","*","/","%",">>","<<",">>>","<",">","<=",">=","==","===","!=","!==","?","=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&=","&&","||"]),m=O(Q("  \n\r\t\f​᠎              ")),n=O(Q("[{}(,.;:")),o=O(Q("[]{}(),;
 :")),p=O(Q("gmsiy")),q={letter:new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\
 \u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u105
 0-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC
 2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\u
 AA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),non_spacing_mark:new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0
 AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u
 1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"),space_combining_mark:new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7
 \\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"),connector_punctuation:new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]")};z.prototype.toString=function(){return this.messag
 e+" (line: "+this.line+", col: "+this.col+", pos: "+this.pos+")"+"\n\n"+this.stack};var C={},E=O(["typeof","void","delete","--","++","!","~","-","+"]),F=O(["--","++"]),G=function(a,b,c){while(c<a.length)b[a[c]]=a[c].substr(0,a[c].length-1),c++;return b}(["+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&="],{"=":!0},0),H=function(a,b){for(var c=0,d=1;c<a.length;++c,++d){var e=a[c];for(var f=0;f<e.length;++f)b[e[f]]=d}return b}([["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]],{}),I=O(["for","do","while","switch"]),J=O(["atom","num","string","regexp","name"]);K.prototype.toString=function(){return this.name};var T=function(){};b.tokenizer=D,b.parse=L,b.slice=P,b.curry=M,b.member=R,b.array_to_hash=O,b.PRECEDENCE=H,b.KEYWORDS_ATOM=g,b.RESERVED_WORDS=e,b.KEYWORDS=d,b.ATOMIC_START_TOKEN=J,b.OPERATORS=l,b.is_alphanumeric_char=t,b.set_logger=function(a){T=a}}),f("lib/process",["require","exports",
 "module","./parse-js"],function(a,b,c){function i(){function a(a){return[this[0],K(a,function(a){var b=[a[0]];return a.length>1&&(b[1]=g(a[1])),b})]}function b(a){var b=[this[0]];return a!=null&&b.push(K(a,g)),b}function g(a){if(a==null)return null;try{f.push(a);var b=a[0],e=d[b];if(e){var g=e.apply(a,a.slice(1));if(g!=null)return g}return e=c[b],e.apply(a,a.slice(1))}finally{f.pop()}}function h(a){if(a==null)return null;try{return f.push(a),c[a[0]].apply(a,a.slice(1))}finally{f.pop()}}function i(a,b){var c={},e;for(e in a)J(a,e)&&(c[e]=d[e],d[e]=a[e]);var f=b();for(e in c)J(c,e)&&(c[e]?d[e]=c[e]:delete d[e]);return f}var c={string:function(a){return[this[0],a]},num:function(a){return[this[0],a]},name:function(a){return[this[0],a]},toplevel:function(a){return[this[0],K(a,g)]},block:b,splice:b,"var":a,"const":a,"try":function(a,b,c){return[this[0],K(a,g),b!=null?[b[0],K(b[1],g)]:null,c!=null?K(c,g):null]},"throw":function(a){return[this[0],g(a)]},"new":function(a,b){return[this[0],g(
 a),K(b,g)]},"switch":function(a,b){return[this[0],g(a),K(b,function(a){return[a[0]?g(a[0]):null,K(a[1],g)]})]},"break":function(a){return[this[0],a]},"continue":function(a){return[this[0],a]},conditional:function(a,b,c){return[this[0],g(a),g(b),g(c)]},assign:function(a,b,c){return[this[0],a,g(b),g(c)]},dot:function(a){return[this[0],g(a)].concat(e(arguments,1))},call:function(a,b){return[this[0],g(a),K(b,g)]},"function":function(a,b,c){return[this[0],a,b.slice(),K(c,g)]},defun:function(a,b,c){return[this[0],a,b.slice(),K(c,g)]},"if":function(a,b,c){return[this[0],g(a),g(b),g(c)]},"for":function(a,b,c,d){return[this[0],g(a),g(b),g(c),g(d)]},"for-in":function(a,b,c,d){return[this[0],g(a),g(b),g(c),g(d)]},"while":function(a,b){return[this[0],g(a),g(b)]},"do":function(a,b){return[this[0],g(a),g(b)]},"return":function(a){return[this[0],g(a)]},binary:function(a,b,c){return[this[0],a,g(b),g(c)]},"unary-prefix":function(a,b){return[this[0],a,g(b)]},"unary-postfix":function(a,b){return[this[
 0],a,g(b)]},sub:function(a,b){return[this[0],g(a),g(b)]},object:function(a){return[this[0],K(a,function(a){return a.length==2?[a[0],g(a[1])]:[a[0],g(a[1]),a[2]]})]},regexp:function(a,b){return[this[0],a,b]},array:function(a){return[this[0],K(a,g)]},stat:function(a){return[this[0],g(a)]},seq:function(){return[this[0]].concat(K(e(arguments),g))},label:function(a,b){return[this[0],a,g(b)]},"with":function(a,b){return[this[0],g(a),g(b)]},atom:function(a){return[this[0],a]}},d={},f=[];return{walk:g,dive:h,with_walkers:i,parent:function(){return f[f.length-2]},stack:function(){return f}}}function j(a){this.names={},this.mangled={},this.rev_mangled={},this.cname=-1,this.refs={},this.uses_with=!1,this.uses_eval=!1,this.parent=a,this.children=[],a?(this.level=a.level+1,a.children.push(this)):this.level=0}function l(a){function f(a){b=new j(b);var c=b.body=a();return c.scope=b,b=b.parent,c}function g(a,c){return b.define(a,c)}function h(a){b.refs[a]=!0}function k(a,b,c){var e=this[0]=="defun"
 ;return[this[0],e?g(a,"defun"):a,b,f(function(){return e||g(a,"lambda"),K(b,function(a){g(a,"arg")}),K(c,d)})]}function l(a){return function(b){K(b,function(b){g(b[0],a),b[1]&&h(b[0])})}}var b=null,c=i(),d=c.walk,e=[];return f(function(){function i(a,b){for(b=a.children.length;--b>=0;)i(a.children[b]);for(b in a.refs)if(J(a.refs,b))for(var c=a.has(b),d=a;d;d=d.parent){d.refs[b]=c;if(d===c)break}}var f=c.with_walkers({"function":k,defun:k,label:function(a,b){g(a,"label")},"break":function(a){a&&h(a)},"continue":function(a){a&&h(a)},"with":function(a,c){for(var d=b;d;d=d.parent)d.uses_with=!0},"var":l("var"),"const":l("const"),"try":function(a,b,c){if(b!=null)return[this[0],K(a,d),[g(b[0],"catch"),K(b[1],d)],c!=null?K(c,d):null]},name:function(a){a=="eval"&&e.push(b),h(a)}},function(){return d(a)});return K(e,function(a){if(!a.has("eval"))while(a)a.uses_eval=!0,a=a.parent}),i(b),f})}function m(a,b){function g(a,c){return!b.toplevel&&!e.parent?a:b.except&&f(a,b.except)?a:e.get_mangled(
 a,c)}function h(a){if(b.defines)return!e.has(a)&&J(b.defines,a)?b.defines[a]:null}function j(a,b,c){var f=this[0]=="defun",h;return a&&(f?a=g(a):(h={},!e.uses_eval&&!e.uses_with?a=h[a]=e.next_mangled():h[a]=a)),c=k(c.scope,function(){return b=K(b,function(a){return g(a)}),K(c,d)},h),[this[0],a,b,c]}function k(a,b,c){var d=e;e=a;if(c)for(var f in c)J(c,f)&&a.set_mangle(f,c[f]);for(var f in a.names)J(a.names,f)&&g(f,!0);var h=b();return h.scope=a,e=d,h}function m(a){return[this[0],K(a,function(a){return[g(a[0]),d(a[1])]})]}var c=i(),d=c.walk,e;return b=b||{},c.with_walkers({"function":j,defun:function(){var a=j.apply(this,arguments);switch(c.parent()[0]){case"toplevel":case"function":case"defun":return K.at_top(a)}return a},label:function(a,b){return[this[0],g(a),d(b)]},"break":function(a){if(a)return[this[0],g(a)]},"continue":function(a){if(a)return[this[0],g(a)]},"var":m,"const":m,name:function(a){return h(a)||[this[0],g(a)]},"try":function(a,b,c){return[this[0],K(a,d),b!=null?[g(b[
 0]),K(b[1],d)]:null,c!=null?K(c,d):null]},toplevel:function(a){var b=this;return k(b.scope,function(){return[b[0],K(a,d)]})}},function(){return d(l(a))})}function o(a,b){return E(a).length>E(b[0]=="stat"?b[1]:b).length?b:a}function p(a){return a[0]=="block"&&a[1]&&a[1].length>0?a[1][a[1].length-1]:a}function q(a){if(a)switch(p(a)[0]){case"return":case"break":case"continue":case"throw":return!0}}function r(a){return a[0]=="unary-prefix"&&f(a[1],["!","delete"])||a[0]=="binary"&&f(a[1],["in","instanceof","==","!=","===","!==","<","<=",">=",">"])||a[0]=="binary"&&f(a[1],["&&","||"])&&r(a[2])&&r(a[3])||a[0]=="conditional"&&r(a[2])&&r(a[3])||a[0]=="assign"&&a[1]===!0&&r(a[3])||a[0]=="seq"&&r(a[a.length-1])}function s(a){return!a||a[0]=="block"&&(!a[1]||a[1].length==0)}function t(a){return a[0]=="string"||a[0]=="unary-prefix"&&a[1]=="typeof"||a[0]=="binary"&&a[1]=="+"&&(t(a[2])||t(a[3]))}function v(a){s(a)||n("Dropping unreachable code: "+E(a,!0))}function w(a){function d(a){a=K(a,c);for(v
 ar b=0;b<a.length;++b){var e=a[b];if(e[0]!="if")continue;if(e[3]&&c(e[3]))continue;var f=c(e[2]);if(!q(f))continue;var g=c(e[1]),h=a.slice(b+1),i=h.length==1?h[0]:["block",h],j=a.slice(0,b).concat([[e[0],g,f,i]]);return d(j)}return a}function e(a,b,c){return c=d(c),[this[0],a,b,c]}function f(a){return[this[0],a!=null?d(a):null]}var b=i(),c=b.walk;return b.with_walkers({defun:e,"function":e,block:f,splice:f,toplevel:function(a){return[this[0],d(a)]},"try":function(a,b,c){return[this[0],d(a),b!=null?[b[0],d(b[1])]:null,c!=null?d(c):null]}},function(){return c(a)})}function x(a,b){function g(){throw e}function h(){throw f}function j(){return b.call(this,this,c,g,h)}function k(a){if(a=="++"||a=="--")return j.apply(this,arguments)}var c=i(),d=c.walk,e={},f={};return c.with_walkers({"try":j,"throw":j,"return":j,"new":j,"switch":j,"break":j,"continue":j,assign:j,call:j,"if":j,"for":j,"for-in":j,"while":j,"do":j,"return":j,"unary-prefix":k,"unary-postfix":k,defun:j},function(){for(;;)try{d(
 a);break}catch(b){if(b===e)break;if(b===f)continue;throw b}})}function y(a){function e(a,b){var e=d;d=b,a=K(a,c);var f={},g=K(b.names,function(a,c){return a!="var"?K.skip:b.references(c)?(f[c]=!0,[c]):K.skip});return g.length>0&&(x(["block",a],function(a,b,c,d){if(a[0]=="assign"&&a[1]===!0&&a[2][0]=="name"&&J(f,a[2][1])){for(var e=g.length;--e>=0;)if(g[e][0]==a[2][1]){g[e][1]&&c(),g[e][1]=a[3],g.push(g.splice(e,1)[0]);break}var h=b.parent();if(h[0]=="seq"){var i=h[2];i.unshift(0,h.length),h.splice.apply(h,i)}else h[0]=="stat"?h.splice(0,h.length,"block"):c();d()}c()}),a.unshift(["var",g])),d=e,a}function f(a){var c=null;for(var d=a.length;--d>=0;){var e=a[d];if(!e[1])continue;e=["assign",!0,["name",e[0]],e[1]],c==null?c=e:c=["seq",e,c]}return c==null?b.parent()[0]=="for-in"?["name",a[0][0]]:K.skip:["stat",c]}function g(a){return[this[0],e(a,this.scope)]}var b=i(),c=b.walk,d;return b.with_walkers({"function":function(a,b,c){for(var d=b.length;--d>=0&&!c.scope.references(b[d]);)b.pop(
 );return c.scope.references(a)||(a=null),[this[0],a,b,e(c,c.scope)]},defun:function(a,b,c){if(!d.references(a))return K.skip;for(var f=b.length;--f>=0&&!c.scope.references(b[f]);)b.pop();return[this[0],a,b,e(c,c.scope)]},"var":f,toplevel:g},function(){return c(l(a))})}function z(a,b){function h(a){var c=["unary-prefix","!",a];switch(a[0]){case"unary-prefix":return a[1]=="!"&&r(a[2])?a[2]:c;case"seq":return a=e(a),a[a.length-1]=h(a[a.length-1]),a;case"conditional":return o(c,["conditional",a[1],h(a[2]),h(a[3])]);case"binary":var d=a[1],f=a[2],g=a[3];if(!b.keep_comps)switch(d){case"<=":return["binary",">",f,g];case"<":return["binary",">=",f,g];case">=":return["binary","<",f,g];case">":return["binary","<=",f,g]}switch(d){case"==":return["binary","!=",f,g];case"!=":return["binary","==",f,g];case"===":return["binary","!==",f,g];case"!==":return["binary","===",f,g];case"&&":return o(c,["binary","||",h(f),h(g)]);case"||":return o(c,["binary","&&",h(f),h(g)])}}return c}function j(a,b,c){var
  d=function(){return a[0]=="unary-prefix"&&a[1]=="!"?c?["conditional",a[2],c,b]:["binary","||",a[2],b]:c?o(["conditional",a,b,c],["conditional",h(a),c,b]):["binary","&&",a,b]};return u(a,function(a,d){return v(d?c:b),d?b:c},d)}function k(a,b){var c=g;g=a;var d=b();return d.scope=a,g=c,d}function m(a){return a!=null&&a[0]=="block"&&a[1]&&(a[1].length==1?a=a[1][0]:a[1].length==0&&(a=["block"])),a}function p(a,b,c){var d=this[0]=="defun";return c=k(c.scope,function(){var b=t(c,"lambda");return!d&&a&&!g.references(a)&&(a=null),b}),[this[0],a,b,c]}function t(a,c){return a=K(a,d),a=a.reduce(function(a,b){return b[0]=="block"?b[1]&&a.push.apply(a,b[1]):a.push(b),a},[]),a=function(b,c){return a.forEach(function(a){c&&(a[0]=="var"&&c[0]=="var"||a[0]=="const"&&c[0]=="const")?c[1]=c[1].concat(a[1]):(b.push(a),c=a)}),b}([]),b.dead_code&&(a=function(c,d){return a.forEach(function(a){d?a[0]=="function"||a[0]=="defun"?c.push(a):a[0]=="var"||a[0]=="const"?(b.no_warnings||n("Variables declared in un
 reachable code"),a[1]=K(a[1],function(a){return a[1]&&!b.no_warnings&&v(["assign",!0,["name",a[0]],a[1]]),[a[0]]}),c.push(a)):b.no_warnings||v(a):(c.push(a),f(a[0],["return","throw","break","continue"])&&(d=!0))}),c}([])),b.make_seqs&&(a=function(b,c){return a.forEach(function(a){c&&c[0]=="stat"&&a[0]=="stat"?c[1]=["seq",c[1],a[1]]:(b.push(a),c=a)}),b.length>=2&&b[b.length-2][0]=="stat"&&(b[b.length-1][0]=="return"||b[b.length-1][0]=="throw")&&b[b.length-1][1]&&b.splice(b.length-2,2,[b[b.length-1][0],["seq",b[b.length-2][1],b[b.length-1][1]]]),b}([])),a}function x(a,b,c){return u(a,function(a,e){return e?(b=d(b),v(c),b||["block"]):(c=d(c),v(b),c||["block"])},function(){return y(a,b,c)})}function y(a,b,c){a=d(a),b=d(b),c=d(c),s(b)?(a=h(a),b=c,c=null):s(c)?c=null:function(){var d=E(a),e=h(a),f=E(e);if(f.length<d.length){var g=b;b=c,c=g,a=e}}();if(s(c)&&s(b))return["stat",a];var e=["if",a,b,c];return b[0]=="if"&&s(b[3])&&s(c)?e=o(e,d(["if",["binary","&&",a,b[1]],b[2]])):b[0]=="stat"?c?
 c[0]=="stat"&&(e=o(e,["stat",j(a,b[1],c[1])])):e=o(e,["stat",j(a,b[1])]):c&&b[0]==c[0]&&(b[0]=="return"||b[0]=="throw")&&b[1]&&c[1]?e=o(e,[b[0],j(a,b[1],c[1])]):c&&q(b)?(e=[["if",a,b]],c[0]=="block"?c[1]&&(e=e.concat(c[1])):e.push(c),e=d(["block",e])):b&&q(c)&&(e=[["if",h(a),c]],b[0]=="block"?b[1]&&(e=e.concat(b[1])):e.push(b),e=d(["block",e])),e}function z(a,b){return u(a,function(a,c){return c?["for",null,null,null,d(b)]:(v(b),["block"])})}b=H(b,{make_seqs:!0,dead_code:!0,no_warnings:!1,keep_comps:!0});var c=i(),d=c.walk,g;return c.with_walkers({sub:function(a,b){if(b[0]=="string"){var c=b[1];if(I(c))return["dot",d(a),c];if(/^[1-9][0-9]*$/.test(c)||c==="0")return["sub",d(a),["num",parseInt(c,10)]]}},"if":x,toplevel:function(a){return["toplevel",k(this.scope,function(){return t(a)})]},"switch":function(a,b){var c=b.length-1;return["switch",d(a),K(b,function(a,b){var e=t(a[1]);if(b==c&&e.length>0){var f=e[e.length-1];f[0]=="break"&&!f[1]&&e.pop()}return[a[0]?d(a[0]):null,e]})]},"fun
 ction":p,defun:p,block:function(a){if(a)return m(["block",t(a)])},binary:function(a,b,c){return u(["binary",a,d(b),d(c)],function(a){return o(d(a),this)},function(){return function(){if(a!="=="&&a!="!=")return;var e=d(b),f=d(c);return e&&e[0]=="unary-prefix"&&e[1]=="!"&&e[2][0]=="num"?b=["num",+!e[2][1]]:f&&f[0]=="unary-prefix"&&f[1]=="!"&&f[2][0]=="num"&&(c=["num",+!f[2][1]]),["binary",a,b,c]}()||this})},conditional:function(a,b,c){return j(d(a),d(b),d(c))},"try":function(a,b,c){return["try",t(a),b!=null?[b[0],t(b[1])]:null,c!=null?t(c):null]},"unary-prefix":function(a,b){b=d(b);var c=["unary-prefix",a,b];return a=="!"&&(c=o(c,h(b))),u(c,function(a,b){return d(a)},function(){return c})},name:function(a){switch(a){case"true":return["unary-prefix","!",["num",0]];case"false":return["unary-prefix","!",["num",1]]}},"while":z,assign:function(a,b,c){b=d(b),c=d(c);var e=["+","-","/","*","%",">>","<<",">>>","|","^","&"];return a===!0&&b[0]==="name"&&c[0]==="binary"&&~e.indexOf(c[1])&&c[2][0
 ]==="name"&&c[2][1]===b[1]?[this[0],c[1],b,c[3]]:[this[0],a,b,c]}},function(){for(var b=0;b<2;++b)a=w(a),a=l(a),a=d(a);return a})}function B(a,b){var c=0,d=0;return a=a.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g,function(a){switch(a){case"\\":return"\\\\";case"\b":return"\\b";case"\f":return"\\f";case"\n":return"\\n";case"\r":return"\\r";case"\t":return"\\t";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";case'"':return++c,'"';case"'":return++d,"'";case"\0":return"\\0"}return a}),b&&(a=C(a)),c>d?"'"+a.replace(/\x27/g,"\\'")+"'":'"'+a.replace(/\x22/g,'\\"')+'"'}function C(a){return a.replace(/[\u0080-\uffff]/g,function(a){var b=a.charCodeAt(0).toString(16);while(b.length<4)b="0"+b;return"\\u"+b})}function E(a,b){function m(a){var c=B(a,b.ascii_only);return b.inline_script&&(c=c.replace(/<\x2fscript([>/\t\n\f\r ])/gi,"<\\/script$1")),c}function n(a){return a=a.toString(),b.ascii_only&&(a=C(a)),a}function o(a){return a==null&&(a=""),c&&(a=G(" ",b.indent_start+j*b.indent_
 level)+a),a}function p(a,b){b==null&&(b=1),j+=b;try{return a.apply(null,e(arguments,1))}finally{j-=b}}function q(a){if(c)return a.join(" ");var b=[];for(var d=0;d<a.length;++d){var e=a[d+1];b.push(a[d]),e&&(/[a-z0-9_\x24]$/i.test(a[d].toString())&&/^[a-z0-9_\x24]/i.test(e.toString())||/[\+\-]$/.test(a[d].toString())&&/^[\+\-]/.test(e.toString()))&&b.push(" ")}return b.join("")}function r(a){return a.join(","+l)}function t(a){var b=y(a);for(var c=1;c<arguments.length;++c){var d=arguments[c];if(d instanceof Function&&d(a)||a[0]==d)return"("+b+")"}return b}function u(a){if(a.length==1)return a[0];if(a.length==2){var b=a[1];return a=a[0],a.length>b.length?b:a}return u([a[0],u(a.slice(1))])}function v(a){if(a[0]=="function"||a[0]=="object"){var b=e(x.stack()),c=b.pop(),d=b.pop();while(d){if(d[0]=="stat")return!0;if((d[0]=="seq"||d[0]=="call"||d[0]=="dot"||d[0]=="sub"||d[0]=="conditional")&&d[1]===c||(d[0]=="binary"||d[0]=="assign"||d[0]=="unary-postfix")&&d[2]===c)c=d,d=b.pop();else retu
 rn!1}}return!J(A,a[0])}function w(a){var b=a.toString(10),c=[b.replace(/^0\./,".")],d;return Math.floor(a)===a?(a<0?c.push("-0x"+(-a).toString(16).toLowerCase(),"-0"+(-a).toString(8)):c.push("0x"+a.toString(16).toLowerCase(),"0"+a.toString(8)),(d=/^(.*?)(0+)$/.exec(a))&&c.push(d[1]+"e"+d[2].length)):(d=/^0?\.(0+)(.*)$/.exec(a))&&c.push(d[2]+"e-"+(d[1].length+d[2].length),b.substr(b.indexOf("."))),u(c)}function z(a){if(a==null)return";";if(a[0]=="do")return N([a]);var b=a;for(;;){var c=b[0];if(c=="if"){if(!b[3])return y(["block",[a]]);b=b[3]}else if(c=="while"||c=="do")b=b[2];else if(c=="for"||c=="for-in")b=b[4];else break}return y(a)}function E(a,b,c,d){var e=d||"function";return a&&(e+=" "+n(a)),e+="("+r(K(b,n))+")",e=q([e,N(c)]),v(this)?"("+e+")":e}function F(a){switch(a[0]){case"with":case"while":return s(a[2]);case"for":case"for-in":return s(a[4]);case"if":if(s(a[2])&&!a[3])return!0;if(a[3])return s(a[3])?!0:F(a[3]);return F(a[2])}}function L(a,b){for(var d=[],e=a.length-1,f=0;f
 <=e;++f){var g=a[f],h=y(g);h!=";"&&(!c&&f==e&&!F(g)&&(h=h.replace(/;+\s*$/,"")),d.push(h))}return b?d:K(d,o)}function M(a){var b=a.length;return b==0?"{}":"{"+k+K(a,function(a,d){var e=a[1].length>0,f=p(function(){return o(a[0]?q(["case",y(a[0])+":"]):"default:")},.5)+(e?k+p(function(){return L(a[1]).join(k)}):"");return!c&&e&&d<b-1&&(f+=";"),f}).join(k)+k+o("}")}function N(a){return a?a.length==0?"{}":"{"+k+p(function(){return L(a).join(k)})+k+o("}"):";"}function O(a){var b=a[0],c=a[1];return c!=null&&(b=q([n(b),"=",t(c,"seq")])),b}b=H(b,{indent_start:0,indent_level:4,quote_keys:!1,space_colon:!1,beautify:!1,ascii_only:!1,inline_script:!1});var c=!!b.beautify,j=0,k=c?"\n":"",l=c?" ":"",x=i(),y=x.walk;return x.with_walkers({string:m,num:w,name:n,toplevel:function(a){return L(a).join(k+k)},splice:function(a){var b=x.parent();return J(D,b)?N.apply(this,arguments):K(L(a,!0),function(a,b){return b>0?o(a):a}).join(k)},block:N,"var":function(a){return"var "+r(K(a,O))+";"},"const":function
 (a){return"const "+r(K(a,O))+";"},"try":function(a,b,c){var d=["try",N(a)];return b&&d.push("catch","("+b[0]+")",N(b[1])),c&&d.push("finally",N(c)),q(d)},"throw":function(a){return q(["throw",y(a)])+";"},"new":function(a,b){return b=b.length>0?"("+r(K(b,function(a){return t(a,"seq")}))+")":"",q(["new",t(a,"seq","binary","conditional","assign",function(a){var b=i(),c={};try{b.with_walkers({call:function(){throw c},"function":function(){return this}},function(){b.walk(a)})}catch(d){if(d===c)return!0;throw d}})+b])},"switch":function(a,b){return q(["switch","("+y(a)+")",M(b)])},"break":function(a){var b="break";return a!=null&&(b+=" "+n(a)),b+";"},"continue":function(a){var b="continue";return a!=null&&(b+=" "+n(a)),b+";"},conditional:function(a,b,c){return q([t(a,"assign","seq","conditional"),"?",t(b,"seq"),":",t(c,"seq")])},assign:function(a,b,c){return a&&a!==!0?a+="=":a="=",q([y(b),a,t(c,"seq")])},dot:function(a){var b=y(a),c=1;a[0]=="num"?/\./.test(a[1])||(b+="."):v(a)&&(b="("+b+"
 )");while(c<arguments.length)b+="."+n(arguments[c++]);return b},call:function(a,b){var c=y(a);return c.charAt(0)!="("&&v(a)&&(c="("+c+")"),c+"("+r(K(b,function(a){return t(a,"seq")}))+")"},"function":E,defun:E,"if":function(a,b,c){var d=["if","("+y(a)+")",c?z(b):y(b)];return c&&d.push("else",y(c)),q(d)},"for":function(a,b,c,d){var e=["for"];a=(a!=null?y(a):"").replace(/;*\s*$/,";"+l),b=(b!=null?y(b):"").replace(/;*\s*$/,";"+l),c=(c!=null?y(c):"").replace(/;*\s*$/,"");var f=a+b+c;return f=="; ; "&&(f=";;"),e.push("("+f+")",y(d)),q(e)},"for-in":function(a,b,c,d){return q(["for","("+(a?y(a).replace(/;+$/,""):y(b)),"in",y(c)+")",y(d)])},"while":function(a,b){return q(["while","("+y(a)+")",y(b)])},"do":function(a,b){return q(["do",y(b),"while","("+y(a)+")"])+";"},"return":function(a){var b=["return"];return a!=null&&b.push(y(a)),q(b)+";"},binary:function(a,d,e){var h=y(d),i=y(e);if(f(d[0],["assign","conditional","seq"])||d[0]=="binary"&&g[a]>g[d[1]]||d[0]=="function"&&v(this))h="("+h+")"
 ;return f(e[0],["assign","conditional","seq"])||e[0]=="binary"&&g[a]>=g[e[1]]&&(e[1]!=a||!f(a,["&&","||","*"]))?i="("+i+")":!c&&b.inline_script&&(a=="<"||a=="<<")&&e[0]=="regexp"&&/^script/i.test(e[1])&&(i=" "+i),q([h,a,i])},"unary-prefix":function(a,b){var c=y(b);return b[0]=="num"||b[0]=="unary-prefix"&&!J(h,a+b[1])||!v(b)||(c="("+c+")"),a+(d.is_alphanumeric_char(a.charAt(0))?" ":"")+c},"unary-postfix":function(a,b){var c=y(b);return b[0]=="num"||b[0]=="unary-postfix"&&!J(h,a+b[1])||!v(b)||(c="("+c+")"),c+a},sub:function(a,b){var c=y(a);return v(a)&&(c="("+c+")"),c+"["+y(b)+"]"},object:function(a){var d=v(this);if(a.length==0)return d?"({})":"{}";var e="{"+k+p(function(){return K(a,function(a){if(a.length==3)return o(E(a[0],a[1][2],a[1][3],a[2]));var d=a[0],e=t(a[1],"seq");return b.quote_keys?d=m(d):(typeof d=="number"||!c&&+d+""==d)&&parseFloat(d)>=0?d=w(+d):I(d)||(d=m(d)),o(q(c&&b.space_colon?[d,":",e]:[d+":",e]))}).join(","+k)})+k+o("}");return d?"("+e+")":e},regexp:function(a,
 b){return"/"+a+"/"+b},array:function(a){return a.length==0?"[]":q(["[",r(K(a,function(b,d){return!c&&b[0]=="atom"&&b[1]=="undefined"?d===a.length-1?",":"":t(b,"seq")})),"]"])},stat:function(a){return y(a).replace(/;*\s*$/,";")},seq:function(){return r(K(e(arguments),y))},label:function(a,b){return q([n(a),":",y(b)])},"with":function(a,b){return q(["with","("+y(a)+")",y(b)])},atom:function(a){return n(a)}},function(){return y(a)})}function F(a,b){var c=[0];return d.parse(function(){function h(a){return a.pos-f}function i(a){f=a.pos,c.push(f)}function j(){var a=e.apply(this,arguments);c:{if(g&&g.type=="keyword")break c;if(h(a)>b)switch(a.type){case"keyword":case"atom":case"name":case"punc":i(a);break c}}return g=a,a}var e=d.tokenizer(a),f=0,g;return j.context=function(){return e.context.apply(this,arguments)},j}()),c.map(function(b,d){return a.substring(b,c[d+1]||a.length)}).join("\n")}function G(a,b){if(b>0){if(b==1)return a;var c=G(a,b>>1);return c+=c,b&1&&(c+=a),c}return""}function
  H(a,b){var c={};a===!0&&(a={});for(var d in b)J(b,d)&&(c[d]=a&&J(a,d)?a[d]:b[d]);return c}function I(a){return/^[a-z_$][a-z0-9_$]*$/i.test(a)&&a!="this"&&!J(d.KEYWORDS_ATOM,a)&&!J(d.RESERVED_WORDS,a)&&!J(d.KEYWORDS,a)}function J(a,b){return Object.prototype.hasOwnProperty.call(a,b)}var d=a("./parse-js"),e=d.slice,f=d.member,g=d.PRECEDENCE,h=d.OPERATORS,k=function(){var a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_";return function(b){var c="";do c=a.charAt(b%54)+c,b=Math.floor(b/54);while(b>0);return c}}();j.prototype={has:function(a){for(var b=this;b;b=b.parent)if(J(b.names,a))return b},has_mangled:function(a){for(var b=this;b;b=b.parent)if(J(b.rev_mangled,a))return b},toJSON:function(){return{names:this.names,uses_eval:this.uses_eval,uses_with:this.uses_with}},next_mangled:function(){for(;;){var a=k(++this.cname),b;b=this.has_mangled(a);if(b&&this.refs[b.rev_mangled[a]]===b)continue;b=this.has(a);if(b&&b!==this&&this.refs[a]===b&&!b.has_mangled(a))continue;if(J(this.r
 efs,a)&&this.refs[a]==null)continue;if(!I(a))continue;return a}},set_mangle:function(a,b){return this.rev_mangled[b]=a,this.mangled[a]=b},get_mangled:function(a,b){if(this.uses_eval||this.uses_with)return a;var c=this.has(a);return c?J(c.mangled,a)?c.mangled[a]:b?c.set_mangle(a,c.next_mangled()):a:a},references:function(a){return a&&!this.parent||this.uses_with||this.uses_eval||this.refs[a]},define:function(a,b){if(a!=null){if(b=="var"||!J(this.names,a))this.names[a]=b||"var";return a}}};var n=function(){},u=function(){function b(c){switch(c[0]){case"string":case"num":return c[1];case"name":case"atom":switch(c[1]){case"true":return!0;case"false":return!1;case"null":return null}break;case"unary-prefix":switch(c[1]){case"!":return!b(c[2]);case"typeof":return typeof b(c[2]);case"~":return~b(c[2]);case"-":return-b(c[2]);case"+":return+b(c[2])}break;case"binary":var d=c[2],e=c[3];switch(c[1]){case"&&":return b(d)&&b(e);case"||":return b(d)||b(e);case"|":return b(d)|b(e);case"&":return b(
 d)&b(e);case"^":return b(d)^b(e);case"+":return b(d)+b(e);case"*":return b(d)*b(e);case"/":return b(d)/b(e);case"%":return b(d)%b(e);case"-":return b(d)-b(e);case"<<":return b(d)<<b(e);case">>":return b(d)>>b(e);case">>>":return b(d)>>>b(e);case"==":return b(d)==b(e);case"===":return b(d)===b(e);case"!=":return b(d)!=b(e);case"!==":return b(d)!==b(e);case"<":return b(d)<b(e);case"<=":return b(d)<=b(e);case">":return b(d)>b(e);case">=":return b(d)>=b(e);case"in":return b(d)in b(e);case"instanceof":return b(d)instanceof b(e)}}throw a}var a={};return function(c,d,e){try{var f=b(c),g;switch(typeof f){case"string":g=["string",f];break;case"number":g=["num",f];break;case"boolean":g=["name",String(f)];break;default:throw new Error("Can't handle constant of type: "+typeof f)}return d.call(c,g,f)}catch(h){if(h===a){if(c[0]!="binary"||c[1]!="==="&&c[1]!="!=="||!(t(c[2])&&t(c[3])||r(c[2])&&r(c[3]))){if(e&&c[0]=="binary"&&(c[1]=="||"||c[1]=="&&"))try{var i=b(c[2]);c=c[1]=="&&"&&(i?c[3]:i)||c[1]
 =="||"&&(i?i:c[3])||c}catch(j){}}else c[1]=c[1].substr(0,2);return e?e.call(c,c):null}throw h}}}(),A=d.array_to_hash(["name","array","object","string","dot","sub","call","regexp","defun"]),D=d.array_to_hash(["if","while","do","for","for-in","with"]),K;(function(){function b(a){this.v=a}function c(a){this.v=a}K=function(d,e,f){function j(){var j=e.call(f,d[i],i);j instanceof b?(j=j.v,j instanceof c?h.push.apply(h,j.v):h.push(j)):j!=a&&(j instanceof c?g.push.apply(g,j.v):g.push(j))}var g=[],h=[],i;if(d instanceof Array)for(i=0;i<d.length;++i)j();else for(i in d)J(d,i)&&j();return h.concat(g)},K.at_top=function(a){return new b(a)},K.splice=function(a){return new c(a)};var a=K.skip={}})(),b.ast_walker=i,b.ast_mangle=m,b.ast_squeeze=z,b.ast_lift_variables=y,b.gen_code=E,b.ast_add_scope=l,b.set_logger=function(a){n=a},b.make_string=B,b.split_lines=F,b.MAP=K}),f("uglify-js",["require","exports","module","./lib/parse-js","./lib/process"],function(a,b,c){function d(a,b){b||(b={});var c=d.par
 ser,e=d.uglify,f=c.parse(a,b.strict_semicolons);f=e.ast_mangle(f,b.mangle_options),f=e.ast_squeeze(f,b.squeeze_options);var g=e.gen_code(f,b.gen_options);return g}d.parser=a("./lib/parse-js"),d.uglify=a("./lib/process"),c.exports=d}),f("lib/squeeze-more",["require","exports","module","./parse-js","./process"],function(a,b,c){function l(a){function f(a,b){var c=d,e;return d=a,e=b(),d=c,e}function g(a,b,d){return[this[0],a,b,f(d.scope,h(i,d,c))]}var b=e.ast_walker(),c=b.walk,d;return b.with_walkers({toplevel:function(a){return[this[0],f(this.scope,h(i,a,c))]},"function":g,defun:g,"new":function(a,b){if(a[0]=="name"&&a[1]=="Array"&&!d.has("Array"))return b.length!=1?["array",b]:c(["call",["name","Array"],b])},call:function(a,b){if(a[0]=="dot"&&a[2]=="toString"&&b.length==0)return["binary","+",a[1],["string",""]];if(a[0]=="name"&&a[1]=="Array"&&b.length!=1&&!d.has("Array"))return["array",b]}},function(){return c(e.ast_add_scope(a))})}var d=a("./parse-js"),e=a("./process"),f=d.slice,g=d.
 member,h=d.curry,i=e.MAP,j=d.PRECEDENCE,k=d.OPERATORS;b.ast_squeeze_more=l});if(!this.uglify){var g=this;e(["uglify-js","lib/process","lib/squeeze-more"],function(a,b,c){b.ast_squeeze_more=c.ast_squeeze_more,g.uglify=a;var d=g.define;typeof d=="function"&&d.amd&&d("uglifyweb",function(){return a})},null,!0)}})()
\ No newline at end of file


[24/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/ceda/bk_core_with_custom_and_coa.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/ceda/bk_core_with_custom_and_coa.sql b/fineract-db/multi-tenant-demo-backups/ceda/bk_core_with_custom_and_coa.sql
deleted file mode 100644
index fea7164..0000000
--- a/fineract-db/multi-tenant-demo-backups/ceda/bk_core_with_custom_and_coa.sql
+++ /dev/null
@@ -1,1909 +0,0 @@
--- MySQL dump 10.13  Distrib 5.1.60, for Win32 (ia32)
---
--- Host: localhost    Database: mifostenant-ceda
--- ------------------------------------------------------
--- Server version	5.1.60-community
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `acc_gl_account`
---
-
-DROP TABLE IF EXISTS `acc_gl_account`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_account` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(45) NOT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `gl_code` varchar(45) NOT NULL,
-  `disabled` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1',
-  `account_usage` tinyint(1) NOT NULL DEFAULT '2',
-  `classification_enum` smallint(5) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `acc_gl_code` (`gl_code`),
-  KEY `FK_ACC_0000000001` (`parent_id`),
-  CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_account`
---
-
-LOCK TABLES `acc_gl_account` WRITE;
-/*!40000 ALTER TABLE `acc_gl_account` DISABLE KEYS */;
-INSERT INTO `acc_gl_account` VALUES (1,'Petty Cash Balances',NULL,'11100',0,1,2,1,NULL),(2,'Cash in Valut 1',NULL,'11101',0,1,1,1,NULL),(3,'Bank Balances',NULL,'11200',0,1,2,1,NULL),(4,'Centenary Opening Account',NULL,'11201',0,1,1,1,NULL),(5,'Centenary Expense Account',NULL,'11202',0,1,1,1,NULL),(6,'Centenary USD Account',NULL,'11203',0,1,1,1,NULL),(7,'Loans and Advances',NULL,'13100',0,1,2,1,NULL),(8,'Loans to Clients',NULL,'13101',0,1,1,1,NULL),(9,'Outstanding Interest',NULL,'13102',0,1,1,1,NULL),(10,'Outstanding Late Payment Interest',NULL,'13103',0,1,1,1,NULL),(11,'Outstanding Bank Fees to be collected',NULL,'13104',0,1,1,1,NULL),(12,'WriteOff Accounts',NULL,'13200',0,1,2,1,NULL),(13,'Write-offs (use for funds coming in)',NULL,'13201',0,1,1,1,NULL),(14,'Write-offs outstanding principal',NULL,'13202',0,1,1,1,NULL),(15,'Write-offs outstanding interest',NULL,'13203',0,1,1,1,NULL),(16,'Write-offs collected bank fees',NULL,'13204',0,1,1,1,NULL),(17,'Write-offs hardware/furniture',NU
 LL,'13205',0,1,1,1,NULL),(18,'Fixed Assets',NULL,'14100',0,1,2,1,NULL),(19,'Office Equipment',NULL,'14101',0,1,1,1,NULL),(20,'Suspense Items (unidentified deposits)',NULL,'15000',0,1,2,1,NULL),(21,'Assets',NULL,'10000',0,1,2,1,NULL),(22,'Liabilities',NULL,'20000',0,1,2,2,NULL),(23,'Shares Account',NULL,'26100',0,1,2,2,NULL),(24,'Shares Captial',NULL,'26101',0,1,1,2,NULL),(25,'Donated Equity',NULL,'26300',0,1,2,2,NULL),(26,'Donated Equity Ameropa Foundation',NULL,'26301',0,1,1,2,NULL),(27,'Donated Equity e.h',NULL,'26302',0,1,1,2,NULL),(28,'Overpaid Amounts',NULL,'27000',0,1,2,2,NULL),(29,'Loss Provision',NULL,'28000',0,1,2,2,NULL),(30,'Provision Outstanding Principal',NULL,'28001',0,1,1,2,NULL),(31,'Provision Oustanding Interest',NULL,'28002',0,1,1,2,NULL),(32,'Income',NULL,'30000',0,1,2,4,NULL),(33,'Interest Income from Loans',NULL,'31100',0,1,2,4,NULL),(34,'Interest on Loans',NULL,'31101',0,1,1,4,NULL),(35,'Late Payment Interest',NULL,'31102',0,1,1,4,NULL),(36,'Income from Micro c
 redit & Lending Activities',NULL,'31300',0,1,2,4,NULL),(37,'Collected Bank Fees Receivable',NULL,'6201',0,1,1,4,NULL),(38,'Deposits from Loans Write Off',NULL,'31400',0,1,2,4,NULL),(39,'Expenditure',NULL,'40000',0,1,2,5,NULL),(40,'Office Expenditure Account',NULL,'42100',0,1,2,5,NULL),(41,'Water Charges',NULL,'42102',0,1,1,5,NULL),(42,'Electricity Charges',NULL,'42103',0,1,1,5,NULL),(43,'Printing and Stationary',NULL,'42105',0,1,1,5,NULL),(44,'Office Rent',NULL,'42107',0,1,1,5,NULL),(45,'Marketing Expense',NULL,'42109',0,1,1,5,NULL),(46,'Office utilities',NULL,'42112',0,1,1,5,'(supplies, toiletries, kitchen)'),(47,'Furniture',NULL,'42113',0,1,1,5,NULL),(48,'CEDA Meeting Expense',NULL,'42114',0,1,1,5,NULL),(49,'Employee Personal Expsense Account',NULL,'42200',0,1,2,5,NULL),(50,'Salary Alice',NULL,'42201',0,1,1,5,NULL),(51,'Salary Irene',NULL,'42202',0,1,1,5,NULL),(52,'Salary Richard',NULL,'42203',0,1,1,5,NULL),(53,'Salary Loan Officer TBA',NULL,'42204',0,1,1,5,NULL),(54,'Medical Insu
 rance Alice & Family',NULL,'42205',0,1,1,5,NULL),(55,'Medical Insurance Irene',NULL,'42206',0,1,1,5,NULL),(56,'Medical Insurance Richard',NULL,'42207',0,1,1,5,NULL),(57,'Medical Insurance Loan Officer TBA',NULL,'42208',0,1,1,5,NULL),(58,'PAYE all employees',NULL,'42209',0,1,1,5,NULL),(59,'NSSF all employees',NULL,'42210',0,1,1,5,NULL),(60,'Lunch Allowances all employees',NULL,'42211',0,1,1,5,NULL),(61,'IT software and maintenance',NULL,'42300',0,1,2,5,NULL),(62,'Mifos maintenance contract 12 months',NULL,'42301',0,1,1,5,NULL),(63,'VPS Contract 12 months',NULL,'42302',0,1,1,5,NULL),(64,'Bulk SMS Service',NULL,'42303',0,1,1,5,NULL),(65,'Support Accounting Software',NULL,'42304',0,1,1,5,NULL),(66,'Mifos Instance Setup',NULL,'42305',0,1,1,5,NULL),(67,'Misc support expense',NULL,'42306',0,1,1,5,NULL),(68,'Warid Mobile Line',NULL,'42307',0,1,1,5,NULL),(69,'Landline',NULL,'42308',0,1,1,5,NULL),(70,'Modem Alice',NULL,'42309',0,1,1,5,NULL),(71,'Modem Irene',NULL,'42310',0,1,1,5,NULL),(72,'Mo
 dem Richard',NULL,'42311',0,1,1,5,NULL),(73,'Repairs',NULL,'42312',0,1,1,5,NULL),(74,'Airtime Expenses',NULL,'42400',0,1,2,5,NULL),(75,'Airtime Alice',NULL,'42401',0,1,1,5,NULL),(76,'Airtime Richard',NULL,'42402',0,1,1,5,NULL),(77,'Airtime Loan Office TBA',NULL,'42403',0,1,1,5,NULL),(78,'Special Airtime Alice',NULL,'42404',0,1,1,5,NULL),(79,'Transportation',NULL,'42500',0,1,2,5,NULL),(80,'Flat monthly transportation cost',NULL,'42501',0,1,1,5,NULL),(81,'Faciliation cost for Richard',NULL,'42502',0,1,1,5,NULL),(82,'Faciliation cost for Loan Officer TBA',NULL,'42503',0,1,1,5,NULL),(83,'Consultancy Expenses',NULL,'42600',0,1,2,5,NULL),(84,'Audit Fees',NULL,'42601',0,1,1,5,NULL),(85,'Legal Fees',NULL,'42602',0,1,1,5,NULL),(86,'Miscellaneous Expenses Account',NULL,'42700',0,1,2,5,NULL),(87,'MFI License',NULL,'42703',0,1,1,5,NULL),(88,'Sundy Expenses',NULL,'42704',0,1,1,5,NULL),(89,'Bank Fees',NULL,'42800',0,1,2,5,NULL),(90,'Bank Charges Operating Account',NULL,'42801',0,1,1,5,NULL),(91,'
 Bank Charges Expense Account',NULL,'42802',0,1,1,5,NULL),(92,'E.H Account',NULL,'42900',0,1,2,5,NULL),(93,'Airtime',NULL,'42901',0,1,1,5,NULL),(94,'Modem',NULL,'42902',0,1,1,5,NULL),(95,'Meals',NULL,'42903',0,1,1,5,NULL),(96,'Transportation',NULL,'42904',0,1,1,5,NULL),(97,'Miscellaneous',NULL,'42905',0,1,1,5,NULL);
-/*!40000 ALTER TABLE `acc_gl_account` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_closure`
---
-
-DROP TABLE IF EXISTS `acc_gl_closure`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_closure` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `closing_date` date NOT NULL,
-  `is_deleted` int(20) NOT NULL DEFAULT '0',
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `comments` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `office_id_closing_date` (`office_id`,`closing_date`),
-  KEY `FK_acc_gl_closure_m_office` (`office_id`),
-  KEY `FK_acc_gl_closure_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_closure_m_appuser_2` (`lastmodifiedby_id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_closure`
---
-
-LOCK TABLES `acc_gl_closure` WRITE;
-/*!40000 ALTER TABLE `acc_gl_closure` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_closure` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_journal_entry`
---
-
-DROP TABLE IF EXISTS `acc_gl_journal_entry`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_journal_entry` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_id` bigint(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `reversal_id` bigint(20) DEFAULT NULL,
-  `transaction_id` varchar(50) NOT NULL,
-  `reversed` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_entry` tinyint(1) NOT NULL DEFAULT '0',
-  `entry_date` date NOT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `entity_type_enum` smallint(5) DEFAULT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `createdby_id` bigint(20) NOT NULL,
-  `lastmodifiedby_id` bigint(20) NOT NULL,
-  `created_date` datetime NOT NULL,
-  `lastmodified_date` datetime NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_acc_gl_journal_entry_m_office` (`office_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser_2` (`lastmodifiedby_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_journal_entry` (`reversal_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_account` (`account_id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_account` FOREIGN KEY (`account_id`) REFERENCES `acc_gl_account` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_journal_entry` FOREIGN KEY (`reversal_id`) REFERENCES `acc_gl_journal_entry` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_journal_entry`
---
-
-LOCK TABLES `acc_gl_journal_entry` WRITE;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_product_mapping`
---
-
-DROP TABLE IF EXISTS `acc_product_mapping`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_product_mapping` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `gl_account_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `product_type` smallint(5) DEFAULT NULL,
-  `financial_account_type` smallint(5) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_product_mapping`
---
-
-LOCK TABLES `acc_product_mapping` WRITE;
-/*!40000 ALTER TABLE `acc_product_mapping` DISABLE KEYS */;
-INSERT INTO `acc_product_mapping` VALUES (1,4,1,1,1),(2,8,1,1,2),(3,34,1,1,3),(4,37,1,1,4),(5,35,1,1,5),(6,97,1,1,6);
-/*!40000 ALTER TABLE `acc_product_mapping` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `c_configuration`
---
-
-DROP TABLE IF EXISTS `c_configuration`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `c_configuration` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(50) DEFAULT NULL,
-  `enabled` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `c_configuration`
---
-
-LOCK TABLES `c_configuration` WRITE;
-/*!40000 ALTER TABLE `c_configuration` DISABLE KEYS */;
-INSERT INTO `c_configuration` VALUES (1,'maker-checker',0);
-/*!40000 ALTER TABLE `c_configuration` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `client additional data`
---
-
-DROP TABLE IF EXISTS `client additional data`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `client additional data` (
-  `client_id` bigint(20) NOT NULL,
-  `Gender_cd` int(11) NOT NULL,
-  `Date of Birth` date NOT NULL,
-  `Home address` text NOT NULL,
-  `Telephone number` varchar(20) NOT NULL,
-  `Telephone number (2nd)` varchar(20) NOT NULL,
-  `Email address` varchar(50) NOT NULL,
-  `EducationLevel_cd` int(11) NOT NULL,
-  `MaritalStatus_cd` int(11) NOT NULL,
-  `Number of children` int(11) NOT NULL,
-  `Citizenship` varchar(50) NOT NULL,
-  `PovertyStatus_cd` int(11) NOT NULL,
-  `YesNo_cd_Employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL,
-  `Employer name` varchar(50) DEFAULT NULL,
-  `Number of years` int(11) DEFAULT NULL,
-  `Monthly salary` decimal(19,6) DEFAULT NULL,
-  `YesNo_cd_Self employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL,
-  `Business address` text,
-  `Number of employees` int(11) DEFAULT NULL,
-  `Monthly salaries paid` decimal(19,6) DEFAULT NULL,
-  `Monthly net income of business activity` decimal(19,6) DEFAULT NULL,
-  `Monthly rent` decimal(19,6) DEFAULT NULL,
-  `Other income generating activities` varchar(100) DEFAULT NULL,
-  `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL,
-  `YesNo_cd_Loans with other institutions` int(11) NOT NULL,
-  `From whom` varchar(100) DEFAULT NULL,
-  `Amount` decimal(19,6) DEFAULT NULL,
-  `Interest rate pa` decimal(19,6) DEFAULT NULL,
-  `Number of people depending on overal income` int(11) NOT NULL,
-  `YesNo_cd_Bank account` int(11) NOT NULL,
-  `YesNo_cd_Business plan provided` int(11) NOT NULL,
-  `YesNo_cd_Access to internet` int(11) DEFAULT NULL,
-  `Introduced by` varchar(100) DEFAULT NULL,
-  `Known to introducer since` varchar(100) NOT NULL,
-  `Last visited by` varchar(100) DEFAULT NULL,
-  `Last visited on` date NOT NULL,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `client additional data`
---
-
-LOCK TABLES `client additional data` WRITE;
-/*!40000 ALTER TABLE `client additional data` DISABLE KEYS */;
-/*!40000 ALTER TABLE `client additional data` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `impact measurement`
---
-
-DROP TABLE IF EXISTS `impact measurement`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `impact measurement` (
-  `loan_id` bigint(20) NOT NULL,
-  `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL,
-  `ReasonNotRepaidOnSchedule` text,
-  `How was Loan Amount Invested` text NOT NULL,
-  `Additional Income Generated` decimal(19,6) NOT NULL,
-  `Additional Income Used For` text NOT NULL,
-  `YesNo_cd_NewJobsCreated` int(11) NOT NULL,
-  `Number of Jobs Created` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `impact measurement`
---
-
-LOCK TABLES `impact measurement` WRITE;
-/*!40000 ALTER TABLE `impact measurement` DISABLE KEYS */;
-/*!40000 ALTER TABLE `impact measurement` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `loan additional data`
---
-
-DROP TABLE IF EXISTS `loan additional data`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `loan additional data` (
-  `loan_id` bigint(20) NOT NULL,
-  `PurposeOfLoan_cd` int(11) NOT NULL,
-  `CollateralType_cd` int(11) NOT NULL,
-  `Collateral notes` text NOT NULL,
-  `YesNo_cd_Guarantor` int(11) NOT NULL,
-  `Guarantor name` varchar(100) DEFAULT NULL,
-  `Guarantor relation` varchar(100) DEFAULT NULL,
-  `Guarantor address` varchar(100) DEFAULT NULL,
-  `Guarantor telephone number` varchar(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `loan additional data`
---
-
-LOCK TABLES `loan additional data` WRITE;
-/*!40000 ALTER TABLE `loan additional data` DISABLE KEYS */;
-/*!40000 ALTER TABLE `loan additional data` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser`
---
-
-DROP TABLE IF EXISTS `m_appuser`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `office_id` bigint(20) DEFAULT NULL,
-  `username` varchar(100) NOT NULL,
-  `firstname` varchar(100) NOT NULL,
-  `lastname` varchar(100) NOT NULL,
-  `password` varchar(255) NOT NULL,
-  `email` varchar(100) NOT NULL,
-  `firsttime_login_remaining` bit(1) NOT NULL,
-  `nonexpired` bit(1) NOT NULL,
-  `nonlocked` bit(1) NOT NULL,
-  `nonexpired_credentials` bit(1) NOT NULL,
-  `enabled` bit(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `username_org` (`username`),
-  KEY `FKB3D587CE0DD567A` (`office_id`),
-  CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser`
---
-
-LOCK TABLES `m_appuser` WRITE;
-/*!40000 ALTER TABLE `m_appuser` DISABLE KEYS */;
-INSERT INTO `m_appuser` VALUES (1,0,1,'admin','App','Administrator','5787039480429368bf94732aacc771cd0a3ea02bcf504ffe1185ab94213bc63a','demomfi@mifos.org','\0','','','',''),(2,0,1,'keithwoodlock','Keith','Woodlock','4f607e9b6cffbe7d3db92d4bfa3391c7aa751727b4ea29d08fddf9dd72e6e7e3','keithwoodlock@gmail.com','\0','','','','');
-/*!40000 ALTER TABLE `m_appuser` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser_role`
---
-
-DROP TABLE IF EXISTS `m_appuser_role`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser_role` (
-  `appuser_id` bigint(20) NOT NULL,
-  `role_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`appuser_id`,`role_id`),
-  KEY `FK7662CE59B4100309` (`appuser_id`),
-  KEY `FK7662CE5915CEC7AB` (`role_id`),
-  CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`),
-  CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser_role`
---
-
-LOCK TABLES `m_appuser_role` WRITE;
-/*!40000 ALTER TABLE `m_appuser_role` DISABLE KEYS */;
-INSERT INTO `m_appuser_role` VALUES (1,1),(2,1);
-/*!40000 ALTER TABLE `m_appuser_role` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_calendar`
---
-
-DROP TABLE IF EXISTS `m_calendar`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_calendar` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `title` varchar(50) NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  `location` varchar(50) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `duration` smallint(6) DEFAULT NULL,
-  `calendar_type_enum` smallint(5) NOT NULL,
-  `repeating` tinyint(1) NOT NULL DEFAULT '0',
-  `recurrence` varchar(100) DEFAULT NULL,
-  `remind_by_enum` smallint(5) DEFAULT NULL,
-  `first_reminder` smallint(11) DEFAULT NULL,
-  `second_reminder` smallint(11) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_calendar`
---
-
-LOCK TABLES `m_calendar` WRITE;
-/*!40000 ALTER TABLE `m_calendar` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_calendar` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_calendar_instance`
---
-
-DROP TABLE IF EXISTS `m_calendar_instance`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_calendar_instance` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `calendar_id` bigint(20) NOT NULL,
-  `entity_id` bigint(20) NOT NULL,
-  `entity_type_enum` smallint(5) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`),
-  CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_calendar_instance`
---
-
-LOCK TABLES `m_calendar_instance` WRITE;
-/*!40000 ALTER TABLE `m_calendar_instance` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_calendar_instance` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_charge`
---
-
-DROP TABLE IF EXISTS `m_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `charge_applies_to_enum` smallint(5) NOT NULL,
-  `charge_time_enum` smallint(5) NOT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `is_active` tinyint(1) NOT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_charge`
---
-
-LOCK TABLES `m_charge` WRITE;
-/*!40000 ALTER TABLE `m_charge` DISABLE KEYS */;
-INSERT INTO `m_charge` VALUES (1,'Bank Fee (per installment)','UGX',1,2,1,'1500.000000',0,1,0);
-/*!40000 ALTER TABLE `m_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client`
---
-
-DROP TABLE IF EXISTS `m_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `middlename` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `fullname` varchar(100) DEFAULT NULL,
-  `display_name` varchar(100) NOT NULL,
-  `image_key` varchar(500) DEFAULT NULL,
-  `joined_date` date DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `external_id` (`external_id`),
-  KEY `FKCE00CAB3E0DD567A` (`office_id`),
-  CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client`
---
-
-LOCK TABLES `m_client` WRITE;
-/*!40000 ALTER TABLE `m_client` DISABLE KEYS */;
-INSERT INTO `m_client` VALUES (1,'000000001',2,NULL,'Test',NULL,'One',NULL,'Test One',NULL,'2011-02-01',0);
-/*!40000 ALTER TABLE `m_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client_identifier`
---
-
-DROP TABLE IF EXISTS `m_client_identifier`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client_identifier` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `document_type_id` int(11) NOT NULL,
-  `document_key` varchar(50) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `unique_identifier_key` (`document_type_id`,`document_key`),
-  UNIQUE KEY `unique_client_identifier` (`client_id`,`document_type_id`),
-  KEY `FK_m_client_document_m_client` (`client_id`),
-  KEY `FK_m_client_document_m_code_value` (`document_type_id`),
-  CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client_identifier`
---
-
-LOCK TABLES `m_client_identifier` WRITE;
-/*!40000 ALTER TABLE `m_client_identifier` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_client_identifier` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code`
---
-
-DROP TABLE IF EXISTS `m_code`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_name` varchar(100) DEFAULT NULL,
-  `is_system_defined` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_name` (`code_name`)
-) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code`
---
-
-LOCK TABLES `m_code` WRITE;
-/*!40000 ALTER TABLE `m_code` DISABLE KEYS */;
-INSERT INTO `m_code` VALUES (1,'Customer Identifier',1),(2,'LoanCollateral',1),(3,'LoanPurpose',1),(4,'Gender',1),(5,'YesNo',1),(6,'GuarantorRelationship',1),(7,'FieldOfEmployment',0),(8,'EducationLevel',0),(9,'MaritalStatus',0),(10,'PovertyStatus',0);
-/*!40000 ALTER TABLE `m_code` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code_value`
---
-
-DROP TABLE IF EXISTS `m_code_value`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code_value` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_id` int(11) NOT NULL,
-  `code_value` varchar(100) DEFAULT NULL,
-  `order_position` int(11) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_value` (`code_id`,`code_value`),
-  KEY `FKCFCEA42640BE071Z` (`code_id`),
-  CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code_value`
---
-
-LOCK TABLES `m_code_value` WRITE;
-/*!40000 ALTER TABLE `m_code_value` DISABLE KEYS */;
-INSERT INTO `m_code_value` VALUES (1,1,'Passport',1),(2,1,'Id',2),(3,1,'Drivers License',3),(4,1,'Any Other Id Type',4),(5,6,'Spouse',0),(6,6,'Parent',0),(7,6,'Sibling',0),(8,6,'Business Associate',0),(9,6,'Other',0),(10,7,'option.Banker',1),(11,7,'option.SoftwareDeveloper',10),(12,8,'option.University',1),(13,8,'option.Secondary',12),(14,8,'option.Primary',13),(15,9,'option.Married',1),(16,9,'option.Single',15),(17,9,'option.Divorced',16),(18,9,'option.Widow',17),(19,10,'option.PovertyStatus.Band1',1),(20,10,'option.PovertyStatus.Band2',19),(21,10,'option.PovertyStatus.Band3',20),(22,2,'option.House',1),(23,2,'option.Television',22),(24,2,'option.Gold',23),(25,3,'option.Agriculture',1),(26,3,'option.Manufacturing',25),(27,3,'option.HousingImprovement',26),(28,4,'option.Male',1),(29,4,'option.Female',28),(30,5,'option.Yes',1),(31,5,'option.No',30);
-/*!40000 ALTER TABLE `m_code_value` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_currency`
---
-
-DROP TABLE IF EXISTS `m_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_currency`
---
-
-LOCK TABLES `m_currency` WRITE;
-/*!40000 ALTER TABLE `m_currency` DISABLE KEYS */;
-INSERT INTO `m_currency` VALUES (1,'AED',2,NULL,'UAE Dirham','currency.AED'),(2,'AFN',2,NULL,'Afghanistan Afghani','currency.AFN'),(3,'ALL',2,NULL,'Albanian Lek','currency.ALL'),(4,'AMD',2,NULL,'Armenian Dram','currency.AMD'),(5,'ANG',2,NULL,'Netherlands Antillian Guilder','currency.ANG'),(6,'AOA',2,NULL,'Angolan Kwanza','currency.AOA'),(7,'ARS',2,'$','Argentine Peso','currency.ARS'),(8,'AUD',2,'A$','Australian Dollar','currency.AUD'),(9,'AWG',2,NULL,'Aruban Guilder','currency.AWG'),(10,'AZM',2,NULL,'Azerbaijanian Manat','currency.AZM'),(11,'BAM',2,NULL,'Bosnia and Herzegovina Convertible Marks','currency.BAM'),(12,'BBD',2,NULL,'Barbados Dollar','currency.BBD'),(13,'BDT',2,NULL,'Bangladesh Taka','currency.BDT'),(14,'BGN',2,NULL,'Bulgarian Lev','currency.BGN'),(15,'BHD',3,NULL,'Bahraini Dinar','currency.BHD'),(16,'BIF',0,NULL,'Burundi Franc','currency.BIF'),(17,'BMD',2,NULL,'Bermudian Dollar','currency.BMD'),(18,'BND',2,'B$','Brunei Dollar','currency.BND'),(19,'BOB',2,'Bs.','Bolivian
  Boliviano','currency.BOB'),(20,'BRL',2,'R$','Brazilian Real','currency.BRL'),(21,'BSD',2,NULL,'Bahamian Dollar','currency.BSD'),(22,'BTN',2,NULL,'Bhutan Ngultrum','currency.BTN'),(23,'BWP',2,NULL,'Botswana Pula','currency.BWP'),(24,'BYR',0,NULL,'Belarussian Ruble','currency.BYR'),(25,'BZD',2,'BZ$','Belize Dollar','currency.BZD'),(26,'CAD',2,NULL,'Canadian Dollar','currency.CAD'),(27,'CDF',2,NULL,'Franc Congolais','currency.CDF'),(28,'CHF',2,NULL,'Swiss Franc','currency.CHF'),(29,'CLP',0,'$','Chilean Peso','currency.CLP'),(30,'CNY',2,NULL,'Chinese Yuan Renminbi','currency.CNY'),(31,'COP',2,'$','Colombian Peso','currency.COP'),(32,'CRC',2,'₡','Costa Rican Colon','currency.CRC'),(33,'CSD',2,NULL,'Serbian Dinar','currency.CSD'),(34,'CUP',2,'$MN','Cuban Peso','currency.CUP'),(35,'CVE',2,NULL,'Cape Verde Escudo','currency.CVE'),(36,'CYP',2,NULL,'Cyprus Pound','currency.CYP'),(37,'CZK',2,NULL,'Czech Koruna','currency.CZK'),(38,'DJF',0,NULL,'Djibouti Franc','currency.DJF'),(39,'DKK',2,NU
 LL,'Danish Krone','currency.DKK'),(40,'DOP',2,'RD$','Dominican Peso','currency.DOP'),(41,'DZD',2,NULL,'Algerian Dinar','currency.DZD'),(42,'EEK',2,NULL,'Estonian Kroon','currency.EEK'),(43,'EGP',2,NULL,'Egyptian Pound','currency.EGP'),(44,'ERN',2,NULL,'Eritrea Nafka','currency.ERN'),(45,'ETB',2,NULL,'Ethiopian Birr','currency.ETB'),(46,'EUR',2,'€','Euro','currency.EUR'),(47,'FJD',2,NULL,'Fiji Dollar','currency.FJD'),(48,'FKP',2,NULL,'Falkland Islands Pound','currency.FKP'),(49,'GBP',2,NULL,'Pound Sterling','currency.GBP'),(50,'GEL',2,NULL,'Georgian Lari','currency.GEL'),(51,'GHC',2,'GHc','Ghana Cedi','currency.GHC'),(52,'GIP',2,NULL,'Gibraltar Pound','currency.GIP'),(53,'GMD',2,NULL,'Gambian Dalasi','currency.GMD'),(54,'GNF',0,NULL,'Guinea Franc','currency.GNF'),(55,'GTQ',2,'Q','Guatemala Quetzal','currency.GTQ'),(56,'GYD',2,NULL,'Guyana Dollar','currency.GYD'),(57,'HKD',2,NULL,'Hong Kong Dollar','currency.HKD'),(58,'HNL',2,'L','Honduras Lempira','currency.HNL'),(59,'HRK',2,NULL,'
 Croatian Kuna','currency.HRK'),(60,'HTG',2,'G','Haiti Gourde','currency.HTG'),(61,'HUF',2,NULL,'Hungarian Forint','currency.HUF'),(62,'IDR',2,NULL,'Indonesian Rupiah','currency.IDR'),(63,'ILS',2,NULL,'New Israeli Shekel','currency.ILS'),(64,'INR',2,'₹','Indian Rupee','currency.INR'),(65,'IQD',3,NULL,'Iraqi Dinar','currency.IQD'),(66,'IRR',2,NULL,'Iranian Rial','currency.IRR'),(67,'ISK',0,NULL,'Iceland Krona','currency.ISK'),(68,'JMD',2,NULL,'Jamaican Dollar','currency.JMD'),(69,'JOD',3,NULL,'Jordanian Dinar','currency.JOD'),(70,'JPY',0,NULL,'Japanese Yen','currency.JPY'),(71,'KES',2,'KSh','Kenyan Shilling','currency.KES'),(72,'KGS',2,NULL,'Kyrgyzstan Som','currency.KGS'),(73,'KHR',2,NULL,'Cambodia Riel','currency.KHR'),(74,'KMF',0,NULL,'Comoro Franc','currency.KMF'),(75,'KPW',2,NULL,'North Korean Won','currency.KPW'),(76,'KRW',0,NULL,'Korean Won','currency.KRW'),(77,'KWD',3,NULL,'Kuwaiti Dinar','currency.KWD'),(78,'KYD',2,NULL,'Cayman Islands Dollar','currency.KYD'),(79,'KZT',2,NU
 LL,'Kazakhstan Tenge','currency.KZT'),(80,'LAK',2,NULL,'Lao Kip','currency.LAK'),(81,'LBP',2,'L£','Lebanese Pound','currency.LBP'),(82,'LKR',2,NULL,'Sri Lanka Rupee','currency.LKR'),(83,'LRD',2,NULL,'Liberian Dollar','currency.LRD'),(84,'LSL',2,NULL,'Lesotho Loti','currency.LSL'),(85,'LTL',2,NULL,'Lithuanian Litas','currency.LTL'),(86,'LVL',2,NULL,'Latvian Lats','currency.LVL'),(87,'LYD',3,NULL,'Libyan Dinar','currency.LYD'),(88,'MAD',2,NULL,'Moroccan Dirham','currency.MAD'),(89,'MDL',2,NULL,'Moldovan Leu','currency.MDL'),(90,'MGA',2,NULL,'Malagasy Ariary','currency.MGA'),(91,'MKD',2,NULL,'Macedonian Denar','currency.MKD'),(92,'MMK',2,'K','Myanmar Kyat','currency.MMK'),(93,'MNT',2,NULL,'Mongolian Tugrik','currency.MNT'),(94,'MOP',2,NULL,'Macau Pataca','currency.MOP'),(95,'MRO',2,NULL,'Mauritania Ouguiya','currency.MRO'),(96,'MTL',2,NULL,'Maltese Lira','currency.MTL'),(97,'MUR',2,NULL,'Mauritius Rupee','currency.MUR'),(98,'MVR',2,NULL,'Maldives Rufiyaa','currency.MVR'),(99,'MWK',2,N
 ULL,'Malawi Kwacha','currency.MWK'),(100,'MXN',2,'$','Mexican Peso','currency.MXN'),(101,'MYR',2,NULL,'Malaysian Ringgit','currency.MYR'),(102,'MZM',2,NULL,'Mozambique Metical','currency.MZM'),(103,'NAD',2,NULL,'Namibia Dollar','currency.NAD'),(104,'NGN',2,NULL,'Nigerian Naira','currency.NGN'),(105,'NIO',2,'C$','Nicaragua Cordoba Oro','currency.NIO'),(106,'NOK',2,NULL,'Norwegian Krone','currency.NOK'),(107,'NPR',2,NULL,'Nepalese Rupee','currency.NPR'),(108,'NZD',2,NULL,'New Zealand Dollar','currency.NZD'),(109,'OMR',3,NULL,'Rial Omani','currency.OMR'),(110,'PAB',2,'B/.','Panama Balboa','currency.PAB'),(111,'PEN',2,'S/.','Peruvian Nuevo Sol','currency.PEN'),(112,'PGK',2,NULL,'Papua New Guinea Kina','currency.PGK'),(113,'PHP',2,NULL,'Philippine Peso','currency.PHP'),(114,'PKR',2,NULL,'Pakistan Rupee','currency.PKR'),(115,'PLN',2,NULL,'Polish Zloty','currency.PLN'),(116,'PYG',0,'₲','Paraguayan Guarani','currency.PYG'),(117,'QAR',2,NULL,'Qatari Rial','currency.QAR'),(118,'RON',2,NULL,
 'Romanian Leu','currency.RON'),(119,'RUB',2,NULL,'Russian Ruble','currency.RUB'),(120,'RWF',0,NULL,'Rwanda Franc','currency.RWF'),(121,'SAR',2,NULL,'Saudi Riyal','currency.SAR'),(122,'SBD',2,NULL,'Solomon Islands Dollar','currency.SBD'),(123,'SCR',2,NULL,'Seychelles Rupee','currency.SCR'),(124,'SDD',2,NULL,'Sudanese Dinar','currency.SDD'),(125,'SEK',2,NULL,'Swedish Krona','currency.SEK'),(126,'SGD',2,NULL,'Singapore Dollar','currency.SGD'),(127,'SHP',2,NULL,'St Helena Pound','currency.SHP'),(128,'SIT',2,NULL,'Slovenian Tolar','currency.SIT'),(129,'SKK',2,NULL,'Slovak Koruna','currency.SKK'),(130,'SLL',2,NULL,'Sierra Leone Leone','currency.SLL'),(131,'SOS',2,NULL,'Somali Shilling','currency.SOS'),(132,'SRD',2,NULL,'Surinam Dollar','currency.SRD'),(133,'STD',2,NULL,'Sao Tome and Principe Dobra','currency.STD'),(134,'SVC',2,NULL,'El Salvador Colon','currency.SVC'),(135,'SYP',2,NULL,'Syrian Pound','currency.SYP'),(136,'SZL',2,NULL,'Swaziland Lilangeni','currency.SZL'),(137,'THB',2,NULL,
 'Thai Baht','currency.THB'),(138,'TJS',2,NULL,'Tajik Somoni','currency.TJS'),(139,'TMM',2,NULL,'Turkmenistan Manat','currency.TMM'),(140,'TND',3,'DT','Tunisian Dinar','currency.TND'),(141,'TOP',2,NULL,'Tonga Pa\'anga','currency.TOP'),(142,'TRY',2,NULL,'Turkish Lira','currency.TRY'),(143,'TTD',2,NULL,'Trinidad and Tobago Dollar','currency.TTD'),(144,'TWD',2,NULL,'New Taiwan Dollar','currency.TWD'),(145,'TZS',2,NULL,'Tanzanian Shilling','currency.TZS'),(146,'UAH',2,NULL,'Ukraine Hryvnia','currency.UAH'),(147,'UGX',2,'USh','Uganda Shilling','currency.UGX'),(148,'USD',2,'$','US Dollar','currency.USD'),(149,'UYU',2,'$U','Peso Uruguayo','currency.UYU'),(150,'UZS',2,NULL,'Uzbekistan Sum','currency.UZS'),(151,'VEB',2,'Bs.F.','Venezuelan Bolivar','currency.VEB'),(152,'VND',2,NULL,'Vietnamese Dong','currency.VND'),(153,'VUV',0,NULL,'Vanuatu Vatu','currency.VUV'),(154,'WST',2,NULL,'Samoa Tala','currency.WST'),(155,'XAF',0,NULL,'CFA Franc BEAC','currency.XAF'),(156,'XCD',2,NULL,'East Caribbean 
 Dollar','currency.XCD'),(157,'XDR',5,NULL,'SDR (Special Drawing Rights)','currency.XDR'),(158,'XOF',0,'CFA','CFA Franc BCEAO','currency.XOF'),(159,'XPF',0,NULL,'CFP Franc','currency.XPF'),(160,'YER',2,NULL,'Yemeni Rial','currency.YER'),(161,'ZAR',2,'R','South African Rand','currency.ZAR'),(162,'ZMK',2,NULL,'Zambian Kwacha','currency.ZMK'),(163,'ZWD',2,NULL,'Zimbabwe Dollar','currency.ZWD');
-/*!40000 ALTER TABLE `m_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_document`
---
-
-DROP TABLE IF EXISTS `m_document`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_document` (
-  `id` int(20) NOT NULL AUTO_INCREMENT,
-  `parent_entity_type` varchar(50) NOT NULL,
-  `parent_entity_id` int(20) NOT NULL DEFAULT '0',
-  `name` varchar(250) NOT NULL,
-  `file_name` varchar(250) NOT NULL,
-  `size` int(20) DEFAULT '0',
-  `type` varchar(50) DEFAULT NULL,
-  `description` varchar(1000) DEFAULT NULL,
-  `location` varchar(500) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_document`
---
-
-LOCK TABLES `m_document` WRITE;
-/*!40000 ALTER TABLE `m_document` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_document` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_fund`
---
-
-DROP TABLE IF EXISTS `m_fund`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_fund` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(255) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `fund_name_org` (`name`),
-  UNIQUE KEY `fund_externalid_org` (`external_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_fund`
---
-
-LOCK TABLES `m_fund` WRITE;
-/*!40000 ALTER TABLE `m_fund` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_fund` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group`
---
-
-DROP TABLE IF EXISTS `m_group`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `staff_id` bigint(20) DEFAULT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `level_Id` int(11) NOT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `name` varchar(100) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`,`level_Id`),
-  UNIQUE KEY `external_id` (`external_id`,`level_Id`),
-  KEY `office_id` (`office_id`),
-  KEY `staff_id` (`staff_id`),
-  KEY `Parent_Id_reference` (`parent_id`),
-  KEY `FK_m_group_level` (`level_Id`),
-  CONSTRAINT `m_group_ibfk_1` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`),
-  CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group`
---
-
-LOCK TABLES `m_group` WRITE;
-/*!40000 ALTER TABLE `m_group` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group_client`
---
-
-DROP TABLE IF EXISTS `m_group_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group_client` (
-  `group_id` bigint(20) NOT NULL,
-  `client_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`group_id`,`client_id`),
-  KEY `client_id` (`client_id`),
-  CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group_client`
---
-
-LOCK TABLES `m_group_client` WRITE;
-/*!40000 ALTER TABLE `m_group_client` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group_level`
---
-
-DROP TABLE IF EXISTS `m_group_level`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group_level` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `parent_id` int(11) DEFAULT NULL,
-  `super_parent` tinyint(1) NOT NULL,
-  `level_name` varchar(100) NOT NULL,
-  `recursable` tinyint(1) NOT NULL,
-  `can_have_clients` tinyint(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `Parent_levelId_reference` (`parent_id`),
-  CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group_level`
---
-
-LOCK TABLES `m_group_level` WRITE;
-/*!40000 ALTER TABLE `m_group_level` DISABLE KEYS */;
-INSERT INTO `m_group_level` VALUES (1,NULL,1,'Center',1,0),(2,1,0,'Group',0,1);
-/*!40000 ALTER TABLE `m_group_level` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_guarantor`
---
-
-DROP TABLE IF EXISTS `m_guarantor`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_guarantor` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `client_reln_cv_id` int(11) DEFAULT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `dob` date DEFAULT NULL,
-  `address_line_1` varchar(500) DEFAULT NULL,
-  `address_line_2` varchar(500) DEFAULT NULL,
-  `city` varchar(50) DEFAULT NULL,
-  `state` varchar(50) DEFAULT NULL,
-  `country` varchar(50) DEFAULT NULL,
-  `zip` varchar(20) DEFAULT NULL,
-  `house_phone_number` varchar(20) DEFAULT NULL,
-  `mobile_number` varchar(20) DEFAULT NULL,
-  `comment` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_guarantor_m_loan` (`loan_id`),
-  KEY `FK_m_guarantor_m_code_value` (`client_reln_cv_id`),
-  CONSTRAINT `FK_m_guarantor_m_code_value` FOREIGN KEY (`client_reln_cv_id`) REFERENCES `m_code_value` (`id`),
-  CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_guarantor`
---
-
-LOCK TABLES `m_guarantor` WRITE;
-/*!40000 ALTER TABLE `m_guarantor` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_guarantor` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan`
---
-
-DROP TABLE IF EXISTS `m_loan`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `fund_id` bigint(20) DEFAULT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `loanpurpose_cv_id` int(11) DEFAULT NULL,
-  `loan_status_id` smallint(5) NOT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) NOT NULL,
-  `min_principal_amount` decimal(19,6) NOT NULL,
-  `max_principal_amount` decimal(19,6) NOT NULL,
-  `arrearstolerance_amount` decimal(19,6) DEFAULT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `interest_period_frequency_enum` smallint(5) NOT NULL,
-  `annual_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `interest_method_enum` smallint(5) NOT NULL,
-  `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1',
-  `term_frequency` smallint(5) NOT NULL DEFAULT '0',
-  `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2',
-  `repay_every` smallint(5) NOT NULL,
-  `repayment_period_frequency_enum` smallint(5) NOT NULL,
-  `number_of_repayments` smallint(5) NOT NULL,
-  `amortization_method_enum` smallint(5) NOT NULL,
-  `submittedon_date` date DEFAULT NULL,
-  `submittedon_userid` bigint(20) DEFAULT NULL,
-  `approvedon_date` date DEFAULT NULL,
-  `approvedon_userid` bigint(20) DEFAULT NULL,
-  `expected_disbursedon_date` date DEFAULT NULL,
-  `expected_firstrepaymenton_date` date DEFAULT NULL,
-  `interest_calculated_from_date` date DEFAULT NULL,
-  `disbursedon_date` date DEFAULT NULL,
-  `disbursedon_userid` bigint(20) DEFAULT NULL,
-  `expected_maturedon_date` date DEFAULT NULL,
-  `maturedon_date` date DEFAULT NULL,
-  `closedon_date` date DEFAULT NULL,
-  `closedon_userid` bigint(20) DEFAULT NULL,
-  `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL,
-  `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `rejectedon_date` date DEFAULT NULL,
-  `rejectedon_userid` bigint(20) DEFAULT NULL,
-  `rescheduledon_date` date DEFAULT NULL,
-  `withdrawnon_date` date DEFAULT NULL,
-  `withdrawnon_userid` bigint(20) DEFAULT NULL,
-  `writtenoffon_date` date DEFAULT NULL,
-  `loan_transaction_strategy_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`),
-  KEY `FKB6F935D87179A0CB` (`client_id`),
-  KEY `FKB6F935D8C8D4B434` (`product_id`),
-  KEY `FK7C885877240145` (`fund_id`),
-  KEY `FK_loan_ltp_strategy` (`loan_transaction_strategy_id`),
-  KEY `FK_m_loan_m_staff` (`loan_officer_id`),
-  KEY `group_id` (`group_id`),
-  KEY `FK_m_loanpurpose_codevalue` (`loanpurpose_cv_id`),
-  KEY `FK_submittedon_userid` (`submittedon_userid`),
-  KEY `FK_approvedon_userid` (`approvedon_userid`),
-  KEY `FK_rejectedon_userid` (`rejectedon_userid`),
-  KEY `FK_withdrawnon_userid` (`withdrawnon_userid`),
-  KEY `FK_disbursedon_userid` (`disbursedon_userid`),
-  KEY `FK_closedon_userid` (`closedon_userid`),
-  CONSTRAINT `FK7C885877240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`),
-  CONSTRAINT `FKB6F935D87179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FKB6F935D8C8D4B434` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`),
-  CONSTRAINT `FK_approvedon_userid` FOREIGN KEY (`approvedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_closedon_userid` FOREIGN KEY (`closedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_disbursedon_userid` FOREIGN KEY (`disbursedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_loan_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`),
-  CONSTRAINT `FK_m_loanpurpose_codevalue` FOREIGN KEY (`loanpurpose_cv_id`) REFERENCES `m_code_value` (`id`),
-  CONSTRAINT `FK_m_loan_m_staff` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`),
-  CONSTRAINT `FK_rejectedon_userid` FOREIGN KEY (`rejectedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan`
---
-
-LOCK TABLES `m_loan` WRITE;
-/*!40000 ALTER TABLE `m_loan` DISABLE KEYS */;
-INSERT INTO `m_loan` VALUES (1,'000000001',NULL,1,NULL,1,NULL,2,25,200,'UGX',2,'1000000.000000','0.000000','1000000000000.000000',NULL,'24.000000',3,'24.000000',1,1,12,2,1,2,12,1,'2011-04-01',1,'2011-04-01',1,'2011-04-01',NULL,NULL,NULL,NULL,'2012-04-01','2012-04-01',NULL,NULL,'0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000',NULL,NULL,NULL,NULL,NULL,NULL,2);
-/*!40000 ALTER TABLE `m_loan` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_arrears_aging`
---
-
-DROP TABLE IF EXISTS `m_loan_arrears_aging`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_arrears_aging` (
-  `loan_id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `overdue_since_date_derived` date DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_arrears_aging`
---
-
-LOCK TABLES `m_loan_arrears_aging` WRITE;
-/*!40000 ALTER TABLE `m_loan_arrears_aging` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_arrears_aging` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_charge`
---
-
-DROP TABLE IF EXISTS `m_loan_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `charge_id` bigint(20) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `charge_time_enum` smallint(5) NOT NULL,
-  `due_for_collection_as_of_date` date DEFAULT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `calculation_percentage` decimal(19,6) DEFAULT NULL,
-  `calculation_on_amount` decimal(19,6) DEFAULT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `amount_paid_derived` decimal(19,6) DEFAULT NULL,
-  `amount_waived_derived` decimal(19,6) DEFAULT NULL,
-  `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0',
-  `waived` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  KEY `charge_id` (`charge_id`),
-  KEY `m_loan_charge_ibfk_2` (`loan_id`),
-  CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`),
-  CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_charge`
---
-
-LOCK TABLES `m_loan_charge` WRITE;
-/*!40000 ALTER TABLE `m_loan_charge` DISABLE KEYS */;
-INSERT INTO `m_loan_charge` VALUES (1,1,1,0,2,'2011-06-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(2,1,1,0,2,'2011-12-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(3,1,1,0,2,'2011-09-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(4,1,1,0,2,'2011-08-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(5,1,1,0,2,'2011-11-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(6,1,1,0,2,'2011-05-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(7,1,1,0,2,'2012-03-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(8,1,1,0,2,'2012-02-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(9,1,1,0,2,'2012-04-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(10,1,1,0,2,'2012-01-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(11,1,1,0,2,'2011-10-01',1,NULL,NULL,'1500.000000','0.000000'
 ,NULL,NULL,'1500.000000',0,0),(12,1,1,0,2,'2011-07-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0);
-/*!40000 ALTER TABLE `m_loan_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_collateral`
---
-
-DROP TABLE IF EXISTS `m_loan_collateral`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_collateral` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `type_cv_id` int(11) NOT NULL,
-  `value` decimal(19,6) DEFAULT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_collateral_m_loan` (`loan_id`),
-  KEY `FK_collateral_code_value` (`type_cv_id`),
-  CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_collateral`
---
-
-LOCK TABLES `m_loan_collateral` WRITE;
-/*!40000 ALTER TABLE `m_loan_collateral` DISABLE KEYS */;
-INSERT INTO `m_loan_collateral` VALUES (1,1,23,NULL,' small description.');
-/*!40000 ALTER TABLE `m_loan_collateral` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_officer_assignment_history`
---
-
-DROP TABLE IF EXISTS `m_loan_officer_assignment_history`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_officer_assignment_history` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`),
-  KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_officer_assignment_history`
---
-
-LOCK TABLES `m_loan_officer_assignment_history` WRITE;
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` DISABLE KEYS */;
-INSERT INTO `m_loan_officer_assignment_history` VALUES (1,1,2,'2011-04-01',NULL,1,'2013-04-05 12:42:09','2013-04-05 12:42:09',1);
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_repayment_schedule`
---
-
-DROP TABLE IF EXISTS `m_loan_repayment_schedule`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_repayment_schedule` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `fromdate` date DEFAULT NULL,
-  `duedate` date NOT NULL,
-  `installment` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) DEFAULT NULL,
-  `principal_completed_derived` decimal(19,6) DEFAULT NULL,
-  `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `interest_amount` decimal(19,6) DEFAULT NULL,
-  `interest_completed_derived` decimal(19,6) DEFAULT NULL,
-  `interest_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_amount` decimal(19,6) DEFAULT NULL,
-  `fee_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_amount` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `completed_derived` bit(1) NOT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `interest_waived_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK488B92AA40BE0710` (`loan_id`),
-  CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_repayment_schedule`
---
-
-LOCK TABLES `m_loan_repayment_schedule` WRITE;
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` DISABLE KEYS */;
-INSERT INTO `m_loan_repayment_schedule` VALUES (1,1,'2011-04-01','2011-05-01',1,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(2,1,'2011-05-01','2011-06-01',2,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(3,1,'2011-06-01','2011-07-01',3,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(4,1,'2011-07-01','2011-08-01',4,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(5,1,'2011-08-01','2011-09-01',5,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,N
 ULL),(6,1,'2011-09-01','2011-10-01',6,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(7,1,'2011-10-01','2011-11-01',7,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(8,1,'2011-11-01','2011-12-01',8,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(9,1,'2011-12-01','2012-01-01',9,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(10,1,'2012-01-01','2012-02-01',10,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(11,1,'2012-02-01','2012-03-01',11,
 '83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(12,1,'2012-03-01','2012-04-01',12,'83333.370000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL);
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_transaction`
---
-
-DROP TABLE IF EXISTS `m_loan_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `is_reversed` tinyint(1) NOT NULL,
-  `transaction_type_enum` smallint(5) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `principal_portion_derived` decimal(19,6) DEFAULT NULL,
-  `interest_portion_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKCFCEA42640BE0710` (`loan_id`),
-  CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_transaction`
---
-
-LOCK TABLES `m_loan_transaction` WRITE;
-/*!40000 ALTER TABLE `m_loan_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_note`
---
-
-DROP TABLE IF EXISTS `m_note`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_note` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `loan_id` bigint(20) DEFAULT NULL,
-  `loan_transaction_id` bigint(20) DEFAULT NULL,
-  `note_type_enum` smallint(5) NOT NULL,
-  `note` varchar(1000) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK7C9708924D26803` (`loan_transaction_id`),
-  KEY `FK7C97089541F0A56` (`createdby_id`),
-  KEY `FK7C970897179A0CB` (`client_id`),
-  KEY `FK_m_note_m_group` (`group_id`),
-  KEY `FK7C970898F889C3F` (`lastmodifiedby_id`),
-  KEY `FK7C9708940BE0710` (`loan_id`),
-  CONSTRAINT `FK7C9708924D26803` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`),
-  CONSTRAINT `FK7C9708940BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK7C97089541F0A56` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_note`
---
-
-LOCK TABLES `m_note` WRITE;
-/*!40000 ALTER TABLE `m_note` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_note` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office`
---
-
-DROP TABLE IF EXISTS `m_office`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `opening_date` date NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name_org` (`name`),
-  UNIQUE KEY `externalid_org` (`external_id`),
-  KEY `FK2291C477E2551DCC` (`parent_id`),
-  CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office`
---
-
-LOCK TABLES `m_office` WRITE;
-/*!40000 ALTER TABLE `m_office` DISABLE KEYS */;
-INSERT INTO `m_office` VALUES (1,NULL,'.','1','CEDA Microfinance Ltd.','2009-01-01'),(2,1,'.2.','2','Uganda (Kampala)','2009-01-01');
-/*!40000 ALTER TABLE `m_office` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office_transaction`
---
-
-DROP TABLE IF EXISTS `m_office_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `from_office_id` bigint(20) DEFAULT NULL,
-  `to_office_id` bigint(20) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` int(11) NOT NULL,
-  `transaction_amount` decimal(19,6) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK1E37728B93C6C1B6` (`to_office_id`),
-  KEY `FK1E37728B783C5C25` (`from_office_id`),
-  CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office_transaction`
---
-
-LOCK TABLES `m_office_transaction` WRITE;
-/*!40000 ALTER TABLE `m_office_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_office_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_organisation_currency`
---
-
-DROP TABLE IF EXISTS `m_organisation_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_organisation_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `name` varchar(50) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_organisation_currency`
---
-
-LOCK TABLES `m_organisation_currency` WRITE;
-/*!40000 ALTER TABLE `m_organisation_currency` DISABLE KEYS */;
-INSERT INTO `m_organisation_currency` VALUES (22,'UGX',2,'Uganda Shilling','USh','currency.UGX');
-/*!40000 ALTER TABLE `m_organisation_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_permission`
---
-
-DROP TABLE IF EXISTS `m_permission`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_permission` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `grouping` varchar(45) DEFAULT NULL,
-  `code` varchar(100) NOT NULL,
-  `entity_name` varchar(100) DEFAULT NULL,
-  `action_name` varchar(100) DEFAULT NULL,
-  `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=308 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_permission`
---
-
-LOCK TABLES `m_permission` WRITE;
-/*!40000 ALTER TABLE `m_permission` DISABLE KEYS */;
-INSERT INTO `m_permission` VALUES (1,'special','ALL_FUNCTIONS',NULL,NULL,0),(2,'special','ALL_FUNCTIONS_READ',NULL,NULL,0),(3,'special','CHECKER_SUPER_USER',NULL,NULL,0),(4,'special','REPORTING_SUPER_USER',NULL,NULL,0),(5,'authorisation','READ_PERMISSION','PERMISSION','READ',0),(6,'authorisation','PERMISSIONS_ROLE','ROLE','PERMISSIONS',0),(7,'authorisation','CREATE_ROLE','ROLE','CREATE',0),(8,'authorisation','CREATE_ROLE_CHECKER','ROLE','CREATE',0),(9,'authorisation','READ_ROLE','ROLE','READ',0),(10,'authorisation','UPDATE_ROLE','ROLE','UPDATE',0),(11,'authorisation','UPDATE_ROLE_CHECKER','ROLE','UPDATE',0),(12,'authorisation','DELETE_ROLE','ROLE','DELETE',0),(13,'authorisation','DELETE_ROLE_CHECKER','ROLE','DELETE',0),(14,'authorisation','CREATE_USER','USER','CREATE',0),(15,'authorisation','CREATE_USER_CHECKER','USER','CREATE',0),(16,'authorisation','READ_USER','USER','READ',0),(17,'authorisation','UPDATE_USER','USER','UPDATE',0),(18,'authorisation','UPDATE_USER_CHECKER','USER','UP
 DATE',0),(19,'authorisation','DELETE_USER','USER','DELETE',0),(20,'authorisation','DELETE_USER_CHECKER','USER','DELETE',0),(21,'configuration','READ_CONFIGURATION','CONFIGURATION','READ',0),(22,'configuration','UPDATE_CONFIGURATION','CONFIGURATION','UPDATE',0),(23,'configuration','UPDATE_CONFIGURATION_CHECKER','CONFIGURATION','UPDATE',0),(24,'configuration','READ_CODE','CODE','READ',0),(25,'configuration','CREATE_CODE','CODE','CREATE',0),(26,'configuration','CREATE_CODE_CHECKER','CODE','CREATE',0),(27,'configuration','UPDATE_CODE','CODE','UPDATE',0),(28,'configuration','UPDATE_CODE_CHECKER','CODE','UPDATE',0),(29,'configuration','DELETE_CODE','CODE','DELETE',0),(30,'configuration','DELETE_CODE_CHECKER','CODE','DELETE',0),(31,'configuration','READ_CODEVALUE','CODEVALUE','READ',0),(32,'configuration','CREATE_CODEVALUE','CODEVALUE','CREATE',0),(33,'configuration','CREATE_CODEVALUE_CHECKER','CODEVALUE','CREATE',0),(34,'configuration','UPDATE_CODEVALUE','CODEVALUE','UPDATE',0),(35,'confi
 guration','UPDATE_CODEVALUE_CHECKER','CODEVALUE','UPDATE',0),(36,'configuration','DELETE_CODEVALUE','CODEVALUE','DELETE',0),(37,'configuration','DELETE_CODEVALUE_CHECKER','CODEVALUE','DELETE',0),(38,'configuration','READ_CURRENCY','CURRENCY','READ',0),(39,'configuration','UPDATE_CURRENCY','CURRENCY','UPDATE',0),(40,'configuration','UPDATE_CURRENCY_CHECKER','CURRENCY','UPDATE',0),(41,'configuration','UPDATE_PERMISSION','PERMISSION','UPDATE',0),(42,'configuration','UPDATE_PERMISSION_CHECKER','PERMISSION','UPDATE',0),(43,'configuration','READ_DATATABLE','DATATABLE','READ',0),(44,'configuration','REGISTER_DATATABLE','DATATABLE','REGISTER',0),(45,'configuration','REGISTER_DATATABLE_CHECKER','DATATABLE','REGISTER',0),(46,'configuration','DEREGISTER_DATATABLE','DATATABLE','DEREGISTER',0),(47,'configuration','DEREGISTER_DATATABLE_CHECKER','DATATABLE','DEREGISTER',0),(48,'configuration','READ_AUDIT','AUDIT','READ',0),(49,'configuration','CREATE_CALENDAR','CALENDAR','CREATE',0),(50,'configura
 tion','READ_CALENDAR','CALENDAR','READ',0),(51,'configuration','UPDATE_CALENDAR','CALENDAR','UPDATE',0),(52,'configuration','DELETE_CALENDAR','CALENDAR','DELETE',0),(53,'configuration','CREATE_CALENDAR_CHECKER','CALENDAR','CREATE',0),(54,'configuration','UPDATE_CALENDAR_CHECKER','CALENDAR','UPDATE',0),(55,'configuration','DELETE_CALENDAR_CHECKER','CALENDAR','DELETE',0),(57,'organisation','READ_CHARGE','CHARGE','READ',0),(58,'organisation','CREATE_CHARGE','CHARGE','CREATE',0),(59,'organisation','CREATE_CHARGE_CHECKER','CHARGE','CREATE',0),(60,'organisation','UPDATE_CHARGE','CHARGE','UPDATE',0),(61,'organisation','UPDATE_CHARGE_CHECKER','CHARGE','UPDATE',0),(62,'organisation','DELETE_CHARGE','CHARGE','DELETE',0),(63,'organisation','DELETE_CHARGE_CHECKER','CHARGE','DELETE',0),(64,'organisation','READ_FUND','FUND','READ',0),(65,'organisation','CREATE_FUND','FUND','CREATE',0),(66,'organisation','CREATE_FUND_CHECKER','FUND','CREATE',0),(67,'organisation','UPDATE_FUND','FUND','UPDATE',0),(
 68,'organisation','UPDATE_FUND_CHECKER','FUND','UPDATE',0),(69,'organisation','DELETE_FUND','FUND','DELETE',0),(70,'organisation','DELETE_FUND_CHECKER','FUND','DELETE',0),(71,'organisation','READ_LOANPRODUCT','LOANPRODUCT','READ',0),(72,'organisation','CREATE_LOANPRODUCT','LOANPRODUCT','CREATE',0),(73,'organisation','CREATE_LOANPRODUCT_CHECKER','LOANPRODUCT','CREATE',0),(74,'organisation','UPDATE_LOANPRODUCT','LOANPRODUCT','UPDATE',0),(75,'organisation','UPDATE_LOANPRODUCT_CHECKER','LOANPRODUCT','UPDATE',0),(76,'organisation','DELETE_LOANPRODUCT','LOANPRODUCT','DELETE',0),(77,'organisation','DELETE_LOANPRODUCT_CHECKER','LOANPRODUCT','DELETE',0),(78,'organisation','READ_OFFICE','OFFICE','READ',0),(79,'organisation','CREATE_OFFICE','OFFICE','CREATE',0),(80,'organisation','CREATE_OFFICE_CHECKER','OFFICE','CREATE',0),(81,'organisation','UPDATE_OFFICE','OFFICE','UPDATE',0),(82,'organisation','UPDATE_OFFICE_CHECKER','OFFICE','UPDATE',0),(83,'organisation','READ_OFFICETRANSACTION','OFFICET
 RANSACTION','READ',0),(84,'organisation','DELETE_OFFICE_CHECKER','OFFICE','DELETE',0),(85,'organisation','CREATE_OFFICETRANSACTION','OFFICETRANSACTION','CREATE',0),(86,'organisation','CREATE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','CREATE',0),(87,'organisation','DELETE_OFFICETRANSACTION','OFFICETRANSACTION','DELETE',0),(88,'organisation','DELETE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','DELETE',0),(89,'organisation','READ_STAFF','STAFF','READ',0),(90,'organisation','CREATE_STAFF','STAFF','CREATE',0),(91,'organisation','CREATE_STAFF_CHECKER','STAFF','CREATE',0),(92,'organisation','UPDATE_STAFF','STAFF','UPDATE',0),(93,'organisation','UPDATE_STAFF_CHECKER','STAFF','UPDATE',0),(94,'organisation','DELETE_STAFF','STAFF','DELETE',0),(95,'organisation','DELETE_STAFF_CHECKER','STAFF','DELETE',0),(96,'organisation','READ_SAVINGSPRODUCT','SAVINGSPRODUCT','READ',0),(97,'organisation','CREATE_SAVINGSPRODUCT','SAVINGSPRODUCT','CREATE',0),(98,'organisation','CREATE_SAVINGSPRODUCT_CHE
 CKER','SAVINGSPRODUCT','CREATE',0),(99,'organisation','UPDATE_SAVINGSPRODUCT','SAVINGSPRODUCT','UPDATE',0),(100,'organisation','UPDATE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','UPDATE',0),(101,'organisation','DELETE_SAVINGSPRODUCT','SAVINGSPRODUCT','DELETE',0),(102,'organisation','DELETE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','DELETE',0),(103,'portfolio','READ_LOAN','LOAN','READ',0),(104,'portfolio','CREATE_LOAN','LOAN','CREATE',0),(105,'portfolio','CREATE_LOAN_CHECKER','LOAN','CREATE',0),(106,'portfolio','UPDATE_LOAN','LOAN','UPDATE',0),(107,'portfolio','UPDATE_LOAN_CHECKER','LOAN','UPDATE',0),(108,'portfolio','DELETE_LOAN','LOAN','DELETE',0),(109,'portfolio','DELETE_LOAN_CHECKER','LOAN','DELETE',0),(110,'portfolio','READ_CLIENT','CLIENT','READ',0),(111,'portfolio','CREATE_CLIENT','CLIENT','CREATE',0),(112,'portfolio','CREATE_CLIENT_CHECKER','CLIENT','CREATE',0),(113,'portfolio','UPDATE_CLIENT','CLIENT','UPDATE',0),(114,'portfolio','UPDATE_CLIENT_CHECKER','CLIENT','UPDATE',0),(11
 5,'portfolio','DELETE_CLIENT','CLIENT','DELETE',0),(116,'portfolio','DELETE_CLIENT_CHECKER','CLIENT','DELETE',0),(117,'portfolio','READ_CLIENTIMAGE','CLIENTIMAGE','READ',0),(118,'portfolio','CREATE_CLIENTIMAGE','CLIENTIMAGE','CREATE',0),(119,'portfolio','CREATE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','CREATE',0),(120,'portfolio','DELETE_CLIENTIMAGE','CLIENTIMAGE','DELETE',0),(121,'portfolio','DELETE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','DELETE',0),(122,'portfolio','READ_CLIENTNOTE','CLIENTNOTE','READ',0),(123,'portfolio','CREATE_CLIENTNOTE','CLIENTNOTE','CREATE',0),(124,'portfolio','CREATE_CLIENTNOTE_CHECKER','CLIENTNOTE','CREATE',0),(125,'portfolio','UPDATE_CLIENTNOTE','CLIENTNOTE','UPDATE',0),(126,'portfolio','UPDATE_CLIENTNOTE_CHECKER','CLIENTNOTE','UPDATE',0),(127,'portfolio','DELETE_CLIENTNOTE','CLIENTNOTE','DELETE',0),(128,'portfolio','DELETE_CLIENTNOTE_CHECKER','CLIENTNOTE','DELETE',0),(129,'portfolio','READ_GROUPNOTE','GROUPNOTE','READ',0),(130,'portfolio','CREATE_GROUPNOTE','GROUP
 NOTE','CREATE',0),(131,'portfolio','UPDATE_GROUPNOTE','GROUPNOTE','UPDATE',0),(132,'portfolio','DELETE_GROUPNOTE','GROUPNOTE','DELETE',0),(133,'portfolio','CREATE_GROUPNOTE_CHECKER','GROUPNOTE','CREATE',0),(134,'portfolio','UPDATE_GROUPNOTE_CHECKER','GROUPNOTE','UPDATE',0),(135,'portfolio','DELETE_GROUPNOTE_CHECKER','GROUPNOTE','DELETE',0),(136,'portfolio','READ_LOANNOTE','LOANNOTE','READ',0),(137,'portfolio','CREATE_LOANNOTE','LOANNOTE','CREATE',0),(138,'portfolio','UPDATE_LOANNOTE','LOANNOTE','UPDATE',0),(139,'portfolio','DELETE_LOANNOTE','LOANNOTE','DELETE',0),(140,'portfolio','CREATE_LOANNOTE_CHECKER','LOANNOTE','CREATE',0),(141,'portfolio','UPDATE_LOANNOTE_CHECKER','LOANNOTE','UPDATE',0),(142,'portfolio','DELETE_LOANNOTE_CHECKER','LOANNOTE','DELETE',0),(143,'portfolio','READ_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','READ',0),(144,'portfolio','CREATE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','CREATE',0),(145,'portfolio','UPDATE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','UPDA
 TE',0),(146,'portfolio','DELETE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','DELETE',0),(147,'portfolio','CREATE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','CREATE',0),(148,'portfolio','UPDATE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','UPDATE',0),(149,'portfolio','DELETE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','DELETE',0),(150,'portfolio','READ_SAVINGNOTE','SAVINGNOTE','READ',0),(151,'portfolio','CREATE_SAVINGNOTE','SAVINGNOTE','CREATE',0),(152,'portfolio','UPDATE_SAVINGNOTE','SAVINGNOTE','UPDATE',0),(153,'portfolio','DELETE_SAVINGNOTE','SAVINGNOTE','DELETE',0),(154,'portfolio','CREATE_SAVINGNOTE_CHECKER','SAVINGNOTE','CREATE',0),(155,'portfolio','UPDATE_SAVINGNOTE_CHECKER','SAVINGNOTE','UPDATE',0),(156,'portfolio','DELETE_SAVINGNOTE_CHECKER','SAVINGNOTE','DELETE',0),(157,'portfolio','READ_CLIENTIDENTIFIER','CLIENTIDENTIFIER','READ',0),(158,'portfolio','CREATE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','CREATE',0),(159,'portfolio','CREATE_CLIENTIDENTIFIER_CHECKE
 R','CLIENTIDENTIFIER','CREATE',0),(160,'portfolio','UPDATE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','UPDATE',0),(161,'portfolio','UPDATE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','UPDATE',0),(162,'portfolio','DELETE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','DELETE',0),(163,'portfolio','DELETE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','DELETE',0),(164,'portfolio','READ_DOCUMENT','DOCUMENT','READ',0),(165,'portfolio','CREATE_DOCUMENT','DOCUMENT','CREATE',0),(166,'portfolio','CREATE_DOCUMENT_CHECKER','DOCUMENT','CREATE',0),(167,'portfolio','UPDATE_DOCUMENT','DOCUMENT','UPDATE',0),(168,'portfolio','UPDATE_DOCUMENT_CHECKER','DOCUMENT','UPDATE',0),(169,'portfolio','DELETE_DOCUMENT','DOCUMENT','DELETE',0),(170,'portfolio','DELETE_DOCUMENT_CHECKER','DOCUMENT','DELETE',0),(171,'portfolio','READ_GROUP','GROUP','READ',0),(172,'portfolio','CREATE_GROUP','GROUP','CREATE',0),(173,'portfolio','CREATE_GROUP_CHECKER','GROUP','CREATE',0),(174,'portfolio','UPDATE_GROUP','GROUP','UPDATE',0),(175,'portfol
 io','UPDATE_GROUP_CHECKER','GROUP','UPDATE',0),(176,'portfolio','DELETE_GROUP','GROUP','DELETE',0),(177,'portfolio','DELETE_GROUP_CHECKER','GROUP','DELETE',0),(178,'portfolio','UNASSIGNSTAFF_GROUP','GROUP','UNASSIGNSTAFF',0),(179,'portfolio','UNASSIGNSTAFF_GROUP_CHECKER','GROUP','UNASSIGNSTAFF',0),(180,'portfolio','CREATE_LOANCHARGE','LOANCHARGE','CREATE',0),(181,'portfolio','CREATE_LOANCHARGE_CHECKER','LOANCHARGE','CREATE',0),(182,'portfolio','UPDATE_LOANCHARGE','LOANCHARGE','UPDATE',0),(183,'portfolio','UPDATE_LOANCHARGE_CHECKER','LOANCHARGE','UPDATE',0),(184,'portfolio','DELETE_LOANCHARGE','LOANCHARGE','DELETE',0),(185,'portfolio','DELETE_LOANCHARGE_CHECKER','LOANCHARGE','DELETE',0),(186,'portfolio','WAIVE_LOANCHARGE','LOANCHARGE','WAIVE',0),(187,'portfolio','WAIVE_LOANCHARGE_CHECKER','LOANCHARGE','WAIVE',0),(188,'portfolio','READ_SAVINGSACCOUNT','SAVINGSACCOUNT','READ',0),(189,'portfolio','CREATE_SAVINGSACCOUNT','SAVINGSACCOUNT','CREATE',0),(190,'portfolio','CREATE_SAVINGSACCOUN
 T_CHECKER','SAVINGSACCOUNT','CREATE',0),(191,'portfolio','UPDATE_SAVINGSACCOUNT','SAVINGSACCOUNT','UPDATE',0),(192,'portfolio','UPDATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','UPDATE',0),(193,'portfolio','DELETE_SAVINGSACCOUNT','SAVINGSACCOUNT','DELETE',0),(194,'portfolio','DELETE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','DELETE',0),(195,'portfolio','READ_GUARANTOR','GUARANTOR','READ',0),(196,'portfolio','CREATE_GUARANTOR','GUARANTOR','CREATE',0),(197,'portfolio','CREATE_GUARANTOR_CHECKER','GUARANTOR','CREATE',0),(198,'portfolio','UPDATE_GUARANTOR','GUARANTOR','UPDATE',0),(199,'portfolio','UPDATE_GUARANTOR_CHECKER','GUARANTOR','UPDATE',0),(200,'portfolio','DELETE_GUARANTOR','GUARANTOR','DELETE',0),(201,'portfolio','DELETE_GUARANTOR_CHECKER','GUARANTOR','DELETE',0),(202,'portfolio','READ_COLLATERAL','COLLATERAL','READ',0),(203,'portfolio','CREATE_COLLATERAL','COLLATERAL','CREATE',0),(204,'portfolio','UPDATE_COLLATERAL','COLLATERAL','UPDATE',0),(205,'portfolio','DELETE_COLLATERAL','C
 OLLATERAL','DELETE',0),(206,'portfolio','CREATE_COLLATERAL_CHECKER','COLLATERAL','CREATE',0),(207,'portfolio','UPDATE_COLLATERAL_CHECKER','COLLATERAL','UPDATE',0),(208,'portfolio','DELETE_COLLATERAL_CHECKER','COLLATERAL','DELETE',0),(209,'transaction_loan','APPROVE_LOAN','LOAN','APPROVE',0),(210,'transaction_loan','APPROVEINPAST_LOAN','LOAN','APPROVEINPAST',0),(211,'transaction_loan','REJECT_LOAN','LOAN','REJECT',0),(212,'transaction_loan','REJECTINPAST_LOAN','LOAN','REJECTINPAST',0),(213,'transaction_loan','WITHDRAW_LOAN','LOAN','WITHDRAW',0),(214,'transaction_loan','WITHDRAWINPAST_LOAN','LOAN','WITHDRAWINPAST',0),(215,'transaction_loan','APPROVALUNDO_LOAN','LOAN','APPROVALUNDO',0),(216,'transaction_loan','DISBURSE_LOAN','LOAN','DISBURSE',0),(217,'transaction_loan','DISBURSEINPAST_LOAN','LOAN','DISBURSEINPAST',0),(218,'transaction_loan','DISBURSALUNDO_LOAN','LOAN','DISBURSALUNDO',0),(219,'transaction_loan','REPAYMENT_LOAN','LOAN','REPAYMENT',0),(220,'transaction_loan','REPAYMENTINP
 AST_LOAN','LOAN','REPAYMENTINPAST',0),(221,'transaction_loan','ADJUST_LOAN','LOAN','ADJUST',0),(222,'transaction_loan','WAIVEINTERESTPORTION_LOAN','LOAN','WAIVEINTERESTPORTION',0),(223,'transaction_loan','WRITEOFF_LOAN','LOAN','WRITEOFF',0),(224,'transaction_loan','CLOSE_LOAN','LOAN','CLOSE',0),(225,'transaction_loan','CLOSEASRESCHEDULED_LOAN','LOAN','CLOSEASRESCHEDULED',0),(226,'transaction_loan','UPDATELOANOFFICER_LOAN','LOAN','UPDATELOANOFFICER',0),(227,'transaction_loan','UPDATELOANOFFICER_LOAN_CHECKER','LOAN','UPDATELOANOFFICER',0),(228,'transaction_loan','REMOVELOANOFFICER_LOAN','LOAN','REMOVELOANOFFICER',0),(229,'transaction_loan','REMOVELOANOFFICER_LOAN_CHECKER','LOAN','REMOVELOANOFFICER',0),(230,'transaction_loan','BULKREASSIGN_LOAN','LOAN','BULKREASSIGN',0),(231,'transaction_loan','BULKREASSIGN_LOAN_CHECKER','LOAN','BULKREASSIGN',0),(232,'transaction_loan','APPROVE_LOAN_CHECKER','LOAN','APPROVE',0),(233,'transaction_loan','APPROVEINPAST_LOAN_CHECKER','LOAN','APPROVEINPAST'
 ,0),(234,'transaction_loan','REJECT_LOAN_CHECKER','LOAN','REJECT',0),(235,'transaction_loan','REJECTINPAST_LOAN_CHECKER','LOAN','REJECTINPAST',0),(236,'transaction_loan','WITHDRAW_LOAN_CHECKER','LOAN','WITHDRAW',0),(237,'transaction_loan','WITHDRAWINPAST_LOAN_CHECKER','LOAN','WITHDRAWINPAST',0),(238,'transaction_loan','APPROVALUNDO_LOAN_CHECKER','LOAN','APPROVALUNDO',0),(239,'transaction_loan','DISBURSE_LOAN_CHECKER','LOAN','DISBURSE',0),(240,'transaction_loan','DISBURSEINPAST_LOAN_CHECKER','LOAN','DISBURSEINPAST',0),(241,'transaction_loan','DISBURSALUNDO_LOAN_CHECKER','LOAN','DISBURSALUNDO',0),(242,'transaction_loan','REPAYMENT_LOAN_CHECKER','LOAN','REPAYMENT',0),(243,'transaction_loan','REPAYMENTINPAST_LOAN_CHECKER','LOAN','REPAYMENTINPAST',0),(244,'transaction_loan','ADJUST_LOAN_CHECKER','LOAN','ADJUST',0),(245,'transaction_loan','WAIVEINTERESTPORTION_LOAN_CHECKER','LOAN','WAIVEINTERESTPORTION',0),(246,'transaction_loan','WRITEOFF_LOAN_CHECKER','LOAN','WRITEOFF',0),(247,'transact
 ion_loan','CLOSE_LOAN_CHECKER','LOAN','CLOSE',0),(248,'transaction_loan','CLOSEASRESCHEDULED_LOAN_CHECKER','LOAN','CLOSEASRESCHEDULED',0),(249,'transaction_savings','DEPOSIT_SAVINGSACCOUNT','SAVINGSACCOUNT','DEPOSIT',0),(250,'transaction_savings','DEPOSIT_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','DEPOSIT',0),(251,'transaction_savings','WITHDRAWAL_SAVINGSACCOUNT','SAVINGSACCOUNT','WITHDRAWAL',0),(252,'transaction_savings','WITHDRAWAL_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','WITHDRAWAL',0),(253,'transaction_savings','ACTIVATE_SAVINGSACCOUNT','SAVINGSACCOUNT','ACTIVATE',0),(254,'transaction_savings','ACTIVATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','ACTIVATE',0),(255,'transaction_savings','CALCULATEINTEREST_SAVINGSACCOUNT','SAVINGSACCOUNT','CALCULATEINTEREST',0),(256,'transaction_savings','CALCULATEINTEREST_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','CALCULATEINTEREST',0),(257,'accounting','CREATE_GLACCOUNT','GLACCOUNT','CREATE',0),(258,'accounting','UPDATE_GLACCOUNT','GLACCOUNT','UPDA
 TE',0),(259,'accounting','DELETE_GLACCOUNT','GLACCOUNT','DELETE',0),(260,'accounting','CREATE_GLCLOSURE','GLCLOSURE','CREATE',0),(261,'accounting','UPDATE_GLCLOSURE','GLCLOSURE','UPDATE',0),(262,'accounting','DELETE_GLCLOSURE','GLCLOSURE','DELETE',0),(263,'accounting','CREATE_JOURNALENTRY','JOURNALENTRY','CREATE',0),(264,'accounting','REVERSE_JOURNALENTRY','JOURNALENTRY','REVERSE',0),(265,'report','READ_Active Loans - Details','Active Loans - Details','READ',0),(266,'report','READ_Active Loans - Summary','Active Loans - Summary','READ',0),(267,'report','READ_Active Loans by Disbursal Period','Active Loans by Disbursal Period','READ',0),(268,'report','READ_Active Loans in last installment','Active Loans in last installment','READ',0),(269,'report','READ_Active Loans in last installment Summary','Active Loans in last installment Summary','READ',0),(270,'report','READ_Active Loans Passed Final Maturity','Active Loans Passed Final Maturity','READ',0),(271,'report','READ_Active Loans Pas
 sed Final Maturity Summary','Active Loans Passed

<TRUNCATED>


[10/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FlexibleSavingsInterestPostingIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FlexibleSavingsInterestPostingIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FlexibleSavingsInterestPostingIntegrationTest.java
deleted file mode 100644
index aa39e4e..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FlexibleSavingsInterestPostingIntegrationTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.GlobalConfigurationHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsStatusChecker;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unused", "unchecked" })
-public class FlexibleSavingsInterestPostingIntegrationTest {
-
-    public static final String ACCOUNT_TYPE_INDIVIDUAL = "INDIVIDUAL";
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private SavingsProductHelper savingsProductHelper;
-    private SavingsAccountHelper savingsAccountHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsProductHelper = new SavingsProductHelper();
-    }
-
-    @Test
-    public void testSavingsInterestPostingAtPeriodEnd() {
-        // client activation, savings activation and 1st transaction date
-        final String startDate = "01 December 2013";
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, startDate);
-        Assert.assertNotNull(clientID);
-
-        // Configuring global config flags
-        configureInterestPosting(true, 4);
-
-        final Integer savingsId = createSavingsAccount(clientID, startDate);
-
-        Integer depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsId, "1000", startDate,
-                CommonConstants.RESPONSE_RESOURCE_ID);
-
-        /***
-         * Perform Post interest transaction and verify the posted transaction
-         * date
-         */
-        this.savingsAccountHelper.postInterestForSavings(savingsId);
-        HashMap accountDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
-        ArrayList<HashMap<String, Object>> transactions = (ArrayList<HashMap<String, Object>>) accountDetails.get("transactions");
-        HashMap<String, Object> interestPostingTransaction = transactions.get(transactions.size() - 2);
-        for (Entry<String, Object> entry : interestPostingTransaction.entrySet())
-            System.out.println(entry.getKey() + "-" + entry.getValue().toString());
-        // 1st Dec 13 to 31st March 14 - 365 days, daily compounding using daily
-        // balance
-        // 33.7016 obtained from formula in excel provided by Subramanya
-        assertEquals("Equality check for interest posted amount", "33.7016", interestPostingTransaction.get("amount").toString());
-        assertEquals("Date check for Interest Posting transaction", "[2014, 3, 31]", interestPostingTransaction.get("date").toString());
-
-    }
-
-    private Integer createSavingsAccount(final Integer clientID, final String startDate) {
-        final Integer savingsProductID = createSavingsProduct();
-        Assert.assertNotNull(savingsProductID);
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplicationOnDate(clientID, savingsProductID,
-                ACCOUNT_TYPE_INDIVIDUAL, startDate);
-        Assert.assertNotNull(savingsId);
-        HashMap savingsStatusHashMap = this.savingsAccountHelper.approveSavingsOnDate(savingsId, startDate);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavingsAccount(savingsId, startDate);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-        return savingsId;
-    }
-
-    private void configureInterestPosting(final Boolean periodEndEnable, final Integer financialYearBeginningMonth) {
-        final ArrayList<HashMap> globalConfig = GlobalConfigurationHelper.getAllGlobalConfigurations(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(globalConfig);
-
-        // Updating flag for interest posting at period end
-        Integer periodEndConfigId = (Integer) globalConfig.get(10).get("id");
-        Assert.assertNotNull(periodEndConfigId);
-
-        HashMap periodEndConfigData = GlobalConfigurationHelper.getGlobalConfigurationById(this.requestSpec, this.responseSpec,
-                periodEndConfigId.toString());
-        Assert.assertNotNull(periodEndConfigData);
-
-        Boolean enabled = (Boolean) globalConfig.get(10).get("enabled");
-
-        if (enabled != periodEndEnable)
-            periodEndConfigId = GlobalConfigurationHelper.updateEnabledFlagForGlobalConfiguration(this.requestSpec, this.responseSpec,
-                    periodEndConfigId.toString(), periodEndEnable);
-
-        // Updating value for financial year beginning month
-        Integer financialYearBeginningConfigId = (Integer) globalConfig.get(11).get("id");
-        Assert.assertNotNull(financialYearBeginningConfigId);
-
-        HashMap financialYearBeginningConfigData = GlobalConfigurationHelper.getGlobalConfigurationById(this.requestSpec,
-                this.responseSpec, financialYearBeginningConfigId.toString());
-        Assert.assertNotNull(financialYearBeginningConfigData);
-
-        financialYearBeginningConfigId = GlobalConfigurationHelper.updateValueForGlobalConfiguration(this.requestSpec, this.responseSpec,
-                financialYearBeginningConfigId.toString(), financialYearBeginningMonth.toString());
-        Assert.assertNotNull(financialYearBeginningConfigId);
-    }
-
-    private Integer createSavingsProduct() {
-        final String savingsProductJSON = this.savingsProductHelper.withInterestCompoundingPeriodTypeAsDaily()
-                .withInterestPostingPeriodTypeAsAnnual().withInterestCalculationPeriodTypeAsDailyBalance().build();
-        return SavingsProductHelper.createSavingsProduct(savingsProductJSON, requestSpec, responseSpec);
-    }
-
-    // Reset configuration fields
-    @After
-    public void tearDown() {
-        configureInterestPosting(false, 1);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FundsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FundsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FundsIntegrationTest.java
deleted file mode 100644
index 0c2deeb..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FundsIntegrationTest.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.hamcrest.Matchers.*;
-import static org.junit.Assert.assertEquals;
-
-import com.google.gson.Gson;
-
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.funds.FundsHelper;
-import org.apache.fineract.integrationtests.common.funds.FundsResourceHandler;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-import java.util.*;
-
-/**
- * Funds Integration Test for checking Funds Application.
- */
-public class FundsIntegrationTest {
-
-    private ResponseSpecification statusOkResponseSpec;
-    private RequestSpecification requestSpec;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.statusOkResponseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Test
-    public void testCreateFund() {
-        FundsHelper fh = FundsHelper
-                         .create(Utils.randomNameGenerator("", 10))
-                         .externalId(Utils.randomNameGenerator("fund-", 5))
-                         .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-    }
-
-    @Test
-    public void testCreateFundWithEmptyName() {
-        FundsHelper fh = FundsHelper
-                         .create(null)
-                         .externalId(Utils.randomNameGenerator("fund-", 5))
-                         .build();
-        String jsonData = fh.toJSON();
-
-        ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(400).build();
-        final Long fundID = createFund(jsonData, this.requestSpec, responseSpec);
-        Assert.assertNull(fundID);
-    }
-
-    @Test
-    public void testCreateFundWithEmptyExternalId() {
-        FundsHelper fh = FundsHelper
-                         .create(Utils.randomNameGenerator("", 10))
-                         .externalId(null)
-                         .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-    }
-
-    @Test
-    public void testCreateFundWithDuplicateName() {
-        FundsHelper fh = FundsHelper
-                         .create(Utils.randomNameGenerator("", 10))
-                         .externalId(Utils.randomNameGenerator("fund-", 5))
-                         .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-
-        FundsHelper fh2 = FundsHelper
-                         .create(fh.getName())
-                         .externalId(Utils.randomNameGenerator("fund-", 5))
-                         .build();
-        jsonData = fh2.toJSON();
-
-        ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(403).build();
-        final Long fundID2 = createFund(jsonData, this.requestSpec, responseSpec);
-        Assert.assertNull(fundID2);
-    }
-
-    @Test
-    public void testCreateFundWithDuplicateExternalId() {
-        FundsHelper fh = FundsHelper
-                         .create(Utils.randomNameGenerator("", 10))
-                         .externalId(Utils.randomNameGenerator("fund-", 5))
-                         .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-
-        FundsHelper fh2 = FundsHelper
-                         .create(Utils.randomNameGenerator("", 10))
-                         .externalId(fh.getExternalId())
-                         .build();
-        jsonData = fh2.toJSON();
-
-        ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(403).build();
-        final Long fundID2 = createFund(jsonData, this.requestSpec, responseSpec);
-        Assert.assertNull(fundID2);
-    }
-
-    @Test
-    public void testCreateFundWithInvalidName() {
-        FundsHelper fh = FundsHelper
-                         .create(Utils.randomNameGenerator("", 120))
-                         .externalId(Utils.randomNameGenerator("fund-", 5))
-                         .build();
-        String jsonData = fh.toJSON();
-
-        ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(400).build();
-        final Long fundID = createFund(jsonData, this.requestSpec, responseSpec);
-        Assert.assertNull(fundID);
-    }
-
-    @Test
-    public void testCreateFundWithInvalidExternalId() {
-        FundsHelper fh = FundsHelper
-                         .create(Utils.randomNameGenerator("", 10))
-                         .externalId(Utils.randomNameGenerator("fund-", 120))
-                         .build();
-        String jsonData = fh.toJSON();
-
-        ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(400).build();
-        final Long fundID = createFund(jsonData, this.requestSpec, responseSpec);
-        Assert.assertNull(fundID);
-    }
-
-    @Test
-    public void testRetrieveFund() {
-        FundsHelper fh = FundsHelper
-                         .create(Utils.randomNameGenerator("", 10))
-                         .externalId(Utils.randomNameGenerator("fund-", 5))
-                         .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-
-        jsonData = FundsResourceHandler.retrieveFund(fundID, this.requestSpec, this.statusOkResponseSpec);
-        FundsHelper fh2 = FundsHelper.fromJSON(jsonData);
-
-        assertEquals(fh.getName(), fh2.getName());
-    }
-
-    @Test
-    public void testRetrieveAllFunds() {
-        FundsHelper fh = FundsHelper
-                         .create(Utils.randomNameGenerator("", 10))
-                         .externalId(Utils.randomNameGenerator("fund-", 5))
-                         .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-
-        List<FundsHelper> fhList = FundsResourceHandler.retrieveAllFunds(this.requestSpec, this.statusOkResponseSpec);
-
-        Assert.assertNotNull(fhList);
-        Assert.assertThat(fhList.size(), greaterThanOrEqualTo(1));
-        Assert.assertThat(fhList, hasItem(fh));
-    }
-
-    @Test
-    public void testRetrieveUnknownFund() {
-        ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(404).build();
-        String jsonData = FundsResourceHandler.retrieveFund(Long.MAX_VALUE, this.requestSpec, responseSpec);
-        HashMap<String, String> map = new Gson().fromJson(jsonData, HashMap.class);
-        assertEquals(map.get("userMessageGlobalisationCode"), "error.msg.resource.not.found");
-    }
-
-    @Test
-    public void testUpdateFund() {
-        FundsHelper fh = FundsHelper
-                         .create(Utils.randomNameGenerator("", 10))
-                         .externalId(Utils.randomNameGenerator("fund-", 5))
-                         .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-
-        String newName = Utils.randomNameGenerator("", 10);
-        String newExternalId = Utils.randomNameGenerator("fund-", 5);
-        FundsHelper fh2 = FundsResourceHandler.updateFund(fundID, newName, newExternalId, this.requestSpec, this.statusOkResponseSpec);
-
-        Assert.assertEquals(newName, fh2.getName());
-        Assert.assertEquals(newExternalId, fh2.getExternalId());
-    }
-
-    @Test
-    public void testUpdateUnknownFund() {
-        String newName = Utils.randomNameGenerator("", 10);
-        String newExternalId = Utils.randomNameGenerator("fund-", 5);
-        ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(404).build();
-        FundsHelper fh = FundsResourceHandler.updateFund(Long.MAX_VALUE, newName, newExternalId, this.requestSpec,
-                responseSpec);
-        Assert.assertNull(fh);
-    }
-
-    @Test
-    public void testUpdateFundWithInvalidNewName() {
-        FundsHelper fh = FundsHelper
-                        .create(Utils.randomNameGenerator("", 10))
-                        .externalId(Utils.randomNameGenerator("fund-", 5))
-                        .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-
-        String newName = Utils.randomNameGenerator("", 120);
-        String newExternalId = Utils.randomNameGenerator("fund-", 5);
-        ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(400).build();
-        FundsHelper fh2 = FundsResourceHandler.updateFund(fundID, newName, newExternalId, this.requestSpec,
-                responseSpec);
-
-        Assert.assertNull(fh2);
-    }
-
-    @Test
-    public void testUpdateFundWithNewExternalId() {
-        FundsHelper fh = FundsHelper
-                         .create(Utils.randomNameGenerator("", 10))
-                         .externalId(Utils.randomNameGenerator("fund-", 5))
-                         .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-
-        String newExternalId = Utils.randomNameGenerator("fund-", 5);
-        FundsHelper fh2 = FundsResourceHandler.updateFund(fundID, null, newExternalId, this.requestSpec, this.statusOkResponseSpec);
-
-        Assert.assertEquals(newExternalId, fh2.getExternalId());
-    }
-
-    @Test
-    public void testUpdateFundWithInvalidNewExternalId() {
-        FundsHelper fh = FundsHelper
-                .create(Utils.randomNameGenerator("", 10))
-                .externalId(Utils.randomNameGenerator("fund-", 5))
-                .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-
-        String newName = Utils.randomNameGenerator("", 10);
-        String newExternalId = Utils.randomNameGenerator("fund-", 120);
-        ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(400).build();
-        FundsHelper fh2 = FundsResourceHandler.updateFund(fundID, newName, newExternalId, this.requestSpec,
-                responseSpec);
-
-        Assert.assertNull(fh2);
-    }
-
-    @Test
-    public void testUpdateFundWithNewName() {
-        FundsHelper fh = FundsHelper
-                .create(Utils.randomNameGenerator("", 10))
-                .externalId(Utils.randomNameGenerator("fund-", 5))
-                .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-
-        String newName = Utils.randomNameGenerator("", 10);
-        FundsHelper fh2 = FundsResourceHandler.updateFund(fundID, newName, null, this.requestSpec, this.statusOkResponseSpec);
-
-        Assert.assertEquals(newName, fh2.getName());
-    }
-
-    @Test
-    public void testUpdateFundWithEmptyParams() {
-        FundsHelper fh = FundsHelper
-                .create(Utils.randomNameGenerator("", 10))
-                .externalId(Utils.randomNameGenerator("fund-", 5))
-                .build();
-        String jsonData = fh.toJSON();
-
-        final Long fundID = createFund(jsonData, this.requestSpec, this.statusOkResponseSpec);
-        Assert.assertNotNull(fundID);
-
-        FundsHelper fh2 = FundsResourceHandler.updateFund(fundID, null, null, this.requestSpec, this.statusOkResponseSpec);
-
-        Assert.assertNull(fh2.getName());
-        Assert.assertNull(fh2.getExternalId());
-
-        // assert that there was no change in
-        // the name and external ID of the fund
-        jsonData = FundsResourceHandler.retrieveFund(fundID, this.requestSpec, this.statusOkResponseSpec);
-        FundsHelper fh3 = new Gson().fromJson(jsonData, FundsHelper.class);
-
-        Assert.assertEquals(fh.getName(), fh3.getName());
-        Assert.assertEquals(fh.getExternalId(), fh3.getExternalId());
-    }
-
-    private Long createFund(final String fundJSON,
-                            final RequestSpecification requestSpec,
-                            final ResponseSpecification responseSpec) {
-        String fundId = String.valueOf(FundsResourceHandler.createFund(fundJSON, requestSpec, responseSpec));
-        if (fundId.equals("null")) {
-            // Invalid JSON data parameters
-            return null;
-        }
-
-        return new Long(fundId);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java
deleted file mode 100644
index b8d42d4..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.GlobalConfigurationHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked", "static-access" })
-public class GlobalConfigurationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private GlobalConfigurationHelper globalConfigurationHelper;
-    private ResponseSpecification httpStatusForidden;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.httpStatusForidden = new ResponseSpecBuilder().expectStatusCode(403).build();
-    }
-
-    @Test
-    public void testGlobalConfigurations() {
-        this.globalConfigurationHelper = new GlobalConfigurationHelper(this.requestSpec, this.responseSpec);
-
-        // Retrieving All Global Configuration details
-        final ArrayList<HashMap> globalConfig = this.globalConfigurationHelper.getAllGlobalConfigurations(this.requestSpec,
-                this.responseSpec);
-        Assert.assertNotNull(globalConfig);
-
-        String configName = "penalty-wait-period";
-        for (Integer configIndex = 0; configIndex < (globalConfig.size() - 1); configIndex++) {
-            if (globalConfig.get(configIndex).get("name").equals(configName)) {
-                Integer configId = (Integer) globalConfig.get(configIndex).get("id");
-                Assert.assertNotNull(configId);
-
-                HashMap configDataBefore = this.globalConfigurationHelper.getGlobalConfigurationById(this.requestSpec, this.responseSpec,
-                        configId.toString());
-                Assert.assertNotNull(configDataBefore);
-
-                Integer value = (Integer) configDataBefore.get("value") + 1;
-
-                // Updating Value for penalty-wait-period Global Configuration
-                configId = this.globalConfigurationHelper.updateValueForGlobalConfiguration(this.requestSpec, this.responseSpec,
-                        configId.toString(), value.toString());
-                Assert.assertNotNull(configId);
-
-                HashMap configDataAfter = this.globalConfigurationHelper.getGlobalConfigurationById(this.requestSpec, this.responseSpec,
-                        configId.toString());
-
-                // Verifying Value for penalty-wait-period after Updation
-                Assert.assertEquals("Verifying Global Config Value after Updation", value, configDataAfter.get("value"));
-
-                // Updating Enabled Flag for penalty-wait-period Global
-                // Configuration
-                Boolean enabled = (Boolean) globalConfig.get(configIndex).get("enabled");
-
-                if (enabled == true) {
-                    enabled = false;
-                } else {
-                    enabled = true;
-                }
-
-                configId = this.globalConfigurationHelper.updateEnabledFlagForGlobalConfiguration(this.requestSpec, this.responseSpec,
-                        configId.toString(), enabled);
-
-                configDataAfter = this.globalConfigurationHelper.getGlobalConfigurationById(this.requestSpec, this.responseSpec,
-                        configId.toString());
-
-                // Verifying Enabled Flag for penalty-wait-period after Updation
-                Assert.assertEquals("Verifying Enabled Flag Global Config after Updation", enabled, configDataAfter.get("enabled"));
-                break;
-            }
-        }
-    }
-
-    @Test
-    public void testGlobalConfigurationIsCacheEnabled() {
-        this.globalConfigurationHelper = new GlobalConfigurationHelper(this.requestSpec, this.responseSpec);
-
-        // Retrieving Is Cache Enabled Global Configuration details
-        ArrayList<HashMap> isCacheGlobalConfig = this.globalConfigurationHelper.getGlobalConfigurationIsCacheEnabled(this.requestSpec,
-                this.responseSpec);
-        Assert.assertNotNull(isCacheGlobalConfig);
-
-        for (Integer cacheType = 0; cacheType <= ((isCacheGlobalConfig.size()) - 1); cacheType++) {
-
-            // Retrieving Is Cache Enabled Global Configuration details
-            isCacheGlobalConfig = this.globalConfigurationHelper.getGlobalConfigurationIsCacheEnabled(this.requestSpec, this.responseSpec);
-            Assert.assertNotNull(isCacheGlobalConfig);
-
-            HashMap cacheTypeAsHashMap = (HashMap) isCacheGlobalConfig.get(cacheType).get("cacheType");
-            Integer cacheTypeId = (Integer) cacheTypeAsHashMap.get("id");
-            String cacheTypeValue = (String) cacheTypeAsHashMap.get("value");
-            Boolean enabled = (Boolean) isCacheGlobalConfig.get(cacheType).get("enabled");
-
-            if (cacheTypeValue.compareTo("No cache") == 0 && enabled == true) {
-                cacheTypeId += 1;
-            } else if (cacheTypeValue.compareTo("Single node") == 0 && enabled == true) {
-                cacheTypeId -= 1;
-            }
-
-            HashMap changes = this.globalConfigurationHelper.updateIsCacheEnabledForGlobalConfiguration(this.requestSpec,
-                    this.responseSpec, cacheTypeId.toString());
-            Assert.assertEquals("Verifying Is Cache Enabled Global Config after Updation", cacheTypeId, changes.get("cacheType"));
-        }
-    }
-    
-    @Test
-	public void testGlobalConfigForcePasswordResetDays() {
-
-		// Retrieving All Global Configuration details
-		final ArrayList<HashMap> globalConfig = this.globalConfigurationHelper
-				.getAllGlobalConfigurations(this.requestSpec, this.responseSpec);
-		Assert.assertNotNull(globalConfig);
-
-		String configName = "force-password-reset-days";
-		String newValue = "0";
-		String newBooleanValue = "true";
-
-		for (Integer configIndex = 0; configIndex < (globalConfig.size() - 1); configIndex++) {
-			if (globalConfig.get(configIndex).get("name").equals(configName)) {
-				Integer configId = (Integer) globalConfig.get(configIndex).get(
-						"id");
-				Assert.assertNotNull(configId);
-
-				/*
-				 * Update force-password-reset-days with value as 0 and Enable
-				 * as true - failure case
-				 */
-				ArrayList error = (ArrayList) this.globalConfigurationHelper
-						.updatePasswordResetDaysForGlobalConfiguration(
-								this.requestSpec, this.httpStatusForidden,
-								configId, newValue, newBooleanValue,
-								CommonConstants.RESPONSE_ERROR);
-				HashMap hash = (HashMap) error.get(0);
-
-				Assert.assertEquals(
-						"Force Password Reset days value must be greater than zero.",
-						"error.msg.password.reset.days.value.must.be.greater.than.zero",
-						hash.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-				/*
-				 * Update force-password-reset-days with value as 50 and Enable
-				 * as true - success case
-				 */
-				final HashMap updateSuccess = (HashMap) this.globalConfigurationHelper
-						.updatePasswordResetDaysForGlobalConfiguration(
-								this.requestSpec, this.responseSpec, configId,
-								"50", newBooleanValue, "changes");
-				Assert.assertNotNull(updateSuccess);
-
-				/* Update with value as 0 and Enable as false - success case */
-				final HashMap updateSuccess1 = (HashMap) this.globalConfigurationHelper
-						.updatePasswordResetDaysForGlobalConfiguration(
-								this.requestSpec, this.responseSpec, configId,
-								newValue, "false", "changes");
-				Assert.assertNotNull(updateSuccess1);
-
-				/* Update without sending value and Enable as true - failure case*/
-				ArrayList failure = (ArrayList) this.globalConfigurationHelper
-						.updatePasswordResetDaysForGlobalConfiguration(
-								this.requestSpec, this.httpStatusForidden, configId,
-								null, newBooleanValue, CommonConstants.RESPONSE_ERROR);
-				HashMap failureHash = (HashMap) failure.get(0);
-				Assert.assertEquals(
-						"Force Password Reset days value must be greater than zero.",
-						"error.msg.password.reset.days.value.must.be.greater.than.zero",
-						failureHash.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-				break;
-			}
-		}
-		/* Update other global configuration property */
-		String otherConfigName = "maker-checker";
-		for (Integer configIndex = 0; configIndex < (globalConfig.size() - 1); configIndex++) {
-			if (globalConfig.get(configIndex).get("name")
-					.equals(otherConfigName)) {
-				String configId = (globalConfig.get(configIndex).get("id"))
-						.toString();
-				Integer updateConfigId = this.globalConfigurationHelper
-						.updateValueForGlobalConfiguration(this.requestSpec,
-								this.responseSpec, configId, newValue);
-				Assert.assertNotNull(updateConfigId);
-				break;
-			}
-		}
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupLoanIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupLoanIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupLoanIntegrationTest.java
deleted file mode 100644
index e6f6227..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupLoanIntegrationTest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.GroupHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Group Loan Integration Test for checking Loan Application Repayment Schedule.
- */
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class GroupLoanIntegrationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Test
-    public void checkGroupLoanCreateAndDisburseFlow() {
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Integer groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec, true);
-        groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientID.toString());
-
-        final Integer loanProductID = createLoanProduct();
-        final Integer loanID = applyForLoanApplication(groupID, loanProductID);
-        final ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec,
-                loanID);
-        verifyLoanRepaymentSchedule(loanSchedule);
-
-    }
-
-    private Integer createLoanProduct() {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        final String loanProductJSON = new LoanProductTestBuilder() //
-                .withPrincipal("12,000.00") //
-                .withNumberOfRepayments("4") //
-                .withRepaymentAfterEvery("1") //
-                .withRepaymentTypeAsMonth() //
-                .withinterestRatePerPeriod("1") //
-                .withInterestRateFrequencyTypeAsMonths() //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .build(null);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private Integer applyForLoanApplication(final Integer groupID, final Integer loanProductID) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal("12,000.00") //
-                .withLoanTermFrequency("4") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("4") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withExpectedDisbursementDate("20 September 2011") //
-                .withSubmittedOnDate("20 September 2011") //
-                .withLoanType("group").build(groupID.toString(), loanProductID.toString(), null);
-        System.out.println(loanApplicationJSON);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-    private void verifyLoanRepaymentSchedule(final ArrayList<HashMap> loanSchedule) {
-        System.out.println("--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
-
-        assertEquals("Checking for Due Date for 1st Month", new ArrayList<>(Arrays.asList(2011, 10, 20)),
-                loanSchedule.get(1).get("dueDate"));
-        assertEquals("Checking for Principal Due for 1st Month", new Float("2911.49"), loanSchedule.get(1).get("principalOriginalDue"));
-        assertEquals("Checking for Interest Due for 1st Month", new Float("240.00"), loanSchedule.get(1).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 2nd Month", new ArrayList<>(Arrays.asList(2011, 11, 20)),
-                loanSchedule.get(2).get("dueDate"));
-        assertEquals("Checking for Principal Due for 2nd Month", new Float("2969.72"), loanSchedule.get(2).get("principalDue"));
-        assertEquals("Checking for Interest Due for 2nd Month", new Float("181.77"), loanSchedule.get(2).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 3rd Month", new ArrayList<>(Arrays.asList(2011, 12, 20)),
-                loanSchedule.get(3).get("dueDate"));
-        assertEquals("Checking for Principal Due for 3rd Month", new Float("3029.11"), loanSchedule.get(3).get("principalDue"));
-        assertEquals("Checking for Interest Due for 3rd Month", new Float("122.38"), loanSchedule.get(3).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 4th Month", new ArrayList<>(Arrays.asList(2012, 1, 20)),
-                loanSchedule.get(4).get("dueDate"));
-        assertEquals("Checking for Principal Due for 4th Month", new Float("3089.68"), loanSchedule.get(4).get("principalDue"));
-        assertEquals("Checking for Interest Due for 4th Month", new Float("61.79"), loanSchedule.get(4).get("interestOriginalDue"));
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupSavingsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupSavingsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupSavingsIntegrationTest.java
deleted file mode 100644
index 1c9ffee..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupSavingsIntegrationTest.java
+++ /dev/null
@@ -1,553 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.math.BigDecimal;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.GroupHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.charges.ChargesHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsStatusChecker;
-import org.joda.time.LocalDate;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Group Savings Integration Test for checking Savings Application.
- */
-@SuppressWarnings({ "rawtypes", "unused" })
-public class GroupSavingsIntegrationTest {
-
-    public static final String DEPOSIT_AMOUNT = "2000";
-    public static final String WITHDRAW_AMOUNT = "1000";
-    public static final String WITHDRAW_AMOUNT_ADJUSTED = "500";
-    public static final String MINIMUM_OPENING_BALANCE = "1000.0";
-    public static final String ACCOUNT_TYPE_GROUP = "GROUP";
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private SavingsAccountHelper savingsAccountHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Test
-    public void testSavingsAccount() {
-        this.savingsAccountHelper = new SavingsAccountHelper(requestSpec, responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        Integer groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec, true);
-        Assert.assertNotNull(groupID);
-
-        groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientID.toString());
-        Assert.assertNotNull(groupID);
-
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(groupID, savingsProductID, ACCOUNT_TYPE_GROUP);
-        Assert.assertNotNull(savingsId);
-
-        HashMap modifications = this.savingsAccountHelper.updateSavingsAccount(groupID, savingsProductID, savingsId, ACCOUNT_TYPE_GROUP);
-        Assert.assertTrue(modifications.containsKey("submittedOnDate"));
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        final HashMap summaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        this.savingsAccountHelper.calculateInterestForSavings(savingsId);
-        HashMap summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        assertEquals(summaryBefore, summary);
-
-        this.savingsAccountHelper.postInterestForSavings(savingsId);
-        summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        Assert.assertFalse(summaryBefore.equals(summary));
-
-        final Object savingsInterest = this.savingsAccountHelper.getSavingsInterest(savingsId);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccount_CLOSE_APPLICATION() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        final ResponseSpecification errorResponse = new ResponseSpecBuilder().expectStatusCode(400).build();
-        final SavingsAccountHelper validationErrorHelper = new SavingsAccountHelper(this.requestSpec, errorResponse);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        Integer groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec, true);
-        Assert.assertNotNull(groupID);
-
-        groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientID.toString());
-        Assert.assertNotNull(groupID);
-
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = "1000.0";
-        final String enforceMinRequiredBalance = "true";
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(groupID, savingsProductID, ACCOUNT_TYPE_GROUP);
-        Assert.assertNotNull(savingsId);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        Calendar todaysDate = Calendar.getInstance();
-        final String CLOSEDON_DATE = dateFormat.format(todaysDate.getTime());
-        String withdrawBalance = "false";
-        ArrayList<HashMap> savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.closeSavingsAccountAndGetBackRequiredField(
-                savingsId, withdrawBalance, CommonConstants.RESPONSE_ERROR, CLOSEDON_DATE);
-        assertEquals("validation.msg.savingsaccount.close.results.in.balance.not.zero",
-                savingsAccountErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        withdrawBalance = "true";
-        savingsStatusHashMap =  this.savingsAccountHelper.closeSavingsAccount(savingsId, withdrawBalance);
-        SavingsStatusChecker.verifySavingsAccountIsClosed(savingsStatusHashMap);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccount_DELETE_APPLICATION() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        SavingsAccountHelper savingsAccountHelperValidationError = new SavingsAccountHelper(this.requestSpec,
-                new ResponseSpecBuilder().build());
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        Integer groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec, true);
-        Assert.assertNotNull(groupID);
-
-        groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientID.toString());
-        Assert.assertNotNull(groupID);
-
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(groupID, savingsProductID, ACCOUNT_TYPE_GROUP);
-        Assert.assertNotNull(savingsId);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        List<HashMap> error1 = (List<HashMap>) savingsAccountHelperValidationError.deleteSavingsApplication(savingsId,
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("validation.msg.savingsaccount.delete.not.in.submittedandpendingapproval.state",
-                error1.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        savingsStatusHashMap = this.savingsAccountHelper.undoApproval(savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        this.savingsAccountHelper.deleteSavingsApplication(savingsId, CommonConstants.RESPONSE_RESOURCE_ID);
-
-        List<HashMap> error = savingsAccountHelperValidationError.getSavingsCollectionAttribute(savingsId, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.saving.account.id.invalid", error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccount_REJECT_APPLICATION() {
-
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        SavingsAccountHelper savingsAccountHelperValidationError = new SavingsAccountHelper(this.requestSpec,
-                new ResponseSpecBuilder().build());
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        Integer groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec, true);
-        Assert.assertNotNull(groupID);
-
-        groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientID.toString());
-        Assert.assertNotNull(groupID);
-
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(groupID, savingsProductID, ACCOUNT_TYPE_GROUP);
-        Assert.assertNotNull(savingsId);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        List<HashMap> error1 = savingsAccountHelperValidationError.rejectApplicationWithErrorCode(savingsId,
-                SavingsAccountHelper.CREATED_DATE_PLUS_ONE);
-        assertEquals("validation.msg.savingsaccount.reject.not.in.submittedandpendingapproval.state",
-                error1.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        savingsStatusHashMap = this.savingsAccountHelper.undoApproval(savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        error1 = savingsAccountHelperValidationError.rejectApplicationWithErrorCode(savingsId, SavingsAccountHelper.getFutureDate());
-        assertEquals("validation.msg.savingsaccount.reject.cannot.be.a.future.date",
-                error1.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error1 = savingsAccountHelperValidationError.rejectApplicationWithErrorCode(savingsId, SavingsAccountHelper.CREATED_DATE_MINUS_ONE);
-        assertEquals("validation.msg.savingsaccount.reject.cannot.be.before.submittal.date",
-                error1.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        savingsStatusHashMap = this.savingsAccountHelper.rejectApplication(savingsId);
-        SavingsStatusChecker.verifySavingsIsRejected(savingsStatusHashMap);
-    }
-
-    @Test
-    public void testSavingsAccount_WITHDRAW_APPLICATION() {
-
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        Integer groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec, true);
-        Assert.assertNotNull(groupID);
-
-        groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientID.toString());
-        Assert.assertNotNull(groupID);
-
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(groupID, savingsProductID, ACCOUNT_TYPE_GROUP);
-        Assert.assertNotNull(savingsId);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.withdrawApplication(savingsId);
-        SavingsStatusChecker.verifySavingsIsWithdrawn(savingsStatusHashMap);
-
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccountTransactions() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        SavingsAccountHelper savingsAccountHelperValidationError = new SavingsAccountHelper(this.requestSpec,
-                new ResponseSpecBuilder().build());
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        Integer groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec, true);
-        Assert.assertNotNull(groupID);
-
-        groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientID.toString());
-        Assert.assertNotNull(groupID);
-
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(groupID, savingsProductID, ACCOUNT_TYPE_GROUP);
-        Assert.assertNotNull(savingsId);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        List<HashMap> error = (List) savingsAccountHelperValidationError.withdrawalFromSavingsAccount(savingsId, "100",
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.account.is.not.active",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error = (List) savingsAccountHelperValidationError.depositToSavingsAccount(savingsId, "100", SavingsAccountHelper.TRANSACTION_DATE,
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.account.is.not.active",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        HashMap summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        Float balance = new Float(MINIMUM_OPENING_BALANCE);
-        assertEquals("Verifying opening Balance", balance, summary.get("accountBalance"));
-
-        Integer depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsId, DEPOSIT_AMOUNT,
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        HashMap depositTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, depositTransactionId);
-        balance += new Float(DEPOSIT_AMOUNT);
-        assertEquals("Verifying Deposit Amount", new Float(DEPOSIT_AMOUNT), depositTransaction.get("amount"));
-        assertEquals("Verifying Balance after Deposit", balance, depositTransaction.get("runningBalance"));
-
-        Integer withdrawTransactionId = (Integer) this.savingsAccountHelper.withdrawalFromSavingsAccount(savingsId, WITHDRAW_AMOUNT,
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        HashMap withdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, withdrawTransactionId);
-        balance -= new Float(WITHDRAW_AMOUNT);
-        assertEquals("Verifying Withdrawal Amount", new Float(WITHDRAW_AMOUNT), withdrawTransaction.get("amount"));
-        assertEquals("Verifying Balance after Withdrawal", balance, withdrawTransaction.get("runningBalance"));
-
-        Integer newWithdrawTransactionId = this.savingsAccountHelper.updateSavingsAccountTransaction(savingsId, withdrawTransactionId,
-                WITHDRAW_AMOUNT_ADJUSTED);
-        HashMap newWithdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, newWithdrawTransactionId);
-        balance = balance + new Float(WITHDRAW_AMOUNT) - new Float(WITHDRAW_AMOUNT_ADJUSTED);
-        assertEquals("Verifying adjusted Amount", new Float(WITHDRAW_AMOUNT_ADJUSTED), newWithdrawTransaction.get("amount"));
-        assertEquals("Verifying Balance after adjust", balance, newWithdrawTransaction.get("runningBalance"));
-        summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        assertEquals("Verifying Adjusted Balance", balance, summary.get("accountBalance"));
-        withdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, withdrawTransactionId);
-        Assert.assertTrue((Boolean) withdrawTransaction.get("reversed"));
-
-        this.savingsAccountHelper.undoSavingsAccountTransaction(savingsId, newWithdrawTransactionId);
-        newWithdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, withdrawTransactionId);
-        Assert.assertTrue((Boolean) newWithdrawTransaction.get("reversed"));
-        summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        balance += new Float(WITHDRAW_AMOUNT_ADJUSTED);
-        assertEquals("Verifying Balance After Undo Transaction", balance, summary.get("accountBalance"));
-
-        error = (List) savingsAccountHelperValidationError.withdrawalFromSavingsAccount(savingsId, "5000",
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.insufficient.account.balance",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error = (List) savingsAccountHelperValidationError.withdrawalFromSavingsAccount(savingsId, "5000",
-                SavingsAccountHelper.getFutureDate(), CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.in.the.future", error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error = (List) savingsAccountHelperValidationError.depositToSavingsAccount(savingsId, "5000", SavingsAccountHelper.getFutureDate(),
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.in.the.future", error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error = (List) savingsAccountHelperValidationError.withdrawalFromSavingsAccount(savingsId, "5000",
-                SavingsAccountHelper.CREATED_DATE_MINUS_ONE, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.before.activation.date",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        error = (List) savingsAccountHelperValidationError.depositToSavingsAccount(savingsId, "5000",
-                SavingsAccountHelper.CREATED_DATE_MINUS_ONE, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.savingsaccount.transaction.before.activation.date",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testSavingsAccountCharges() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientID);
-
-        Integer groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec, true);
-        Assert.assertNotNull(groupID);
-
-        groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientID.toString());
-        Assert.assertNotNull(groupID);
-
-        final String minBalanceForInterestCalculation = null;
-        final String minRequiredBalance = null;
-        final String enforceMinRequiredBalance = "false";
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance);
-        Assert.assertNotNull(savingsProductID);
-
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(groupID, savingsProductID, ACCOUNT_TYPE_GROUP);
-        Assert.assertNotNull(savingsId);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        final Integer withdrawalChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsWithdrawalFeeJSON());
-        Assert.assertNotNull(withdrawalChargeId);
-
-        this.savingsAccountHelper.addChargesForSavings(savingsId, withdrawalChargeId);
-        ArrayList<HashMap> chargesPendingState = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertEquals(1, chargesPendingState.size());
-
-        Integer savingsChargeId = (Integer) chargesPendingState.get(0).get("id");
-        HashMap chargeChanges = this.savingsAccountHelper.updateCharges(savingsChargeId, savingsId);
-        Assert.assertTrue(chargeChanges.containsKey("amount"));
-
-        Integer deletedChargeId = this.savingsAccountHelper.deleteCharge(savingsChargeId, savingsId);
-        assertEquals(savingsChargeId, deletedChargeId);
-
-        chargesPendingState = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertTrue(chargesPendingState == null || chargesPendingState.size() == 0);
-
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        final Integer chargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec, ChargesHelper.getSavingsAnnualFeeJSON());
-        Assert.assertNotNull(chargeId);
-
-        ArrayList<HashMap> charges = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertTrue(charges == null || charges.size() == 0);
-
-        this.savingsAccountHelper.addChargesForSavings(savingsId, chargeId);
-        charges = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertEquals(1, charges.size());
-
-        HashMap savingsChargeForPay = charges.get(0);
-        SimpleDateFormat sdf = new SimpleDateFormat(CommonConstants.dateFormat, Locale.US);
-        Calendar cal = Calendar.getInstance();
-        List dates = (List) savingsChargeForPay.get("dueDate");
-        cal.set(Calendar.YEAR, (Integer) dates.get(0));
-        cal.set(Calendar.MONTH, (Integer) dates.get(1) - 1);
-        cal.set(Calendar.DAY_OF_MONTH, (Integer) dates.get(2));
-
-        this.savingsAccountHelper.payCharge((Integer) savingsChargeForPay.get("id"), savingsId,
-                ((Float) savingsChargeForPay.get("amount")).toString(), sdf.format(cal.getTime()));
-        HashMap paidCharge = this.savingsAccountHelper.getSavingsCharge(savingsId, (Integer) savingsChargeForPay.get("id"));
-        assertEquals(savingsChargeForPay.get("amount"), paidCharge.get("amountPaid"));
-
-        final Integer monthlyFeechargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
-                ChargesHelper.getSavingsMonthlyFeeJSON());
-        Assert.assertNotNull(monthlyFeechargeId);
-
-        this.savingsAccountHelper.addChargesForSavings(savingsId, monthlyFeechargeId);
-        charges = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertEquals(2, charges.size());
-
-        HashMap savingsChargeForWaive = charges.get(1);
-        this.savingsAccountHelper.waiveCharge((Integer) savingsChargeForWaive.get("id"), savingsId);
-        HashMap waiveCharge = this.savingsAccountHelper.getSavingsCharge(savingsId, (Integer) savingsChargeForWaive.get("id"));
-        assertEquals(savingsChargeForWaive.get("amount"), waiveCharge.get("amountWaived"));
-
-        this.savingsAccountHelper.waiveCharge((Integer) savingsChargeForWaive.get("id"), savingsId);
-        waiveCharge = this.savingsAccountHelper.getSavingsCharge(savingsId, (Integer) savingsChargeForWaive.get("id"));
-        BigDecimal totalWaiveAmount = BigDecimal.valueOf(Double.valueOf((Float) savingsChargeForWaive.get("amount")));
-        totalWaiveAmount = totalWaiveAmount.add(totalWaiveAmount);
-        assertEquals(totalWaiveAmount.floatValue(), waiveCharge.get("amountWaived"));
-        
-        final Integer weeklyFeeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec, ChargesHelper.getSavingsWeeklyFeeJSON());
-        Assert.assertNotNull(weeklyFeeId);
-        
-        this.savingsAccountHelper.addChargesForSavings(savingsId, weeklyFeeId);
-        charges = this.savingsAccountHelper.getSavingsCharges(savingsId);
-        Assert.assertEquals(3, charges.size());
-
-        savingsChargeForPay = charges.get(2);
-        cal = Calendar.getInstance();
-        dates = (List) savingsChargeForPay.get("dueDate");
-        cal.set(Calendar.YEAR, (Integer) dates.get(0));
-        cal.set(Calendar.MONTH, (Integer) dates.get(1) - 1);
-        cal.set(Calendar.DAY_OF_MONTH, (Integer) dates.get(2));
-
-        // Depositing huge amount as scheduler job deducts the fee amount
-        Integer depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsId, "100000",
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(depositTransactionId);
-
-        this.savingsAccountHelper.payCharge((Integer) savingsChargeForPay.get("id"), savingsId,
-                ((Float) savingsChargeForPay.get("amount")).toString(), sdf.format(cal.getTime()));
-        paidCharge = this.savingsAccountHelper.getSavingsCharge(savingsId, (Integer) savingsChargeForPay.get("id"));
-        assertEquals(savingsChargeForPay.get("amount"), paidCharge.get("amountPaid"));
-        List nextDueDates = (List) paidCharge.get("dueDate");
-        LocalDate nextDueDate = new LocalDate((Integer) nextDueDates.get(0), (Integer) nextDueDates.get(1), (Integer) nextDueDates.get(2));
-        LocalDate expectedNextDueDate = new LocalDate((Integer) dates.get(0), (Integer) dates.get(1), (Integer) dates.get(2))
-                .plusWeeks((Integer) paidCharge.get("feeInterval"));
-        assertEquals(expectedNextDueDate, nextDueDate);
-        cal = Calendar.getInstance();
-        
-        this.savingsAccountHelper.closeSavingsAccountAndGetBackRequiredField(savingsId, "true", null, sdf.format(cal.getTime()));
-        
-    }
-
-    public static Integer createSavingsProduct(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            final String minOpenningBalance, final String minBalanceForInterestCalculation, final String minRequiredBalance,
-            final String enforceMinRequiredBalance) {
-        System.out.println("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------");
-        SavingsProductHelper savingsProductHelper = new SavingsProductHelper();
-        final String savingsProductJSON = savingsProductHelper //
-                .withInterestCompoundingPeriodTypeAsDaily() //
-                .withInterestPostingPeriodTypeAsMonthly() //
-                .withInterestCalculationPeriodTypeAsDailyBalance() //
-                .withMinBalanceForInterestCalculation(minBalanceForInterestCalculation) //
-                .withMinRequiredBalance(minRequiredBalance) //
-                .withEnforceMinRequiredBalance(enforceMinRequiredBalance) //
-                .withMinimumOpenningBalance(minOpenningBalance).build();
-        return SavingsProductHelper.createSavingsProduct(savingsProductJSON, requestSpec, responseSpec);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupTest.java
deleted file mode 100755
index 49b4d4c..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupTest.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.GroupHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.apache.fineract.integrationtests.common.organisation.StaffHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Group Test for checking Group: Creation, Activation, Client Association,
- * Updating & Deletion
- */
-public class GroupTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-    private final String principal = "10000.00";
-    private final String accountingRule = "1";
-    private final String numberOfRepayments = "5";
-    private final String interestRatePerPeriod = "18";
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-    }
-
-    @Test
-    public void checkGroupFunctions() {
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Integer groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec);
-        GroupHelper.verifyGroupCreatedOnServer(this.requestSpec, this.responseSpec, groupID);
-
-        groupID = GroupHelper.activateGroup(this.requestSpec, this.responseSpec, groupID.toString());
-        GroupHelper.verifyGroupActivatedOnServer(this.requestSpec, this.responseSpec, groupID, true);
-
-        groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientID.toString());
-        GroupHelper.verifyGroupMembers(this.requestSpec, this.responseSpec, groupID, clientID);
-
-        groupID = GroupHelper.disAssociateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientID.toString());
-        GroupHelper.verifyEmptyGroupMembers(this.requestSpec, this.responseSpec, groupID);
-
-        final String updatedGroupName = GroupHelper.randomNameGenerator("Group-", 5);
-        groupID = GroupHelper.updateGroup(this.requestSpec, this.responseSpec, updatedGroupName, groupID.toString());
-        GroupHelper.verifyGroupDetails(this.requestSpec, this.responseSpec, groupID, "name", updatedGroupName);
-
-        // NOTE: removed as consistently provides false positive result on
-        // cloudbees server.
-        // groupID = GroupHelper.createGroup(this.requestSpec,
-        // this.responseSpec);
-        // GroupHelper.deleteGroup(this.requestSpec, this.responseSpec,
-        // groupID.toString());
-        // GroupHelper.verifyGroupDeleted(this.requestSpec, this.responseSpec,
-        // groupID);
-    }
-
-    @Test
-    public void assignStaffToGroup() {
-        Integer groupID = GroupHelper.createGroup(this.requestSpec, this.responseSpec);
-        GroupHelper.verifyGroupCreatedOnServer(this.requestSpec, this.responseSpec, groupID);
-
-        final String updateGroupName = Utils.randomNameGenerator("Savings Group Help_", 5);
-        groupID = GroupHelper.activateGroup(this.requestSpec, this.responseSpec, groupID.toString());
-        Integer updateGroupId = GroupHelper.updateGroup(this.requestSpec, this.responseSpec, updateGroupName, groupID.toString());
-
-        // create client and add client to group
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientID.toString());
-        GroupHelper.verifyGroupMembers(this.requestSpec, this.responseSpec, groupID, clientID);
-
-        // create staff
-        Integer createStaffId1 = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        System.out.println("--------------creating first staff with id-------------" + createStaffId1);
-        Assert.assertNotNull(createStaffId1);
-
-        Integer createStaffId2 = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        System.out.println("--------------creating second staff with id-------------" + createStaffId2);
-        Assert.assertNotNull(createStaffId2);
-
-        // assign staff "createStaffId1" to group
-        HashMap assignStaffGroupId = (HashMap) GroupHelper.assignStaff(this.requestSpec, this.responseSpec, groupID.toString(),
-                createStaffId1.longValue());
-        assertEquals("Verify assigned staff id is the same as id sent", assignStaffGroupId.get("staffId"), createStaffId1);
-
-        // assign staff "createStaffId2" to client
-        final HashMap assignStaffToClientChanges = (HashMap) ClientHelper.assignStaffToClient(this.requestSpec, this.responseSpec,
-                clientID.toString(), createStaffId2.toString());
-        assertEquals("Verify assigned staff id is the same as id sent", assignStaffToClientChanges.get("staffId"), createStaffId2);
-
-        final Integer loanProductId = this.createLoanProduct();
-
-        final Integer loanId = this.applyForLoanApplication(clientID, loanProductId, this.principal);
-
-        this.loanTransactionHelper.approveLoan("20 September 2014", loanId);
-        this.loanTransactionHelper.disburseLoan("20 September 2014", loanId);
-
-        final HashMap assignStaffAndInheritStaffForClientAccounts = (HashMap) GroupHelper.assignStaffInheritStaffForClientAccounts(
-                this.requestSpec, this.responseSpec, groupID.toString(), createStaffId1.toString());
-        final Integer getClientStaffId = ClientHelper.getClientsStaffId(this.requestSpec, this.responseSpec, clientID.toString());
-
-        // assert if client staff officer has change Note client was assigned
-        // staff with createStaffId2
-        assertNotEquals("Verify if client stuff has changed", assignStaffAndInheritStaffForClientAccounts.get("staffId"), createStaffId2);
-        assertEquals("Verify if client inherited staff assigned above", assignStaffAndInheritStaffForClientAccounts.get("staffId"),
-                getClientStaffId);
-
-        // assert if clients loan officer has changed
-        final Integer loanOfficerId = this.loanTransactionHelper.getLoanOfficerId(loanId.toString());
-        assertEquals("Verify if client loan inherited staff", assignStaffAndInheritStaffForClientAccounts.get("staffId"), loanOfficerId);
-
-    }
-
-    private Integer createLoanProduct() {
-        final String loanProductJSON = new LoanProductTestBuilder().withPrincipal(this.principal)
-                .withNumberOfRepayments(this.numberOfRepayments).withinterestRatePerPeriod(this.interestRatePerPeriod)
-                .withInterestRateFrequencyTypeAsYear().build(null);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID, String principal) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal(principal) //
-                .withLoanTermFrequency("4") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("4") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withExpectedDisbursementDate("20 September 2014") //
-                .withSubmittedOnDate("20 September 2014") //
-                .build(clientID.toString(), loanProductID.toString(), null);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-}
\ No newline at end of file


[07/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RecurringDepositTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RecurringDepositTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RecurringDepositTest.java
deleted file mode 100644
index b9fd152..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RecurringDepositTest.java
+++ /dev/null
@@ -1,2607 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.text.DateFormat;
-import java.text.DecimalFormat;
-import java.text.DecimalFormatSymbols;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-
-import net.sf.ehcache.transaction.xa.EhcacheXAException;
-
-import org.apache.fineract.accounting.common.AccountingConstants.FINANCIAL_ACTIVITY;
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.accounting.Account;
-import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
-import org.apache.fineract.integrationtests.common.accounting.FinancialActivityAccountHelper;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntry;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntryHelper;
-import org.apache.fineract.integrationtests.common.accounting.Account.AccountType;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositAccountHelper;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositAccountStatusChecker;
-import org.apache.fineract.integrationtests.common.fixeddeposit.FixedDepositProductHelper;
-import org.apache.fineract.integrationtests.common.recurringdeposit.RecurringDepositAccountHelper;
-import org.apache.fineract.integrationtests.common.recurringdeposit.RecurringDepositAccountStatusChecker;
-import org.apache.fineract.integrationtests.common.recurringdeposit.RecurringDepositProductHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsStatusChecker;
-import org.joda.time.DateTime;
-import org.joda.time.Months;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "unused", "rawtypes", "unchecked", "static-access" })
-public class RecurringDepositTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private RecurringDepositProductHelper recurringDepositProductHelper;
-    private SavingsAccountHelper savingsAccountHelper;
-    private AccountHelper accountHelper;
-    private RecurringDepositAccountHelper recurringDepositAccountHelper;
-    private JournalEntryHelper journalEntryHelper;
-    private FinancialActivityAccountHelper financialActivityAccountHelper;
-
-    public static final String WHOLE_TERM = "1";
-    private static final String TILL_PREMATURE_WITHDRAWAL = "2";
-    private static final String DAILY = "1";
-    private static final String MONTHLY = "4";
-    private static final String QUARTERLY = "5";
-    private static final String BI_ANNUALLY = "6";
-    private static final String ANNUALLY = "7";
-    private static final String INTEREST_CALCULATION_USING_DAILY_BALANCE = "1";
-    private static final String INTEREST_CALCULATION_USING_AVERAGE_DAILY_BALANCE = "2";
-    private static final String DAYS_360 = "360";
-    private static final String DAYS_365 = "365";
-    private static final String NONE = "1";
-    private static final String CASH_BASED = "2";
-
-    public static final String MINIMUM_OPENING_BALANCE = "1000.0";
-    public static final String ACCOUNT_TYPE_INDIVIDUAL = "INDIVIDUAL";
-    public static final String CLOSURE_TYPE_WITHDRAW_DEPOSIT = "100";
-    public static final String CLOSURE_TYPE_TRANSFER_TO_SAVINGS = "200";
-    public static final String CLOSURE_TYPE_REINVEST = "300";
-    public static final Integer DAILY_COMPOUNDING_INTERVAL = 0;
-    public static final Integer MONTHLY_INTERVAL = 1;
-    public static final Integer QUARTERLY_INTERVAL = 3;
-    public static final Integer BIANNULLY_INTERVAL = 6;
-    public static final Integer ANNUL_INTERVAL = 12;
-
-    public static final Float DEPOSIT_AMOUNT = 2000.0f;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.requestSpec.header("Fineract-Platform-TenantId", "default");
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.journalEntryHelper = new JournalEntryHelper(this.requestSpec, this.responseSpec);
-        this.financialActivityAccountHelper = new FinancialActivityAccountHelper(this.requestSpec);
-    }
-
-    /***
-     * Test case for Recurring Deposit Account premature closure with
-     * transaction type withdrawal and Cash Based accounting enabled
-     */
-    @Test
-    public void testRecurringDepositAccountWithPrematureClosureTypeWithdrawal() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        /***
-         * Create GL Accounts for product account mapping
-         */
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        Integer numberOfDaysLeft = (daysInMonth - currentDate) + 1;
-        todaysDate.add(Calendar.DATE, numberOfDaysLeft);
-        final String INTEREST_POSTED_DATE = dateFormat.format(todaysDate.getTime());
-        final String CLOSED_ON_DATE = dateFormat.format(Calendar.getInstance().getTime());
-
-        /***
-         * Create client for applying Deposit account
-         */
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        /***
-         * Create RD product with CashBased accounting enabled
-         */
-        final String accountingRule = CASH_BASED;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule, assetAccount,
-                liabilityAccount, incomeAccount, expenseAccount);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        /***
-         * Apply for RD account with created product and verify status
-         */
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        /***
-         * Approve the RD account and verify whether account is approved
-         */
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
-                APPROVED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsApproved(recurringDepositAccountStatusHashMap);
-
-        /***
-         * Activate the RD Account and verify whether account is activated
-         */
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.activateRecurringDeposit(recurringDepositAccountId,
-                ACTIVATION_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsActive(recurringDepositAccountStatusHashMap);
-
-        HashMap recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Float depositAmount = (Float) recurringDepositAccountData.get("mandatoryRecommendedDepositAmount");
-
-        /***
-         * Perform Deposit transaction and verify journal entries are posted for
-         * the transaction
-         */
-        Integer depositTransactionId = this.recurringDepositAccountHelper.depositToRecurringDepositAccount(recurringDepositAccountId,
-                depositAmount, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(depositTransactionId);
-
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, EXPECTED_FIRST_DEPOSIT_ON_DATE, new JournalEntry(
-                depositAmount, JournalEntry.TransactionType.DEBIT));
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, EXPECTED_FIRST_DEPOSIT_ON_DATE, new JournalEntry(
-                depositAmount, JournalEntry.TransactionType.CREDIT));
-
-        /***
-         * Update interest earned field for RD account
-         */
-        recurringDepositAccountId = this.recurringDepositAccountHelper.calculateInterestForRecurringDeposit(recurringDepositAccountId);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        /***
-         * Post interest and verify journal entries
-         */
-        Integer transactionIdForPostInterest = this.recurringDepositAccountHelper
-                .postInterestForRecurringDeposit(recurringDepositAccountId);
-        Assert.assertNotNull(transactionIdForPostInterest);
-
-        HashMap accountSummary = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float totalInterestPosted = (Float) accountSummary.get("totalInterestPosted");
-
-        final JournalEntry[] expenseAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(expenseAccount, INTEREST_POSTED_DATE, expenseAccountEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, INTEREST_POSTED_DATE, liablilityAccountEntry);
-
-        /***
-         * Calculate expected premature closure amount
-         */
-        HashMap recurringDepositPrematureData = this.recurringDepositAccountHelper.calculatePrematureAmountForRecurringDeposit(
-                recurringDepositAccountId, CLOSED_ON_DATE);
-
-        /***
-         * Preclose the RD account verify whether account is preClosed
-         */
-        Integer prematureClosureTransactionId = (Integer) this.recurringDepositAccountHelper.prematureCloseForRecurringDeposit(
-                recurringDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(prematureClosureTransactionId);
-
-        recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositAccountIsPrematureClosed(recurringDepositAccountStatusHashMap);
-
-        /***
-         * Verify journal entry transactions for preclosure transaction
-         */
-        recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Float maturityAmount = Float.valueOf(recurringDepositAccountData.get("maturityAmount").toString());
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount,
-                JournalEntry.TransactionType.CREDIT));
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount,
-                JournalEntry.TransactionType.DEBIT));
-
-    }
-
-    /***
-     * Test case for Recurring Deposit Account premature closure with
-     * transaction transfers to savings account and Cash Based accounting
-     * enabled
-     */
-    @Test
-    public void testRecurringDepositAccountWithPrematureClosureTypeTransferToSavings() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        /***
-         * Create GL Accounts for product account mapping
-         */
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        Integer numberOfDaysLeft = (daysInMonth - currentDate) + 1;
-        todaysDate.add(Calendar.DATE, numberOfDaysLeft);
-        final String INTEREST_POSTED_DATE = dateFormat.format(todaysDate.getTime());
-        final String CLOSED_ON_DATE = dateFormat.format(Calendar.getInstance().getTime());
-
-        /***
-         * Create client for applying Deposit and Savings accounts
-         */
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        /***
-         * Create Savings product with CashBased accounting enabled
-         */
-        final String accountingRule = CASH_BASED;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE, accountingRule,
-                assetAccount, liabilityAccount, incomeAccount, expenseAccount);
-        Assert.assertNotNull(savingsProductID);
-
-        /***
-         * Create Savings account and verify status is pending
-         */
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientId, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
-        Assert.assertNotNull(savingsProductID);
-
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
-        SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
-
-        /***
-         * Approve the savings account and verify account is approved
-         */
-        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
-
-        /***
-         * Activate the savings account and verify account is activated
-         */
-        savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
-        SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
-
-        /***
-         * Create RD product with CashBased accounting enabled
-         */
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule, assetAccount,
-                liabilityAccount, incomeAccount, expenseAccount);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        /***
-         * Apply for RD account with created product and verify status
-         */
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        /***
-         * Approve the RD account and verify whether account is approved
-         */
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
-                APPROVED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsApproved(recurringDepositAccountStatusHashMap);
-
-        /***
-         * Activate the RD Account and verify whether account is activated
-         */
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.activateRecurringDeposit(recurringDepositAccountId,
-                ACTIVATION_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsActive(recurringDepositAccountStatusHashMap);
-
-        HashMap recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Float depositAmount = (Float) recurringDepositAccountData.get("mandatoryRecommendedDepositAmount");
-
-        /***
-         * Perform Deposit transaction and verify journal entries are posted for
-         * the transaction
-         */
-        Integer depositTransactionId = this.recurringDepositAccountHelper.depositToRecurringDepositAccount(recurringDepositAccountId,
-                depositAmount, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(depositTransactionId);
-
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, EXPECTED_FIRST_DEPOSIT_ON_DATE, new JournalEntry(
-                depositAmount, JournalEntry.TransactionType.DEBIT));
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, EXPECTED_FIRST_DEPOSIT_ON_DATE, new JournalEntry(
-                depositAmount, JournalEntry.TransactionType.CREDIT));
-
-        /***
-         * Update interest earned field for RD account
-         */
-        recurringDepositAccountId = this.recurringDepositAccountHelper.calculateInterestForRecurringDeposit(recurringDepositAccountId);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        /***
-         * Post interest and verify journal entries
-         */
-        Integer transactionIdForPostInterest = this.recurringDepositAccountHelper
-                .postInterestForRecurringDeposit(recurringDepositAccountId);
-        Assert.assertNotNull(transactionIdForPostInterest);
-
-        HashMap accountSummary = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float totalInterestPosted = (Float) accountSummary.get("totalInterestPosted");
-
-        final JournalEntry[] expenseAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(expenseAccount, INTEREST_POSTED_DATE, expenseAccountEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, INTEREST_POSTED_DATE, liablilityAccountEntry);
-
-        /***
-         * Get saving account balance before preClosing RD account
-         */
-        HashMap savingsSummaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        Float balanceBefore = (Float) savingsSummaryBefore.get("accountBalance");
-
-        HashMap recurringDepositPrematureData = this.recurringDepositAccountHelper.calculatePrematureAmountForRecurringDeposit(
-                recurringDepositAccountId, CLOSED_ON_DATE);
-
-        /***
-         * Retrieve mapped financial account for liability transfer
-         */
-        Account financialAccount = getMappedLiabilityFinancialAccount();
-
-        /***
-         * Preclose the RD account verify whether account is preClosed
-         */
-        Integer prematureClosureTransactionId = (Integer) this.recurringDepositAccountHelper.prematureCloseForRecurringDeposit(
-                recurringDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_TRANSFER_TO_SAVINGS, savingsId,
-                CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(prematureClosureTransactionId);
-
-        recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositAccountIsPrematureClosed(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Float maturityAmount = Float.valueOf(recurringDepositAccountData.get("maturityAmount").toString());
-        /***
-         * Verify journal entry transactions for preclosure transaction As this
-         * transaction is an account transfer you should get financial account
-         * mapping details and verify amounts
-         */
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount,
-                JournalEntry.TransactionType.CREDIT), new JournalEntry(maturityAmount, JournalEntry.TransactionType.DEBIT));
-
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(financialAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount,
-                JournalEntry.TransactionType.DEBIT), new JournalEntry(maturityAmount, JournalEntry.TransactionType.CREDIT));
-        /***
-         * Verify rd account maturity amount and savings account balance
-         */
-        HashMap recurringDepositData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Float prematurityAmount = (Float) recurringDepositData.get("maturityAmount");
-
-        HashMap savingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(savingsId);
-        Float balanceAfter = (Float) savingsSummaryAfter.get("accountBalance");
-        Float expectedSavingsBalance = balanceBefore + prematurityAmount;
-
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-
-        Assert.assertEquals("Verifying Savings Account Balance after Premature Closure", decimalFormat.format(expectedSavingsBalance),
-                decimalFormat.format(balanceAfter));
-
-    }
-
-    /***
-     * Test case for Recurring Deposit Account premature closure with
-     * transaction type ReInvest and Cash Based accounting enabled
-     */
-    @Test
-    public void testRecurringDepositAccountWithPrematureClosureTypeReinvest() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        RecurringDepositAccountHelper recurringDepositAccountHelperValidationError = new RecurringDepositAccountHelper(this.requestSpec,
-                new ResponseSpecBuilder().build());
-
-        /***
-         * Create GL Accounts for product account mapping
-         */
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        Integer numberOfDaysLeft = (daysInMonth - currentDate) + 1;
-        todaysDate.add(Calendar.DATE, numberOfDaysLeft);
-        final String INTEREST_POSTED_DATE = dateFormat.format(todaysDate.getTime());
-        final String CLOSED_ON_DATE = dateFormat.format(Calendar.getInstance().getTime());
-
-        /***
-         * Create client for applying Deposit account
-         */
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        /***
-         * Create RD product with CashBased accounting enabled
-         */
-        final String accountingRule = CASH_BASED;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule, assetAccount,
-                liabilityAccount, incomeAccount, expenseAccount);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        ArrayList<HashMap> allRecurringDepositProductsData = this.recurringDepositProductHelper.retrieveAllRecurringDepositProducts(
-                this.requestSpec, this.responseSpec);
-        HashMap recurringDepositProductData = this.recurringDepositProductHelper.retrieveRecurringDepositProductById(this.requestSpec,
-                this.responseSpec, recurringDepositProductId.toString());
-
-        /***
-         * Apply for RD account with created product and verify status
-         */
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        /***
-         * Approve the RD account and verify whether account is approved
-         */
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
-                APPROVED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsApproved(recurringDepositAccountStatusHashMap);
-
-        /***
-         * Activate the RD Account and verify whether account is activated
-         */
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.activateRecurringDeposit(recurringDepositAccountId,
-                ACTIVATION_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsActive(recurringDepositAccountStatusHashMap);
-
-        HashMap recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Float depositAmount = (Float) recurringDepositAccountData.get("mandatoryRecommendedDepositAmount");
-
-        /***
-         * Perform Deposit transaction and verify journal entries are posted for
-         * the transaction
-         */
-        Integer depositTransactionId = this.recurringDepositAccountHelper.depositToRecurringDepositAccount(recurringDepositAccountId,
-                DEPOSIT_AMOUNT, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(depositTransactionId);
-
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, EXPECTED_FIRST_DEPOSIT_ON_DATE, new JournalEntry(
-                depositAmount, JournalEntry.TransactionType.DEBIT));
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, EXPECTED_FIRST_DEPOSIT_ON_DATE, new JournalEntry(
-                depositAmount, JournalEntry.TransactionType.CREDIT));
-
-        /***
-         * Update interest earned field for RD account
-         */
-        recurringDepositAccountId = this.recurringDepositAccountHelper.calculateInterestForRecurringDeposit(recurringDepositAccountId);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        /***
-         * Post interest and verify journal entries
-         */
-        Integer transactionIdForPostInterest = this.recurringDepositAccountHelper
-                .postInterestForRecurringDeposit(recurringDepositAccountId);
-        Assert.assertNotNull(transactionIdForPostInterest);
-
-        HashMap accountSummary = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float totalInterestPosted = (Float) accountSummary.get("totalInterestPosted");
-
-        final JournalEntry[] expenseAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liablilityAccountEntry = { new JournalEntry(totalInterestPosted, JournalEntry.TransactionType.CREDIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(expenseAccount, INTEREST_POSTED_DATE, expenseAccountEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, INTEREST_POSTED_DATE, liablilityAccountEntry);
-
-        /***
-         * Calculate expected premature closure amount
-         */
-        HashMap recurringDepositPrematureData = this.recurringDepositAccountHelper.calculatePrematureAmountForRecurringDeposit(
-                recurringDepositAccountId, CLOSED_ON_DATE);
-
-        /***
-         * Expected to get an error response from api because re-invest option
-         * is not supported for account preClosure
-         */
-        ArrayList<HashMap> errorResponse = (ArrayList<HashMap>) recurringDepositAccountHelperValidationError
-                .prematureCloseForRecurringDeposit(recurringDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_REINVEST, null,
-                        CommonConstants.RESPONSE_ERROR);
-
-        assertEquals("validation.msg.recurringdepositaccount.onAccountClosureId.reinvest.not.allowed",
-                errorResponse.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-    }
-
-    /***
-     * Test case for Update Recurring Deposit Account details
-     */
-    @Test
-    public void testRecurringDepositAccountUpdation() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        todaysDate.add(Calendar.DATE, -1);
-
-        HashMap modificationsHashMap = this.recurringDepositAccountHelper.updateRecurringDepositAccount(clientId.toString(),
-                recurringDepositProductId.toString(), recurringDepositAccountId.toString(), VALID_FROM, VALID_TO, WHOLE_TERM,
-                SUBMITTED_ON_DATE);
-        Assert.assertTrue(modificationsHashMap.containsKey("submittedOnDate"));
-
-    }
-
-    /***
-     * Test case for Approve and Undo Approval of Recurring Deposit Account
-     */
-    @Test
-    public void testRecurringDepositAccountUndoApproval() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
-                APPROVED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsApproved(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.undoApproval(recurringDepositAccountId);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-    }
-
-    /***
-     * Test case for Closure of Recurring Deposit Account(Reject Application)
-     */
-    @Test
-    public void testRecurringDepositAccountRejectedAndClosed() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String REJECTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.rejectApplication(recurringDepositAccountId,
-                REJECTED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsRejected(recurringDepositAccountStatusHashMap);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositAccountIsClosed(recurringDepositAccountStatusHashMap);
-    }
-
-    /***
-     * Test case for Closure of Recurring Deposit Account(Withdrawn by
-     * applicant)
-     */
-    @Test
-    public void testRecurringDepositAccountWithdrawnByClientAndClosed() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String WITHDRAWN_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.withdrawApplication(recurringDepositAccountId,
-                WITHDRAWN_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsWithdrawn(recurringDepositAccountStatusHashMap);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositAccountIsClosed(recurringDepositAccountStatusHashMap);
-    }
-
-    /***
-     * Test case for Delete of Recurring Deposit Account.
-     */
-    @Test
-    public void testRecurringDepositAccountIsDeleted() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountId = (Integer) this.recurringDepositAccountHelper.deleteRecurringDepositApplication(
-                recurringDepositAccountId, "resourceId");
-        Assert.assertNotNull(recurringDepositAccountId);
-    }
-
-    /***
-     * Test case for update Recurring deposit account transactions
-     */
-    @Test
-    public void testUpdateAndUndoTransactionForRecurringDepositAccount() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        /***
-         * Create GL Accounts for product account mapping
-         */
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.MONTH, 1);
-        final String DEPOSIT_DATE = dateFormat.format(todaysDate.getTime());
-
-        /***
-         * Create client for applying Deposit account
-         */
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        /***
-         * Create RD product with CashBased accounting enabled
-         */
-        final String accountingRule = CASH_BASED;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule, assetAccount,
-                liabilityAccount, incomeAccount, expenseAccount);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        /***
-         * Apply for RD account with created product and verify status
-         */
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        /***
-         * Approve the RD account and verify whether account is approved
-         */
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
-                APPROVED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsApproved(recurringDepositAccountStatusHashMap);
-
-        /***
-         * Activate the RD Account and verify whether account is activated
-         */
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.activateRecurringDeposit(recurringDepositAccountId,
-                ACTIVATION_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsActive(recurringDepositAccountStatusHashMap);
-
-        HashMap recurringDepositSummaryBefore = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float balanceBefore = (Float) recurringDepositSummaryBefore.get("accountBalance");
-
-        /***
-         * Perform Deposit transaction and verify journal entries are posted for
-         * the transaction
-         */
-        Integer transactionIdForDeposit = this.recurringDepositAccountHelper.depositToRecurringDepositAccount(recurringDepositAccountId,
-                DEPOSIT_AMOUNT, DEPOSIT_DATE);
-        Assert.assertNotNull(transactionIdForDeposit);
-
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, DEPOSIT_DATE, new JournalEntry(DEPOSIT_AMOUNT,
-                JournalEntry.TransactionType.DEBIT));
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, DEPOSIT_DATE, new JournalEntry(DEPOSIT_AMOUNT,
-                JournalEntry.TransactionType.CREDIT));
-
-        /***
-         * verify account balances after transactions
-         */
-        Float expectedBalanceAfter = balanceBefore + DEPOSIT_AMOUNT;
-        HashMap recurringDepositSummaryAfter = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float balanceAfter = (Float) recurringDepositSummaryAfter.get("accountBalance");
-
-        Assert.assertEquals("Verifying account balance after deposit", expectedBalanceAfter, balanceAfter);
-
-        /***
-         * Update transaction and verify account balance after transaction
-         */
-        Float updatedTransactionAmount = DEPOSIT_AMOUNT - 1000.0f;
-        Integer updateTransactionId = this.recurringDepositAccountHelper.updateTransactionForRecurringDeposit(recurringDepositAccountId,
-                transactionIdForDeposit, DEPOSIT_DATE, updatedTransactionAmount);
-        Assert.assertNotNull(updateTransactionId);
-
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, DEPOSIT_DATE, new JournalEntry(updatedTransactionAmount,
-                JournalEntry.TransactionType.DEBIT));
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, DEPOSIT_DATE, new JournalEntry(
-                updatedTransactionAmount, JournalEntry.TransactionType.CREDIT));
-
-        expectedBalanceAfter = DEPOSIT_AMOUNT - updatedTransactionAmount;
-        recurringDepositSummaryAfter = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        balanceAfter = (Float) recurringDepositSummaryAfter.get("accountBalance");
-
-        Assert.assertEquals("Verifying account balance after updating Transaction", expectedBalanceAfter, balanceAfter);
-
-        Integer undoTransactionId = this.recurringDepositAccountHelper.undoTransactionForRecurringDeposit(recurringDepositAccountId,
-                updateTransactionId, DEPOSIT_DATE, 0.0f);
-        Assert.assertNotNull(undoTransactionId);
-
-        expectedBalanceAfter = expectedBalanceAfter - updatedTransactionAmount;
-        recurringDepositSummaryAfter = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        balanceAfter = (Float) recurringDepositSummaryAfter.get("accountBalance");
-
-        Assert.assertEquals("Verifying account balance after Undo Transaction", expectedBalanceAfter, balanceAfter);
-
-    }
-
-    /***
-     * Test case for verify maturity amount with monthly compounding and monthly
-     * posting with 365 days in year
-     */
-    @Test
-    public void testMaturityAmountForMonthlyCompoundingAndMonthlyPosting_With_365_Days() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        todaysDate.add(Calendar.DATE, -(currentDate - 1));
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
-                APPROVED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsApproved(recurringDepositAccountStatusHashMap);
-
-        HashMap recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Float depositAmount = (Float) recurringDepositAccountData.get("mandatoryRecommendedDepositAmount");
-        Float maturityAmount = (Float) recurringDepositAccountData.get("maturityAmount");
-        Integer depositPeriod = (Integer) recurringDepositAccountData.get("depositPeriod");
-        HashMap daysInYearMap = (HashMap) recurringDepositAccountData.get("interestCalculationDaysInYearType");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.recurringDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, recurringDepositProductId);
-
-        HashMap recurringDepositSummary = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float principal = (Float) recurringDepositSummary.get("accountBalance");
-
-        Float interestRate = this.recurringDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-
-        principal = this.recurringDepositAccountHelper.getPrincipalAfterCompoundingInterest(todaysDate, principal, depositAmount,
-                depositPeriod, interestPerDay, MONTHLY_INTERVAL, MONTHLY_INTERVAL);
-
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-        principal = new Float(decimalFormat.format(principal));
-        maturityAmount = new Float(decimalFormat.format(maturityAmount));
-        System.out.println(principal);
-        Assert.assertEquals("Verifying Maturity amount for Recurring Deposit Account", principal, maturityAmount);
-    }
-
-    /***
-     * Test case for verify maturity amount with monthly compounding and monthly
-     * posting with 360 days in year
-     */
-    @Test
-    public void testMaturityAmountForMonthlyCompoundingAndMonthlyPosting_With_360_Days() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        todaysDate.add(Calendar.DATE, -(currentDate - 1));
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap modificationsHashMap = this.recurringDepositAccountHelper.updateInterestCalculationConfigForRecurringDeposit(
-                clientId.toString(), recurringDepositProductId.toString(), recurringDepositAccountId.toString(), SUBMITTED_ON_DATE,
-                VALID_FROM, VALID_TO, DAYS_360, WHOLE_TERM, INTEREST_CALCULATION_USING_DAILY_BALANCE, MONTHLY, MONTHLY,
-                EXPECTED_FIRST_DEPOSIT_ON_DATE);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
-                APPROVED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsApproved(recurringDepositAccountStatusHashMap);
-
-        HashMap recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Float depositAmount = (Float) recurringDepositAccountData.get("mandatoryRecommendedDepositAmount");
-        Float maturityAmount = (Float) recurringDepositAccountData.get("maturityAmount");
-        Integer depositPeriod = (Integer) recurringDepositAccountData.get("depositPeriod");
-        HashMap daysInYearMap = (HashMap) recurringDepositAccountData.get("interestCalculationDaysInYearType");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.recurringDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, recurringDepositProductId);
-
-        HashMap recurringDepositSummary = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float principal = (Float) recurringDepositSummary.get("accountBalance");
-
-        Float interestRate = this.recurringDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-
-        principal = this.recurringDepositAccountHelper.getPrincipalAfterCompoundingInterest(todaysDate, principal, depositAmount,
-                depositPeriod, interestPerDay, MONTHLY_INTERVAL, MONTHLY_INTERVAL);
-
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-        principal = new Float(decimalFormat.format(principal));
-        maturityAmount = new Float(decimalFormat.format(maturityAmount));
-        System.out.println(principal);
-        Assert.assertEquals("Verifying Maturity amount for Recurring Deposit Account", principal, maturityAmount);
-    }
-
-    /***
-     * Test case for verify interest posting of RD account
-     */
-    @Test
-    public void testPostInterestForRecurringDeposit() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        final String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
-                APPROVED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsApproved(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.activateRecurringDeposit(recurringDepositAccountId,
-                ACTIVATION_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsActive(recurringDepositAccountStatusHashMap);
-
-        HashMap recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Integer depositPeriod = (Integer) recurringDepositAccountData.get("depositPeriod");
-        HashMap daysInYearMap = (HashMap) recurringDepositAccountData.get("interestCalculationDaysInYearType");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.recurringDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, recurringDepositProductId);
-
-        Integer depositTransactionId = this.recurringDepositAccountHelper.depositToRecurringDepositAccount(recurringDepositAccountId,
-                DEPOSIT_AMOUNT, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(depositTransactionId);
-
-        HashMap recurringDepositSummary = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float principal = (Float) recurringDepositSummary.get("totalDeposits");
-
-        Float interestRate = this.recurringDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-
-        Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
-        Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
-        daysInMonth = (daysInMonth - currentDate) + 1;
-        Float interestToBePosted = new Float(decimalFormat.format(interestPerDay * principal * daysInMonth));
-        principal += interestToBePosted;
-
-        Float expectedBalanceAfter = new Float(decimalFormat.format(principal));
-        System.out.println(expectedBalanceAfter);
-
-        Integer transactionIdForPostInterest = this.recurringDepositAccountHelper
-                .postInterestForRecurringDeposit(recurringDepositAccountId);
-        Assert.assertNotNull(transactionIdForPostInterest);
-
-        HashMap recurringDepositAccountSummary = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float interestAmountPosted = new Float(decimalFormat.format(recurringDepositAccountSummary.get("totalInterestPosted")));
-        Float principalAfter = new Float(decimalFormat.format(recurringDepositAccountSummary.get("accountBalance")));
-
-        Assert.assertEquals("Verifying Amount of Interest Posted to Recurring Deposit Account", interestToBePosted, interestAmountPosted);
-        Assert.assertEquals("Verifying Principal Amount after Interest Posting", expectedBalanceAfter, principalAfter);
-
-    }
-
-    /***
-     * Test case for verify premature closure amount with penal interest for
-     * whole term with closure transaction type withdrawal and 365 days in year
-     */
-    @Test
-    public void testPrematureClosureAmountWithPenalInterestForWholeTerm_With_365_Days() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.MONTH, 1);
-        final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
-
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
-                APPROVED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsApproved(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.activateRecurringDeposit(recurringDepositAccountId,
-                ACTIVATION_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsActive(recurringDepositAccountStatusHashMap);
-
-        HashMap recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Float depositAmount = (Float) recurringDepositAccountData.get("mandatoryRecommendedDepositAmount");
-        Integer depositPeriod = (Integer) recurringDepositAccountData.get("depositPeriod");
-        HashMap daysInYearMap = (HashMap) recurringDepositAccountData.get("interestCalculationDaysInYearType");
-        Float preClosurePenalInterestRate = (Float) recurringDepositAccountData.get("preClosurePenalInterest");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.recurringDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, recurringDepositProductId);
-
-        Integer depositTransactionId = this.recurringDepositAccountHelper.depositToRecurringDepositAccount(recurringDepositAccountId,
-                DEPOSIT_AMOUNT, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(depositTransactionId);
-
-        HashMap recurringDepositSummary = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float principal = (Float) recurringDepositSummary.get("totalDeposits");
-
-        Float interestRate = this.recurringDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
-        interestRate -= preClosurePenalInterestRate;
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        Calendar calendar = Calendar.getInstance();
-        calendar.add(Calendar.MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(calendar.getTime()));
-        Integer daysInMonth = calendar.getActualMaximum(Calendar.DATE);
-        daysInMonth = (daysInMonth - currentDate) + 1;
-        Float interestPerMonth = (float) (interestPerDay * principal * daysInMonth);
-        principal += interestPerMonth + depositAmount;
-        calendar.add(Calendar.DATE, daysInMonth);
-        System.out.println(monthDayFormat.format(calendar.getTime()));
-
-        EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(calendar.getTime());
-        Integer transactionIdForDeposit = this.recurringDepositAccountHelper.depositToRecurringDepositAccount(recurringDepositAccountId,
-                DEPOSIT_AMOUNT, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(transactionIdForDeposit);
-
-        currentDate = currentDate - 1;
-        interestPerMonth = (float) (interestPerDay * principal * currentDate);
-        System.out.println("IPM = " + interestPerMonth);
-        principal += interestPerMonth;
-        System.out.println("principal = " + principal);
-
-        HashMap recurringDepositPrematureData = this.recurringDepositAccountHelper.calculatePrematureAmountForRecurringDeposit(
-                recurringDepositAccountId, CLOSED_ON_DATE);
-
-        Integer prematureClosureTransactionId = (Integer) this.recurringDepositAccountHelper.prematureCloseForRecurringDeposit(
-                recurringDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
-        Assert.assertNotNull(prematureClosureTransactionId);
-
-        recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositAccountIsPrematureClosed(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-        decimalFormat.applyPattern(".");
-
-        principal = new Float(decimalFormat.format(principal));
-        Float maturityAmount = new Float(decimalFormat.format(recurringDepositAccountData.get("maturityAmount")));
-
-        Assert.assertEquals("Verifying Pre-Closure maturity amount", principal, maturityAmount);
-
-    }
-
-    /***
-     * Test case for verify premature closure amount with penal interest for
-     * whole term with closure transaction type withdrawal and 360 days in year
-     */
-    @Test
-    public void testPrematureClosureAmountWithPenalInterestForWholeTerm_With_360_Days() {
-        this.recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        this.recurringDepositAccountHelper = new RecurringDepositAccountHelper(this.requestSpec, this.responseSpec);
-
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
-        DateFormat monthDayFormat = new SimpleDateFormat("dd MMM", Locale.US);
-        DateFormat currentDateFormat = new SimpleDateFormat("dd");
-
-        Calendar todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -3);
-        final String VALID_FROM = dateFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.YEAR, 10);
-        final String VALID_TO = dateFormat.format(todaysDate.getTime());
-
-        todaysDate = Calendar.getInstance();
-        todaysDate.add(Calendar.MONTH, -1);
-        final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
-        String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
-        final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
-        todaysDate.add(Calendar.MONTH, 1);
-        final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
-
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account liabilityAccount = this.accountHelper.createLiabilityAccount();
-
-        Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(clientId);
-
-        final String accountingRule = NONE;
-        Integer recurringDepositProductId = createRecurringDepositProduct(VALID_FROM, VALID_TO, accountingRule);
-        Assert.assertNotNull(recurringDepositProductId);
-
-        Integer recurringDepositAccountId = applyForRecurringDepositApplication(clientId.toString(), recurringDepositProductId.toString(),
-                VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(recurringDepositAccountId);
-
-        HashMap modificationsHashMap = this.recurringDepositAccountHelper.updateInterestCalculationConfigForRecurringDeposit(
-                clientId.toString(), recurringDepositProductId.toString(), recurringDepositAccountId.toString(), SUBMITTED_ON_DATE,
-                VALID_FROM, VALID_TO, DAYS_360, WHOLE_TERM, INTEREST_CALCULATION_USING_DAILY_BALANCE, MONTHLY, MONTHLY,
-                EXPECTED_FIRST_DEPOSIT_ON_DATE);
-
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
-                APPROVED_ON_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsApproved(recurringDepositAccountStatusHashMap);
-
-        recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.activateRecurringDeposit(recurringDepositAccountId,
-                ACTIVATION_DATE);
-        RecurringDepositAccountStatusChecker.verifyRecurringDepositIsActive(recurringDepositAccountStatusHashMap);
-
-        HashMap recurringDepositAccountData = this.recurringDepositAccountHelper.getRecurringDepositAccountById(this.requestSpec,
-                this.responseSpec, recurringDepositAccountId);
-        Float depositAmount = (Float) recurringDepositAccountData.get("mandatoryRecommendedDepositAmount");
-        Integer depositPeriod = (Integer) recurringDepositAccountData.get("depositPeriod");
-        HashMap daysInYearMap = (HashMap) recurringDepositAccountData.get("interestCalculationDaysInYearType");
-        Float preClosurePenalInterestRate = (Float) recurringDepositAccountData.get("preClosurePenalInterest");
-        Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.recurringDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, recurringDepositProductId);
-
-        Integer depositTransactionId = this.recurringDepositAccountHelper.depositToRecurringDepositAccount(recurringDepositAccountId,
-                DEPOSIT_AMOUNT, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(depositTransactionId);
-
-        HashMap recurringDepositSummary = this.recurringDepositAccountHelper.getRecurringDepositSummary(recurringDepositAccountId);
-        Float principal = (Float) recurringDepositSummary.get("totalDeposits");
-
-        Float interestRate = this.recurringDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
-        interestRate -= preClosurePenalInterestRate;
-        double interestRateInFraction = (interestRate / 100);
-        double perDay = (double) 1 / (daysInYear);
-        System.out.println("per day = " + perDay);
-        double interestPerDay = interestRateInFraction * perDay;
-
-        Calendar calendar = Calendar.getInstance();
-        calendar.add(Calendar.MONTH, -1);
-        Integer currentDate = new Integer(currentDateFormat.format(calendar.getTime()));
-        Integer daysInMonth = calendar.getActualMaximum(Calendar.DATE);
-        daysInMonth = (daysInMonth - currentDate) + 1;
-        Float interestPerMonth = (float) (interestPerDay * principal * daysInMonth);
-        principal += interestPerMonth + depositAmount;
-        calendar.add(Calendar.DATE, daysInMonth);
-        System.out.println(monthDayFormat.format(calendar.getTime()));
-
-        EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(calendar.getTime());
-        Integer transactionIdForDeposit = this.recurringDepositAccountHelper.depositToRecurringDepositAccount(recurringDepositAccountId,
-                DEPOSIT_AMOUNT, EXPECTED_FIRST_DEPOSIT_ON_DATE);
-        Assert.assertNotNull(transactionIdForDeposit);
-
-        currentDate = currentDate - 1;
-        interestPerMonth = (float) (interestPerDay * principal * currentDate);
-        System.out.println("IPM = " + interestPerMonth);
-        principal += interestPerMonth;
-        System.out.println("principal = " + principal);
-
-        HashMap recurringDepositPrematureData = this.recurringDepositAccountHelp

<TRUNCATED>


[49/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/api-docs/apiLive.htm
----------------------------------------------------------------------
diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm
deleted file mode 100644
index 0eec1fd..0000000
--- a/api-docs/apiLive.htm
+++ /dev/null
@@ -1,42924 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-<link rel="stylesheet" href="apidocs.css" type="text/css" media="screen" title="Apache Fineract API Docs" charset="utf-8" />
-<script type="text/javascript" src="jquery-1.7.min.js"></script>
-<title>Apache Fineract API Documentation</title>
-
-<script>
-	QueryParameters = (function() {
-		var result = {};
-		if (window.location.search) {
-			// split up the query string and store in an associative array
-			var params = window.location.search.slice(1).split("&");
-			for ( var i = 0; i < params.length; i++) {
-				var tmp = params[i].split("=");
-				result[tmp[0]] = unescape(tmp[1]);
-			}
-		}
-		return result;
-	}());
-
-	getLocation = function(href) {
-		var l = document.createElement("a");
-		l.href = href;
-		return l;
-	};
-
-	baseURL = "";
-	defQueryParams = "tenantIdentifier=default&pretty=true";
-
-	function clickAPILink(apiLink) {
-		var currentLink = baseURL + apiLink;
-		if (apiLink.indexOf("?") < 0)
-			currentLink += "?" + defQueryParams;
-		else
-			currentLink += "&" + defQueryParams;
-
-		if ((/MSIE (\d+\.\d+);/.test(navigator.userAgent))
-				|| (apiLink.indexOf("exportCSV") > -1)
-				|| (apiLink.indexOf("type=CSV") > -1)
-				|| (apiLink.indexOf("type=XLS") > -1)) { // test for MSIE (not a great browser for the api docs anyhow)  or a file download
-			location.href = currentLink;
-		} else
-			window.open(currentLink);
-	}
-
-	function clickAPILinkNotPretty(apiLink) {
-		var fixedQueryParams = "tenantIdentifier=default";
-		var currentLink = baseURL + apiLink;
-		if (apiLink.indexOf("?") < 0)
-			currentLink += "?" + fixedQueryParams;
-		else
-			currentLink += "&" + fixedQueryParams;
-
-		if ((/MSIE (\d+\.\d+);/.test(navigator.userAgent))
-				|| (apiLink.indexOf("exportCSV") > -1)
-				|| (apiLink.indexOf("type=CSV") > -1)
-				|| (apiLink.indexOf("type=XLS") > -1)) { // test for MSIE (not a great browser for the api docs anyhow)  or a file download
-			location.href = currentLink;
-		} else
-			window.open(currentLink);
-	}
-
-	function getBaseURL(docURL) {
-		var localhostUrl = "https://localhost:8443/fineract-provider/api/v1/";
-		var openmfDemoUrl = "/fineract-provider/api/v1/";
-
-		var baseUrl = "";
-
-		if (docURL.substring(0, 4).toLowerCase() == "http") {
-			var l = getLocation(docURL);
-
-			if (l.hostname == "demo.openmf.org") {
-				baseUrl = openmfDemoUrl;
-			} else {
-				baseUrl = "https://" + l.hostname
-						+ ":8443/fineract-provider/api/v1/"
-			}
-		} else {
-			//assume running locally
-			baseUrl = localhostUrl;
-		}
-
-		return baseUrl;
-	}
-</script>
-</head>
-
-<body>
-	<div id="page-wrapper">
-		<div id="flybar">
-			<div id="nav-logo">16.01.2.RELEASE</div>
-			<div class="flybar-nav">
-				<h2 class="flybar-button">Overview</h2>
-				<div class="flybar-menu-overview">
-					<div class="toc-column1">
-						<div class="toc-section">
-<ul>
-	<li><a href="#top">Apache Fineract API Documentation</a></li>
-	<li><a href="#interact">Try The API From Your Browser</a></li>
-	<li><a href="#genopts">Generic Options</a></li>
-	<li><a href="#creates_and_updates">Creating and Updating</a></li>
-	<li><a href="#dates_and_numbers">Updating Dates and Numbers</a></li>
-	<li><a href="#field_descriptions">Field Descriptions</a></li>
-	<li><a href="#authentication_overview">Authentication Overview</a></li>
-	<li><a href="#authentication_basicauth">Authentication HTTP Basic</a></li>
-	<li><a href="#authentication_oauth">Authentication Oauth2</a></li>
-	<li><a href="#errors">Errors</a></li>
-	<li><a href="#batch_api">Batch API</a></li>
-	<li><a href="#fullapi_matrix">Full API Matrix</a></li>
-	<li><a href="#betaapi_matrix">Beta API Matrix</a></li>
-	<li><a href="#paymentapplicationlogic">Payment Application Logic / Transaction Processing Strategies</a></li>
-	<li><a href="#selfservice_overview">Self Service API</a></li>
-</ul>
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="flybar-nav">
-				<h2 class="flybar-button">Client</h2>
-				<div id="toc-menu-client" class="flybar-menu">
-					<div class="tocMatrix">
-						<table class=matrixHeading>
-							<tr class="matrixHeadingBG">
-								<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
-										<table>
-											<tr>
-												<td>RESOURCES</td>
-											</tr>
-										</table>
-									</div></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">POST</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>create/complex
-													update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">GET</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>read</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">PUT</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">DELETE</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>delete</div></td>
-										</tr>
-									</table></td>
-							</tr>
-							<tr>
-								<td><a href="#clients">Client</a></td>
-								<td>clients</td>
-								<td><a href="#clients_create">Create a Client</a></td>
-								<td><a href="#clients_list">List Clients</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}</td>
-								<td></td>
-								<td><a href="#clients_retrieve">Retrieve a Client</a></td>
-								<td><a href="#clients_update">Update a Client</a></td>
-								<td><a href="#clients_delete">Delete a Client</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=activate</td>
-								<td><a href="#clients_activate">Activate a Client</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=close</td>
-								<td><a href="#clients_close">Close a Client</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=reject</td>
-								<td><a href="#clients_reject">Reject a Client Application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=withdraw</td>
-								<td><a href="#clients_withdraw">Withdraw a Client Application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=reactivate</td>
-								<td><a href="#clients_reactivate">Reactivate a Client</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=assignStaff</td>
-								<td><a href="#clients_assignStaff">Assign Staff</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=unassignStaff</td>
-								<td><a href="#clients_unassignStaff">Unassign Staff</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=proposeTransfer</td>
-								<td><a href="#clients_propose_transfer">Propose a Client Transfer</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=withdrawTransfer</td>
-								<td><a href="#clients_withdraw_transfer">Withdraw Client Transfer Proposal</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=acceptTransfer</td>
-								<td><a href="#clients_accept_transfer">Accept Client Transfer</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=rejectTransfer</td>
-								<td><a href="#clients_reject_transfer">Reject Client Transfer</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}?command=updateSavingsAccount</td>
-								<td><a href="#clients_updateSavingsAccount">Update Default Savings Account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td class="alt"></td>
-								<td>clients/{clientId}?command=proposeAndAcceptTransfer</td>
-								<td><a href="#clients_propose_and_accept_transfer">Propose and Accept a Client Transfer</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}/accounts</td>
-								<td></td>
-								<td><a href="#clients_loansummary">Retrieve client accounts overview</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#client_identifiers">Client Identifiers</a></td>
-								<td>clients/{clientId}/identifiers</td>
-								<td><a href="#client_identifiers_create">Create an Identifier for a Client</a></td>
-								<td><a href="#client_identifiers_list">List all Identifiers for a Client</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}/identifiers/{identifierId}</td>
-								<td></td>
-								<td><a href="#client_identifiers_retrieve">Retrieve a Client Identifier</a></td>
-								<td><a href="#client_identifiers_update">Update a Client Identifier</a></td>
-								<td><a href="#client_identifiers_delete">Delete a Client Identifier</a></td>
-							</tr>
-							<tr>
-								<td><a href="#client_images">Client Images</a></td>
-								<td>clients/{clientId}/images</td>
-								<td><a href="#client_images_create">Upload an Image for a Client (as  DATA URI)</a></td>
-								<td><a href="#client_images_retrieve">Get Client Image (DATA URI)</a></td>
-								<td><a href="#client_images_update">Update Client Image (DATA URI)</a></td>
-								<td><a href="#client_images_delete">Delete Client Image</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td></td>
-								<td><a href="#client_images_create_form">
-									Upload an Image for a Client (Multi-part form data)</a>
-								</td>
-								<td><a href="#client_images_retrieve_binary">Get Client Image (Binary file)</a></td>
-								<td><a href="#client_images_update_form">
-									Update Client Image (Multi-part form data)</a>
-								</td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#standinginstruction">Standing Instructions</a></td>
-								<td>standinginstructions</td>
-								<td><a href="#standinginstruction_create">Create Standing Instruction</a></td>
-                                <td><a href="#standinginstructions_list">List Standing Instructions</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>standinginstructions/{standingInstructionId}</td>
-                                <td></td>
-								<td><a href="#standinginstructions_retrieve">Retrieve a Standing Instruction</a></td>
-                                <td><a href="#standinginstruction_update">Update Standing Instruction</a></td>
-								<td><a href="#standinginstruction_delete">Delete Standing Instruction(status change)</a></td>
-							</tr>
-                            <tr>
-                                <td></td>
-                                <td>standinginstructionrunhistory</td>
-                                <td></td>
-                                <td><a href="#standinginstructions_history">Standing Instructions Run History</a></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-							<tr>
-								<td><a href="#accounttransfers">Account Transfer</a></td>
-								<td>accounttransfers</td>
-								<td><a href="#accounttransfers_create">Create Account Transfer</a></td>
-                                <td><a href="#accounttransfers_list">List Account Transfer</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>accounttransfers/{accountTransferId}</td>
-								<td></td>
-                                <td><a href="#accounttransfers_retrieve">Retrieve a Account Transfer</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>accounttransfers/templateRefundByTransfer</td>
-								<td></td>
-                                <td><a href="#accounttransfers_retrieve_template_refund_by_transfer">Retrieve Refund of an Active Loan by Transfer Template</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>accounttransfers/refundByTransfer</td>
-                                <td><a href="#accounttransfers_refund_by_transfer">Refund an active loan by transfer</a></td>
-                                <td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#client_charge">Client Charge</a></td>
-								<td>clients/{clientId}/charges</td>
-								<td><a href="#add_clientCharge">Add Client Charge</a></td>
-								<td><a href="#list_clientCharges">List Client Charges</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}/charges/{clientChargeId}</td>
-								<td></td>
-								<td><a href="#clientcharges_retrieve">Retrieve a Client Charge</a></td>
-								<td></td>
-								<td><a href="#delete_clientCharge">Delete a Client Charge</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}/charges/{clientChargeId}?command=pay</td>
-								<td><a href="#pay_clientCharge">Pay a Client Charge</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}/charges/{clientChargeId}?command=waive</td>
-								<td><a href="#waive_clientCharge">Waive a Client Charge</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#client_transactions">Client Transactions</td>
-								<td>clients/{clientId}/transactions</td>
-								<td><a href="#list_clientTransactions">List Client Transactions</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>clients/{clientId}/transactions/{transactionId}?command=undo</td>
-								<td><a href="#revert_clientCharge">Undo a Client Transaction</a></td>
-								<td><a href="#clienttransactions_retrieve">Retrieve a Client Transaction</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-
-						</table>
-					</div>
-				</div>
-			</div>
-
-			<div class="flybar-nav">
-				<h2 class="flybar-button">Savings</h2>
-				<div id="toc-menu-client" class="flybar-menu">
-					<div class="tocMatrix">
-						<table class=matrixHeading>
-							<tr class="matrixHeadingBG">
-								<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
-										<table>
-											<tr>
-												<td>RESOURCES</td>
-											</tr>
-										</table>
-									</div></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">POST</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>create/complex
-													update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">GET</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>read</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">PUT</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">DELETE</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>delete</div></td>
-										</tr>
-									</table></td>
-							</tr>
-							<tr>
-								<td><a href="#savingsaccounts">Savings Accounts</a></td>
-								<td>savingsaccounts</td>
-								<td><a href="#savingsaccounts_create">Submit new savings application</a></td>
-								<td><a href="#savingsaccounts_list">List savings application/accounts</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}</td>
-								<td></td>
-								<td><a href="#savingsaccounts_retrieve">Retrieve a savings application/account</a></td>
-								<td><a href="#savingsaccounts_update">Modify a savings application</a></td>
-								<td><a href="#savingsaccounts_delete">Delete a savings application</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}?command=approve</td>
-								<td><a href="#savingsaccounts_approve">Approve a savings application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}?command=undoApproval</td>
-								<td><a href="#savingsaccounts_undoapproval">Undo savings application approval</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}?command=assignSavingsOfficer</td>
-								<td><a href="#savingsaccounts_assignSavingsOfficer">Assign Savings Officer</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}?command=unassignSavingsOfficer</td>
-								<td><a href="#savingsaccounts_unassignSavingsOfficer">Unassign Savings Officer</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}?command=reject</td>
-								<td><a href="#savingsaccounts_reject">Reject a savings application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}?command=withdraw</td>
-								<td><a href="#savingsaccounts_withdrawbyapplicant">Withdraw savings application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}?command=activate</td>
-								<td><a href="#savingsaccounts_activate">Activate a savings account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}?command=close</td>
-								<td><a href="#savingsaccounts_close">Close a savings account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}?command=calculateInterest</td>
-								<td><a href="#savingsaccounts_calculate_interest">Calculate interest on a savings account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}?command=postInterest</td>
-								<td><a href="#savingsaccounts_post_interest">Post interest on a savings account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#savingsaccounts_transactions">Savings Transactions</a></td>
-								<td>savingsaccounts/{accountId}/transactions?command=deposit</td>
-								<td><a href="#savingsaccounts_deposit">Make a deposit</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}/transactions?command=withdrawal</td>
-								<td><a href="#savingsaccounts_withdrawal">Make a withdrawal</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}/transactions/{transactionId}?command=undo</td>
-								<td><a href="#savingsaccounts_undotransaction">Undo transaction</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}/transactions/{transactionId}?command=modify</td>
-								<td><a href="#savingsaccounts_adjusttransaction">Adjust transaction</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}/transactions/template</td>
-								<td></td>
-								<td><a href="#savingsaccounts_transactions_template">Retrieve savings account transaction template</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}/transactions/{transactionId}</td>
-								<td></td>
-								<td><a href="#savingsaccounts_transaction">Retrieve savings account transaction</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#savings_charges">Savings Account Charges</a></td>
-								<td>savingsaccounts/{accountId}/charges</td>
-								<td><a href="#savings_charges_create">Add a Savings Account Charge</a></td>
-								<td><a href="#savings_charges_list">List Savings Account Charges</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}/charges/{savingsAccountChargeId}</td>
-								<td></td>
-								<td><a href="#savings_charges_retrieve">Retrieve a Savings Account Charge</a></td>
-								<td><a href="#savings_charges_update">Modify a Savings Account Charge</a></td>
-								<td><a href="#savings_charges_delete">Delete a Savings Account Charge</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}/charges/{savingsAccountChargeId}?command=paycharge</td>
-								<td><a href="#savings_charges_pay">Pay a Savings Account Charge</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}/charges/{savingsAccountChargeId}?command=waive</td>
-								<td><a href="#savings_charges_waive">Waive a Savings Account Charge</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsaccounts/{accountId}/charges/{savingsAccountChargeId}?command=inactivate</td>
-								<td><a href="#savings_charges_inactivate">Inactivate a Savings Account Charge</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#fdaccounts">Fixed Deposit Accounts</a></td>
-								<td>fixeddepositaccounts</td>
-								<td><a href="#fdaccounts_create">Submit new fixed deposit application</a></td>
-								<td><a href="#fdaccounts_list">List fixed deposit application/accounts</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositaccounts/{accountId}</td>
-								<td></td>
-								<td><a href="#fdaccounts_retrieve">Retrieve a fixed deposit application/account</a></td>
-								<td><a href="#fdaccounts_update">Modify a fixed deposit application</a></td>
-								<td><a href="#fdaccounts_delete">Delete a fixed deposit application</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositaccounts/{accountId}?command=approve</td>
-								<td><a href="#fdaccounts_approve">Approve a fixed deposit application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositaccounts/{accountId}?command=undoApproval</td>
-								<td><a href="#fdaccounts_undoapproval">Undo fixed deposit application approval</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositaccounts/{accountId}?command=reject</td>
-								<td><a href="#fdaccounts_reject">Reject a fixed deposit application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositaccounts/{accountId}?command=withdraw</td>
-								<td><a href="#fdaccounts_withdrawbyapplicant">Withdraw fixed deposit application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositaccounts/{accountId}?command=activate</td>
-								<td><a href="#fdaccounts_activate">Activate a fixed deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositaccounts/{accountId}?command=close</td>
-								<td><a href="#fdaccounts_close">Close a fixed deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositaccounts/{accountId}?command=prematureClose</td>
-								<td><a href="#fdaccounts_prematureclose">Premature Close a fixed deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositaccounts/{accountId}?command=calculatePrematureAmount</td>
-								<td><a href="#fdaccounts_calculate_premature_amount">Calculate Premature amount on a fixed deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositaccounts/{accountId}?command=calculateInterest</td>
-								<td><a href="#fdaccounts_calculate_interest">Calculate interest on a fixed deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositaccounts/{accountId}?command=postInterest</td>
-								<td><a href="#fdaccounts_post_interest">Post interest on a fixed deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#rdaccounts">Recurring Deposit Accounts</a></td>
-								<td>recurringdepositaccounts</td>
-								<td><a href="#rdaccounts_create">Submit new recurring deposit application</a></td>
-								<td><a href="#rdaccounts_list">List recurring deposit application/accounts</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}</td>
-								<td></td>
-								<td><a href="#rdaccounts_retrieve">Retrieve a recurring deposit application/account</a></td>
-								<td><a href="#rdaccounts_update">Modify a recurring deposit application</a></td>
-								<td><a href="#rdaccounts_delete">Delete a recurring deposit application</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}?command=approve</td>
-								<td><a href="#rdaccounts_approve">Approve a recurring deposit application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}?command=undoApproval</td>
-								<td><a href="#rdaccounts_undoapproval">Undo recurring deposit application approval</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}?command=reject</td>
-								<td><a href="#rdaccounts_reject">Reject a recurring deposit application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}?command=withdraw</td>
-								<td><a href="#rdaccounts_withdrawbyapplicant">Withdraw recurring deposit application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}?command=activate</td>
-								<td><a href="#rdaccounts_activate">Activate a recurring deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}?command=updateDepositAmount</td>
-								<td><a href="#rdaccounts_update_deposit_amount">Update recommended deposit amount</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}?command=close</td>
-								<td><a href="#rdaccounts_close">Close a recurring deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}?command=prematureClose</td>
-								<td><a href="#rdaccounts_prematureclose">Premature Close a recurring deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}?command=calculatePrematureAmount</td>
-								<td><a href="#rdaccounts_calculate_premature_amount">Calculate Premature amount on a recurring deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}?command=calculateInterest</td>
-								<td><a href="#rdaccounts_calculate_interest">Calculate interest on a recurring deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}?command=postInterest</td>
-								<td><a href="#rdaccounts_post_interest">Post interest on a recurring deposit account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#recurringdepositaccounts_transactions">Recurring Deposit Transactions</a></td>
-								<td>recurringdepositaccounts/{accountId}/transactions?command=deposit</td>
-								<td><a href="#recurringdepositaccounts_deposit">Make a deposit</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}/transactions?command=withdrawal</td>
-								<td><a href="#recurringdepositaccounts_withdrawal">Make a withdrawal</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}/transactions/{transactionId}?command=undo</td>
-								<td><a href="#recurringdepositaccounts_undotransaction">Undo transaction</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}/transactions/{transactionId}?command=modify</td>
-								<td><a href="#recurringdepositaccounts_adjusttransaction">Adjust transaction</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}/transactions/template</td>
-								<td></td>
-								<td><a href="#recurringdepositaccounts_transactions_template">Retrieve Deposit account transaction template</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositaccounts/{accountId}/transactions/{transactionId}</td>
-								<td></td>
-								<td><a href="#recurringdepositaccounts_transaction">Retrieve Deposit account transaction</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-						</table>
-					</div>
-				</div>
-			</div>
-
-			<div class="flybar-nav">
-				<h2 class="flybar-button">Loan</h2>
-				<div id="toc-menu-loan" class="flybar-menu">
-					<div class="tocMatrix">
-						<table class=matrixHeading>
-							<tr class="matrixHeadingBG">
-								<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
-										<table>
-											<tr>
-												<td>RESOURCES</td>
-											</tr>
-										</table>
-									</div></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">POST</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>create/complex
-													update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">GET</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>read</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">PUT</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">DELETE</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>delete</div></td>
-										</tr>
-									</table></td>
-							</tr>
-							<tr>
-								<td><a href="#loans">Loans</a></td>
-								<td>loans?calculateLoanSchedule</td>
-								<td><a href="#loans_calculate">Calculate Loan Repayment Schedule</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans</td>
-								<td><a href="#loans_create">Submit a new Loan Application</a></td>
-								<td><a href="#loans_list">List Loans/Loan Applications</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}</td>
-								<td></td>
-								<td><a href="#loans_retrieve">Retrieve a Loan</a></td>
-								<td><a href="#loans_update">Update a Loan</a></td>
-								<td><a href="#loans_delete">Delete a Loan Application</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}?command=approve</td>
-								<td><a href="#loans_approve">Approve Loan Application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}?command=undoApproval</td>
-								<td><a href="#loans_approve_undo">Undo Loan Application Approval</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}?command=assignLoanOfficer</td>
-								<td><a href="#loans_assignLoanOfficer">Assign a Loan Officer</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-								<tr>
-								<td></td>
-								<td>loans/{loanId}?command=unassignLoanOfficer</td>
-								<td><a href="#loans_unassignLoanOfficer">Unassign a Loan Officer</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}?command=reject</td>
-								<td><a href="#loans_reject">Reject Loan Application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}?command=withdraw</td>
-								<td><a href="#loans_withdraw">Withdraw Loan Application</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}?command=disburse</td>
-								<td><a href="#loans_disburse">Disburse Loan</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}?command=disburseToSavings</td>
-								<td><a href="#loans_disburse_to_savings">Disburse Loan To Savings Account</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}?command=undoDisbursal</td>
-								<td><a href="#loans_disburse_undo">Undo Loan Application Disbursal</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}?command=recoverGuarantees</td>
-								<td><a href="#loans_recoverguarantee">Recover From Guarantors</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#loans_transactions">Loan Transactions</a></td>
-								<td>loans/{loanId}/transactions?command=repayment</td>
-								<td><a href="#loans_transaction_repayment">Enter a repayment</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}/transactions?command=waiveInterest</td>
-								<td><a href="#loans_transaction_waiveinterest">Waive Interest</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-                            <tr>
-                                <td></td>
-                                <td>loans/{loanId}/transactions?command=writeoff</td>
-                                <td><a href="#loans_transaction_write-off_loan">Write-off Loan</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>loans/{loanId}/transactions?command=undowriteoff</td>
-                                <td><a href="#loans_transaction_undo_write-off_loan">Undo Loan Write-off transaction</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-							 <tr>
-                                <td></td>
-                                <td>loans/{loanId}/transactions?command=prepayLoan</td>
-                                <td><a href="#loans_transaction_pre_close_loan">Loan Pre-Closure transaction template</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-							<tr>
-                                <td></td>
-                                <td>loans/{loanId}/transactions?command=recoverypayment</td>
-                                <td><a href="#loans_transaction_recovery_payment">Make a Recovery Payment</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}/transactions/{transactionId}</td>
-								<td></td>
-								<td><a href="#loans_transaction_retrieve">Retrieve a transactions details</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}/transactions/{transactionId}</td>
-								<td><a href="#loans_transaction_adjust">Adjust a Transaction</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-                                <td></td>
-                                <td>loans/{loanId}/transactions?command=refundByCash</td>
-                                <td><a href="#loans_transaction_refund_by_cash">Refund an Active Loan by Cash</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-							<tr>
-								<td><a href="#loans_charges">Loan Charges</a></td>
-								<td>loans/{loanId}/charges</td>
-								<td><a href="#loans_charges_create">Add a Loan Charge</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}/charges/{loanChargeId}</td>
-								<td><a href="#loans_charges_pay">Pay Loan Charge from Linked Savings</a></td>
-								<td><a href="#loans_charges_retrieve">Retrieve a Loan Charge</a></td>
-								<td><a href="#loans_charges_update">Modify a Loan Charge</a></td>
-								<td><a href="#loans_charges_delete">Delete a Loan Charge</a></td>
-							</tr>
-							<tr>
-								<td><a href="#guarantors">Loan Guarantors</a></td>
-								<td>loans/{loanId}/guarantors</td>
-								<td><a href="#guarantors_create">Create a Guarantor
-								</a></td>
-								<td><a href="#guarantors_list">List Guarantors
-								</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loans/{loanId}/guarantors/{guarantorId}</td>
-								<td></td>
-								<td><a href="#guarantors_retrieve">Retrieve a Guarantor</a></td>
-								<td><a href="#guarantors_update">Update a Guarantor</a></td>
-								<td><a href="#guarantors_delete">Delete a Guarantor</a></td>
-							</tr>
-							<tr>
-								<td><a href="#collaterals">Loan Collateral</a></td>
-								<td>loans/{loanId}/collaterals</td>
-								<td><a href="#collaterals_create">Create a Collateral
-								</a></td>
-								<td><a href="#collaterals_list">List collaterals
-								</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr  class="alt">
-								<td></td>
-								<td>loans/{loanId}/collaterals/{collateralId}</td>
-								<td></td>
-								<td><a href="#collaterals_retrieve">Retrieve a Collateral</a></td>
-								<td><a href="#collaterals_update">Update a Collateral</a></td>
-								<td><a href="#collaterals_delete">Delete a Collateral</a></td>
-							</tr>
-							<tr>
-								<td><a href="#loan_rescheduling">Loan Rescheduling</a></td>
-								<td>rescheduleloans</td>
-								<td><a href="#loan_reschedule_request_create">Create new loan reschedule request</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>rescheduleloans/{requestId}</td>
-								<td></td>
-								<td><a href="#loan_reschedule_request_retrieve">Retrieve a Loan Reschedule Request</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>rescheduleloans/{requestId}?command=previewLoanReschedule</td>
-								<td></td>
-								<td><a href="#loan_reschedule_preview_retrieve">Retrieve a Preview of The New Loan Repayment Schedule</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>rescheduleloans/{requestId}?command=reject</td>
-								<td><a href="#loan_reschedule_request_reject">Reject Loan Reschedule Request</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>rescheduleloans/{requestId}?command=approve</td>
-								<td><a href="#loan_reschedule_request_approve">Approve Loan Reschedule Request</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#loan_term_variations">Loan Term Variations</a></td>
-								<td>/loans/{loanId}/schedule?command=calculateLoanSchedule</td>
-								<td><a href="#loans_calculate_with_exceptions">Calculate Schedule with Loan Term Variations</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>/loans/{loanId}/schedule?command=addVariations</td>
-								<td><a href="#loans_update_variations">Create Loan Term Variations</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>/loans/{loanId}/schedule?command=deleteVariations</td>
-								<td><a href="#loans_delete_variations">Remove All Loan Term Variations</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-						</table>
-					</div>
-				</div>
-			</div>
-
-			<div class="flybar-nav">
-				<h2 class="flybar-button">Groups</h2>
-				<div id="toc-menu-loan" class="flybar-menu">
-					<div class="tocMatrix">
-						<table class=matrixHeading>
-							<tr class="matrixHeadingBG">
-								<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
-										<table>
-											<tr>
-												<td>RESOURCES</td>
-											</tr>
-										</table>
-									</div></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">POST</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>create/complex
-													update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">GET</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>read</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">PUT</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">DELETE</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>delete</div></td>
-										</tr>
-									</table></td>
-							</tr>
-							<tr>
-								<td><a href="#groups">Group</a></td>
-								<td>groups</td>
-								<td><a href="#groups_create">Create a Group</a></td>
-								<td><a href="#groups_list">List Groups</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-			                    <td>groups/template</td>
-			                    <td></td>
-			                    <td><a href="#groups_template">Retrieve Group Template</a></td>
-			                    <td></td>
-								<td></td>
-			                </tr>
-							<tr>
-								<td></td>
-								<td>groups/{groupId}</td>
-								<td></td>
-								<td><a href="#groups_retrieve">Retrieve a Group</a></td>
-								<td><a href="#groups_update">Update a Group</a></td>
-								<td><a href="#groups_delete">Delete a Group</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>groups/{groupId}?command=activate</td>
-								<td><a href="#groups_activate">Activate a Group</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>groups/{groupId}?command=associateClients</td>
-								<td><a href="#groups_associate_clients">Associate Clients</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>groups/{groupId}?command=disassociateClients</td>
-								<td><a href="#groups_disassociate_clients">Disassociate Clients</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>groups/{groupId}/accounts</td>
-								<td></td>
-								<td><a href="#groups_accounts">Retrieve Group accounts summary</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>groups/{groupId}?command=transferClients</td>
-								<td><a href="#groups_transfer_clients">Bulk Transfer Clients across Groups</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-                            <tr>
-                                <td></td>
-                                <td>groups/{groupId}?command=generateCollectionSheet</td>
-                                <td><a href="#groups_generate_collectionsheet">Generate Collection Sheet</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>groups/{groupId}?command=saveCollectionSheet</td>
-                                <td><a href="#groups_save_collectionsheet">Save Collection Sheet</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>groups/{groupId}?command=unassignStaff</td>
-                                <td><a href="#groups_unassignStaff">Unassign Staff</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>groups/{groupId}?command=assignStaff</td>
-                                <td><a href="#groups_assignStaff">Assign Staff</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>groups/{groupId}?command=close</td>
-                                <td><a href="#groups_close">Close Group</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>groups/{groupId}?command=assignRole</td>
-                                <td><a href="#groups_assignRole">Assign Role</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>groups/{groupId}?command=unassignRole</td>
-                                <td><a href="#groups_unassignRole">Unassign Role</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>groups/{groupId}?command=updateRole</td>
-                                <td><a href="#groups_updateRole">Update Role</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td><a href="#centers">Center</a></td>
-                                <td>centers</td>
-                                <td><a href="#centers_create">Create a Center</a></td>
-                                <td><a href="#centers_list">List Centers</a></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>centers/template</td>
-                                <td></td>
-                                <td><a href="#centers_template">Retrieve Center Template</a></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>centers/{centerId}</td>
-                                <td></td>
-                                <td><a href="#centers_retrieve">Retrieve a Center</a></td>
-                                <td><a href="#centers_update">Update a Center</a></td>
-                                <td><a href="#centers_delete">Delete a Center</a></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>centers/{centerId}?command=activate</td>
-                                <td><a href="#centers_activate">Activate a Center</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>centers/{centerId}?command=close</td>
-                                <td><a href="#centers_close">Close Center</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-							<tr>
-								<td></td>
-								<td>centers/{centerId}?command=associateGroups</td>
-								<td><a href="#centers_associate_groups">Associate Groups</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>centers/{centerId}?command=disassociateGroups</td>
-								<td><a href="#centers_disassociate_groups">Disassociate Groups</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-                            <tr>
-															<td></td>
-															<td>centers/{centerId}/accounts</td>
-															<td></td>
-															<td><a href="#centers_accounts">Retrieve Center accounts summary</a></td>
-															<td></td>
-															<td></td>
-														</tr>
-                            <tr>
-                                <td></td>
-                                <td>centers/{centerId}?command=generateCollectionSheet</td>
-                                <td><a href="#centers_generate_collectionsheet">Generate Collection Sheet</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>centers/{centerId}?command=saveCollectionSheet</td>
-                                <td><a href="#centers_save_collectionsheet">Save Collection Sheet</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-
-
-							<tr>
-                                <td><a href="#centers">Collection Sheet</a></td>
-                                <td>collectionsheet?command=generateCollectionSheet</td>
-                                <td><a href="#generate_individual_collection_sheet">Generate Collection Sheet</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                           <tr>
-                                <td></td>
-                                <td>collectionsheet?command=saveCollectionSheet</td>
-                                <td><a href="#save_individual_collection_sheet">Save Collection Sheet</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-						</table>
-					</div>
-				</div>
-			</div>
-
-			<div class="flybar-nav">
-				<h2 class="flybar-button">Accounting</h2>
-				<div id="toc-menu-accounting" class="flybar-menu">
-					<div class="tocMatrix">
-						<table class=matrixHeading>
-							<tr class="matrixHeadingBG">
-								<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
-										<table>
-											<tr>
-												<td>RESOURCES</td>
-											</tr>
-										</table>
-									</div></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">POST</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>create/complex
-													update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">GET</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>read</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">PUT</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">DELETE</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>delete</div></td>
-										</tr>
-									</table></td>
-							</tr>
-							<tr>
-								<td><a href="#glaccounts">General Ledger Account</a></td>
-								<td>glaccounts</td>
-								<td><a href="#glaccounts_create">Create a New Ledger Account</a></td>
-								<td><a href="#glaccounts_list">List Ledger Accounts</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>glaccounts/{glaccountId}</td>
-								<td></td>
-								<td><a href="#glaccounts_retrieve">Retrieve a Ledger Account</a></td>
-								<td><a href="#glaccounts_update">Update a Ledger Account</a></td>
-								<td><a href="#glaccounts_delete">Delete a Ledger Account</a></td>
-							</tr>
-							<tr>
-								<td><a href="#glclosures">Accounting Closure</a></td>
-								<td>glclosures</td>
-								<td><a href="#glclosures_create">Create an Accounting Closure</a></td>
-								<td><a href="#glclosures_list">List Accounting Closures</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>glclosures/{glclosureId}</td>
-								<td></td>
-								<td><a href="#glclosures_retrieve">Retrieve an Accounting Closure</a></td>
-								<td><a href="#glclosures_update">Update an Accounting Closure</a></td>
-								<td><a href="#glclosures_delete">Delete an Accounting Closure</a></td>
-							</tr>
-							<tr>
-								<td><a href="#journalentries">Journal Entries</a></td>
-								<td>journalentries</td>
-								<td><a href="#journalentries_create">Create Journal Entries</a></td>
-								<td><a href="#journalentries_list">List Journal Entries</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>journalentries?command=updateRunningBalance</td>
-								<td><a href="#journalentries_updatebalance">Update Running Balance for Journal Entries</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>journalentries/{entryId}</td>
-								<td></td>
-								<td><a href="#journalentries_retrieve">Retrieve a single Entry</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>journalentries/{transactionId}/reversal</td>
-								<td><a href="#journalentries_reverse">Reverse Journal Entries</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#accountingrules">Accounting Rules</a></td>
-								<td>accountingrules</td>
-								<td><a href="#accountingrules_create">Create a Accounting Rule</a></td>
-								<td><a href="#accountingrules_list">List Accounting Rules</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>accountingrules/{accountingruleId}</td>
-								<td></td>
-								<td><a href="#accountingrules_retrieve">Retrieve a Accounting Rule</a></td>
-								<td><a href="#accountingrules_update">Update a Accounting Rule</a></td>
-								<td><a href="#accountingrules_delete">Delete a Accounting Rule</a></td>
-							</tr>
-							<tr>
-								<td><a href="#officeglaccount">Mapping Financial Activities to Accounts</a></td>
-								<td>financialactivityaccounts</td>
-								<td><a href="#financialactivityaccounts_create">Create Financial Activity to Account Mapping</a><br> </td>
-								<td><a href="#financialactivityaccounts_list">List Financial Activities to Accounts Mappings</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>financialactivityaccounts/{financialActivityAccountId}</td>
-								<td></td>
-								<td><a href="#financialactivityaccounts_retrieve">Retrieve a Financial Activity to Account Mapping</a></td>
-								<td><a href="#financialactivityaccounts_update">Update a Financial Activity to Account Mapping</a></td>
-								<td><a href="#financialactivityaccounts_delete">Delete a Financial Activity to Account Mapping</a></td>
-
-							</tr>
-							<tr>
-								<td><a href="#periodicaccrualaccounting">Periodic Accrual Accounting</a></td>
-								<td>accrualaccounting</td>
-								<td><a href="#periodicaccrualaccounting_run">Execute Periodic Accrual Accounting</a><br> </td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-
-							<tr>
-								<td><a href="#provisioningentries">Provisioning Entries</a></td>
-								<td>provisioningentries</td>
-								<td><a href="#provisioningentries_create">Create Provisioning Entry</a><br> </td>
-								<td><a href="#provisioningentries_list">List Provisioning Entries</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>provisioningentries/{entryId}</td>P
-								<td></td>
-								<td><a href="#provisioningentry_retrieve">Retrieve Provisioning Entry</a></td>
-								<td><a href="#provisioningentry_recreate">Recreates Provisionin Entry</a></td>
-								<td><a href="#provisioningentry_addjournals">Add Provisioning Journal Entries</a></td>
-								</tr>
-
-
-						</table>
-					</div>
-				</div>
-			</div>
-			<div class="flybar-nav">
-				<h2 class="flybar-button">Org</h2>
-				<div id="toc-menu-org" class="flybar-menu">
-					<div class="tocMatrix">
-						<table class=matrixHeading>
-							<tr class="matrixHeadingBG">
-								<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
-										<table>
-											<tr>
-												<td>RESOURCES</td>
-											</tr>
-										</table>
-									</div></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">POST</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>create/complex
-													update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">GET</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>read</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">PUT</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">DELETE</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>delete</div></td>
-										</tr>
-									</table></td>
-							</tr>
-							<tr>
-								<td><a href="#offices">Office</a></td>
-								<td>offices</td>
-								<td><a href="#offices_create">Create an Office</a></td>
-								<td><a href="#offices_list">List Offices</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>offices/{officeId}</td>
-								<td></td>
-								<td><a href="#offices_retrieve">Retrieve an Office</a></td>
-								<td><a href="#offices_update">Update an Office</a></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#loanproducts">Loan Product</a></td>
-								<td>loanproducts</td>
-								<td><a href="#loanproducts_create">Create a Loan
-										Product</a></td>
-								<td><a href="#loanproducts_list">List Loan Products</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loanproducts/{productId}</td>
-								<td></td>
-								<td><a href="#loanproducts_retrieve">Retrieve a Loan
-										Product</a></td>
-								<td><a href="#loanproducts_update">Update a Loan
-										Product</a></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#savingsproducts">Savings Product</a></td>
-								<td>savingsproducts</td>
-								<td><a href="#savingsproducts_create">Create a Savings product</a></td>
-								<td><a href="#savingsproducts_list">List Savings products</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>savingsproducts/{productId}</td>
-								<td></td>
-								<td><a href="#savingsproducts_retrieve">Retrieve a savings product</a></td>
-								<td><a href="#savingsproducts_update">Update a savings product</a></td>
-								<td><a href="#savingsproducts_delete">Delete a savings product</a></td>
-							</tr>
-							<tr>
-								<td><a href="#fdproducts">Fixed Deposit Product</a></td>
-								<td>fixeddepositproducts</td>
-								<td><a href="#fdproducts_create">Create a Fixed Deposit product</a></td>
-								<td><a href="#fdproducts_list">List Fixed Deposit products</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>fixeddepositproducts/{productId}</td>
-								<td></td>
-								<td><a href="#fdproducts_retrieve">Retrieve a Fixed Deposit product</a></td>
-								<td><a href="#fdproducts_update">Update a Fixed Deposit product</a></td>
-								<td><a href="#fdproducts_delete">Delete a Fixed Deposit product</a></td>
-							</tr>
-							<tr>
-								<td><a href="#rdproducts">Recurring Deposit Product</a></td>
-								<td>recurringdepositproducts</td>
-								<td><a href="#rdproducts_create">Create a Recurring Deposit product</a></td>
-								<td><a href="#rdproducts_list">List Recurring Deposit products</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>recurringdepositproducts/{productId}</td>
-								<td></td>
-								<td><a href="#rdproducts_retrieve">Retrieve a Recurring Deposit product</a></td>
-								<td><a href="#rdproducts_update">Update a Recurring Deposit product</a></td>
-								<td><a href="#rdproducts_delete">Delete a Recurring Deposit product</a></td>
-							</tr>
-							<tr>
-								<td><a href="#configs">Currency</a></td>
-								<td>currencies</td>
-								<td></td>
-								<td><a href="#configs_currencyretrieve">Retrieve
-										Currency Configuration</a></td>
-								<td><a href="#configs_currencyupdate">Update Currency
-										Configuration</a></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#funds">Funds</a></td>
-								<td>funds</td>
-								<td><a href="#funds_create">Create a Fund</a></td>
-								<td><a href="#funds_retrieve">List Funds</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>funds/{fundId}</td>
-								<td></td>
-								<td><a href="#fund_retrieve">Retrieve a Fund</a></td>
-								<td><a href="#fund_update">Update a Fund</a></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#staff">Staff</a></td>
-								<td>staff</td>
-								<td><a href="#staff_create">Create a Staff Member</a></td>
-								<td><a href="#staff_list">List Staff</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>staff/{staffId}</td>
-								<td></td>
-								<td><a href="#staff_retrieve">Retrieve a Staff Member</a></td>
-								<td><a href="#staff_update">Update a Staff Member</a></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#client_images">Staff Images</a></td>
-								<td>staff/{staffId}/images</td>
-								<td><a href="#client_images_create">Upload an Image for a Staff Member (as  DATA URI)</a></td>
-								<td><a href="#client_images_retrieve">Get Staff Image (DATA URI)</a></td>
-								<td><a href="#client_images_update">Update Staff Image (DATA URI)</a></td>
-								<td><a href="#client_images_delete">Delete Staff Image</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td></td>
-								<td><a href="#client_images_create_form">
-									Upload an Image for a Staff Member (Multi-part form data)</a>
-								</td>
-								<td><a href="#client_images_retrieve_binary">Get Staff Image (Binary file)</a></td>
-								<td><a href="#client_images_update_form">
-									Update Staff Image (Multi-part form data)</a>
-								</td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#charges">Charges</a></td>
-								<td>charges</td>
-								<td><a href="#charges_create">Create a Charge</a></td>
-								<td><a href="#charges_list">List Charges</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>charges/{chargeId}</td>
-								<td></td>
-								<td><a href="#charges_retrieve">Retrieve a Charge</a></td>
-								<td><a href="#charges_update">Update a Charge</a></td>
-								<td><a href="#charges_delete">Delete a Charge</a></td>
-							</tr>
-							<tr>
-								<td><a href="#loanproductmix">Loan Product Mix</a></td>
-								<td>loanproducts?associations=productMixes</td>
-								<td></td>
-								<td><a href="#loanproductmix_list">List Loan Products Mix</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>loanproducts/{productId}/productmix</td>
-								<td><a href="#loanproductmix_create">Create a Loan Product Mix</a></td>
-								<td><a href="#loanproductmix_retrieve">Retrieve Loan Products Mix</a></td>
-								<td><a href="#loanproductmix_update">Update Loan Product Mix</a></td>
-								<td><a href="#loanproductmix_delete">Delete Loan Products Mix</a></td>
-							</tr>
-							<tr>
-								<td><a href="#holidays">Holidays</a></td>
-								<td>holidays</td>
-								<td><a href="#holidays_create">Create a Holiday</a></td>
-								<td><a href="#holidays_list">List Holidays</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>holidays/{holidayId}</td>
-								<td></td>
-								<td><a href="#holidays_retrieve">Retrieve a Holiday</a></td>
-								<td><a href="#holidays_update">Update a Holiday</a></td>
-								<td><a href="#holidays_delete">Delete a Holiday</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>holidays/{holidayId}?command=activate</td>
-								<td><a href="#holidays_activate">Activate a Holiday</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#workingdays">Working days</a></td>
-								<td>workingdays</td>
-								<td><a href="#workingdays_list">List workingdays</a></td>
-							    <td><a href="#workingdays_template">Working days template</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>workingdays/{workingdaysId}</td>
-								<td></td>
-								<td><a href="#workingdays_update">Update a workingdays</a></td>
-							</tr>
-							<tr>
-								<td><a href="#templates">User Generated Documents</a></td>
-								<td>templates</td>
-								<td><a href="#resources_addtemplate">Create a UGD</a></td>
-								<td><a href="#resource_templatelist">List UGDs</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>templates/{templateId}</td>
-								<td></td>
-								<td><a href="#resources_retrievetemplate">Retrieve a UGD</a></td>
-								<td><a href="#resources_updatetemplate">Update a UGD</a></td>
-								<td><a href="#resources_deletetemplate">Delete a UGD</a></td>
-							</tr>
-							<tr>
-								<td><a href="#interestratechart">Interest Rate Charts</a></td>
-								<td>charts</td>
-								<td><a href="#interestratechart_create">Create a Chart</a></td>
-								<td><a href="#interestratechart_list">List Charts</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>interestratecharts/{chartId}</td>
-								<td></td>
-								<td><a href="#interestratechart_retrieve">Retrieve a Chart</a></td>
-								<td><a href="#interestratechart_update">Update a Chart</a></td>
-								<td><a href="#interestratechart_delete">Delete a Chart</a></td>
-							</tr>
-							<tr>
-								<td><a href="#interestrateslab">Interest Rate Slabs</a></td>
-								<td>slabs</td>
-								<td><a href="#interestrateslab_create">Create a Slab</a></td>
-								<td><a href="#interestrateslab_list">List Slabs</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>interestrateslabs/{slabId}</td>
-								<td></td>
-								<td><a href="#interestrateslab_retrieve">Retrieve a Slab</a></td>
-								<td><a href="#interestrateslab_update">Update a Slab</a></td>
-								<td><a href="#interestrateslab_delete">Delete a Slab</a></td>
-							</tr>
-							<tr>
-								<td><a href="#tellercashmgmt">Teller Cash Management</a></td>
-								<td>tellers</td>
-								<td><a href="#createtellers">Create Teller</a></td>
-								<td><a href="#listtellers">List Tellers</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>tellers/{tellerId}</td>
-								<td></td>
-								<td><a href="#findtellers">Find Teller</a></td>
-								<td><a href="#updatetellers">Update Teller</a></td>
-								<td><a href="#deletetellers">Delete Teller</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>tellers/{tellerId}/cashiers</td>
-								<td><a href="#createcashier">Create Cashier</a></td>
-								<td><a href="#findallcashiers">Retrieve Cashier</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>tellers/{tellerId}/cashiers/{cashierId}</td>
-								<td></td>
-								<td><a href="#findaonecashier">Find Cashier</a></td>
-								<td><a href="#updatecashier">Update Cashier</a></td>
-								<td><a href="#deletecashier">Delete Cashier</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>tellers/{tellerId}/cashiers/template</td>
-								<td></td>
-								<td><a href="#updatecashier">Retrieve Cashier Template</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>tellers/{tellerId}/cashiers/{cashierId}/allocate</td>
-								<td><a href="#allocateCashToCashier">Allocate Cash To Cashier</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>tellers/{tellerId}/cashiers/{cashierId}/settle</td>
-								<td><a href="#settleCashFromCashier">Settle Cash From Cashier</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>tellers/{tellerId}/cashiers/{cashierId}/transactions</td>
-								<td></td>
-								<td><a href="#transactionsForCashier">Retrieve Cashier Transactions</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>tellers/{tellerId}/cashiers/{cashierId}/summaryandtransactions</td>
-								<td></td>
-								<td><a href="#getTransactionsWtihSummaryForCashier">Retrieve Cashier Transactions With Summary</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>tellers/{tellerId}/cashiers/{cashierId}/transactions/template</td>
-								<td></td>
-								<td><a href="#retrieveCashierTxnTemplate">Retrieve Cashier Transaction Template</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-
-							<tr>
-								<td><a href="#paymenttype">Payment Type</a></td>
-								<td>paymenttypes</td>
-								<td><a href="#create_paymenttype">Create Payment Type</a></td>
-								<td><a href="#paymenttype_list">List Payment Types</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>paymenttypes/{paymentTypeId}</td>
-								<td></td>
-								<td><a href="#paymenttype_retrieve">Retrieve Payment Type</a></td>
-								<td><a href="#paymenttype_update">Update Payment Type</a></td>
-								<td><a href="#paymnettype_delete">Delete Payment Type</a></td>
-							</tr>
-							<tr>
-								<td><a href="#provisioningcriteria">Provisioning Criteria</a></td>
-								<td>provisioningcriteria</td>
-								<td><a href="#create_provisioningcriteria">Create Provisioning Criteria</a></td>
-								<td><a href="#provisioningcriteria_list">List Provisioning Criteria</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>provisioningcriteria/{criteriaId}</td>
-								<td></td>
-								<td><a href="#retrieve_provisioningcriteria">Retrieve Provisioning Criteria</a></td>
-								<td><a href="#update_provisioningcriteria">Update Provisioning Criteria</a></td>
-								<td><a href="#delete_provisioningcriteria">Delete Provisioning Criteria</a></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#floatingrates">Floating Rates</a></td>
-								<td>floatingrates</td>
-								<td><a href="#create_floatingrates">Create Floating Rate</a></td>
-								<td><a href="#floatingrates_list">List Floating Rates</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>floatingrates/{floatingRateId}</td>
-								<td></td>
-								<td><a href="#retrieve_floatingrate">Retrieve Floating Rate</a></td>
-								<td><a href="#update_floatingrate">Update Floating Rate</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-						</table>
-					</div>
-				</div>
-			</div>
-			<div class="flybar-nav">
-				<h2 class="flybar-button">User</h2>
-				<div id="toc-menu-user" class="flybar-menu">
-					<div class="tocMatrix">
-						<table class=matrixHeading>
-							<tr class="matrixHeadingBG">
-								<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
-										<table>
-											<tr>
-												<td>RESOURCES</td>
-											</tr>
-										</table>
-									</div></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">POST</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>create/complex
-													update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">GET</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>read</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">PUT</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">DELETE</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>delete</div></td>
-										</tr>
-									</table></td>
-							</tr>
-							<tr>
-								<td><a href="#authenticationbasic">Authentication HTTP Basic</a></td>
-								<td>authentication</td>
-								<td><a href="#authenticate_request_basic">Verify Authentication</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#authenticationoauth">Authentication Oauth2</a></td>
-								<td>oauth/token</td>
-								<td><a href="#oauth">OAuth2 Access and refresh Token Request</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td></td>
-								<td><a href="#oauth_access_token_req">OAuth2 Access Token Request from refresh token</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>authenticated user</td>
-								<td></td>
-								<td><a href="#userdetails_request">Fetch Authenticated user details</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#users">User</a></td>
-								<td>users</td>
-								<td><a href="#users_create">Create a User</a></td>
-								<td><a href="#users_list">List Users</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>users/{userId}</td>
-								<td></td>
-								<td><a href="#users_retrieve">Retrieve a User</a></td>
-								<td><a href="#users_update">Update a User</a></td>
-								<td><a href="#users_delete">Delete a User</a></td>
-							</tr>
-							<tr>
-								<td><a href="#roles">Role</a></td>
-								<td>roles</td>
-								<td><a href="#roles_create">Create a New Role</a></td>
-								<td><a href="#roles_list">List Roles</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>roles/{roleId}</td>
-								<td></td>
-								<td><a href="#roles_retrieve">Retrieve a Role</a></td>
-								<td><a href="#roles_update">Update a Role</a></td>
-								<td><a href="#roles_delete">Delete Role</a></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>roles/{roleId}/permissions</td>
-								<td></td>
-								<td><a href="#rolespermissions_retrieve">Retrieve a
-										Role's Permissions</a></td>
-								<td><a href="#rolespermissions_update">Update a Role's
-										Permissions</a></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>roles/{roleId}?command=enable</td>
-								<td><a href="#roles_enable">Enable Role</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>roles/{roleId}?command=disable</td>
-								<td><a href="#roles_disable">Disable Role</a></td>
-								<td></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#permissions">Permission</a></td>
-								<td>permissions</td>
-								<td></td>
-								<td><a href="#permissions_list">List Application Permissions</a></td>
-								<td><a href="#permissions_update">Enable/Disable Permissions for Maker Checker</a></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#password_preferences">Password preferences</a></td>
-								<td>passwordpreferences</td>
-								<td><a href=""></a></td>
-								<td><a href="#password_preferences_list">Get Password Preferences</a></td>
-								<td><a href="#password_preferences_update">Update Password Preferences</a></td>
-								<td></td>
-							</tr>
-						</table>
-					</div>
-				</div>
-			</div>
-			<div class="flybar-nav">
-				<h2 class="flybar-button">System</h2>
-				<div id="toc-menu-system" class="flybar-menu">
-					<div class="tocMatrix">
-						<table class=matrixHeading>
-							<tr class="matrixHeadingBG">
-								<td colspan=2 valign="top"><div class="matrixHeadingVerbs">
-										<table>
-											<tr>
-												<td>RESOURCES</td>
-											</tr>
-										</table>
-									</div></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">POST</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>create/complex
-													update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">GET</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>read</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">PUT</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>update</div></td>
-										</tr>
-									</table></td>
-								<td><table>
-										<tr>
-											<td><div class="matrixHeadingVerbs">DELETE</div></td>
-										</tr>
-										<tr>
-											<td><div class=matrixHeadingCommands>delete</div></td>
-										</tr>
-									</table></td>
-							</tr>
-							<tr>
-								<td><a href="#configs_global">Global Configuration</a></td>
-								<td>configurations</td>
-								<td></td>
-								<td><a href="#configs_globalconfig_retrieve">List
-										Global Configuration</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#configs_global">Global Configuration</a></td>
-								<td>configurations/{configId}</td>
-								<td></td>
-								<td><a href="#configs_globalconfig_retrieve_one">Retrieve
-										a Global Configuration</a></td>
-								<td><a href="#configs_globalconfig_update">Update
-										Global Configuration</a></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td><a href="#configs_hooks">Hooks</a></td>
-								<td>hooks</td>
-								<td><a href="#configs_hooks_create">Create a Hook</a></td>
-								<td><a href="#configs_hooks_retrieve">List Hooks</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>hooks/{hookId}</td>
-								<td></td>
-								<td><a href="#configs_hook_retrieve">Retrieve a Hook</a></td>
-								<td><a href="#configs_hook_update">Update a Hook</a></td>
-								<td><a href="#configs_hook_delete">Delete a Hook</a></td>
-							</tr>
-							<tr>
-								<td><a href="#accountnumberformats">Account number format</a></td>
-								<td>accountnumberformats</td>
-								<td><a href="#accountnumberformats_create">Create an Account number format</a></td>
-								<td><a href="#accountnumberformats_list">List Account number formats</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>accountnumberformats/{accountnumberformatId}</td>
-								<td></td>
-								<td><a href="#accountnumberformats_retrieve">Retrieve an Account number format</a></td>
-								<td><a href="#accountnumberformats_update">Update an Account number format</a></td>
-								<td><a href="#accountnumberformats_delete">Delete an Account number format</a></td>
-							</tr>
-							<tr>
-								<td><a href="#configs_codes">Codes</a></td>
-								<td>codes</td>
-								<td><a href="#configs_codes_create">Create a Code</a></td>
-								<td><a href="#configs_codes_retrieve">List Codes</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>codes/{codeId}</td>
-								<td></td>
-								<td><a href="#configs_code_retrieve">Retrieve a Code</a></td>
-								<td><a href="#configs_code_update">Update a Code</a></td>
-								<td><a href="#configs_code_delete">Delete a Code</a></td>
-							</tr>
-							<tr>
-								<td><a href="#configs_codes_codevalues">Code Values</a></td>
-								<td>codes/{codeId}/codevalues</td>
-								<td><a href="#configs_codes_codevalues_create">Create a Code Value</a></td>
-								<td><a href="#configs_codes_codevalues_list">List Code Values</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>codes/{codeId}/codevalues/{codevalueId}</td>
-								<td></td>
-								<td><a href="#configs_codes_codevalues_retrieve">Retrieve a Code Value</a></td>
-								<td><a href="#configs_codes_codevalues_update">Update a Code Value</a></td>
-								<td><a href="#configs_codes_codevalues_delete">Delete a Code Value</a></td>
-							</tr>
-							<tr>
-								<td><a href="#audits">Audits</a></td>
-								<td>audits</td>
-								<td></td>
-								<td><a href="#audits_list">List Audits</a></td>
-								<td></td>
-								<td></td>
-							</tr>
-							<tr>
-								<td></td>
-								<td>audits/{auditId}</td>
-								<td></td>
-								<td><a href="#audits_retrieve">Retrieve an Audit Entry</a></td>
-								<td></td>
-	

<TRUNCATED>


[08/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanWithWaiveInterestAndWriteOffIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanWithWaiveInterestAndWriteOffIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanWithWaiveInterestAndWriteOffIntegrationTest.java
deleted file mode 100644
index 5258337..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanWithWaiveInterestAndWriteOffIntegrationTest.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Client Loan Integration Test for checking Loan Disbursement with Waive
- * Interest and Write-Off.
- */
-@SuppressWarnings({ "rawtypes" })
-public class LoanWithWaiveInterestAndWriteOffIntegrationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-
-    private final String LP_PRINCIPAL = "12,000.00", LP_REPAYMENTS = "2", LP_REPAYMENT_PERIOD = "6", LP_INTEREST_RATE = "1",
-            PRINCIPAL = "4,500.00", LOAN_TERM_FREQUENCY = "18", NUMBER_OF_REPAYMENTS = "9", REPAYMENT_PERIOD = "2",
-            DISBURSEMENT_DATE = "30 October 2010", LOAN_APPLICATION_SUBMISSION_DATE = "23 September 2010",
-            EXPECTED_DISBURSAL_DATE = "28 October 2010", RATE_OF_INTEREST_PER_PERIOD = "2", DATE_OF_JOINING = "04 March 2009",
-            INTEREST_VALUE_AMOUNT = "40.00";
-    private LoanTransactionHelper loanTransactionHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-    }
-
-    @Test
-    public void checkClientLoanCreateAndDisburseFlow() {
-        // CREATE CLIENT
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, this.DATE_OF_JOINING);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-
-        // CREATE LOAN PRODUCT
-        final Integer loanProductID = createLoanProduct();
-        // APPLY FOR LOAN
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan("28 September 2010", loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        // UNDO APPROVAL
-        loanStatusHashMap = this.loanTransactionHelper.undoApproval(loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------RE-APPROVE LOAN-----------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan("1 October 2010", loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        // DISBURSE
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(this.DISBURSEMENT_DATE, loanID);
-        System.out.println("DISBURSE " + loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        // PERFORM REPAYMENTS AND CHECK LOAN STATUS
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(1, 4000.0F, loanID);
-        this.loanTransactionHelper.makeRepayment("1 January 2011", 540.0f, loanID);
-
-        // UNDO DISBURSE LOAN
-        loanStatusHashMap = this.loanTransactionHelper.undoDisbursal(loanID);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        // DIBURSE AGAIN
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(this.DISBURSEMENT_DATE, loanID);
-        System.out.println("DISBURSE " + loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        // MAKE REPAYMENTS
-        final float repayment_with_interest = 540.0f;
-        final float repayment_without_interest = 500.0f;
-
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(1, 4000.0F, loanID);
-        this.loanTransactionHelper.makeRepayment("1 January 2011", repayment_with_interest, loanID);
-        this.loanTransactionHelper.makeRepayment("1 March 2011", repayment_with_interest, loanID);
-        this.loanTransactionHelper.waiveInterest("1 May 2011", this.INTEREST_VALUE_AMOUNT, loanID);
-        this.loanTransactionHelper.makeRepayment("1 May 2011", repayment_without_interest, loanID);
-        this.loanTransactionHelper.makeRepayment("1 July 2011", repayment_with_interest, loanID);
-        this.loanTransactionHelper.waiveInterest("1 September 2011", this.INTEREST_VALUE_AMOUNT, loanID);
-        this.loanTransactionHelper.makeRepayment("1 September 2011", repayment_without_interest, loanID);
-        this.loanTransactionHelper.makeRepayment("1 November 2011", repayment_with_interest, loanID);
-        this.loanTransactionHelper.waiveInterest("1 January 2012", this.INTEREST_VALUE_AMOUNT, loanID);
-        this.loanTransactionHelper.makeRepayment("1 January 2012", repayment_without_interest, loanID);
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(7, 1000.0f, loanID);
-
-        // WRITE OFF LOAN AND CHECK ACCOUNT IS CLOSED
-        LoanStatusChecker.verifyLoanAccountIsClosed(this.loanTransactionHelper.writeOffLoan("1 March 2012", loanID));
-
-    }
-
-    @Test
-    public void checkClientLoan_WRITTEN_OFF() {
-        // CREATE CLIENT
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, this.DATE_OF_JOINING);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-
-        // CREATE LOAN PRODUCT
-        final Integer loanProductID = createLoanProduct();
-        // APPLY FOR LOAN
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan("28 September 2010", loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        // DISBURSE
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan(this.DISBURSEMENT_DATE, loanID);
-        System.out.println("DISBURSE " + loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        // MAKE REPAYMENTS
-        final float repayment_with_interest = 680.0f;
-
-        this.loanTransactionHelper.verifyRepaymentScheduleEntryFor(1, 4000.0F, loanID);
-        this.loanTransactionHelper.makeRepayment("1 January 2011", repayment_with_interest, loanID);
-
-        HashMap toLoanSummaryAfter = this.loanTransactionHelper.getLoanSummary(requestSpec, responseSpec, loanID);
-        Assert.assertTrue("Checking for Principal paid ",
-                new Float("500.0").compareTo(new Float(String.valueOf(toLoanSummaryAfter.get("principalPaid")))) == 0);
-        Assert.assertTrue("Checking for interestPaid paid ",
-                new Float("180.0").compareTo(new Float(String.valueOf(toLoanSummaryAfter.get("interestPaid")))) == 0);
-        Assert.assertTrue("Checking for total paid ",
-                new Float("680.0").compareTo(new Float(String.valueOf(toLoanSummaryAfter.get("totalRepayment")))) == 0);
-
-        // WRITE OFF LOAN AND CHECK ACCOUNT IS CLOSED
-        LoanStatusChecker.verifyLoanAccountIsClosed(this.loanTransactionHelper.writeOffLoan("1 January 2011", loanID));
-        toLoanSummaryAfter = this.loanTransactionHelper.getLoanSummary(requestSpec, responseSpec, loanID);
-        Assert.assertTrue("Checking for Principal written off ",
-                new Float("4000.0").compareTo(new Float(String.valueOf(toLoanSummaryAfter.get("principalWrittenOff")))) == 0);
-        Assert.assertTrue("Checking for interestPaid written off ",
-                new Float("1440.0").compareTo(new Float(String.valueOf(toLoanSummaryAfter.get("interestWrittenOff")))) == 0);
-        Assert.assertTrue("Checking for total written off ",
-                new Float("5440.0").compareTo(new Float(String.valueOf(toLoanSummaryAfter.get("totalWrittenOff")))) == 0);
-
-    }
-
-    private Integer createLoanProduct() {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        final String loanProductJSON = new LoanProductTestBuilder().withPrincipal(this.LP_PRINCIPAL).withRepaymentTypeAsMonth()
-                .withRepaymentAfterEvery(this.LP_REPAYMENT_PERIOD).withNumberOfRepayments(this.LP_REPAYMENTS).withRepaymentTypeAsMonth()
-                .withinterestRatePerPeriod(this.LP_INTEREST_RATE).withInterestRateFrequencyTypeAsMonths()
-                .withAmortizationTypeAsEqualPrincipalPayment().withInterestTypeAsFlat().build(null);
-
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(this.PRINCIPAL)
-                .withLoanTermFrequency(this.LOAN_TERM_FREQUENCY).withLoanTermFrequencyAsMonths()
-                .withNumberOfRepayments(this.NUMBER_OF_REPAYMENTS).withRepaymentEveryAfter(this.REPAYMENT_PERIOD)
-                .withRepaymentFrequencyTypeAsMonths().withInterestRatePerPeriod(this.RATE_OF_INTEREST_PER_PERIOD)
-                .withInterestTypeAsFlatBalance().withAmortizationTypeAsEqualInstallments()
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod().withExpectedDisbursementDate(this.EXPECTED_DISBURSAL_DATE)
-                .withSubmittedOnDate(this.LOAN_APPLICATION_SUBMISSION_DATE).build(clientID.toString(), loanProductID.toString(), null);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanWithdrawnByApplicantIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanWithdrawnByApplicantIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanWithdrawnByApplicantIntegrationTest.java
deleted file mode 100644
index 4313c39..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanWithdrawnByApplicantIntegrationTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings("rawtypes")
-public class LoanWithdrawnByApplicantIntegrationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-    }
-
-    @Test
-    public void loanWithdrawnByApplicant() {
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2012");
-        final Integer loanProductID = this.loanTransactionHelper.getLoanProductId(new LoanProductTestBuilder().build(null));
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        this.loanTransactionHelper.withdrawLoanApplicationByClient("03 April 2012", loanID);
-        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanAccountIsNotActive(loanStatusHashMap);
-
-    }
-
-    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID) {
-        final String loanApplication = new LoanApplicationTestBuilder().withPrincipal("5000").withLoanTermFrequency("5")
-                .withLoanTermFrequencyAsMonths().withNumberOfRepayments("5").withRepaymentEveryAfter("1")
-                .withRepaymentFrequencyTypeAsMonths().withInterestRatePerPeriod("2").withExpectedDisbursementDate("04 April 2012")
-                .withSubmittedOnDate("02 April 2012").build(clientID.toString(), loanProductID.toString(), null);
-        return this.loanTransactionHelper.getLoanId(loanApplication);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/MinimumDaysBetweenDisbursalAndFirstRepaymentTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/MinimumDaysBetweenDisbursalAndFirstRepaymentTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/MinimumDaysBetweenDisbursalAndFirstRepaymentTest.java
deleted file mode 100644
index f0d6f19..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/MinimumDaysBetweenDisbursalAndFirstRepaymentTest.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.CalendarHelper;
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.GroupHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Test the creation, approval and rejection of a loan reschedule request
- **/
-@SuppressWarnings({ "rawtypes" })
-public class MinimumDaysBetweenDisbursalAndFirstRepaymentTest {
-
-    private ResponseSpecification responseSpec;
-    private ResponseSpecification responseSpecForStatusCode403;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-    private Integer clientId;
-    private Integer groupId;
-    private Integer groupCalendarId;
-    private Integer loanProductId;
-    private Integer loanId;
-    private final String loanPrincipalAmount = "100000.00";
-    private final String numberOfRepayments = "12";
-    private final String interestRatePerPeriod = "18";
-    private final String groupActivationDate = "1 August 2014";
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-    }
-
-    /*
-     * MinimumDaysBetweenDisbursalAndFirstRepayment is set to 7 days and days
-     * between disbursal date and first repayment is set as 7. system should
-     * allow to create this loan and allow to disburse
-     */
-    @Test
-    public void createLoanEntity_WITH_DAY_BETWEEN_DISB_DATE_AND_REPAY_START_DATE_GREATER_THAN_MIN_DAY_CRITERIA() {
-
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        // create all required entities
-        this.createRequiredEntities();
-
-        final String disbursalDate = "4 September 2014";
-        final String firstRepaymentDate = "11 September 2014";
-
-        final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(loanPrincipalAmount)
-                .withLoanTermFrequency(numberOfRepayments).withLoanTermFrequencyAsWeeks().withNumberOfRepayments(numberOfRepayments)
-                .withRepaymentEveryAfter("1").withRepaymentFrequencyTypeAsMonths().withAmortizationTypeAsEqualInstallments()
-                .withInterestCalculationPeriodTypeAsDays().withInterestRatePerPeriod(interestRatePerPeriod)
-                .withRepaymentFrequencyTypeAsWeeks().withSubmittedOnDate(disbursalDate).withExpectedDisbursementDate(disbursalDate)
-                .withPrincipalGrace("2").withInterestGrace("2").withFirstRepaymentDate(firstRepaymentDate)
-                .build(this.clientId.toString(), this.loanProductId.toString(), null);
-
-        this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-
-        // Test for loan account is created
-        Assert.assertNotNull(this.loanId);
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        // Test for loan account is created, can be approved
-        this.loanTransactionHelper.approveLoan(disbursalDate, this.loanId);
-        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-        // Test for loan account approved can be disbursed
-        this.loanTransactionHelper.disburseLoan(disbursalDate, this.loanId);
-        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-    }
-
-    /*
-     * MinimumDaysBetweenDisbursalAndFirstRepayment is set to 7 days and days
-     * between disbursal date and first repayment is set as 7. system should
-     * allow to create this loan and allow to disburse
-     */
-    @SuppressWarnings("unchecked")
-    @Test
-    public void createLoanEntity_WITH_DAY_BETWEEN_DISB_DATE_AND_REPAY_START_DATE_LESS_THAN_MIN_DAY_CRITERIA() {
-
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.responseSpecForStatusCode403 = new ResponseSpecBuilder().expectStatusCode(403).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        // create all required entities
-        this.createRequiredEntities();
-
-        // loanTransactionHelper is reassigned to accept 403 status code from
-        // server
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpecForStatusCode403);
-
-        final String disbursalDate = "4 September 2014";
-        final String firstRepaymentDate = "5 September 2014";
-
-        final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(loanPrincipalAmount)
-                .withLoanTermFrequency(numberOfRepayments).withLoanTermFrequencyAsWeeks().withNumberOfRepayments(numberOfRepayments)
-                .withRepaymentEveryAfter("1").withRepaymentFrequencyTypeAsMonths().withAmortizationTypeAsEqualInstallments()
-                .withInterestCalculationPeriodTypeAsDays().withInterestRatePerPeriod(interestRatePerPeriod)
-                .withRepaymentFrequencyTypeAsWeeks().withSubmittedOnDate(disbursalDate).withExpectedDisbursementDate(disbursalDate)
-                .withPrincipalGrace("2").withInterestGrace("2").withFirstRepaymentDate(firstRepaymentDate)
-                .build(this.clientId.toString(), this.loanProductId.toString(), null);
-
-        List<HashMap> error = (List<HashMap>) this.loanTransactionHelper.createLoanAccount(loanApplicationJSON,
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.loan.days.between.first.repayment.and.disbursal.are.less.than.minimum.allowed",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-    }
-
-    /**
-     * Creates the client, loan product, and loan entities
-     **/
-    private void createRequiredEntities() {
-        final String minimumDaysBetweenDisbursalAndFirstRepayment = "7"; // &
-                                                                         // days
-        this.createGroupEntityWithCalendar();
-        this.createClientEntity();
-        this.associateClientToGroup(this.groupId, this.clientId);
-        this.createLoanProductEntity(minimumDaysBetweenDisbursalAndFirstRepayment);
-
-    }
-
-    /*
-     * Associate client to the group
-     */
-
-    private void associateClientToGroup(final Integer groupId, final Integer clientId) {
-        GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupId.toString(), clientId.toString());
-        GroupHelper.verifyGroupMembers(this.requestSpec, this.responseSpec, groupId, clientId);
-    }
-
-    /*
-     * Create a new group
-     */
-
-    private void createGroupEntityWithCalendar() {
-        this.groupId = GroupHelper.createGroup(this.requestSpec, this.responseSpec, this.groupActivationDate);
-        GroupHelper.verifyGroupCreatedOnServer(this.requestSpec, this.responseSpec, this.groupId);
-
-        final String startDate = this.groupActivationDate;
-        final String frequency = "2"; // 2:Weekly
-        final String interval = "1"; // Every one week
-        final String repeatsOnDay = "1"; // 1:Monday
-
-        this.setGroupCalendarId(CalendarHelper.createMeetingCalendarForGroup(this.requestSpec, this.responseSpec, this.groupId, startDate,
-                frequency, interval, repeatsOnDay));
-    }
-
-    /**
-     * create a new client
-     **/
-    private void createClientEntity() {
-        this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, this.clientId);
-    }
-
-    /**
-     * create a new loan product
-     **/
-    private void createLoanProductEntity(final String minimumDaysBetweenDisbursalAndFirstRepayment) {
-        final String loanProductJSON = new LoanProductTestBuilder().withPrincipal(loanPrincipalAmount)
-                .withNumberOfRepayments(numberOfRepayments).withinterestRatePerPeriod(interestRatePerPeriod)
-                .withInterestRateFrequencyTypeAsYear()
-                .withMinimumDaysBetweenDisbursalAndFirstRepayment(minimumDaysBetweenDisbursalAndFirstRepayment).build(null);
-        this.loanProductId = this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    public Integer getGroupCalendarId() {
-        return groupCalendarId;
-    }
-
-    public void setGroupCalendarId(Integer groupCalendarId) {
-        this.groupCalendarId = groupCalendarId;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/OfficeIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/OfficeIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/OfficeIntegrationTest.java
deleted file mode 100644
index 574ba6c..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/OfficeIntegrationTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import org.apache.fineract.integrationtests.common.OfficeDomain;
-import org.apache.fineract.integrationtests.common.OfficeHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class OfficeIntegrationTest {
-
-	private ResponseSpecification responseSpec;
-	private RequestSpecification requestSpec;
-
-	@Before
-	public void setup() {
-		Utils.initializeRESTAssured();
-		this.requestSpec = new RequestSpecBuilder().setContentType(
-				ContentType.JSON).build();
-		this.requestSpec
-				.header("Authorization",
-						"Basic "
-								+ Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-		this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200)
-				.build();
-	}
-
-	@Test
-	public void testOfficeModification() {
-		OfficeHelper oh = new OfficeHelper(requestSpec, responseSpec);
-		int officeId = oh.createOffice("01 July 2007");
-		String name = Utils.randomNameGenerator("New_Office_", 4);
-		String date = "02 July 2007";
-		String[] dateArr = { "2007", "7", "2" };
-
-		oh.updateOffice(officeId, name, date);
-		OfficeDomain newOffice = oh.retrieveOfficeByID(officeId);
-
-		Assert.assertTrue(name.equals(newOffice.getName()));
-		Assert.assertArrayEquals(dateArr, newOffice.getOpeningDate());
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PasswordPreferencesIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PasswordPreferencesIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PasswordPreferencesIntegrationTest.java
deleted file mode 100644
index 388c13e..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PasswordPreferencesIntegrationTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.PasswordPreferencesHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class PasswordPreferencesIntegrationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private ResponseSpecification generalResponseSpec;
-
-    @Before
-    public void setUp() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.generalResponseSpec = new ResponseSpecBuilder().build();
-
-    }
-
-    @Test
-    public void updatePasswordPreferences() {
-        String validationPolicyId = "2";
-        PasswordPreferencesHelper.updatePasswordPreferences(requestSpec, responseSpec, validationPolicyId);
-        this.validateIfThePasswordIsUpdated(validationPolicyId);
-    }
-
-    private void validateIfThePasswordIsUpdated(String validationPolicyId){
-        Integer id = PasswordPreferencesHelper.getActivePasswordPreference(requestSpec, responseSpec);
-        assertEquals(validationPolicyId, id.toString());
-        System.out.println("---------------------------------PASSWORD PREFERENCE VALIDATED SUCCESSFULLY-----------------------------------------");
-
-    }
-    
-    @Test
-    public void updateWithInvalidPolicyId() {
-        String invalidValidationPolicyId = "2000";
-        final List<HashMap> error = (List) PasswordPreferencesHelper.updateWithInvalidValidationPolicyId(requestSpec, generalResponseSpec, invalidValidationPolicyId, 
-                CommonConstants.RESPONSE_ERROR);
-        assertEquals("Password Validation Policy with identifier 2000 does not exist", "error.msg.password.validation.policy.id.invalid",
-                error.get(0).get("userMessageGlobalisationCode"));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PaymentTypeIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PaymentTypeIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PaymentTypeIntegrationTest.java
deleted file mode 100644
index 4bc07bc..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/PaymentTypeIntegrationTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.PaymentTypeDomain;
-import org.apache.fineract.integrationtests.common.PaymentTypeHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class PaymentTypeIntegrationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-
-    }
-
-    @SuppressWarnings({ "rawtypes", "unchecked" })
-    @Test
-    public void testPaymentType() {
-        String name = PaymentTypeHelper.randomNameGenerator("P_T", 5);
-        String description = PaymentTypeHelper.randomNameGenerator("PT_Desc", 15);
-        Boolean isCashPayment = true;
-        Integer position = 1;
-
-        Integer paymentTypeId = PaymentTypeHelper.createPaymentType(requestSpec, responseSpec, name, description, isCashPayment, position);
-        Assert.assertNotNull(paymentTypeId);
-        PaymentTypeHelper.verifyPaymentTypeCreatedOnServer(requestSpec, responseSpec, paymentTypeId);
-        PaymentTypeDomain paymentTypeResponse = PaymentTypeHelper.retrieveById(requestSpec, responseSpec, paymentTypeId);
-        Assert.assertEquals(name, paymentTypeResponse.getName());
-        Assert.assertEquals(description, paymentTypeResponse.getDescription());
-        Assert.assertEquals(isCashPayment, paymentTypeResponse.getIsCashPayment());
-        Assert.assertEquals(position, paymentTypeResponse.getPosition());
-
-        // Update Payment Type
-        String newName = PaymentTypeHelper.randomNameGenerator("P_TU", 5);
-        String newDescription = PaymentTypeHelper.randomNameGenerator("PTU_Desc", 15);
-        Boolean isCashPaymentUpdatedValue = false;
-        Integer newPosition = 2;
-
-        HashMap request = new HashMap();
-        request.put("name", newName);
-        request.put("description", newDescription);
-        request.put("isCashPayment", isCashPaymentUpdatedValue);
-        request.put("position", newPosition);
-        PaymentTypeHelper.updatePaymentType(paymentTypeId, request, requestSpec, responseSpec);
-        PaymentTypeDomain paymentTypeUpdatedResponse = PaymentTypeHelper.retrieveById(requestSpec, responseSpec, paymentTypeId);
-        Assert.assertEquals(newName, paymentTypeUpdatedResponse.getName());
-        Assert.assertEquals(newDescription, paymentTypeUpdatedResponse.getDescription());
-        Assert.assertEquals(isCashPaymentUpdatedValue, paymentTypeUpdatedResponse.getIsCashPayment());
-        Assert.assertEquals(newPosition, paymentTypeUpdatedResponse.getPosition());
-
-        // Delete
-        Integer deletedPaymentTypeId = PaymentTypeHelper.deletePaymentType(paymentTypeId, requestSpec, responseSpec);
-        Assert.assertEquals(paymentTypeId, deletedPaymentTypeId);
-        ResponseSpecification responseSpecification = new ResponseSpecBuilder().expectStatusCode(404).build();
-        PaymentTypeHelper.retrieveById(requestSpec, responseSpecification, paymentTypeId);
-
-    }
-
-}



[26/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/ceda/README.md
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/ceda/README.md b/fineract-db/multi-tenant-demo-backups/ceda/README.md
deleted file mode 100644
index 6424923..0000000
--- a/fineract-db/multi-tenant-demo-backups/ceda/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-CEDA Microfinance (Kampala, Uganda)
-======
-
-This demo database contains:
-
-- DDL of latest schema
-- Minimum reference data required for deployment of platform
-- Customisatons for CEDA on m_code/m_code_value tables, extra datatables for client and loan data capture
-- Extra reports over and beyond core reports customisation for CEDA operations
\ No newline at end of file


[14/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java
deleted file mode 100644
index c27abc3..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java
+++ /dev/null
@@ -1,5051 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.math.BigDecimal;
-import java.text.DateFormat;
-import java.text.DecimalFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.SchedulerJobHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.accounting.Account;
-import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntry;
-import org.apache.fineract.integrationtests.common.accounting.JournalEntryHelper;
-import org.apache.fineract.integrationtests.common.accounting.PeriodicAccrualAccountingHelper;
-import org.apache.fineract.integrationtests.common.charges.ChargesHelper;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.apache.fineract.integrationtests.common.savings.AccountTransferHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
-import org.apache.fineract.integrationtests.common.savings.SavingsStatusChecker;
-import org.joda.time.LocalDate;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.google.gson.JsonObject;
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.path.json.JsonPath;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/**
- * Client Loan Integration Test for checking Loan Application Repayments
- * Schedule, loan charges, penalties, loan repayments and verifying accounting
- * transactions
- */
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class ClientLoanIntegrationTest {
-
-    public static final String MINIMUM_OPENING_BALANCE = "1000.0";
-    public static final String ACCOUNT_TYPE_INDIVIDUAL = "INDIVIDUAL";
-
-    private static final String NONE = "1";
-    private static final String CASH_BASED = "2";
-    private static final String ACCRUAL_PERIODIC = "3";
-    private static final String ACCRUAL_UPFRONT = "4";
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-    private JournalEntryHelper journalEntryHelper;
-    private AccountHelper accountHelper;
-    private SchedulerJobHelper schedulerJobHelper;
-    private PeriodicAccrualAccountingHelper periodicAccrualAccountingHelper;
-    private SavingsAccountHelper savingsAccountHelper;
-    private AccountTransferHelper accountTransferHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
-    }
-
-    @Test
-    public void checkClientLoanCreateAndDisburseFlow() {
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProduct(false, NONE);
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID, null, null, "12,000.00");
-        final ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec,
-                loanID);
-        verifyLoanRepaymentSchedule(loanSchedule);
-
-    }
-
-    @Test
-    public void testLoanCharges_DISBURSEMENT_FEE() {
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProduct(false, NONE);
-
-        List<HashMap> charges = new ArrayList<>();
-        Integer flatDisbursement = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanDisbursementJSON());
-
-        Integer amountPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1"));
-        addCharges(charges, amountPercentage, "1", null);
-        Integer amountPlusInterestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
-        addCharges(charges, amountPlusInterestPercentage, "1", null);
-        Integer interestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "1"));
-        addCharges(charges, interestPercentage, "1", null);
-
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        HashMap disbursementDetail = loanSchedule.get(0);
-
-        List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-
-        validateCharge(amountPercentage, loanCharges, "1.0", "120.0", "0.0", "0.0");
-        validateCharge(interestPercentage, loanCharges, "1.0", "6.06", "0.0", "0.0");
-        validateCharge(amountPlusInterestPercentage, loanCharges, "1.0", "126.06", "0.0", "0.0");
-
-        validateNumberForEqual("252.12", String.valueOf(disbursementDetail.get("feeChargesDue")));
-
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getDisbursementChargesForLoanAsJSON(String.valueOf(flatDisbursement)));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        disbursementDetail = loanSchedule.get(0);
-
-        validateCharge(flatDisbursement, loanCharges, "100.0", "100.0", "0.0", "0.0");
-        validateNumberForEqual("352.12", String.valueOf(disbursementDetail.get("feeChargesDue")));
-
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(amountPercentage, loanCharges).get("id"),
-                LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(interestPercentage, loanCharges).get("id"),
-                LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(amountPlusInterestPercentage, loanCharges)
-                .get("id"), LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(flatDisbursement, loanCharges).get("id"),
-                LoanTransactionHelper.getUpdateChargesForLoanAsJSON("150"));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        disbursementDetail = loanSchedule.get(0);
-        validateCharge(amountPercentage, loanCharges, "2.0", "240.0", "0.0", "0.0");
-        validateCharge(interestPercentage, loanCharges, "2.0", "12.12", "0.0", "0.0");
-        validateCharge(amountPlusInterestPercentage, loanCharges, "2.0", "252.12", "0.0", "0.0");
-        validateCharge(flatDisbursement, loanCharges, "150.0", "150.0", "0.0", "0.0");
-        validateNumberForEqual("654.24", String.valueOf(disbursementDetail.get("feeChargesDue")));
-
-        this.loanTransactionHelper.updateLoan(loanID,
-                updateLoanJson(clientID, loanProductID, copyChargesForUpdate(loanCharges, null, null), null));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        disbursementDetail = loanSchedule.get(0);
-        validateCharge(amountPercentage, loanCharges, "2.0", "200.0", "0.0", "0.0");
-        validateCharge(interestPercentage, loanCharges, "2.0", "10.1", "0.0", "0.0");
-        validateCharge(amountPlusInterestPercentage, loanCharges, "2.0", "210.1", "0.0", "0.0");
-        validateCharge(flatDisbursement, loanCharges, "150.0", "150.0", "0.0", "0.0");
-        validateNumberForEqual("570.2", String.valueOf(disbursementDetail.get("feeChargesDue")));
-
-        this.loanTransactionHelper.updateLoan(loanID,
-                updateLoanJson(clientID, loanProductID, copyChargesForUpdate(loanCharges, flatDisbursement, "1"), null));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        disbursementDetail = loanSchedule.get(0);
-        validateCharge(amountPercentage, loanCharges, "1.0", "100.0", "0.0", "0.0");
-        validateCharge(interestPercentage, loanCharges, "1.0", "5.05", "0.0", "0.0");
-        validateCharge(amountPlusInterestPercentage, loanCharges, "1.0", "105.05", "0.0", "0.0");
-        validateNumberForEqual("210.1", String.valueOf(disbursementDetail.get("feeChargesDue")));
-
-        charges.clear();
-        addCharges(charges, flatDisbursement, "100", null);
-        this.loanTransactionHelper.updateLoan(loanID, updateLoanJson(clientID, loanProductID, charges, null));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        disbursementDetail = loanSchedule.get(0);
-        validateCharge(flatDisbursement, loanCharges, "100.0", "100.0", "0.0", "0.0");
-        validateNumberForEqual("100.0", String.valueOf(disbursementDetail.get("feeChargesDue")));
-
-        this.loanTransactionHelper.deleteChargesForLoan(loanID, (Integer) getloanCharge(flatDisbursement, loanCharges).get("id"));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        disbursementDetail = loanSchedule.get(0);
-        Assert.assertEquals(0, loanCharges.size());
-        validateNumberForEqual("0.0", String.valueOf(disbursementDetail.get("feeChargesDue")));
-
-    }
-
-    @Test
-    public void testLoanCharges_DISBURSEMENT_FEE_WITH_AMOUNT_CHANGE() {
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProduct(false, NONE);
-
-        List<HashMap> charges = new ArrayList<>();
-        Integer amountPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1"));
-        addCharges(charges, amountPercentage, "1", null);
-        Integer amountPlusInterestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
-        addCharges(charges, amountPlusInterestPercentage, "1", null);
-        Integer interestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "1"));
-        addCharges(charges, interestPercentage, "1", null);
-
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        HashMap disbursementDetail = loanSchedule.get(0);
-
-        List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-
-        validateCharge(amountPercentage, loanCharges, "1.0", "120.0", "0.0", "0.0");
-        validateCharge(interestPercentage, loanCharges, "1.0", "6.06", "0.0", "0.0");
-        validateCharge(amountPlusInterestPercentage, loanCharges, "1.0", "126.06", "0.0", "0.0");
-        validateNumberForEqual("252.12", String.valueOf(disbursementDetail.get("feeChargesDue")));
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan("20 September 2011", loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        // DISBURSE
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID, "10000");
-        System.out.println("DISBURSE " + loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        disbursementDetail = loanSchedule.get(0);
-
-        validateCharge(amountPercentage, loanCharges, "1.0", "0.0", "100.0", "0.0");
-        validateCharge(interestPercentage, loanCharges, "1.0", "0.0", "5.05", "0.0");
-        validateCharge(amountPlusInterestPercentage, loanCharges, "1.0", "0.0", "105.05", "0.0");
-        validateNumberForEqual("210.1", String.valueOf(disbursementDetail.get("feeChargesDue")));
-
-    }
-
-    @Test
-    public void testLoanCharges_SPECIFIED_DUE_DATE_FEE() {
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProduct(false, NONE);
-
-        List<HashMap> charges = new ArrayList<>();
-        Integer flat = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", false));
-        Integer flatAccTransfer = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateWithAccountTransferJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", false));
-
-        Integer amountPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
-        addCharges(charges, amountPercentage, "1", "29 September 2011");
-        Integer amountPlusInterestPercentage = ChargesHelper
-                .createCharges(requestSpec, responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
-        addCharges(charges, amountPlusInterestPercentage, "1", "29 September 2011");
-        Integer interestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "1", false));
-        addCharges(charges, interestPercentage, "1", "29 September 2011");
-
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        HashMap firstInstallment = loanSchedule.get(1);
-
-        List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-
-        validateCharge(amountPercentage, loanCharges, "1.0", "120.0", "0.0", "0.0");
-        validateCharge(interestPercentage, loanCharges, "1.0", "6.06", "0.0", "0.0");
-        validateCharge(amountPlusInterestPercentage, loanCharges, "1.0", "126.06", "0.0", "0.0");
-
-        validateNumberForEqual("252.12", String.valueOf(firstInstallment.get("feeChargesDue")));
-
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flat), "29 September 2011", "100"));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        firstInstallment = loanSchedule.get(1);
-
-        validateCharge(flat, loanCharges, "100.0", "100.0", "0.0", "0.0");
-        validateNumberForEqual("352.12", String.valueOf(firstInstallment.get("feeChargesDue")));
-
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(amountPercentage, loanCharges).get("id"),
-                LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(interestPercentage, loanCharges).get("id"),
-                LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(amountPlusInterestPercentage, loanCharges)
-                .get("id"), LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(flat, loanCharges).get("id"),
-                LoanTransactionHelper.getUpdateChargesForLoanAsJSON("150"));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        firstInstallment = loanSchedule.get(1);
-        validateCharge(amountPercentage, loanCharges, "2.0", "240.0", "0.0", "0.0");
-        validateCharge(interestPercentage, loanCharges, "2.0", "12.12", "0.0", "0.0");
-        validateCharge(amountPlusInterestPercentage, loanCharges, "2.0", "252.12", "0.0", "0.0");
-        validateCharge(flat, loanCharges, "150.0", "150.0", "0.0", "0.0");
-        validateNumberForEqual("654.24", String.valueOf(firstInstallment.get("feeChargesDue")));
-
-        final Integer savingsId = SavingsAccountHelper.openSavingsAccount(this.requestSpec, this.responseSpec, clientID,
-                MINIMUM_OPENING_BALANCE);
-        this.loanTransactionHelper.updateLoan(loanID,
-                updateLoanJson(clientID, loanProductID, copyChargesForUpdate(loanCharges, null, null), String.valueOf(savingsId)));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        firstInstallment = loanSchedule.get(1);
-        validateCharge(amountPercentage, loanCharges, "2.0", "200.0", "0.0", "0.0");
-        validateCharge(interestPercentage, loanCharges, "2.0", "10.1", "0.0", "0.0");
-        validateCharge(amountPlusInterestPercentage, loanCharges, "2.0", "210.1", "0.0", "0.0");
-        validateCharge(flat, loanCharges, "150.0", "150.0", "0.0", "0.0");
-        validateNumberForEqual("570.2", String.valueOf(firstInstallment.get("feeChargesDue")));
-
-        this.loanTransactionHelper.updateLoan(loanID,
-                updateLoanJson(clientID, loanProductID, copyChargesForUpdate(loanCharges, flat, "1"), null));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        firstInstallment = loanSchedule.get(1);
-        validateCharge(amountPercentage, loanCharges, "1.0", "100.0", "0.0", "0.0");
-        validateCharge(interestPercentage, loanCharges, "1.0", "5.05", "0.0", "0.0");
-        validateCharge(amountPlusInterestPercentage, loanCharges, "1.0", "105.05", "0.0", "0.0");
-        validateNumberForEqual("210.1", String.valueOf(firstInstallment.get("feeChargesDue")));
-
-        charges.clear();
-        addCharges(charges, flat, "100", "29 September 2011");
-        this.loanTransactionHelper.updateLoan(loanID, updateLoanJson(clientID, loanProductID, charges, null));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        firstInstallment = loanSchedule.get(1);
-        validateCharge(flat, loanCharges, "100.0", "100.0", "0.0", "0.0");
-        validateNumberForEqual("100.0", String.valueOf(firstInstallment.get("feeChargesDue")));
-
-        this.loanTransactionHelper.deleteChargesForLoan(loanID, (Integer) getloanCharge(flat, loanCharges).get("id"));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        firstInstallment = loanSchedule.get(1);
-        Assert.assertEquals(0, loanCharges.size());
-        validateNumberForEqual("0", String.valueOf(firstInstallment.get("feeChargesDue")));
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan("20 September 2011", loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatAccTransfer), "29 September 2011", "100"));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        firstInstallment = loanSchedule.get(1);
-        validateCharge(flatAccTransfer, loanCharges, "100.0", "100.0", "0.0", "0.0");
-        validateNumberForEqual("100.0", String.valueOf(firstInstallment.get("feeChargesDue")));
-
-        // DISBURSE
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
-        System.out.println("DISBURSE " + loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(amountPercentage), "29 September 2011", "1"));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        firstInstallment = loanSchedule.get(1);
-        validateCharge(amountPercentage, loanCharges, "1.0", "100.0", "0.0", "0.0");
-        validateCharge(flatAccTransfer, loanCharges, "100.0", "100.0", "0.0", "0.0");
-        validateNumberForEqual("200.0", String.valueOf(firstInstallment.get("feeChargesDue")));
-
-        this.loanTransactionHelper.waiveChargesForLoan(loanID, (Integer) getloanCharge(amountPercentage, loanCharges).get("id"), "");
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        firstInstallment = loanSchedule.get(1);
-        validateCharge(amountPercentage, loanCharges, "1.0", "0.0", "0.0", "100.0");
-        validateCharge(flatAccTransfer, loanCharges, "100.0", "100.0", "0.0", "0.0");
-        validateNumberForEqual("200.0", String.valueOf(firstInstallment.get("feeChargesDue")));
-        validateNumberForEqual("100.0", String.valueOf(firstInstallment.get("feeChargesOutstanding")));
-        validateNumberForEqual("100.0", String.valueOf(firstInstallment.get("feeChargesWaived")));
-
-        this.loanTransactionHelper.payChargesForLoan(loanID, (Integer) getloanCharge(flatAccTransfer, loanCharges).get("id"),
-                LoanTransactionHelper.getPayChargeJSON(SavingsAccountHelper.TRANSACTION_DATE, null));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        firstInstallment = loanSchedule.get(1);
-        validateCharge(amountPercentage, loanCharges, "1.0", "0.0", "0.0", "100.0");
-        validateCharge(flatAccTransfer, loanCharges, "100.0", "0.0", "100.0", "0.0");
-        validateNumberForEqual("200.0", String.valueOf(firstInstallment.get("feeChargesDue")));
-        validateNumberForEqual("100.0", String.valueOf(firstInstallment.get("feeChargesWaived")));
-        validateNumberForEqual("100.0", String.valueOf(firstInstallment.get("feeChargesPaid")));
-        validateNumberForEqual("0.0", String.valueOf(firstInstallment.get("feeChargesOutstanding")));
-    }
-
-    @Test
-    public void testLoanCharges_INSTALMENT_FEE() {
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProduct(false, NONE);
-
-        List<HashMap> charges = new ArrayList<>();
-        Integer flat = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "50", false));
-        Integer flatAccTransfer = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanInstallmentWithAccountTransferJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "50", false));
-
-        Integer amountPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
-        addCharges(charges, amountPercentage, "1", "29 September 2011");
-        Integer amountPlusInterestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
-        addCharges(charges, amountPlusInterestPercentage, "1", "29 September 2011");
-        Integer interestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "1", false));
-        addCharges(charges, interestPercentage, "1", "29 September 2011");
-
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        loanSchedule.remove(0);
-        List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-
-        Float totalPerOfAmout = 0F;
-        Float totalPerOfAmoutPlusInt = 0F;
-        Float totalPerOfint = 0F;
-        for (HashMap installment : loanSchedule) {
-            Float principalDue = (Float) installment.get("principalDue");
-            Float interestDue = (Float) installment.get("interestDue");
-            Float principalFee = principalDue / 100;
-            Float interestFee = interestDue / 100;
-            Float totalInstallmentFee = (principalFee * 2) + (interestFee * 2);
-            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee), String.valueOf(installment.get("feeChargesDue")));
-            totalPerOfAmout = totalPerOfAmout + principalFee;
-            totalPerOfAmoutPlusInt = totalPerOfAmoutPlusInt + principalFee + interestFee;
-            totalPerOfint = totalPerOfint + interestFee;
-        }
-
-        validateChargeExcludePrecission(amountPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmout), "0.0", "0.0");
-        validateChargeExcludePrecission(interestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfint), "0.0", "0.0");
-        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmoutPlusInt), "0.0",
-                "0.0");
-
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getInstallmentChargesForLoanAsJSON(String.valueOf(flat), "50"));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        loanSchedule.remove(0);
-        totalPerOfAmout = 0F;
-        totalPerOfAmoutPlusInt = 0F;
-        totalPerOfint = 0F;
-        for (HashMap installment : loanSchedule) {
-            Float principalDue = (Float) installment.get("principalDue");
-            Float interestDue = (Float) installment.get("interestDue");
-            Float principalFee = principalDue / 100;
-            Float interestFee = interestDue / 100;
-            Float totalInstallmentFee = (principalFee * 2) + (interestFee * 2) + 50;
-            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee), String.valueOf(installment.get("feeChargesDue")));
-            totalPerOfAmout = totalPerOfAmout + principalFee;
-            totalPerOfAmoutPlusInt = totalPerOfAmoutPlusInt + principalFee + interestFee;
-            totalPerOfint = totalPerOfint + interestFee;
-        }
-
-        validateChargeExcludePrecission(amountPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmout), "0.0", "0.0");
-        validateChargeExcludePrecission(interestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfint), "0.0", "0.0");
-        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmoutPlusInt), "0.0",
-                "0.0");
-        validateChargeExcludePrecission(flat, loanCharges, "50.0", "200", "0.0", "0.0");
-
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(amountPercentage, loanCharges).get("id"),
-                LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(interestPercentage, loanCharges).get("id"),
-                LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(amountPlusInterestPercentage, loanCharges)
-                .get("id"), LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(flat, loanCharges).get("id"),
-                LoanTransactionHelper.getUpdateChargesForLoanAsJSON("100"));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        loanSchedule.remove(0);
-        totalPerOfAmout = 0F;
-        totalPerOfAmoutPlusInt = 0F;
-        totalPerOfint = 0F;
-        for (HashMap installment : loanSchedule) {
-            Float principalDue = (Float) installment.get("principalDue");
-            Float interestDue = (Float) installment.get("interestDue");
-            Float principalFee = principalDue * 2 / 100;
-            Float interestFee = interestDue * 2 / 100;
-            Float totalInstallmentFee = (principalFee * 2) + (interestFee * 2) + 100;
-            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee), String.valueOf(installment.get("feeChargesDue")));
-            totalPerOfAmout = totalPerOfAmout + principalFee;
-            totalPerOfAmoutPlusInt = totalPerOfAmoutPlusInt + principalFee + interestFee;
-            totalPerOfint = totalPerOfint + interestFee;
-        }
-
-        validateChargeExcludePrecission(amountPercentage, loanCharges, "2.0", String.valueOf(totalPerOfAmout), "0.0", "0.0");
-        validateChargeExcludePrecission(interestPercentage, loanCharges, "2.0", String.valueOf(totalPerOfint), "0.0", "0.0");
-        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "2.0", String.valueOf(totalPerOfAmoutPlusInt), "0.0",
-                "0.0");
-        validateChargeExcludePrecission(flat, loanCharges, "100.0", "400", "0.0", "0.0");
-
-        final Integer savingsId = SavingsAccountHelper.openSavingsAccount(this.requestSpec, this.responseSpec, clientID,
-                MINIMUM_OPENING_BALANCE);
-        this.loanTransactionHelper.updateLoan(loanID,
-                updateLoanJson(clientID, loanProductID, copyChargesForUpdate(loanCharges, null, null), String.valueOf(savingsId)));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        loanSchedule.remove(0);
-        totalPerOfAmout = 0F;
-        totalPerOfAmoutPlusInt = 0F;
-        totalPerOfint = 0F;
-        for (HashMap installment : loanSchedule) {
-            Float principalDue = (Float) installment.get("principalDue");
-            Float interestDue = (Float) installment.get("interestDue");
-            Float principalFee = principalDue * 2 / 100;
-            Float interestFee = interestDue * 2 / 100;
-            Float totalInstallmentFee = (principalFee * 2) + (interestFee * 2) + 100;
-            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee), String.valueOf(installment.get("feeChargesDue")));
-            totalPerOfAmout = totalPerOfAmout + principalFee;
-            totalPerOfAmoutPlusInt = totalPerOfAmoutPlusInt + principalFee + interestFee;
-            totalPerOfint = totalPerOfint + interestFee;
-        }
-
-        validateChargeExcludePrecission(amountPercentage, loanCharges, "2.0", String.valueOf(totalPerOfAmout), "0.0", "0.0");
-        validateChargeExcludePrecission(interestPercentage, loanCharges, "2.0", String.valueOf(totalPerOfint), "0.0", "0.0");
-        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "2.0", String.valueOf(totalPerOfAmoutPlusInt), "0.0",
-                "0.0");
-        validateChargeExcludePrecission(flat, loanCharges, "100.0", "400", "0.0", "0.0");
-
-        this.loanTransactionHelper.updateLoan(loanID,
-                updateLoanJson(clientID, loanProductID, copyChargesForUpdate(loanCharges, flat, "1"), null));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        loanSchedule.remove(0);
-        totalPerOfAmout = 0F;
-        totalPerOfAmoutPlusInt = 0F;
-        totalPerOfint = 0F;
-        for (HashMap installment : loanSchedule) {
-            Float principalDue = (Float) installment.get("principalDue");
-            Float interestDue = (Float) installment.get("interestDue");
-            Float principalFee = principalDue / 100;
-            Float interestFee = interestDue / 100;
-            Float totalInstallmentFee = (principalFee * 2) + (interestFee * 2);
-            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee), String.valueOf(installment.get("feeChargesDue")));
-            totalPerOfAmout = totalPerOfAmout + principalFee;
-            totalPerOfAmoutPlusInt = totalPerOfAmoutPlusInt + principalFee + interestFee;
-            totalPerOfint = totalPerOfint + interestFee;
-        }
-
-        validateChargeExcludePrecission(amountPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmout), "0.0", "0.0");
-        validateChargeExcludePrecission(interestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfint), "0.0", "0.0");
-        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmoutPlusInt), "0.0",
-                "0.0");
-
-        charges.clear();
-        addCharges(charges, flat, "50", "29 September 2011");
-        this.loanTransactionHelper.updateLoan(loanID, updateLoanJson(clientID, loanProductID, charges, null));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        loanSchedule.remove(0);
-        for (HashMap installment : loanSchedule) {
-            validateNumberForEqualExcludePrecission("50", String.valueOf(installment.get("feeChargesDue")));
-        }
-        validateChargeExcludePrecission(flat, loanCharges, "50.0", "200", "0.0", "0.0");
-
-        this.loanTransactionHelper.deleteChargesForLoan(loanID, (Integer) getloanCharge(flat, loanCharges).get("id"));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        loanSchedule.remove(0);
-        for (HashMap installment : loanSchedule) {
-            validateNumberForEqualExcludePrecission("0", String.valueOf(installment.get("feeChargesDue")));
-        }
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan("20 September 2011", loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getInstallmentChargesForLoanAsJSON(String.valueOf(flatAccTransfer), "100"));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        loanSchedule.remove(0);
-        for (HashMap installment : loanSchedule) {
-            validateNumberForEqualExcludePrecission("100", String.valueOf(installment.get("feeChargesDue")));
-        }
-        validateChargeExcludePrecission(flatAccTransfer, loanCharges, "100.0", "400", "0.0", "0.0");
-
-        // DISBURSE
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
-        System.out.println("DISBURSE " + loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getInstallmentChargesForLoanAsJSON(String.valueOf(flat), "50"));
-
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        loanSchedule.remove(0);
-        for (HashMap installment : loanSchedule) {
-            validateNumberForEqualExcludePrecission("150", String.valueOf(installment.get("feeChargesDue")));
-        }
-        validateChargeExcludePrecission(flatAccTransfer, loanCharges, "100.0", "400", "0.0", "0.0");
-        validateChargeExcludePrecission(flat, loanCharges, "50.0", "200", "0.0", "0.0");
-
-        Integer waivePeriodnum = 1;
-        this.loanTransactionHelper.waiveChargesForLoan(loanID, (Integer) getloanCharge(flat, loanCharges).get("id"),
-                LoanTransactionHelper.getWaiveChargeJSON(String.valueOf(waivePeriodnum)));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        loanSchedule.remove(0);
-        for (HashMap installment : loanSchedule) {
-            validateNumberForEqualExcludePrecission("150", String.valueOf(installment.get("feeChargesDue")));
-            if (waivePeriodnum == installment.get("period")) {
-                validateNumberForEqualExcludePrecission("100.0", String.valueOf(installment.get("feeChargesOutstanding")));
-                validateNumberForEqualExcludePrecission("50.0", String.valueOf(installment.get("feeChargesWaived")));
-            } else {
-                validateNumberForEqualExcludePrecission("150.0", String.valueOf(installment.get("feeChargesOutstanding")));
-                validateNumberForEqualExcludePrecission("0.0", String.valueOf(installment.get("feeChargesWaived")));
-
-            }
-        }
-        validateChargeExcludePrecission(flatAccTransfer, loanCharges, "100.0", "400", "0.0", "0.0");
-        validateChargeExcludePrecission(flat, loanCharges, "50.0", "150", "0.0", "50.0");
-
-        Integer payPeriodnum = 2;
-        this.loanTransactionHelper.payChargesForLoan(loanID, (Integer) getloanCharge(flatAccTransfer, loanCharges).get("id"),
-                LoanTransactionHelper.getPayChargeJSON(SavingsAccountHelper.TRANSACTION_DATE, String.valueOf(payPeriodnum)));
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        loanSchedule.remove(0);
-        for (HashMap installment : loanSchedule) {
-            validateNumberForEqualExcludePrecission("150", String.valueOf(installment.get("feeChargesDue")));
-            if (payPeriodnum == installment.get("period")) {
-                validateNumberForEqualExcludePrecission("50.0", String.valueOf(installment.get("feeChargesOutstanding")));
-                validateNumberForEqualExcludePrecission("100.0", String.valueOf(installment.get("feeChargesPaid")));
-            } else if (waivePeriodnum == installment.get("period")) {
-                validateNumberForEqualExcludePrecission("100.0", String.valueOf(installment.get("feeChargesOutstanding")));
-                validateNumberForEqualExcludePrecission("50.0", String.valueOf(installment.get("feeChargesWaived")));
-            } else {
-                validateNumberForEqualExcludePrecission("150.0", String.valueOf(installment.get("feeChargesOutstanding")));
-                validateNumberForEqualExcludePrecission("0.0", String.valueOf(installment.get("feeChargesPaid")));
-
-            }
-        }
-        validateChargeExcludePrecission(flatAccTransfer, loanCharges, "100.0", "300", "100.0", "0.0");
-        validateChargeExcludePrecission(flat, loanCharges, "50.0", "150", "0.0", "50.0");
-
-    }
-
-    @Test
-    public void testLoanCharges_DISBURSEMENT_TO_SAVINGS() {
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        SavingsAccountHelper savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProduct(false, NONE);
-
-        final Integer savingsId = SavingsAccountHelper.openSavingsAccount(this.requestSpec, this.responseSpec, clientID,
-                MINIMUM_OPENING_BALANCE);
-
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID, null, savingsId.toString(), "12,000.00");
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan("20 September 2011", loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        HashMap summary = savingsAccountHelper.getSavingsSummary(savingsId);
-        Float balance = new Float(MINIMUM_OPENING_BALANCE);
-        assertEquals("Verifying opening Balance", balance, summary.get("accountBalance"));
-
-        // DISBURSE
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoanToSavings(SavingsAccountHelper.TRANSACTION_DATE, loanID);
-        System.out.println("DISBURSE " + loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        summary = savingsAccountHelper.getSavingsSummary(savingsId);
-        balance = new Float(MINIMUM_OPENING_BALANCE) + new Float("12000");
-        assertEquals("Verifying opening Balance", balance, summary.get("accountBalance"));
-
-        loanStatusHashMap = this.loanTransactionHelper.undoDisbursal(loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        summary = savingsAccountHelper.getSavingsSummary(savingsId);
-        balance = new Float(MINIMUM_OPENING_BALANCE);
-        assertEquals("Verifying opening Balance", balance, summary.get("accountBalance"));
-
-    }
-
-    @Test
-    public void testLoanCharges_DISBURSEMENT_WITH_TRANCHES() {
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProduct(true, NONE);
-
-        List<HashMap> tranches = new ArrayList<>();
-        tranches.add(createTrancheDetail("1 March 2014", "25000"));
-        tranches.add(createTrancheDetail("23 April 2014", "20000"));
-
-        final Integer loanID = applyForLoanApplicationWithTranches(clientID, loanProductID, null, null, "45,000.00", tranches);
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan("1 March 2014", loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        // DISBURSE first Tranche
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan("1 March 2014", loanID);
-        System.out.println("DISBURSE " + loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        // DISBURSE Second Tranche
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan("23 April 2014", loanID);
-        System.out.println("DISBURSE " + loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        loanStatusHashMap = this.loanTransactionHelper.undoDisbursal(loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-    }
-
-    @Test
-    public void testLoanCharges_DISBURSEMENT_TO_SAVINGS_WITH_TRANCHES() {
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        SavingsAccountHelper savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProduct(true, NONE);
-
-        final Integer savingsId = SavingsAccountHelper.openSavingsAccount(this.requestSpec, this.responseSpec, clientID,
-                MINIMUM_OPENING_BALANCE);
-
-        List<HashMap> tranches = new ArrayList<>();
-        tranches.add(createTrancheDetail("1 March 2014", "25000"));
-        tranches.add(createTrancheDetail("23 April 2014", "20000"));
-
-        final Integer loanID = applyForLoanApplicationWithTranches(clientID, loanProductID, null, savingsId.toString(), "45,000.00",
-                tranches);
-        Assert.assertNotNull(loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan("1 March 2014", loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        HashMap summary = savingsAccountHelper.getSavingsSummary(savingsId);
-        Float balance = new Float(MINIMUM_OPENING_BALANCE);
-        assertEquals("Verifying opening Balance", balance, summary.get("accountBalance"));
-
-        // DISBURSE first Tranche
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoanToSavings("1 March 2014", loanID);
-        System.out.println("DISBURSE " + loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        summary = savingsAccountHelper.getSavingsSummary(savingsId);
-        balance = new Float(MINIMUM_OPENING_BALANCE) + new Float("25000");
-        assertEquals("Verifying opening Balance", balance, summary.get("accountBalance"));
-
-        // DISBURSE Second Tranche
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoanToSavings("23 April 2014", loanID);
-        System.out.println("DISBURSE " + loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        summary = savingsAccountHelper.getSavingsSummary(savingsId);
-        balance = new Float(MINIMUM_OPENING_BALANCE) + new Float("25000") + new Float("20000");
-        assertEquals("Verifying opening Balance", balance, summary.get("accountBalance"));
-
-        loanStatusHashMap = this.loanTransactionHelper.undoDisbursal(loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        summary = savingsAccountHelper.getSavingsSummary(savingsId);
-        balance = new Float(MINIMUM_OPENING_BALANCE);
-        assertEquals("Verifying opening Balance", balance, summary.get("accountBalance"));
-
-    }
-
-    private void validateCharge(Integer amountPercentage, final List<HashMap> loanCharges, final String amount, final String outstanding,
-            String amountPaid, String amountWaived) {
-        HashMap chargeDetail = getloanCharge(amountPercentage, loanCharges);
-        Assert.assertTrue(new Float(amount).compareTo(new Float(String.valueOf(chargeDetail.get("amountOrPercentage")))) == 0);
-        Assert.assertTrue(new Float(outstanding).compareTo(new Float(String.valueOf(chargeDetail.get("amountOutstanding")))) == 0);
-        Assert.assertTrue(new Float(amountPaid).compareTo(new Float(String.valueOf(chargeDetail.get("amountPaid")))) == 0);
-        Assert.assertTrue(new Float(amountWaived).compareTo(new Float(String.valueOf(chargeDetail.get("amountWaived")))) == 0);
-    }
-
-    private void validateChargeExcludePrecission(Integer amountPercentage, final List<HashMap> loanCharges, final String amount,
-            final String outstanding, String amountPaid, String amountWaived) {
-        DecimalFormat twoDForm = new DecimalFormat("#");
-        HashMap chargeDetail = getloanCharge(amountPercentage, loanCharges);
-        Assert.assertTrue(new Float(twoDForm.format(new Float(amount))).compareTo(new Float(twoDForm.format(new Float(String
-                .valueOf(chargeDetail.get("amountOrPercentage")))))) == 0);
-        Assert.assertTrue(new Float(twoDForm.format(new Float(outstanding))).compareTo(new Float(twoDForm.format(new Float(String
-                .valueOf(chargeDetail.get("amountOutstanding")))))) == 0);
-        Assert.assertTrue(new Float(twoDForm.format(new Float(amountPaid))).compareTo(new Float(twoDForm.format(new Float(String
-                .valueOf(chargeDetail.get("amountPaid")))))) == 0);
-        Assert.assertTrue(new Float(twoDForm.format(new Float(amountWaived))).compareTo(new Float(twoDForm.format(new Float(String
-                .valueOf(chargeDetail.get("amountWaived")))))) == 0);
-    }
-
-    public void validateNumberForEqual(String val, String val2) {
-        Assert.assertTrue(new Float(val).compareTo(new Float(val2)) == 0);
-    }
-
-    public void validateNumberForEqualWithMsg(String msg, String val, String val2) {
-        Assert.assertTrue(msg + "expected " + val + " but was " + val2, new Float(val).compareTo(new Float(val2)) == 0);
-    }
-
-    public void validateNumberForEqualExcludePrecission(String val, String val2) {
-        DecimalFormat twoDForm = new DecimalFormat("#");
-        Assert.assertTrue(new Float(twoDForm.format(new Float(val))).compareTo(new Float(twoDForm.format(new Float(val2)))) == 0);
-    }
-
-    private Integer createLoanProduct(final boolean multiDisburseLoan, final String accountingRule, final Account... accounts) {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        LoanProductTestBuilder builder = new LoanProductTestBuilder() //
-                .withPrincipal("12,000.00") //
-                .withNumberOfRepayments("4") //
-                .withRepaymentAfterEvery("1") //
-                .withRepaymentTypeAsMonth() //
-                .withinterestRatePerPeriod("1") //
-                .withInterestRateFrequencyTypeAsMonths() //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withTranches(multiDisburseLoan) //
-                .withAccounting(accountingRule, accounts);
-        if (multiDisburseLoan) {
-            builder = builder.withInterestCalculationPeriodTypeAsRepaymentPeriod(true);
-        }
-        final String loanProductJSON = builder.build(null);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private Integer createLoanProduct(final String inMultiplesOf, final String digitsAfterDecimal, final String repaymentStrategy) {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        final String loanProductJSON = new LoanProductTestBuilder() //
-                .withPrincipal("10000000.00") //
-                .withNumberOfRepayments("24") //
-                .withRepaymentAfterEvery("1") //
-                .withRepaymentTypeAsMonth() //
-                .withinterestRatePerPeriod("2") //
-                .withInterestRateFrequencyTypeAsMonths() //
-                .withRepaymentStrategy(repaymentStrategy) //
-                .withAmortizationTypeAsEqualPrincipalPayment() //
-                .withInterestTypeAsDecliningBalance() //
-                .currencyDetails(digitsAfterDecimal, inMultiplesOf).build(null);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private Integer createLoanProduct(final String inMultiplesOf, final String digitsAfterDecimal, final String repaymentStrategy,
-            final String accountingRule, final Account... accounts) {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        final String loanProductJSON = new LoanProductTestBuilder() //
-                .withPrincipal("10000000.00") //
-                .withNumberOfRepayments("24") //
-                .withRepaymentAfterEvery("1") //
-                .withRepaymentTypeAsMonth() //
-                .withinterestRatePerPeriod("2") //
-                .withInterestRateFrequencyTypeAsMonths() //
-                .withRepaymentStrategy(repaymentStrategy) //
-                .withAmortizationTypeAsEqualPrincipalPayment() //
-                .withInterestTypeAsDecliningBalance() //
-                .currencyDetails(digitsAfterDecimal, inMultiplesOf).withAccounting(accountingRule, accounts).build(null);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-
-    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID, String graceOnPrincipalPayment) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal("10000000.00") //
-                .withLoanTermFrequency("24") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("24") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualPrincipalPayments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withPrincipalGrace(graceOnPrincipalPayment).withExpectedDisbursementDate("2 June 2014") //
-                .withSubmittedOnDate("2 June 2014") //
-                .build(clientID.toString(), loanProductID.toString(), null);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID, List<HashMap> charges,
-            final String savingsId, String principal) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal(principal) //
-                .withLoanTermFrequency("4") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("4") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withExpectedDisbursementDate("20 September 2011") //
-                .withSubmittedOnDate("20 September 2011") //
-                .withCharges(charges).build(clientID.toString(), loanProductID.toString(), savingsId);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-    private Integer applyForLoanApplicationWithTranches(final Integer clientID, final Integer loanProductID, List<HashMap> charges,
-            final String savingsId, String principal, List<HashMap> tranches) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal(principal) //
-                .withLoanTermFrequency("4") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("4") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withExpectedDisbursementDate("1 March 2014") //
-                .withTranches(tranches) //
-                .withSubmittedOnDate("1 March 2014") //
-
-                .withCharges(charges).build(clientID.toString(), loanProductID.toString(), savingsId);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-    private String updateLoanJson(final Integer clientID, final Integer loanProductID, List<HashMap> charges, String savingsId) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal("10,000.00") //
-                .withLoanTermFrequency("4") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("4") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withExpectedDisbursementDate("20 September 2011") //
-                .withSubmittedOnDate("20 September 2011") //
-                .withCharges(charges).build(clientID.toString(), loanProductID.toString(), savingsId);
-        return loanApplicationJSON;
-    }
-
-    private Integer applyForLoanApplicationWithPaymentStrategy(final Integer clientID, final Integer loanProductID, List<HashMap> charges,
-            final String savingsId, String principal, final String repaymentStrategy) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal(principal) //
-                .withLoanTermFrequency("4") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("4") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withExpectedDisbursementDate("20 September 2011") //
-                .withSubmittedOnDate("20 September 2011") //
-                .withwithRepaymentStrategy(repaymentStrategy) //
-                .withCharges(charges).build(clientID.toString(), loanProductID.toString(), savingsId);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-    private Integer applyForLoanApplicationWithPaymentStrategyAndPastMonth(final Integer clientID, final Integer loanProductID,
-            List<HashMap> charges, final String savingsId, String principal, final String repaymentStrategy, final int month) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-
-        Calendar fourMonthsfromNowCalendar = Calendar.getInstance(Utils.getTimeZoneOfTenant());
-        fourMonthsfromNowCalendar.add(Calendar.MONTH, month);
-        DateFormat dateFormat = new SimpleDateFormat("dd MMMMMM yyyy");
-        dateFormat.setTimeZone(Utils.getTimeZoneOfTenant());
-        String fourMonthsfromNow = dateFormat.format(fourMonthsfromNowCalendar.getTime());
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal(principal) //
-                .withLoanTermFrequency("6") //
-                .withLoanTermFrequencyAsMonths() //
-                .withNumberOfRepayments("6") //
-                .withRepaymentEveryAfter("1") //
-                .withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withInterestTypeAsFlatBalance() //
-                .withInterestCalculationPeriodTypeSameAsRepaymentPeriod() //
-                .withExpectedDisbursementDate(fourMonthsfromNow) //
-                .withSubmittedOnDate(fourMonthsfromNow) //
-                .withwithRepaymentStrategy(repaymentStrategy) //
-                .withCharges(charges).build(clientID.toString(), loanProductID.toString(), savingsId);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-    private void verifyLoanRepaymentSchedule(final ArrayList<HashMap> loanSchedule) {
-        System.out.println("--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
-
-        assertEquals("Checking for Due Date for 1st Month", new ArrayList<>(Arrays.asList(2011, 10, 20)), loanSchedule.get(1)
-                .get("dueDate"));
-        assertEquals("Checking for Principal Due for 1st Month", new Float("2911.49"), loanSchedule.get(1).get("principalOriginalDue"));
-        assertEquals("Checking for Interest Due for 1st Month", new Float("240.00"), loanSchedule.get(1).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 2nd Month", new ArrayList<>(Arrays.asList(2011, 11, 20)), loanSchedule.get(2)
-                .get("dueDate"));
-        assertEquals("Checking for Principal Due for 2nd Month", new Float("2969.72"), loanSchedule.get(2).get("principalDue"));
-        assertEquals("Checking for Interest Due for 2nd Month", new Float("181.77"), loanSchedule.get(2).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 3rd Month", new ArrayList<>(Arrays.asList(2011, 12, 20)), loanSchedule.get(3)
-                .get("dueDate"));
-        assertEquals("Checking for Principal Due for 3rd Month", new Float("3029.11"), loanSchedule.get(3).get("principalDue"));
-        assertEquals("Checking for Interest Due for 3rd Month", new Float("122.38"), loanSchedule.get(3).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 4th Month", new ArrayList<>(Arrays.asList(2012, 1, 20)), loanSchedule.get(4).get("dueDate"));
-        assertEquals("Checking for Principal Due for 4th Month", new Float("3089.68"), loanSchedule.get(4).get("principalDue"));
-        assertEquals("Checking for Interest Due for 4th Month", new Float("61.79"), loanSchedule.get(4).get("interestOriginalDue"));
-    }
-
-    private void verifyLoanRepaymentScheduleForEqualPrincipal(final ArrayList<HashMap> loanSchedule) {
-        System.out.println("--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
-
-        assertEquals("Checking for Due Date for 1st Month", new ArrayList<>(Arrays.asList(2014, 7, 2)), loanSchedule.get(1).get("dueDate"));
-        assertEquals("Checking for Principal Due for 1st Month", new Float("416700"), loanSchedule.get(1).get("principalOriginalDue"));
-        assertEquals("Checking for Interest Due for 1st Month", new Float("200000"), loanSchedule.get(1).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 2nd Month", new ArrayList<>(Arrays.asList(2014, 8, 2)), loanSchedule.get(2).get("dueDate"));
-        assertEquals("Checking for Principal Due for 2nd Month", new Float("416700"), loanSchedule.get(2).get("principalDue"));
-        assertEquals("Checking for Interest Due for 2nd Month", new Float("191700"), loanSchedule.get(2).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 3rd Month", new ArrayList<>(Arrays.asList(2014, 9, 2)), loanSchedule.get(3).get("dueDate"));
-        assertEquals("Checking for Principal Due for 3rd Month", new Float("416700"), loanSchedule.get(3).get("principalDue"));
-        assertEquals("Checking for Interest Due for 3rd Month", new Float("183300"), loanSchedule.get(3).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 4th Month", new ArrayList<>(Arrays.asList(2014, 10, 2)), loanSchedule.get(4).get("dueDate"));
-        assertEquals("Checking for Principal Due for 4th Month", new Float("416700"), loanSchedule.get(4).get("principalDue"));
-        assertEquals("Checking for Interest Due for 4th Month", new Float("175000"), loanSchedule.get(4).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 5th Month", new ArrayList<>(Arrays.asList(2014, 11, 2)), loanSchedule.get(5).get("dueDate"));
-        assertEquals("Checking for Principal Due for 5th Month", new Float("416700"), loanSchedule.get(5).get("principalDue"));
-        assertEquals("Checking for Interest Due for 5th Month", new Float("166700"), loanSchedule.get(5).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 6th Month", new ArrayList<>(Arrays.asList(2014, 12, 2)), loanSchedule.get(6).get("dueDate"));
-        assertEquals("Checking for Principal Due for 6th Month", new Float("416700"), loanSchedule.get(6).get("principalDue"));
-        assertEquals("Checking for Interest Due for 6th Month", new Float("158300"), loanSchedule.get(6).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 10th Month", new ArrayList<>(Arrays.asList(2015, 4, 2)), loanSchedule.get(10)
-                .get("dueDate"));
-        assertEquals("Checking for Principal Due for 10th Month", new Float("416700"), loanSchedule.get(10).get("principalDue"));
-        assertEquals("Checking for Interest Due for 10th Month", new Float("125000"), loanSchedule.get(10).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 20th Month", new ArrayList<>(Arrays.asList(2016, 2, 2)), loanSchedule.get(20)
-                .get("dueDate"));
-        assertEquals("Checking for Principal Due for 20th Month", new Float("416700"), loanSchedule.get(20).get("principalDue"));
-        assertEquals("Checking for Interest Due for 20th Month", new Float("41700"), loanSchedule.get(20).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 24th Month", new ArrayList<>(Arrays.asList(2016, 6, 2)), loanSchedule.get(24)
-                .get("dueDate"));
-        assertEquals("Checking for Principal Due for 24th Month", new Float("415900"), loanSchedule.get(24).get("principalDue"));
-        assertEquals("Checking for Interest Due for 24th Month", new Float("8300"), loanSchedule.get(24).get("interestOriginalDue"));
-
-    }
-
-    private void verifyLoanRepaymentScheduleForEqualPrincipalWithGrace(final ArrayList<HashMap> loanSchedule) {
-        System.out.println("--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
-
-        assertEquals("Checking for Due Date for 1st Month", new ArrayList<>(Arrays.asList(2014, 7, 2)), loanSchedule.get(1).get("dueDate"));
-        validateNumberForEqualWithMsg("Checking for Principal Due for 1st Month", "0.0",
-                String.valueOf(loanSchedule.get(1).get("principalOriginalDue")));
-        assertEquals("Checking for Interest Due for 1st Month", new Float("200000"), loanSchedule.get(1).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 2nd Month", new ArrayList<>(Arrays.asList(2014, 8, 2)), loanSchedule.get(2).get("dueDate"));
-        validateNumberForEqualWithMsg("Checking for Principal Due for 2nd Month", "0.0",
-                String.valueOf(loanSchedule.get(2).get("principalOriginalDue")));
-        assertEquals("Checking for Interest Due for 2nd Month", new Float("200000"), loanSchedule.get(2).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 3rd Month", new ArrayList<>(Arrays.asList(2014, 9, 2)), loanSchedule.get(3).get("dueDate"));
-        validateNumberForEqualWithMsg("Checking for Principal Due for 3rd Month", "0.0",
-                String.valueOf(loanSchedule.get(3).get("principalDue")));
-        assertEquals("Checking for Interest Due for 3rd Month", new Float("200000"), loanSchedule.get(3).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 4th Month", new ArrayList<>(Arrays.asList(2014, 10, 2)), loanSchedule.get(4).get("dueDate"));
-        validateNumberForEqualWithMsg("Checking for Principal Due for 4th Month", "0",
-                String.valueOf(loanSchedule.get(4).get("principalDue")));
-        assertEquals("Checking for Interest Due for 4th Month", new Float("200000"), loanSchedule.get(4).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 5th Month", new ArrayList<>(Arrays.asList(2014, 11, 2)), loanSchedule.get(5).get("dueDate"));
-        validateNumberForEqualWithMsg("Checking for Principal Due for 5th Month", "0",
-                String.valueOf(loanSchedule.get(5).get("principalDue")));
-        assertEquals("Checking for Interest Due for 5th Month", new Float("200000"), loanSchedule.get(5).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 6th Month", new ArrayList<>(Arrays.asList(2014, 12, 2)), loanSchedule.get(6).get("dueDate"));
-        assertEquals("Checking for Principal Due for 6th Month", new Float("526300"), loanSchedule.get(6).get("principalDue"));
-        assertEquals("Checking for Interest Due for 6th Month", new Float("200000"), loanSchedule.get(6).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 7th Month", new ArrayList<>(Arrays.asList(2015, 1, 2)), loanSchedule.get(7).get("dueDate"));
-        assertEquals("Checking for Principal Due for 7th Month", new Float("526300"), loanSchedule.get(7).get("principalDue"));
-        assertEquals("Checking for Interest Due for 7th Month", new Float("189500"), loanSchedule.get(7).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 10th Month", new ArrayList<>(Arrays.asList(2015, 4, 2)), loanSchedule.get(10)
-                .get("dueDate"));
-        assertEquals("Checking for Principal Due for 10th Month", new Float("526300"), loanSchedule.get(10).get("principalDue"));
-        assertEquals("Checking for Interest Due for 10th Month", new Float("157900"), loanSchedule.get(10).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 20th Month", new ArrayList<>(Arrays.asList(2016, 2, 2)), loanSchedule.get(20)
-                .get("dueDate"));
-        assertEquals("Checking for Principal Due for 20th Month", new Float("526300"), loanSchedule.get(20).get("principalDue"));
-        assertEquals("Checking for Interest Due for 20th Month", new Float("52600"), loanSchedule.get(20).get("interestOriginalDue"));
-
-        assertEquals("Checking for Due Date for 24th Month", new ArrayList<>(Arrays.asList(2016, 6, 2)), loanSchedule.get(24)
-                .get("dueDate"));
-        assertEquals("Checking for Principal Due for 24th Month", new Float("526600"), loanSchedule.get(24).get("principalDue"));
-        assertEquals("Checking for Interest Due for 24th Month", new Float("10500"), loanSchedule.get(24).get("interestOriginalDue"));
-
-    }
-
-    private void addCharges(List<HashMap> charges, Integer chargeId, String amount, String duedate) {
-        charges.add(charges(chargeId, amount, duedate));
-    }
-
-    private HashMap charges(Integer chargeId, String amount, String duedate) {
-        HashMap charge = new HashMap(2);
-        charge.put("chargeId", chargeId.toString());
-        charge.put("amount", amount);
-        if (duedate != null) {
-            charge.put("dueDate", duedate);
-        }
-        return charge;
-    }
-
-    private HashMap getloanCharge(Integer chargeId, List<HashMap> charges) {
-        HashMap charge = null;
-        for (HashMap loancharge : charges) {
-            if (loancharge.get("chargeId").equals(chargeId)) {
-                charge = loancharge;
-            }
-        }
-        return charge;
-    }
-
-    private List<HashMap> copyChargesForUpdate(List<HashMap> charges, Integer deleteWithChargeId, String amount) {
-        List<HashMap> loanCharges = new ArrayList<>();
-        for (HashMap charge : charges) {
-            if (!charge.get("chargeId").equals(deleteWithChargeId)) {
-                loanCharges.add(copyForUpdate(charge, amount));
-            }
-        }
-        return loanCharges;
-    }
-
-    private HashMap copyForUpdate(HashMap charge, String amount) {
-        HashMap map = new HashMap();
-        map.put("id", charge.get("id"));
-        if (amount == null) {
-            map.put("amount", charge.get("amountOrPercentage"));
-        } else {
-            map.put("amount", amount);
-        }
-        if (charge.get("dueDate") != null) {
-            map.put("dueDate", charge.get("dueDate"));
-        }
-        map.put("chargeId", charge.get("chargeId"));
-        return map;
-    }
-
-    private HashMap createTrancheDetail(final String date, final String amount) {
-        HashMap detail = new HashMap();
-        detail.put("expectedDisbursementDate", date);
-        detail.put("principal", amount);
-
-        return detail;
-    }
-
-    /***
-     * Test case for checking CashBasedAccounting functionality adding charges
-     * with calculation type flat
-     */
-    @Test
-    public void loanWithFlatCahargesAndCashBasedAccountingEnabled() {
-        this.journalEntryHelper = new JournalEntryHelper(this.requestSpec, this.responseSpec);
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-
-        // Add charges with payment mode regular
-        List<HashMap> charges = new ArrayList<>();
-        Integer flatDisbursement = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanDisbursementJSON());
-        addCharges(charges, flatDisbursement, "100", null);
-        Integer flatSpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", false));
-        addCharges(charges, flatSpecifiedDueDate, "100", "29 September 2011");
-        Integer flatInstallmentFee = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "50", false));
-        addCharges(charges, flatInstallmentFee, "50", null);
-
-        final Account assetAccount = this.accountHelper.createAssetAccount();
-        final Account incomeAccount = this.accountHelper.createIncomeAccount();
-        final Account expenseAccount = this.accountHelper.createExpenseAccount();
-        final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
-
-        final Integer loanProductID = createLoanProduct(false, CASH_BASED, assetAccount, incomeAccount, expenseAccount, overpaymentAccount);
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
-        Assert.assertNotNull(loanID);
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-        verifyLoanRepaymentSchedule(loanSchedule);
-
-        List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        validateCharge(flatDisbursement, loanCharges, "100", "100.00", "0.0", "0.0");
-        validateCharge(flatSpecifiedDueDate, loanCharges, "100", "100.00", "0.0", "0.0");
-        validateCharge(flatInstallmentFee, loanCharges, "50", "200.00", "0.0", "0.0");
-
-        // check for disbursement fee
-        HashMap disbursementDetail = loanSchedule.get(0);
-        validateNumberForEqual("100.00", String.valueOf(disbursementDetail.get("feeChargesDue")));
-
-        // check for charge at specified date and installment fee
-        HashMap firstInstallment = loanSchedule.get(1);
-        validateNumberForEqual("150.00", String.valueOf(firstInstallment.get("feeChargesDue")));
-
-        // check for installment fee
-        HashMap secondInstallment = loanSchedule.get(2);
-        validateNumberForEqual("50.00", String.valueOf(secondInstallment.get("feeChargesDue")));
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoan("20 September 2011", loanID);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        System.out.println("-------------------------------DISBURSE LOAN-------------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("100.00"), JournalEntry.TransactionType.DEBIT),
-                new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
-                new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011", assetAccountInitialEntry);
-        this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 September 2011",
-                new JournalEntry(Float.valueOf("100.00"), JournalEntry.TransactionType.CREDIT));
-        loanCharges.clear();
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        validateCharge(flatDisbursement, loanCharges, "100", "0.00", "100.0", "0.0");
-
-        System.out.println("-------------Make repayment 1-----------");
-        this.loanTransactionHelper.makeRepayment("20 October 2011", Float.valueOf("3301.49"), loanID);
-        loanCharges.clear();
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        validateCharge(flatDisbursement, loanCharges, "100", "0.00", "100.0", "0.0");
-        validateCharge(flatSpecifiedDueDate, loanCharges, "100", "0.00", "100.0", "0.0");
-        validateCharge(flatInstallmentFee, loanCharges, "50", "150.00", "50.0", "0.0");
-
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 October 2011", new JournalEntry(
-                Float.valueOf("3301.49"), JournalEntry.TransactionType.DEBIT), new JournalEntry(Float.valueOf("2911.49"),
-                JournalEntry.TransactionType.CREDIT));
-        this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 October 2011",
-                new JournalEntry(Float.valueOf("150.00"), JournalEntry.TransactionType.CREDIT), new JournalEntry(Float.valueOf("240.00"),
-                        JournalEntry.TransactionType.CREDIT));
-        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                String.valueOf(flatSpecifiedDueDate), "29 October 2011", "100"));
-        loanSchedule.clear();
-        loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
-
-        secondInstallment = loanSchedule.get(2);
-        validateNumberForEqual("150.00", String.valueOf(secondInstallment.get("feeChargesDue")));
-        this.loanTransactionHelper.waiveChargesForLoan(loanID, (Integer) getloanCharge(flatInstallmentFee, loanCharges).get("id"),
-                LoanTransactionHelper.getWaiveChargeJSON(String.valueOf(2)));
-        loanCharges.clear();
-        loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
-        validateCharge(flatInstallmentFee, loanCharges, "50", "100.00", "50.0", "50.0");
-
-        System.out.println("----------Make repayment 2------------");
-        this.loanTransactionHelper.makeRepayment("20 November 2011", Float.valueOf("3251.49"), loanID);
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 November 2011",
-                new JournalEntry(Float.valueOf("3251.49"), JournalEntry.TransactionType.DEBIT), new JournalEntry(Float.valueOf("2969.72"),
-                        JournalEntry.TransactionType.CREDIT));
-        this.journalEntryHelper.checkJo

<TRUNCATED>


[25/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/multi-tenant-demo-backups/ceda/bk_ceda_trial.sql
----------------------------------------------------------------------
diff --git a/fineract-db/multi-tenant-demo-backups/ceda/bk_ceda_trial.sql b/fineract-db/multi-tenant-demo-backups/ceda/bk_ceda_trial.sql
deleted file mode 100644
index 6031508..0000000
--- a/fineract-db/multi-tenant-demo-backups/ceda/bk_ceda_trial.sql
+++ /dev/null
@@ -1,1909 +0,0 @@
--- MySQL dump 10.13  Distrib 5.1.60, for Win32 (ia32)
---
--- Host: localhost    Database: mifostenant-ceda
--- ------------------------------------------------------
--- Server version	5.1.60-community
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `acc_gl_account`
---
-
-DROP TABLE IF EXISTS `acc_gl_account`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_account` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(45) NOT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `gl_code` varchar(45) NOT NULL,
-  `disabled` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_journal_entries_allowed` tinyint(1) NOT NULL DEFAULT '1',
-  `account_usage` tinyint(1) NOT NULL DEFAULT '2',
-  `classification_enum` smallint(5) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `acc_gl_code` (`gl_code`),
-  KEY `FK_ACC_0000000001` (`parent_id`),
-  CONSTRAINT `FK_ACC_0000000001` FOREIGN KEY (`parent_id`) REFERENCES `acc_gl_account` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_account`
---
-
-LOCK TABLES `acc_gl_account` WRITE;
-/*!40000 ALTER TABLE `acc_gl_account` DISABLE KEYS */;
-INSERT INTO `acc_gl_account` VALUES (1,'Petty Cash Balances',NULL,'11100',0,1,2,1,NULL),(2,'Cash in Valut 1',NULL,'11101',0,1,1,1,NULL),(3,'Bank Balances',NULL,'11200',0,1,2,1,NULL),(4,'Centenary Opening Account',NULL,'11201',0,1,1,1,NULL),(5,'Centenary Expense Account',NULL,'11202',0,1,1,1,NULL),(6,'Centenary USD Account',NULL,'11203',0,1,1,1,NULL),(7,'Loans and Advances',NULL,'13100',0,1,2,1,NULL),(8,'Loans to Clients',NULL,'13101',0,1,1,1,NULL),(9,'Outstanding Interest',NULL,'13102',0,1,1,1,NULL),(10,'Outstanding Late Payment Interest',NULL,'13103',0,1,1,1,NULL),(11,'Outstanding Bank Fees to be collected',NULL,'13104',0,1,1,1,NULL),(12,'WriteOff Accounts',NULL,'13200',0,1,2,1,NULL),(13,'Write-offs (use for funds coming in)',NULL,'13201',0,1,1,1,NULL),(14,'Write-offs outstanding principal',NULL,'13202',0,1,1,1,NULL),(15,'Write-offs outstanding interest',NULL,'13203',0,1,1,1,NULL),(16,'Write-offs collected bank fees',NULL,'13204',0,1,1,1,NULL),(17,'Write-offs hardware/furniture',NU
 LL,'13205',0,1,1,1,NULL),(18,'Fixed Assets',NULL,'14100',0,1,2,1,NULL),(19,'Office Equipment',NULL,'14101',0,1,1,1,NULL),(20,'Suspense Items (unidentified deposits)',NULL,'15000',0,1,2,1,NULL),(21,'Assets',NULL,'10000',0,1,2,1,NULL),(22,'Liabilities',NULL,'20000',0,1,2,2,NULL),(23,'Shares Account',NULL,'26100',0,1,2,2,NULL),(24,'Shares Captial',NULL,'26101',0,1,1,2,NULL),(25,'Donated Equity',NULL,'26300',0,1,2,2,NULL),(26,'Donated Equity Ameropa Foundation',NULL,'26301',0,1,1,2,NULL),(27,'Donated Equity e.h',NULL,'26302',0,1,1,2,NULL),(28,'Overpaid Amounts',NULL,'27000',0,1,2,2,NULL),(29,'Loss Provision',NULL,'28000',0,1,2,2,NULL),(30,'Provision Outstanding Principal',NULL,'28001',0,1,1,2,NULL),(31,'Provision Oustanding Interest',NULL,'28002',0,1,1,2,NULL),(32,'Income',NULL,'30000',0,1,2,4,NULL),(33,'Interest Income from Loans',NULL,'31100',0,1,2,4,NULL),(34,'Interest on Loans',NULL,'31101',0,1,1,4,NULL),(35,'Late Payment Interest',NULL,'31102',0,1,1,4,NULL),(36,'Income from Micro c
 redit & Lending Activities',NULL,'31300',0,1,2,4,NULL),(37,'Collected Bank Fees Receivable',NULL,'6201',0,1,1,4,NULL),(38,'Deposits from Loans Write Off',NULL,'31400',0,1,2,4,NULL),(39,'Expenditure',NULL,'40000',0,1,2,5,NULL),(40,'Office Expenditure Account',NULL,'42100',0,1,2,5,NULL),(41,'Water Charges',NULL,'42102',0,1,1,5,NULL),(42,'Electricity Charges',NULL,'42103',0,1,1,5,NULL),(43,'Printing and Stationary',NULL,'42105',0,1,1,5,NULL),(44,'Office Rent',NULL,'42107',0,1,1,5,NULL),(45,'Marketing Expense',NULL,'42109',0,1,1,5,NULL),(46,'Office utilities',NULL,'42112',0,1,1,5,'(supplies, toiletries, kitchen)'),(47,'Furniture',NULL,'42113',0,1,1,5,NULL),(48,'CEDA Meeting Expense',NULL,'42114',0,1,1,5,NULL),(49,'Employee Personal Expsense Account',NULL,'42200',0,1,2,5,NULL),(50,'Salary Alice',NULL,'42201',0,1,1,5,NULL),(51,'Salary Irene',NULL,'42202',0,1,1,5,NULL),(52,'Salary Richard',NULL,'42203',0,1,1,5,NULL),(53,'Salary Loan Officer TBA',NULL,'42204',0,1,1,5,NULL),(54,'Medical Insu
 rance Alice & Family',NULL,'42205',0,1,1,5,NULL),(55,'Medical Insurance Irene',NULL,'42206',0,1,1,5,NULL),(56,'Medical Insurance Richard',NULL,'42207',0,1,1,5,NULL),(57,'Medical Insurance Loan Officer TBA',NULL,'42208',0,1,1,5,NULL),(58,'PAYE all employees',NULL,'42209',0,1,1,5,NULL),(59,'NSSF all employees',NULL,'42210',0,1,1,5,NULL),(60,'Lunch Allowances all employees',NULL,'42211',0,1,1,5,NULL),(61,'IT software and maintenance',NULL,'42300',0,1,2,5,NULL),(62,'Mifos maintenance contract 12 months',NULL,'42301',0,1,1,5,NULL),(63,'VPS Contract 12 months',NULL,'42302',0,1,1,5,NULL),(64,'Bulk SMS Service',NULL,'42303',0,1,1,5,NULL),(65,'Support Accounting Software',NULL,'42304',0,1,1,5,NULL),(66,'Mifos Instance Setup',NULL,'42305',0,1,1,5,NULL),(67,'Misc support expense',NULL,'42306',0,1,1,5,NULL),(68,'Warid Mobile Line',NULL,'42307',0,1,1,5,NULL),(69,'Landline',NULL,'42308',0,1,1,5,NULL),(70,'Modem Alice',NULL,'42309',0,1,1,5,NULL),(71,'Modem Irene',NULL,'42310',0,1,1,5,NULL),(72,'Mo
 dem Richard',NULL,'42311',0,1,1,5,NULL),(73,'Repairs',NULL,'42312',0,1,1,5,NULL),(74,'Airtime Expenses',NULL,'42400',0,1,2,5,NULL),(75,'Airtime Alice',NULL,'42401',0,1,1,5,NULL),(76,'Airtime Richard',NULL,'42402',0,1,1,5,NULL),(77,'Airtime Loan Office TBA',NULL,'42403',0,1,1,5,NULL),(78,'Special Airtime Alice',NULL,'42404',0,1,1,5,NULL),(79,'Transportation',NULL,'42500',0,1,2,5,NULL),(80,'Flat monthly transportation cost',NULL,'42501',0,1,1,5,NULL),(81,'Faciliation cost for Richard',NULL,'42502',0,1,1,5,NULL),(82,'Faciliation cost for Loan Officer TBA',NULL,'42503',0,1,1,5,NULL),(83,'Consultancy Expenses',NULL,'42600',0,1,2,5,NULL),(84,'Audit Fees',NULL,'42601',0,1,1,5,NULL),(85,'Legal Fees',NULL,'42602',0,1,1,5,NULL),(86,'Miscellaneous Expenses Account',NULL,'42700',0,1,2,5,NULL),(87,'MFI License',NULL,'42703',0,1,1,5,NULL),(88,'Sundy Expenses',NULL,'42704',0,1,1,5,NULL),(89,'Bank Fees',NULL,'42800',0,1,2,5,NULL),(90,'Bank Charges Operating Account',NULL,'42801',0,1,1,5,NULL),(91,'
 Bank Charges Expense Account',NULL,'42802',0,1,1,5,NULL),(92,'E.H Account',NULL,'42900',0,1,2,5,NULL),(93,'Airtime',NULL,'42901',0,1,1,5,NULL),(94,'Modem',NULL,'42902',0,1,1,5,NULL),(95,'Meals',NULL,'42903',0,1,1,5,NULL),(96,'Transportation',NULL,'42904',0,1,1,5,NULL),(97,'Miscellaneous',NULL,'42905',0,1,1,5,NULL);
-/*!40000 ALTER TABLE `acc_gl_account` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_closure`
---
-
-DROP TABLE IF EXISTS `acc_gl_closure`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_closure` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `closing_date` date NOT NULL,
-  `is_deleted` int(20) NOT NULL DEFAULT '0',
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `comments` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `office_id_closing_date` (`office_id`,`closing_date`),
-  KEY `FK_acc_gl_closure_m_office` (`office_id`),
-  KEY `FK_acc_gl_closure_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_closure_m_appuser_2` (`lastmodifiedby_id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_closure_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_closure`
---
-
-LOCK TABLES `acc_gl_closure` WRITE;
-/*!40000 ALTER TABLE `acc_gl_closure` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_closure` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_gl_journal_entry`
---
-
-DROP TABLE IF EXISTS `acc_gl_journal_entry`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_gl_journal_entry` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_id` bigint(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `reversal_id` bigint(20) DEFAULT NULL,
-  `transaction_id` varchar(50) NOT NULL,
-  `reversed` tinyint(1) NOT NULL DEFAULT '0',
-  `manual_entry` tinyint(1) NOT NULL DEFAULT '0',
-  `entry_date` date NOT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `entity_type_enum` smallint(5) DEFAULT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `createdby_id` bigint(20) NOT NULL,
-  `lastmodifiedby_id` bigint(20) NOT NULL,
-  `created_date` datetime NOT NULL,
-  `lastmodified_date` datetime NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_acc_gl_journal_entry_m_office` (`office_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser` (`createdby_id`),
-  KEY `FK_acc_gl_journal_entry_m_appuser_2` (`lastmodifiedby_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_journal_entry` (`reversal_id`),
-  KEY `FK_acc_gl_journal_entry_acc_gl_account` (`account_id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_account` FOREIGN KEY (`account_id`) REFERENCES `acc_gl_account` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_acc_gl_journal_entry` FOREIGN KEY (`reversal_id`) REFERENCES `acc_gl_journal_entry` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_appuser_2` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_acc_gl_journal_entry_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_gl_journal_entry`
---
-
-LOCK TABLES `acc_gl_journal_entry` WRITE;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` DISABLE KEYS */;
-/*!40000 ALTER TABLE `acc_gl_journal_entry` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `acc_product_mapping`
---
-
-DROP TABLE IF EXISTS `acc_product_mapping`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `acc_product_mapping` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `gl_account_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `product_type` smallint(5) DEFAULT NULL,
-  `financial_account_type` smallint(5) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `acc_product_mapping`
---
-
-LOCK TABLES `acc_product_mapping` WRITE;
-/*!40000 ALTER TABLE `acc_product_mapping` DISABLE KEYS */;
-INSERT INTO `acc_product_mapping` VALUES (1,4,1,1,1),(2,8,1,1,2),(3,34,1,1,3),(4,37,1,1,4),(5,35,1,1,5),(6,97,1,1,6);
-/*!40000 ALTER TABLE `acc_product_mapping` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `c_configuration`
---
-
-DROP TABLE IF EXISTS `c_configuration`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `c_configuration` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(50) DEFAULT NULL,
-  `enabled` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `c_configuration`
---
-
-LOCK TABLES `c_configuration` WRITE;
-/*!40000 ALTER TABLE `c_configuration` DISABLE KEYS */;
-INSERT INTO `c_configuration` VALUES (1,'maker-checker',0);
-/*!40000 ALTER TABLE `c_configuration` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `client additional data`
---
-
-DROP TABLE IF EXISTS `client additional data`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `client additional data` (
-  `client_id` bigint(20) NOT NULL,
-  `Gender_cd` int(11) NOT NULL,
-  `Date of Birth` date NOT NULL,
-  `Home address` text NOT NULL,
-  `Telephone number` varchar(20) NOT NULL,
-  `Telephone number (2nd)` varchar(20) NOT NULL,
-  `Email address` varchar(50) NOT NULL,
-  `EducationLevel_cd` int(11) NOT NULL,
-  `MaritalStatus_cd` int(11) NOT NULL,
-  `Number of children` int(11) NOT NULL,
-  `Citizenship` varchar(50) NOT NULL,
-  `PovertyStatus_cd` int(11) NOT NULL,
-  `YesNo_cd_Employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of employment` int(11) DEFAULT NULL,
-  `Employer name` varchar(50) DEFAULT NULL,
-  `Number of years` int(11) DEFAULT NULL,
-  `Monthly salary` decimal(19,6) DEFAULT NULL,
-  `YesNo_cd_Self employed` int(11) NOT NULL,
-  `FieldOfEmployment_cd_Field of self-employment` int(11) DEFAULT NULL,
-  `Business address` text,
-  `Number of employees` int(11) DEFAULT NULL,
-  `Monthly salaries paid` decimal(19,6) DEFAULT NULL,
-  `Monthly net income of business activity` decimal(19,6) DEFAULT NULL,
-  `Monthly rent` decimal(19,6) DEFAULT NULL,
-  `Other income generating activities` varchar(100) DEFAULT NULL,
-  `YesNo_cd_Bookkeeping` int(11) DEFAULT NULL,
-  `YesNo_cd_Loans with other institutions` int(11) NOT NULL,
-  `From whom` varchar(100) DEFAULT NULL,
-  `Amount` decimal(19,6) DEFAULT NULL,
-  `Interest rate pa` decimal(19,6) DEFAULT NULL,
-  `Number of people depending on overal income` int(11) NOT NULL,
-  `YesNo_cd_Bank account` int(11) NOT NULL,
-  `YesNo_cd_Business plan provided` int(11) NOT NULL,
-  `YesNo_cd_Access to internet` int(11) DEFAULT NULL,
-  `Introduced by` varchar(100) DEFAULT NULL,
-  `Known to introducer since` varchar(100) NOT NULL,
-  `Last visited by` varchar(100) DEFAULT NULL,
-  `Last visited on` date NOT NULL,
-  PRIMARY KEY (`client_id`),
-  CONSTRAINT `FK_client_additional_data` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `client additional data`
---
-
-LOCK TABLES `client additional data` WRITE;
-/*!40000 ALTER TABLE `client additional data` DISABLE KEYS */;
-/*!40000 ALTER TABLE `client additional data` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `impact measurement`
---
-
-DROP TABLE IF EXISTS `impact measurement`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `impact measurement` (
-  `loan_id` bigint(20) NOT NULL,
-  `YesNo_cd_RepaidOnSchedule` int(11) NOT NULL,
-  `ReasonNotRepaidOnSchedule` text,
-  `How was Loan Amount Invested` text NOT NULL,
-  `Additional Income Generated` decimal(19,6) NOT NULL,
-  `Additional Income Used For` text NOT NULL,
-  `YesNo_cd_NewJobsCreated` int(11) NOT NULL,
-  `Number of Jobs Created` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_impact measurement` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `impact measurement`
---
-
-LOCK TABLES `impact measurement` WRITE;
-/*!40000 ALTER TABLE `impact measurement` DISABLE KEYS */;
-/*!40000 ALTER TABLE `impact measurement` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `loan additional data`
---
-
-DROP TABLE IF EXISTS `loan additional data`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `loan additional data` (
-  `loan_id` bigint(20) NOT NULL,
-  `PurposeOfLoan_cd` int(11) NOT NULL,
-  `CollateralType_cd` int(11) NOT NULL,
-  `Collateral notes` text NOT NULL,
-  `YesNo_cd_Guarantor` int(11) NOT NULL,
-  `Guarantor name` varchar(100) DEFAULT NULL,
-  `Guarantor relation` varchar(100) DEFAULT NULL,
-  `Guarantor address` varchar(100) DEFAULT NULL,
-  `Guarantor telephone number` varchar(20) DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `FK_loan_additional_data` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `loan additional data`
---
-
-LOCK TABLES `loan additional data` WRITE;
-/*!40000 ALTER TABLE `loan additional data` DISABLE KEYS */;
-/*!40000 ALTER TABLE `loan additional data` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser`
---
-
-DROP TABLE IF EXISTS `m_appuser`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `office_id` bigint(20) DEFAULT NULL,
-  `username` varchar(100) NOT NULL,
-  `firstname` varchar(100) NOT NULL,
-  `lastname` varchar(100) NOT NULL,
-  `password` varchar(255) NOT NULL,
-  `email` varchar(100) NOT NULL,
-  `firsttime_login_remaining` bit(1) NOT NULL,
-  `nonexpired` bit(1) NOT NULL,
-  `nonlocked` bit(1) NOT NULL,
-  `nonexpired_credentials` bit(1) NOT NULL,
-  `enabled` bit(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `username_org` (`username`),
-  KEY `FKB3D587CE0DD567A` (`office_id`),
-  CONSTRAINT `FKB3D587CE0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser`
---
-
-LOCK TABLES `m_appuser` WRITE;
-/*!40000 ALTER TABLE `m_appuser` DISABLE KEYS */;
-INSERT INTO `m_appuser` VALUES (1,0,1,'admin','App','Administrator','5787039480429368bf94732aacc771cd0a3ea02bcf504ffe1185ab94213bc63a','demomfi@mifos.org','\0','','','',''),(2,0,1,'keithwoodlock','Keith','Woodlock','4f607e9b6cffbe7d3db92d4bfa3391c7aa751727b4ea29d08fddf9dd72e6e7e3','keithwoodlock@gmail.com','\0','','','','');
-/*!40000 ALTER TABLE `m_appuser` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_appuser_role`
---
-
-DROP TABLE IF EXISTS `m_appuser_role`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_appuser_role` (
-  `appuser_id` bigint(20) NOT NULL,
-  `role_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`appuser_id`,`role_id`),
-  KEY `FK7662CE59B4100309` (`appuser_id`),
-  KEY `FK7662CE5915CEC7AB` (`role_id`),
-  CONSTRAINT `FK7662CE5915CEC7AB` FOREIGN KEY (`role_id`) REFERENCES `m_role` (`id`),
-  CONSTRAINT `FK7662CE59B4100309` FOREIGN KEY (`appuser_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_appuser_role`
---
-
-LOCK TABLES `m_appuser_role` WRITE;
-/*!40000 ALTER TABLE `m_appuser_role` DISABLE KEYS */;
-INSERT INTO `m_appuser_role` VALUES (1,1),(2,1);
-/*!40000 ALTER TABLE `m_appuser_role` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_calendar`
---
-
-DROP TABLE IF EXISTS `m_calendar`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_calendar` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `title` varchar(50) NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  `location` varchar(50) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `duration` smallint(6) DEFAULT NULL,
-  `calendar_type_enum` smallint(5) NOT NULL,
-  `repeating` tinyint(1) NOT NULL DEFAULT '0',
-  `recurrence` varchar(100) DEFAULT NULL,
-  `remind_by_enum` smallint(5) DEFAULT NULL,
-  `first_reminder` smallint(11) DEFAULT NULL,
-  `second_reminder` smallint(11) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_calendar`
---
-
-LOCK TABLES `m_calendar` WRITE;
-/*!40000 ALTER TABLE `m_calendar` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_calendar` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_calendar_instance`
---
-
-DROP TABLE IF EXISTS `m_calendar_instance`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_calendar_instance` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `calendar_id` bigint(20) NOT NULL,
-  `entity_id` bigint(20) NOT NULL,
-  `entity_type_enum` smallint(5) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_calendar_m_calendar_instance` (`calendar_id`),
-  CONSTRAINT `FK_m_calendar_m_calendar_instance` FOREIGN KEY (`calendar_id`) REFERENCES `m_calendar` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_calendar_instance`
---
-
-LOCK TABLES `m_calendar_instance` WRITE;
-/*!40000 ALTER TABLE `m_calendar_instance` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_calendar_instance` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_charge`
---
-
-DROP TABLE IF EXISTS `m_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(100) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `charge_applies_to_enum` smallint(5) NOT NULL,
-  `charge_time_enum` smallint(5) NOT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `is_active` tinyint(1) NOT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_charge`
---
-
-LOCK TABLES `m_charge` WRITE;
-/*!40000 ALTER TABLE `m_charge` DISABLE KEYS */;
-INSERT INTO `m_charge` VALUES (1,'Bank Fee (per installment)','UGX',1,2,1,'1500.000000',0,1,0);
-/*!40000 ALTER TABLE `m_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client`
---
-
-DROP TABLE IF EXISTS `m_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `office_id` bigint(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `middlename` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `fullname` varchar(100) DEFAULT NULL,
-  `display_name` varchar(100) NOT NULL,
-  `image_key` varchar(500) DEFAULT NULL,
-  `joined_date` date DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `external_id` (`external_id`),
-  KEY `FKCE00CAB3E0DD567A` (`office_id`),
-  CONSTRAINT `FKCE00CAB3E0DD567A` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client`
---
-
-LOCK TABLES `m_client` WRITE;
-/*!40000 ALTER TABLE `m_client` DISABLE KEYS */;
-INSERT INTO `m_client` VALUES (1,'000000001',2,NULL,'Test',NULL,'One',NULL,'Test One',NULL,'2011-02-01',0);
-/*!40000 ALTER TABLE `m_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_client_identifier`
---
-
-DROP TABLE IF EXISTS `m_client_identifier`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_client_identifier` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) NOT NULL,
-  `document_type_id` int(11) NOT NULL,
-  `document_key` varchar(50) NOT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `unique_identifier_key` (`document_type_id`,`document_key`),
-  UNIQUE KEY `unique_client_identifier` (`client_id`,`document_type_id`),
-  KEY `FK_m_client_document_m_client` (`client_id`),
-  KEY `FK_m_client_document_m_code_value` (`document_type_id`),
-  CONSTRAINT `FK_m_client_document_m_client` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_client_document_m_code_value` FOREIGN KEY (`document_type_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_client_identifier`
---
-
-LOCK TABLES `m_client_identifier` WRITE;
-/*!40000 ALTER TABLE `m_client_identifier` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_client_identifier` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code`
---
-
-DROP TABLE IF EXISTS `m_code`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_name` varchar(100) DEFAULT NULL,
-  `is_system_defined` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_name` (`code_name`)
-) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code`
---
-
-LOCK TABLES `m_code` WRITE;
-/*!40000 ALTER TABLE `m_code` DISABLE KEYS */;
-INSERT INTO `m_code` VALUES (1,'Customer Identifier',1),(2,'LoanCollateral',1),(3,'LoanPurpose',1),(4,'Gender',1),(5,'YesNo',1),(6,'GuarantorRelationship',1),(7,'FieldOfEmployment',0),(8,'EducationLevel',0),(9,'MaritalStatus',0),(10,'PovertyStatus',0);
-/*!40000 ALTER TABLE `m_code` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_code_value`
---
-
-DROP TABLE IF EXISTS `m_code_value`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_code_value` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `code_id` int(11) NOT NULL,
-  `code_value` varchar(100) DEFAULT NULL,
-  `order_position` int(11) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code_value` (`code_id`,`code_value`),
-  KEY `FKCFCEA42640BE071Z` (`code_id`),
-  CONSTRAINT `FKCFCEA42640BE071Z` FOREIGN KEY (`code_id`) REFERENCES `m_code` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_code_value`
---
-
-LOCK TABLES `m_code_value` WRITE;
-/*!40000 ALTER TABLE `m_code_value` DISABLE KEYS */;
-INSERT INTO `m_code_value` VALUES (1,1,'Passport',1),(2,1,'Id',2),(3,1,'Drivers License',3),(4,1,'Any Other Id Type',4),(5,6,'Spouse',0),(6,6,'Parent',0),(7,6,'Sibling',0),(8,6,'Business Associate',0),(9,6,'Other',0),(10,7,'option.Banker',1),(11,7,'option.SoftwareDeveloper',10),(12,8,'option.University',1),(13,8,'option.Secondary',12),(14,8,'option.Primary',13),(15,9,'option.Married',1),(16,9,'option.Single',15),(17,9,'option.Divorced',16),(18,9,'option.Widow',17),(19,10,'option.PovertyStatus.Band1',1),(20,10,'option.PovertyStatus.Band2',19),(21,10,'option.PovertyStatus.Band3',20),(22,2,'option.House',1),(23,2,'option.Television',22),(24,2,'option.Gold',23),(25,3,'option.Agriculture',1),(26,3,'option.Manufacturing',25),(27,3,'option.HousingImprovement',26),(28,4,'option.Male',1),(29,4,'option.Female',28),(30,5,'option.Yes',1),(31,5,'option.No',30);
-/*!40000 ALTER TABLE `m_code_value` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_currency`
---
-
-DROP TABLE IF EXISTS `m_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=164 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_currency`
---
-
-LOCK TABLES `m_currency` WRITE;
-/*!40000 ALTER TABLE `m_currency` DISABLE KEYS */;
-INSERT INTO `m_currency` VALUES (1,'AED',2,NULL,'UAE Dirham','currency.AED'),(2,'AFN',2,NULL,'Afghanistan Afghani','currency.AFN'),(3,'ALL',2,NULL,'Albanian Lek','currency.ALL'),(4,'AMD',2,NULL,'Armenian Dram','currency.AMD'),(5,'ANG',2,NULL,'Netherlands Antillian Guilder','currency.ANG'),(6,'AOA',2,NULL,'Angolan Kwanza','currency.AOA'),(7,'ARS',2,'$','Argentine Peso','currency.ARS'),(8,'AUD',2,'A$','Australian Dollar','currency.AUD'),(9,'AWG',2,NULL,'Aruban Guilder','currency.AWG'),(10,'AZM',2,NULL,'Azerbaijanian Manat','currency.AZM'),(11,'BAM',2,NULL,'Bosnia and Herzegovina Convertible Marks','currency.BAM'),(12,'BBD',2,NULL,'Barbados Dollar','currency.BBD'),(13,'BDT',2,NULL,'Bangladesh Taka','currency.BDT'),(14,'BGN',2,NULL,'Bulgarian Lev','currency.BGN'),(15,'BHD',3,NULL,'Bahraini Dinar','currency.BHD'),(16,'BIF',0,NULL,'Burundi Franc','currency.BIF'),(17,'BMD',2,NULL,'Bermudian Dollar','currency.BMD'),(18,'BND',2,'B$','Brunei Dollar','currency.BND'),(19,'BOB',2,'Bs.','Bolivian
  Boliviano','currency.BOB'),(20,'BRL',2,'R$','Brazilian Real','currency.BRL'),(21,'BSD',2,NULL,'Bahamian Dollar','currency.BSD'),(22,'BTN',2,NULL,'Bhutan Ngultrum','currency.BTN'),(23,'BWP',2,NULL,'Botswana Pula','currency.BWP'),(24,'BYR',0,NULL,'Belarussian Ruble','currency.BYR'),(25,'BZD',2,'BZ$','Belize Dollar','currency.BZD'),(26,'CAD',2,NULL,'Canadian Dollar','currency.CAD'),(27,'CDF',2,NULL,'Franc Congolais','currency.CDF'),(28,'CHF',2,NULL,'Swiss Franc','currency.CHF'),(29,'CLP',0,'$','Chilean Peso','currency.CLP'),(30,'CNY',2,NULL,'Chinese Yuan Renminbi','currency.CNY'),(31,'COP',2,'$','Colombian Peso','currency.COP'),(32,'CRC',2,'₡','Costa Rican Colon','currency.CRC'),(33,'CSD',2,NULL,'Serbian Dinar','currency.CSD'),(34,'CUP',2,'$MN','Cuban Peso','currency.CUP'),(35,'CVE',2,NULL,'Cape Verde Escudo','currency.CVE'),(36,'CYP',2,NULL,'Cyprus Pound','currency.CYP'),(37,'CZK',2,NULL,'Czech Koruna','currency.CZK'),(38,'DJF',0,NULL,'Djibouti Franc','currency.DJF'),(39,'DKK',2,NU
 LL,'Danish Krone','currency.DKK'),(40,'DOP',2,'RD$','Dominican Peso','currency.DOP'),(41,'DZD',2,NULL,'Algerian Dinar','currency.DZD'),(42,'EEK',2,NULL,'Estonian Kroon','currency.EEK'),(43,'EGP',2,NULL,'Egyptian Pound','currency.EGP'),(44,'ERN',2,NULL,'Eritrea Nafka','currency.ERN'),(45,'ETB',2,NULL,'Ethiopian Birr','currency.ETB'),(46,'EUR',2,'€','Euro','currency.EUR'),(47,'FJD',2,NULL,'Fiji Dollar','currency.FJD'),(48,'FKP',2,NULL,'Falkland Islands Pound','currency.FKP'),(49,'GBP',2,NULL,'Pound Sterling','currency.GBP'),(50,'GEL',2,NULL,'Georgian Lari','currency.GEL'),(51,'GHC',2,'GHc','Ghana Cedi','currency.GHC'),(52,'GIP',2,NULL,'Gibraltar Pound','currency.GIP'),(53,'GMD',2,NULL,'Gambian Dalasi','currency.GMD'),(54,'GNF',0,NULL,'Guinea Franc','currency.GNF'),(55,'GTQ',2,'Q','Guatemala Quetzal','currency.GTQ'),(56,'GYD',2,NULL,'Guyana Dollar','currency.GYD'),(57,'HKD',2,NULL,'Hong Kong Dollar','currency.HKD'),(58,'HNL',2,'L','Honduras Lempira','currency.HNL'),(59,'HRK',2,NULL,'
 Croatian Kuna','currency.HRK'),(60,'HTG',2,'G','Haiti Gourde','currency.HTG'),(61,'HUF',2,NULL,'Hungarian Forint','currency.HUF'),(62,'IDR',2,NULL,'Indonesian Rupiah','currency.IDR'),(63,'ILS',2,NULL,'New Israeli Shekel','currency.ILS'),(64,'INR',2,'₹','Indian Rupee','currency.INR'),(65,'IQD',3,NULL,'Iraqi Dinar','currency.IQD'),(66,'IRR',2,NULL,'Iranian Rial','currency.IRR'),(67,'ISK',0,NULL,'Iceland Krona','currency.ISK'),(68,'JMD',2,NULL,'Jamaican Dollar','currency.JMD'),(69,'JOD',3,NULL,'Jordanian Dinar','currency.JOD'),(70,'JPY',0,NULL,'Japanese Yen','currency.JPY'),(71,'KES',2,'KSh','Kenyan Shilling','currency.KES'),(72,'KGS',2,NULL,'Kyrgyzstan Som','currency.KGS'),(73,'KHR',2,NULL,'Cambodia Riel','currency.KHR'),(74,'KMF',0,NULL,'Comoro Franc','currency.KMF'),(75,'KPW',2,NULL,'North Korean Won','currency.KPW'),(76,'KRW',0,NULL,'Korean Won','currency.KRW'),(77,'KWD',3,NULL,'Kuwaiti Dinar','currency.KWD'),(78,'KYD',2,NULL,'Cayman Islands Dollar','currency.KYD'),(79,'KZT',2,NU
 LL,'Kazakhstan Tenge','currency.KZT'),(80,'LAK',2,NULL,'Lao Kip','currency.LAK'),(81,'LBP',2,'L£','Lebanese Pound','currency.LBP'),(82,'LKR',2,NULL,'Sri Lanka Rupee','currency.LKR'),(83,'LRD',2,NULL,'Liberian Dollar','currency.LRD'),(84,'LSL',2,NULL,'Lesotho Loti','currency.LSL'),(85,'LTL',2,NULL,'Lithuanian Litas','currency.LTL'),(86,'LVL',2,NULL,'Latvian Lats','currency.LVL'),(87,'LYD',3,NULL,'Libyan Dinar','currency.LYD'),(88,'MAD',2,NULL,'Moroccan Dirham','currency.MAD'),(89,'MDL',2,NULL,'Moldovan Leu','currency.MDL'),(90,'MGA',2,NULL,'Malagasy Ariary','currency.MGA'),(91,'MKD',2,NULL,'Macedonian Denar','currency.MKD'),(92,'MMK',2,'K','Myanmar Kyat','currency.MMK'),(93,'MNT',2,NULL,'Mongolian Tugrik','currency.MNT'),(94,'MOP',2,NULL,'Macau Pataca','currency.MOP'),(95,'MRO',2,NULL,'Mauritania Ouguiya','currency.MRO'),(96,'MTL',2,NULL,'Maltese Lira','currency.MTL'),(97,'MUR',2,NULL,'Mauritius Rupee','currency.MUR'),(98,'MVR',2,NULL,'Maldives Rufiyaa','currency.MVR'),(99,'MWK',2,N
 ULL,'Malawi Kwacha','currency.MWK'),(100,'MXN',2,'$','Mexican Peso','currency.MXN'),(101,'MYR',2,NULL,'Malaysian Ringgit','currency.MYR'),(102,'MZM',2,NULL,'Mozambique Metical','currency.MZM'),(103,'NAD',2,NULL,'Namibia Dollar','currency.NAD'),(104,'NGN',2,NULL,'Nigerian Naira','currency.NGN'),(105,'NIO',2,'C$','Nicaragua Cordoba Oro','currency.NIO'),(106,'NOK',2,NULL,'Norwegian Krone','currency.NOK'),(107,'NPR',2,NULL,'Nepalese Rupee','currency.NPR'),(108,'NZD',2,NULL,'New Zealand Dollar','currency.NZD'),(109,'OMR',3,NULL,'Rial Omani','currency.OMR'),(110,'PAB',2,'B/.','Panama Balboa','currency.PAB'),(111,'PEN',2,'S/.','Peruvian Nuevo Sol','currency.PEN'),(112,'PGK',2,NULL,'Papua New Guinea Kina','currency.PGK'),(113,'PHP',2,NULL,'Philippine Peso','currency.PHP'),(114,'PKR',2,NULL,'Pakistan Rupee','currency.PKR'),(115,'PLN',2,NULL,'Polish Zloty','currency.PLN'),(116,'PYG',0,'₲','Paraguayan Guarani','currency.PYG'),(117,'QAR',2,NULL,'Qatari Rial','currency.QAR'),(118,'RON',2,NULL,
 'Romanian Leu','currency.RON'),(119,'RUB',2,NULL,'Russian Ruble','currency.RUB'),(120,'RWF',0,NULL,'Rwanda Franc','currency.RWF'),(121,'SAR',2,NULL,'Saudi Riyal','currency.SAR'),(122,'SBD',2,NULL,'Solomon Islands Dollar','currency.SBD'),(123,'SCR',2,NULL,'Seychelles Rupee','currency.SCR'),(124,'SDD',2,NULL,'Sudanese Dinar','currency.SDD'),(125,'SEK',2,NULL,'Swedish Krona','currency.SEK'),(126,'SGD',2,NULL,'Singapore Dollar','currency.SGD'),(127,'SHP',2,NULL,'St Helena Pound','currency.SHP'),(128,'SIT',2,NULL,'Slovenian Tolar','currency.SIT'),(129,'SKK',2,NULL,'Slovak Koruna','currency.SKK'),(130,'SLL',2,NULL,'Sierra Leone Leone','currency.SLL'),(131,'SOS',2,NULL,'Somali Shilling','currency.SOS'),(132,'SRD',2,NULL,'Surinam Dollar','currency.SRD'),(133,'STD',2,NULL,'Sao Tome and Principe Dobra','currency.STD'),(134,'SVC',2,NULL,'El Salvador Colon','currency.SVC'),(135,'SYP',2,NULL,'Syrian Pound','currency.SYP'),(136,'SZL',2,NULL,'Swaziland Lilangeni','currency.SZL'),(137,'THB',2,NULL,
 'Thai Baht','currency.THB'),(138,'TJS',2,NULL,'Tajik Somoni','currency.TJS'),(139,'TMM',2,NULL,'Turkmenistan Manat','currency.TMM'),(140,'TND',3,'DT','Tunisian Dinar','currency.TND'),(141,'TOP',2,NULL,'Tonga Pa\'anga','currency.TOP'),(142,'TRY',2,NULL,'Turkish Lira','currency.TRY'),(143,'TTD',2,NULL,'Trinidad and Tobago Dollar','currency.TTD'),(144,'TWD',2,NULL,'New Taiwan Dollar','currency.TWD'),(145,'TZS',2,NULL,'Tanzanian Shilling','currency.TZS'),(146,'UAH',2,NULL,'Ukraine Hryvnia','currency.UAH'),(147,'UGX',2,'USh','Uganda Shilling','currency.UGX'),(148,'USD',2,'$','US Dollar','currency.USD'),(149,'UYU',2,'$U','Peso Uruguayo','currency.UYU'),(150,'UZS',2,NULL,'Uzbekistan Sum','currency.UZS'),(151,'VEB',2,'Bs.F.','Venezuelan Bolivar','currency.VEB'),(152,'VND',2,NULL,'Vietnamese Dong','currency.VND'),(153,'VUV',0,NULL,'Vanuatu Vatu','currency.VUV'),(154,'WST',2,NULL,'Samoa Tala','currency.WST'),(155,'XAF',0,NULL,'CFA Franc BEAC','currency.XAF'),(156,'XCD',2,NULL,'East Caribbean 
 Dollar','currency.XCD'),(157,'XDR',5,NULL,'SDR (Special Drawing Rights)','currency.XDR'),(158,'XOF',0,'CFA','CFA Franc BCEAO','currency.XOF'),(159,'XPF',0,NULL,'CFP Franc','currency.XPF'),(160,'YER',2,NULL,'Yemeni Rial','currency.YER'),(161,'ZAR',2,'R','South African Rand','currency.ZAR'),(162,'ZMK',2,NULL,'Zambian Kwacha','currency.ZMK'),(163,'ZWD',2,NULL,'Zimbabwe Dollar','currency.ZWD');
-/*!40000 ALTER TABLE `m_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_document`
---
-
-DROP TABLE IF EXISTS `m_document`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_document` (
-  `id` int(20) NOT NULL AUTO_INCREMENT,
-  `parent_entity_type` varchar(50) NOT NULL,
-  `parent_entity_id` int(20) NOT NULL DEFAULT '0',
-  `name` varchar(250) NOT NULL,
-  `file_name` varchar(250) NOT NULL,
-  `size` int(20) DEFAULT '0',
-  `type` varchar(50) DEFAULT NULL,
-  `description` varchar(1000) DEFAULT NULL,
-  `location` varchar(500) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_document`
---
-
-LOCK TABLES `m_document` WRITE;
-/*!40000 ALTER TABLE `m_document` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_document` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_fund`
---
-
-DROP TABLE IF EXISTS `m_fund`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_fund` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `name` varchar(255) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `fund_name_org` (`name`),
-  UNIQUE KEY `fund_externalid_org` (`external_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_fund`
---
-
-LOCK TABLES `m_fund` WRITE;
-/*!40000 ALTER TABLE `m_fund` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_fund` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group`
---
-
-DROP TABLE IF EXISTS `m_group`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `office_id` bigint(20) NOT NULL,
-  `staff_id` bigint(20) DEFAULT NULL,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `level_Id` int(11) NOT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `name` varchar(100) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name` (`name`,`level_Id`),
-  UNIQUE KEY `external_id` (`external_id`,`level_Id`),
-  KEY `office_id` (`office_id`),
-  KEY `staff_id` (`staff_id`),
-  KEY `Parent_Id_reference` (`parent_id`),
-  KEY `FK_m_group_level` (`level_Id`),
-  CONSTRAINT `m_group_ibfk_1` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `Parent_Id_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK_m_group_level` FOREIGN KEY (`level_Id`) REFERENCES `m_group_level` (`id`),
-  CONSTRAINT `FK_m_group_m_staff` FOREIGN KEY (`staff_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group`
---
-
-LOCK TABLES `m_group` WRITE;
-/*!40000 ALTER TABLE `m_group` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group_client`
---
-
-DROP TABLE IF EXISTS `m_group_client`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group_client` (
-  `group_id` bigint(20) NOT NULL,
-  `client_id` bigint(20) NOT NULL,
-  PRIMARY KEY (`group_id`,`client_id`),
-  KEY `client_id` (`client_id`),
-  CONSTRAINT `m_group_client_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `m_group_client_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group_client`
---
-
-LOCK TABLES `m_group_client` WRITE;
-/*!40000 ALTER TABLE `m_group_client` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_group_client` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_group_level`
---
-
-DROP TABLE IF EXISTS `m_group_level`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_group_level` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `parent_id` int(11) DEFAULT NULL,
-  `super_parent` tinyint(1) NOT NULL,
-  `level_name` varchar(100) NOT NULL,
-  `recursable` tinyint(1) NOT NULL,
-  `can_have_clients` tinyint(1) NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `Parent_levelId_reference` (`parent_id`),
-  CONSTRAINT `Parent_levelId_reference` FOREIGN KEY (`parent_id`) REFERENCES `m_group_level` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_group_level`
---
-
-LOCK TABLES `m_group_level` WRITE;
-/*!40000 ALTER TABLE `m_group_level` DISABLE KEYS */;
-INSERT INTO `m_group_level` VALUES (1,NULL,1,'Center',1,0),(2,1,0,'Group',0,1);
-/*!40000 ALTER TABLE `m_group_level` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_guarantor`
---
-
-DROP TABLE IF EXISTS `m_guarantor`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_guarantor` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `client_reln_cv_id` int(11) DEFAULT NULL,
-  `type_enum` smallint(5) NOT NULL,
-  `entity_id` bigint(20) DEFAULT NULL,
-  `firstname` varchar(50) DEFAULT NULL,
-  `lastname` varchar(50) DEFAULT NULL,
-  `dob` date DEFAULT NULL,
-  `address_line_1` varchar(500) DEFAULT NULL,
-  `address_line_2` varchar(500) DEFAULT NULL,
-  `city` varchar(50) DEFAULT NULL,
-  `state` varchar(50) DEFAULT NULL,
-  `country` varchar(50) DEFAULT NULL,
-  `zip` varchar(20) DEFAULT NULL,
-  `house_phone_number` varchar(20) DEFAULT NULL,
-  `mobile_number` varchar(20) DEFAULT NULL,
-  `comment` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_m_guarantor_m_loan` (`loan_id`),
-  KEY `FK_m_guarantor_m_code_value` (`client_reln_cv_id`),
-  CONSTRAINT `FK_m_guarantor_m_code_value` FOREIGN KEY (`client_reln_cv_id`) REFERENCES `m_code_value` (`id`),
-  CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_guarantor`
---
-
-LOCK TABLES `m_guarantor` WRITE;
-/*!40000 ALTER TABLE `m_guarantor` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_guarantor` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan`
---
-
-DROP TABLE IF EXISTS `m_loan`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `account_no` varchar(20) NOT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `product_id` bigint(20) DEFAULT NULL,
-  `fund_id` bigint(20) DEFAULT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `loanpurpose_cv_id` int(11) DEFAULT NULL,
-  `loan_status_id` smallint(5) NOT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) NOT NULL,
-  `min_principal_amount` decimal(19,6) NOT NULL,
-  `max_principal_amount` decimal(19,6) NOT NULL,
-  `arrearstolerance_amount` decimal(19,6) DEFAULT NULL,
-  `nominal_interest_rate_per_period` decimal(19,6) NOT NULL,
-  `interest_period_frequency_enum` smallint(5) NOT NULL,
-  `annual_nominal_interest_rate` decimal(19,6) NOT NULL,
-  `interest_method_enum` smallint(5) NOT NULL,
-  `interest_calculated_in_period_enum` smallint(5) NOT NULL DEFAULT '1',
-  `term_frequency` smallint(5) NOT NULL DEFAULT '0',
-  `term_period_frequency_enum` smallint(5) NOT NULL DEFAULT '2',
-  `repay_every` smallint(5) NOT NULL,
-  `repayment_period_frequency_enum` smallint(5) NOT NULL,
-  `number_of_repayments` smallint(5) NOT NULL,
-  `amortization_method_enum` smallint(5) NOT NULL,
-  `submittedon_date` date DEFAULT NULL,
-  `submittedon_userid` bigint(20) DEFAULT NULL,
-  `approvedon_date` date DEFAULT NULL,
-  `approvedon_userid` bigint(20) DEFAULT NULL,
-  `expected_disbursedon_date` date DEFAULT NULL,
-  `expected_firstrepaymenton_date` date DEFAULT NULL,
-  `interest_calculated_from_date` date DEFAULT NULL,
-  `disbursedon_date` date DEFAULT NULL,
-  `disbursedon_userid` bigint(20) DEFAULT NULL,
-  `expected_maturedon_date` date DEFAULT NULL,
-  `maturedon_date` date DEFAULT NULL,
-  `closedon_date` date DEFAULT NULL,
-  `closedon_userid` bigint(20) DEFAULT NULL,
-  `total_charges_due_at_disbursement_derived` decimal(19,6) DEFAULT NULL,
-  `principal_disbursed_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `principal_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_charged_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_repaid_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_repayment_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_expected_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_costofloan_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_waived_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_writtenoff_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `rejectedon_date` date DEFAULT NULL,
-  `rejectedon_userid` bigint(20) DEFAULT NULL,
-  `rescheduledon_date` date DEFAULT NULL,
-  `withdrawnon_date` date DEFAULT NULL,
-  `withdrawnon_userid` bigint(20) DEFAULT NULL,
-  `writtenoffon_date` date DEFAULT NULL,
-  `loan_transaction_strategy_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `loan_account_no_UNIQUE` (`account_no`),
-  UNIQUE KEY `loan_externalid_UNIQUE` (`external_id`),
-  KEY `FKB6F935D87179A0CB` (`client_id`),
-  KEY `FKB6F935D8C8D4B434` (`product_id`),
-  KEY `FK7C885877240145` (`fund_id`),
-  KEY `FK_loan_ltp_strategy` (`loan_transaction_strategy_id`),
-  KEY `FK_m_loan_m_staff` (`loan_officer_id`),
-  KEY `group_id` (`group_id`),
-  KEY `FK_m_loanpurpose_codevalue` (`loanpurpose_cv_id`),
-  KEY `FK_submittedon_userid` (`submittedon_userid`),
-  KEY `FK_approvedon_userid` (`approvedon_userid`),
-  KEY `FK_rejectedon_userid` (`rejectedon_userid`),
-  KEY `FK_withdrawnon_userid` (`withdrawnon_userid`),
-  KEY `FK_disbursedon_userid` (`disbursedon_userid`),
-  KEY `FK_closedon_userid` (`closedon_userid`),
-  CONSTRAINT `FK7C885877240145` FOREIGN KEY (`fund_id`) REFERENCES `m_fund` (`id`),
-  CONSTRAINT `FKB6F935D87179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FKB6F935D8C8D4B434` FOREIGN KEY (`product_id`) REFERENCES `m_product_loan` (`id`),
-  CONSTRAINT `FK_approvedon_userid` FOREIGN KEY (`approvedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_closedon_userid` FOREIGN KEY (`closedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_disbursedon_userid` FOREIGN KEY (`disbursedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_loan_ltp_strategy` FOREIGN KEY (`loan_transaction_strategy_id`) REFERENCES `ref_loan_transaction_processing_strategy` (`id`),
-  CONSTRAINT `FK_m_loanpurpose_codevalue` FOREIGN KEY (`loanpurpose_cv_id`) REFERENCES `m_code_value` (`id`),
-  CONSTRAINT `FK_m_loan_m_staff` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`),
-  CONSTRAINT `FK_rejectedon_userid` FOREIGN KEY (`rejectedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_submittedon_userid` FOREIGN KEY (`submittedon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK_withdrawnon_userid` FOREIGN KEY (`withdrawnon_userid`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `m_loan_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan`
---
-
-LOCK TABLES `m_loan` WRITE;
-/*!40000 ALTER TABLE `m_loan` DISABLE KEYS */;
-INSERT INTO `m_loan` VALUES (1,'000000001',NULL,1,NULL,1,NULL,2,25,200,'UGX',2,'1000000.000000','0.000000','1000000000000.000000',NULL,'24.000000',3,'24.000000',1,1,12,2,1,2,12,1,'2011-04-01',1,'2011-04-01',1,'2011-04-01',NULL,NULL,NULL,NULL,'2012-04-01','2012-04-01',NULL,NULL,'0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000','0.000000',NULL,NULL,NULL,NULL,NULL,NULL,2);
-/*!40000 ALTER TABLE `m_loan` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_arrears_aging`
---
-
-DROP TABLE IF EXISTS `m_loan_arrears_aging`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_arrears_aging` (
-  `loan_id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `principal_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `interest_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `fee_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `penalty_charges_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `total_overdue_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `overdue_since_date_derived` date DEFAULT NULL,
-  PRIMARY KEY (`loan_id`),
-  CONSTRAINT `m_loan_arrears_aging_ibfk_1` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_arrears_aging`
---
-
-LOCK TABLES `m_loan_arrears_aging` WRITE;
-/*!40000 ALTER TABLE `m_loan_arrears_aging` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_arrears_aging` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_charge`
---
-
-DROP TABLE IF EXISTS `m_loan_charge`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_charge` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `charge_id` bigint(20) NOT NULL,
-  `is_penalty` tinyint(1) NOT NULL DEFAULT '0',
-  `charge_time_enum` smallint(5) NOT NULL,
-  `due_for_collection_as_of_date` date DEFAULT NULL,
-  `charge_calculation_enum` smallint(5) NOT NULL,
-  `calculation_percentage` decimal(19,6) DEFAULT NULL,
-  `calculation_on_amount` decimal(19,6) DEFAULT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `amount_paid_derived` decimal(19,6) DEFAULT NULL,
-  `amount_waived_derived` decimal(19,6) DEFAULT NULL,
-  `amount_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `amount_outstanding_derived` decimal(19,6) NOT NULL DEFAULT '0.000000',
-  `is_paid_derived` tinyint(1) NOT NULL DEFAULT '0',
-  `waived` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`),
-  KEY `charge_id` (`charge_id`),
-  KEY `m_loan_charge_ibfk_2` (`loan_id`),
-  CONSTRAINT `m_loan_charge_ibfk_1` FOREIGN KEY (`charge_id`) REFERENCES `m_charge` (`id`),
-  CONSTRAINT `m_loan_charge_ibfk_2` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_charge`
---
-
-LOCK TABLES `m_loan_charge` WRITE;
-/*!40000 ALTER TABLE `m_loan_charge` DISABLE KEYS */;
-INSERT INTO `m_loan_charge` VALUES (1,1,1,0,2,'2011-06-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(2,1,1,0,2,'2011-12-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(3,1,1,0,2,'2011-09-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(4,1,1,0,2,'2011-08-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(5,1,1,0,2,'2011-11-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(6,1,1,0,2,'2011-05-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(7,1,1,0,2,'2012-03-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(8,1,1,0,2,'2012-02-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(9,1,1,0,2,'2012-04-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(10,1,1,0,2,'2012-01-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0),(11,1,1,0,2,'2011-10-01',1,NULL,NULL,'1500.000000','0.000000'
 ,NULL,NULL,'1500.000000',0,0),(12,1,1,0,2,'2011-07-01',1,NULL,NULL,'1500.000000','0.000000',NULL,NULL,'1500.000000',0,0);
-/*!40000 ALTER TABLE `m_loan_charge` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_collateral`
---
-
-DROP TABLE IF EXISTS `m_loan_collateral`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_collateral` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `type_cv_id` int(11) NOT NULL,
-  `value` decimal(19,6) DEFAULT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK_collateral_m_loan` (`loan_id`),
-  KEY `FK_collateral_code_value` (`type_cv_id`),
-  CONSTRAINT `FK_collateral_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK_collateral_code_value` FOREIGN KEY (`type_cv_id`) REFERENCES `m_code_value` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_collateral`
---
-
-LOCK TABLES `m_loan_collateral` WRITE;
-/*!40000 ALTER TABLE `m_loan_collateral` DISABLE KEYS */;
-INSERT INTO `m_loan_collateral` VALUES (1,1,23,NULL,' small description.');
-/*!40000 ALTER TABLE `m_loan_collateral` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_officer_assignment_history`
---
-
-DROP TABLE IF EXISTS `m_loan_officer_assignment_history`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_officer_assignment_history` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `loan_officer_id` bigint(20) DEFAULT NULL,
-  `start_date` date NOT NULL,
-  `end_date` date DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `fk_m_loan_officer_assignment_history_0001` (`loan_id`),
-  KEY `fk_m_loan_officer_assignment_history_0002` (`loan_officer_id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0001` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `fk_m_loan_officer_assignment_history_0002` FOREIGN KEY (`loan_officer_id`) REFERENCES `m_staff` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_officer_assignment_history`
---
-
-LOCK TABLES `m_loan_officer_assignment_history` WRITE;
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` DISABLE KEYS */;
-INSERT INTO `m_loan_officer_assignment_history` VALUES (1,1,2,'2011-04-01',NULL,1,'2013-04-05 12:42:09','2013-04-05 12:42:09',1);
-/*!40000 ALTER TABLE `m_loan_officer_assignment_history` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_repayment_schedule`
---
-
-DROP TABLE IF EXISTS `m_loan_repayment_schedule`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_repayment_schedule` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `fromdate` date DEFAULT NULL,
-  `duedate` date NOT NULL,
-  `installment` smallint(5) NOT NULL,
-  `principal_amount` decimal(19,6) DEFAULT NULL,
-  `principal_completed_derived` decimal(19,6) DEFAULT NULL,
-  `principal_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `interest_amount` decimal(19,6) DEFAULT NULL,
-  `interest_completed_derived` decimal(19,6) DEFAULT NULL,
-  `interest_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_amount` decimal(19,6) DEFAULT NULL,
-  `fee_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_amount` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_completed_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_writtenoff_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_waived_derived` decimal(19,6) DEFAULT NULL,
-  `completed_derived` bit(1) NOT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  `interest_waived_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK488B92AA40BE0710` (`loan_id`),
-  CONSTRAINT `FK488B92AA40BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_repayment_schedule`
---
-
-LOCK TABLES `m_loan_repayment_schedule` WRITE;
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` DISABLE KEYS */;
-INSERT INTO `m_loan_repayment_schedule` VALUES (1,1,'2011-04-01','2011-05-01',1,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(2,1,'2011-05-01','2011-06-01',2,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(3,1,'2011-06-01','2011-07-01',3,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(4,1,'2011-07-01','2011-08-01',4,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(5,1,'2011-08-01','2011-09-01',5,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,N
 ULL),(6,1,'2011-09-01','2011-10-01',6,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(7,1,'2011-10-01','2011-11-01',7,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(8,1,'2011-11-01','2011-12-01',8,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(9,1,'2011-12-01','2012-01-01',9,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(10,1,'2012-01-01','2012-02-01',10,'83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(11,1,'2012-02-01','2012-03-01',11,
 '83333.330000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL),(12,1,'2012-03-01','2012-04-01',12,'83333.370000',NULL,NULL,'20000.000000',NULL,NULL,'1500.000000',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'\0',1,'2013-04-05 12:41:57','2013-04-05 12:41:57',1,NULL);
-/*!40000 ALTER TABLE `m_loan_repayment_schedule` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_loan_transaction`
---
-
-DROP TABLE IF EXISTS `m_loan_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_loan_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `loan_id` bigint(20) NOT NULL,
-  `is_reversed` tinyint(1) NOT NULL,
-  `transaction_type_enum` smallint(5) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `amount` decimal(19,6) NOT NULL,
-  `principal_portion_derived` decimal(19,6) DEFAULT NULL,
-  `interest_portion_derived` decimal(19,6) DEFAULT NULL,
-  `fee_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  `penalty_charges_portion_derived` decimal(19,6) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FKCFCEA42640BE0710` (`loan_id`),
-  CONSTRAINT `FKCFCEA42640BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_loan_transaction`
---
-
-LOCK TABLES `m_loan_transaction` WRITE;
-/*!40000 ALTER TABLE `m_loan_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_loan_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_note`
---
-
-DROP TABLE IF EXISTS `m_note`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_note` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `client_id` bigint(20) DEFAULT NULL,
-  `group_id` bigint(20) DEFAULT NULL,
-  `loan_id` bigint(20) DEFAULT NULL,
-  `loan_transaction_id` bigint(20) DEFAULT NULL,
-  `note_type_enum` smallint(5) NOT NULL,
-  `note` varchar(1000) DEFAULT NULL,
-  `created_date` datetime DEFAULT NULL,
-  `createdby_id` bigint(20) DEFAULT NULL,
-  `lastmodified_date` datetime DEFAULT NULL,
-  `lastmodifiedby_id` bigint(20) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK7C9708924D26803` (`loan_transaction_id`),
-  KEY `FK7C97089541F0A56` (`createdby_id`),
-  KEY `FK7C970897179A0CB` (`client_id`),
-  KEY `FK_m_note_m_group` (`group_id`),
-  KEY `FK7C970898F889C3F` (`lastmodifiedby_id`),
-  KEY `FK7C9708940BE0710` (`loan_id`),
-  CONSTRAINT `FK7C9708924D26803` FOREIGN KEY (`loan_transaction_id`) REFERENCES `m_loan_transaction` (`id`),
-  CONSTRAINT `FK7C9708940BE0710` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`),
-  CONSTRAINT `FK7C97089541F0A56` FOREIGN KEY (`createdby_id`) REFERENCES `m_appuser` (`id`),
-  CONSTRAINT `FK7C970897179A0CB` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`),
-  CONSTRAINT `FK_m_note_m_group` FOREIGN KEY (`group_id`) REFERENCES `m_group` (`id`),
-  CONSTRAINT `FK7C970898F889C3F` FOREIGN KEY (`lastmodifiedby_id`) REFERENCES `m_appuser` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_note`
---
-
-LOCK TABLES `m_note` WRITE;
-/*!40000 ALTER TABLE `m_note` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_note` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office`
---
-
-DROP TABLE IF EXISTS `m_office`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `parent_id` bigint(20) DEFAULT NULL,
-  `hierarchy` varchar(100) DEFAULT NULL,
-  `external_id` varchar(100) DEFAULT NULL,
-  `name` varchar(50) NOT NULL,
-  `opening_date` date NOT NULL,
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `name_org` (`name`),
-  UNIQUE KEY `externalid_org` (`external_id`),
-  KEY `FK2291C477E2551DCC` (`parent_id`),
-  CONSTRAINT `FK2291C477E2551DCC` FOREIGN KEY (`parent_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office`
---
-
-LOCK TABLES `m_office` WRITE;
-/*!40000 ALTER TABLE `m_office` DISABLE KEYS */;
-INSERT INTO `m_office` VALUES (1,NULL,'.','1','CEDA Microfinance Ltd.','2009-01-01'),(2,1,'.2.','2','Uganda (Kampala)','2009-01-01');
-/*!40000 ALTER TABLE `m_office` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_office_transaction`
---
-
-DROP TABLE IF EXISTS `m_office_transaction`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_office_transaction` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `from_office_id` bigint(20) DEFAULT NULL,
-  `to_office_id` bigint(20) DEFAULT NULL,
-  `currency_code` varchar(3) NOT NULL,
-  `currency_digits` int(11) NOT NULL,
-  `transaction_amount` decimal(19,6) NOT NULL,
-  `transaction_date` date NOT NULL,
-  `description` varchar(100) DEFAULT NULL,
-  PRIMARY KEY (`id`),
-  KEY `FK1E37728B93C6C1B6` (`to_office_id`),
-  KEY `FK1E37728B783C5C25` (`from_office_id`),
-  CONSTRAINT `FK1E37728B783C5C25` FOREIGN KEY (`from_office_id`) REFERENCES `m_office` (`id`),
-  CONSTRAINT `FK1E37728B93C6C1B6` FOREIGN KEY (`to_office_id`) REFERENCES `m_office` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_office_transaction`
---
-
-LOCK TABLES `m_office_transaction` WRITE;
-/*!40000 ALTER TABLE `m_office_transaction` DISABLE KEYS */;
-/*!40000 ALTER TABLE `m_office_transaction` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_organisation_currency`
---
-
-DROP TABLE IF EXISTS `m_organisation_currency`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_organisation_currency` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(3) NOT NULL,
-  `decimal_places` smallint(5) NOT NULL,
-  `name` varchar(50) NOT NULL,
-  `display_symbol` varchar(10) DEFAULT NULL,
-  `internationalized_name_code` varchar(50) NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_organisation_currency`
---
-
-LOCK TABLES `m_organisation_currency` WRITE;
-/*!40000 ALTER TABLE `m_organisation_currency` DISABLE KEYS */;
-INSERT INTO `m_organisation_currency` VALUES (22,'UGX',2,'Uganda Shilling','USh','currency.UGX');
-/*!40000 ALTER TABLE `m_organisation_currency` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `m_permission`
---
-
-DROP TABLE IF EXISTS `m_permission`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `m_permission` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `grouping` varchar(45) DEFAULT NULL,
-  `code` varchar(100) NOT NULL,
-  `entity_name` varchar(100) DEFAULT NULL,
-  `action_name` varchar(100) DEFAULT NULL,
-  `can_maker_checker` tinyint(1) NOT NULL DEFAULT '1',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `code` (`code`)
-) ENGINE=InnoDB AUTO_INCREMENT=308 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `m_permission`
---
-
-LOCK TABLES `m_permission` WRITE;
-/*!40000 ALTER TABLE `m_permission` DISABLE KEYS */;
-INSERT INTO `m_permission` VALUES (1,'special','ALL_FUNCTIONS',NULL,NULL,0),(2,'special','ALL_FUNCTIONS_READ',NULL,NULL,0),(3,'special','CHECKER_SUPER_USER',NULL,NULL,0),(4,'special','REPORTING_SUPER_USER',NULL,NULL,0),(5,'authorisation','READ_PERMISSION','PERMISSION','READ',0),(6,'authorisation','PERMISSIONS_ROLE','ROLE','PERMISSIONS',0),(7,'authorisation','CREATE_ROLE','ROLE','CREATE',0),(8,'authorisation','CREATE_ROLE_CHECKER','ROLE','CREATE',0),(9,'authorisation','READ_ROLE','ROLE','READ',0),(10,'authorisation','UPDATE_ROLE','ROLE','UPDATE',0),(11,'authorisation','UPDATE_ROLE_CHECKER','ROLE','UPDATE',0),(12,'authorisation','DELETE_ROLE','ROLE','DELETE',0),(13,'authorisation','DELETE_ROLE_CHECKER','ROLE','DELETE',0),(14,'authorisation','CREATE_USER','USER','CREATE',0),(15,'authorisation','CREATE_USER_CHECKER','USER','CREATE',0),(16,'authorisation','READ_USER','USER','READ',0),(17,'authorisation','UPDATE_USER','USER','UPDATE',0),(18,'authorisation','UPDATE_USER_CHECKER','USER','UP
 DATE',0),(19,'authorisation','DELETE_USER','USER','DELETE',0),(20,'authorisation','DELETE_USER_CHECKER','USER','DELETE',0),(21,'configuration','READ_CONFIGURATION','CONFIGURATION','READ',0),(22,'configuration','UPDATE_CONFIGURATION','CONFIGURATION','UPDATE',0),(23,'configuration','UPDATE_CONFIGURATION_CHECKER','CONFIGURATION','UPDATE',0),(24,'configuration','READ_CODE','CODE','READ',0),(25,'configuration','CREATE_CODE','CODE','CREATE',0),(26,'configuration','CREATE_CODE_CHECKER','CODE','CREATE',0),(27,'configuration','UPDATE_CODE','CODE','UPDATE',0),(28,'configuration','UPDATE_CODE_CHECKER','CODE','UPDATE',0),(29,'configuration','DELETE_CODE','CODE','DELETE',0),(30,'configuration','DELETE_CODE_CHECKER','CODE','DELETE',0),(31,'configuration','READ_CODEVALUE','CODEVALUE','READ',0),(32,'configuration','CREATE_CODEVALUE','CODEVALUE','CREATE',0),(33,'configuration','CREATE_CODEVALUE_CHECKER','CODEVALUE','CREATE',0),(34,'configuration','UPDATE_CODEVALUE','CODEVALUE','UPDATE',0),(35,'confi
 guration','UPDATE_CODEVALUE_CHECKER','CODEVALUE','UPDATE',0),(36,'configuration','DELETE_CODEVALUE','CODEVALUE','DELETE',0),(37,'configuration','DELETE_CODEVALUE_CHECKER','CODEVALUE','DELETE',0),(38,'configuration','READ_CURRENCY','CURRENCY','READ',0),(39,'configuration','UPDATE_CURRENCY','CURRENCY','UPDATE',0),(40,'configuration','UPDATE_CURRENCY_CHECKER','CURRENCY','UPDATE',0),(41,'configuration','UPDATE_PERMISSION','PERMISSION','UPDATE',0),(42,'configuration','UPDATE_PERMISSION_CHECKER','PERMISSION','UPDATE',0),(43,'configuration','READ_DATATABLE','DATATABLE','READ',0),(44,'configuration','REGISTER_DATATABLE','DATATABLE','REGISTER',0),(45,'configuration','REGISTER_DATATABLE_CHECKER','DATATABLE','REGISTER',0),(46,'configuration','DEREGISTER_DATATABLE','DATATABLE','DEREGISTER',0),(47,'configuration','DEREGISTER_DATATABLE_CHECKER','DATATABLE','DEREGISTER',0),(48,'configuration','READ_AUDIT','AUDIT','READ',0),(49,'configuration','CREATE_CALENDAR','CALENDAR','CREATE',0),(50,'configura
 tion','READ_CALENDAR','CALENDAR','READ',0),(51,'configuration','UPDATE_CALENDAR','CALENDAR','UPDATE',0),(52,'configuration','DELETE_CALENDAR','CALENDAR','DELETE',0),(53,'configuration','CREATE_CALENDAR_CHECKER','CALENDAR','CREATE',0),(54,'configuration','UPDATE_CALENDAR_CHECKER','CALENDAR','UPDATE',0),(55,'configuration','DELETE_CALENDAR_CHECKER','CALENDAR','DELETE',0),(57,'organisation','READ_CHARGE','CHARGE','READ',0),(58,'organisation','CREATE_CHARGE','CHARGE','CREATE',0),(59,'organisation','CREATE_CHARGE_CHECKER','CHARGE','CREATE',0),(60,'organisation','UPDATE_CHARGE','CHARGE','UPDATE',0),(61,'organisation','UPDATE_CHARGE_CHECKER','CHARGE','UPDATE',0),(62,'organisation','DELETE_CHARGE','CHARGE','DELETE',0),(63,'organisation','DELETE_CHARGE_CHECKER','CHARGE','DELETE',0),(64,'organisation','READ_FUND','FUND','READ',0),(65,'organisation','CREATE_FUND','FUND','CREATE',0),(66,'organisation','CREATE_FUND_CHECKER','FUND','CREATE',0),(67,'organisation','UPDATE_FUND','FUND','UPDATE',0),(
 68,'organisation','UPDATE_FUND_CHECKER','FUND','UPDATE',0),(69,'organisation','DELETE_FUND','FUND','DELETE',0),(70,'organisation','DELETE_FUND_CHECKER','FUND','DELETE',0),(71,'organisation','READ_LOANPRODUCT','LOANPRODUCT','READ',0),(72,'organisation','CREATE_LOANPRODUCT','LOANPRODUCT','CREATE',0),(73,'organisation','CREATE_LOANPRODUCT_CHECKER','LOANPRODUCT','CREATE',0),(74,'organisation','UPDATE_LOANPRODUCT','LOANPRODUCT','UPDATE',0),(75,'organisation','UPDATE_LOANPRODUCT_CHECKER','LOANPRODUCT','UPDATE',0),(76,'organisation','DELETE_LOANPRODUCT','LOANPRODUCT','DELETE',0),(77,'organisation','DELETE_LOANPRODUCT_CHECKER','LOANPRODUCT','DELETE',0),(78,'organisation','READ_OFFICE','OFFICE','READ',0),(79,'organisation','CREATE_OFFICE','OFFICE','CREATE',0),(80,'organisation','CREATE_OFFICE_CHECKER','OFFICE','CREATE',0),(81,'organisation','UPDATE_OFFICE','OFFICE','UPDATE',0),(82,'organisation','UPDATE_OFFICE_CHECKER','OFFICE','UPDATE',0),(83,'organisation','READ_OFFICETRANSACTION','OFFICET
 RANSACTION','READ',0),(84,'organisation','DELETE_OFFICE_CHECKER','OFFICE','DELETE',0),(85,'organisation','CREATE_OFFICETRANSACTION','OFFICETRANSACTION','CREATE',0),(86,'organisation','CREATE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','CREATE',0),(87,'organisation','DELETE_OFFICETRANSACTION','OFFICETRANSACTION','DELETE',0),(88,'organisation','DELETE_OFFICETRANSACTION_CHECKER','OFFICETRANSACTION','DELETE',0),(89,'organisation','READ_STAFF','STAFF','READ',0),(90,'organisation','CREATE_STAFF','STAFF','CREATE',0),(91,'organisation','CREATE_STAFF_CHECKER','STAFF','CREATE',0),(92,'organisation','UPDATE_STAFF','STAFF','UPDATE',0),(93,'organisation','UPDATE_STAFF_CHECKER','STAFF','UPDATE',0),(94,'organisation','DELETE_STAFF','STAFF','DELETE',0),(95,'organisation','DELETE_STAFF_CHECKER','STAFF','DELETE',0),(96,'organisation','READ_SAVINGSPRODUCT','SAVINGSPRODUCT','READ',0),(97,'organisation','CREATE_SAVINGSPRODUCT','SAVINGSPRODUCT','CREATE',0),(98,'organisation','CREATE_SAVINGSPRODUCT_CHE
 CKER','SAVINGSPRODUCT','CREATE',0),(99,'organisation','UPDATE_SAVINGSPRODUCT','SAVINGSPRODUCT','UPDATE',0),(100,'organisation','UPDATE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','UPDATE',0),(101,'organisation','DELETE_SAVINGSPRODUCT','SAVINGSPRODUCT','DELETE',0),(102,'organisation','DELETE_SAVINGSPRODUCT_CHECKER','SAVINGSPRODUCT','DELETE',0),(103,'portfolio','READ_LOAN','LOAN','READ',0),(104,'portfolio','CREATE_LOAN','LOAN','CREATE',0),(105,'portfolio','CREATE_LOAN_CHECKER','LOAN','CREATE',0),(106,'portfolio','UPDATE_LOAN','LOAN','UPDATE',0),(107,'portfolio','UPDATE_LOAN_CHECKER','LOAN','UPDATE',0),(108,'portfolio','DELETE_LOAN','LOAN','DELETE',0),(109,'portfolio','DELETE_LOAN_CHECKER','LOAN','DELETE',0),(110,'portfolio','READ_CLIENT','CLIENT','READ',0),(111,'portfolio','CREATE_CLIENT','CLIENT','CREATE',0),(112,'portfolio','CREATE_CLIENT_CHECKER','CLIENT','CREATE',0),(113,'portfolio','UPDATE_CLIENT','CLIENT','UPDATE',0),(114,'portfolio','UPDATE_CLIENT_CHECKER','CLIENT','UPDATE',0),(11
 5,'portfolio','DELETE_CLIENT','CLIENT','DELETE',0),(116,'portfolio','DELETE_CLIENT_CHECKER','CLIENT','DELETE',0),(117,'portfolio','READ_CLIENTIMAGE','CLIENTIMAGE','READ',0),(118,'portfolio','CREATE_CLIENTIMAGE','CLIENTIMAGE','CREATE',0),(119,'portfolio','CREATE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','CREATE',0),(120,'portfolio','DELETE_CLIENTIMAGE','CLIENTIMAGE','DELETE',0),(121,'portfolio','DELETE_CLIENTIMAGE_CHECKER','CLIENTIMAGE','DELETE',0),(122,'portfolio','READ_CLIENTNOTE','CLIENTNOTE','READ',0),(123,'portfolio','CREATE_CLIENTNOTE','CLIENTNOTE','CREATE',0),(124,'portfolio','CREATE_CLIENTNOTE_CHECKER','CLIENTNOTE','CREATE',0),(125,'portfolio','UPDATE_CLIENTNOTE','CLIENTNOTE','UPDATE',0),(126,'portfolio','UPDATE_CLIENTNOTE_CHECKER','CLIENTNOTE','UPDATE',0),(127,'portfolio','DELETE_CLIENTNOTE','CLIENTNOTE','DELETE',0),(128,'portfolio','DELETE_CLIENTNOTE_CHECKER','CLIENTNOTE','DELETE',0),(129,'portfolio','READ_GROUPNOTE','GROUPNOTE','READ',0),(130,'portfolio','CREATE_GROUPNOTE','GROUP
 NOTE','CREATE',0),(131,'portfolio','UPDATE_GROUPNOTE','GROUPNOTE','UPDATE',0),(132,'portfolio','DELETE_GROUPNOTE','GROUPNOTE','DELETE',0),(133,'portfolio','CREATE_GROUPNOTE_CHECKER','GROUPNOTE','CREATE',0),(134,'portfolio','UPDATE_GROUPNOTE_CHECKER','GROUPNOTE','UPDATE',0),(135,'portfolio','DELETE_GROUPNOTE_CHECKER','GROUPNOTE','DELETE',0),(136,'portfolio','READ_LOANNOTE','LOANNOTE','READ',0),(137,'portfolio','CREATE_LOANNOTE','LOANNOTE','CREATE',0),(138,'portfolio','UPDATE_LOANNOTE','LOANNOTE','UPDATE',0),(139,'portfolio','DELETE_LOANNOTE','LOANNOTE','DELETE',0),(140,'portfolio','CREATE_LOANNOTE_CHECKER','LOANNOTE','CREATE',0),(141,'portfolio','UPDATE_LOANNOTE_CHECKER','LOANNOTE','UPDATE',0),(142,'portfolio','DELETE_LOANNOTE_CHECKER','LOANNOTE','DELETE',0),(143,'portfolio','READ_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','READ',0),(144,'portfolio','CREATE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','CREATE',0),(145,'portfolio','UPDATE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','UPDA
 TE',0),(146,'portfolio','DELETE_LOANTRANSACTIONNOTE','LOANTRANSACTIONNOTE','DELETE',0),(147,'portfolio','CREATE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','CREATE',0),(148,'portfolio','UPDATE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','UPDATE',0),(149,'portfolio','DELETE_LOANTRANSACTIONNOTE_CHECKER','LOANTRANSACTIONNOTE','DELETE',0),(150,'portfolio','READ_SAVINGNOTE','SAVINGNOTE','READ',0),(151,'portfolio','CREATE_SAVINGNOTE','SAVINGNOTE','CREATE',0),(152,'portfolio','UPDATE_SAVINGNOTE','SAVINGNOTE','UPDATE',0),(153,'portfolio','DELETE_SAVINGNOTE','SAVINGNOTE','DELETE',0),(154,'portfolio','CREATE_SAVINGNOTE_CHECKER','SAVINGNOTE','CREATE',0),(155,'portfolio','UPDATE_SAVINGNOTE_CHECKER','SAVINGNOTE','UPDATE',0),(156,'portfolio','DELETE_SAVINGNOTE_CHECKER','SAVINGNOTE','DELETE',0),(157,'portfolio','READ_CLIENTIDENTIFIER','CLIENTIDENTIFIER','READ',0),(158,'portfolio','CREATE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','CREATE',0),(159,'portfolio','CREATE_CLIENTIDENTIFIER_CHECKE
 R','CLIENTIDENTIFIER','CREATE',0),(160,'portfolio','UPDATE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','UPDATE',0),(161,'portfolio','UPDATE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','UPDATE',0),(162,'portfolio','DELETE_CLIENTIDENTIFIER','CLIENTIDENTIFIER','DELETE',0),(163,'portfolio','DELETE_CLIENTIDENTIFIER_CHECKER','CLIENTIDENTIFIER','DELETE',0),(164,'portfolio','READ_DOCUMENT','DOCUMENT','READ',0),(165,'portfolio','CREATE_DOCUMENT','DOCUMENT','CREATE',0),(166,'portfolio','CREATE_DOCUMENT_CHECKER','DOCUMENT','CREATE',0),(167,'portfolio','UPDATE_DOCUMENT','DOCUMENT','UPDATE',0),(168,'portfolio','UPDATE_DOCUMENT_CHECKER','DOCUMENT','UPDATE',0),(169,'portfolio','DELETE_DOCUMENT','DOCUMENT','DELETE',0),(170,'portfolio','DELETE_DOCUMENT_CHECKER','DOCUMENT','DELETE',0),(171,'portfolio','READ_GROUP','GROUP','READ',0),(172,'portfolio','CREATE_GROUP','GROUP','CREATE',0),(173,'portfolio','CREATE_GROUP_CHECKER','GROUP','CREATE',0),(174,'portfolio','UPDATE_GROUP','GROUP','UPDATE',0),(175,'portfol
 io','UPDATE_GROUP_CHECKER','GROUP','UPDATE',0),(176,'portfolio','DELETE_GROUP','GROUP','DELETE',0),(177,'portfolio','DELETE_GROUP_CHECKER','GROUP','DELETE',0),(178,'portfolio','UNASSIGNSTAFF_GROUP','GROUP','UNASSIGNSTAFF',0),(179,'portfolio','UNASSIGNSTAFF_GROUP_CHECKER','GROUP','UNASSIGNSTAFF',0),(180,'portfolio','CREATE_LOANCHARGE','LOANCHARGE','CREATE',0),(181,'portfolio','CREATE_LOANCHARGE_CHECKER','LOANCHARGE','CREATE',0),(182,'portfolio','UPDATE_LOANCHARGE','LOANCHARGE','UPDATE',0),(183,'portfolio','UPDATE_LOANCHARGE_CHECKER','LOANCHARGE','UPDATE',0),(184,'portfolio','DELETE_LOANCHARGE','LOANCHARGE','DELETE',0),(185,'portfolio','DELETE_LOANCHARGE_CHECKER','LOANCHARGE','DELETE',0),(186,'portfolio','WAIVE_LOANCHARGE','LOANCHARGE','WAIVE',0),(187,'portfolio','WAIVE_LOANCHARGE_CHECKER','LOANCHARGE','WAIVE',0),(188,'portfolio','READ_SAVINGSACCOUNT','SAVINGSACCOUNT','READ',0),(189,'portfolio','CREATE_SAVINGSACCOUNT','SAVINGSACCOUNT','CREATE',0),(190,'portfolio','CREATE_SAVINGSACCOUN
 T_CHECKER','SAVINGSACCOUNT','CREATE',0),(191,'portfolio','UPDATE_SAVINGSACCOUNT','SAVINGSACCOUNT','UPDATE',0),(192,'portfolio','UPDATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','UPDATE',0),(193,'portfolio','DELETE_SAVINGSACCOUNT','SAVINGSACCOUNT','DELETE',0),(194,'portfolio','DELETE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','DELETE',0),(195,'portfolio','READ_GUARANTOR','GUARANTOR','READ',0),(196,'portfolio','CREATE_GUARANTOR','GUARANTOR','CREATE',0),(197,'portfolio','CREATE_GUARANTOR_CHECKER','GUARANTOR','CREATE',0),(198,'portfolio','UPDATE_GUARANTOR','GUARANTOR','UPDATE',0),(199,'portfolio','UPDATE_GUARANTOR_CHECKER','GUARANTOR','UPDATE',0),(200,'portfolio','DELETE_GUARANTOR','GUARANTOR','DELETE',0),(201,'portfolio','DELETE_GUARANTOR_CHECKER','GUARANTOR','DELETE',0),(202,'portfolio','READ_COLLATERAL','COLLATERAL','READ',0),(203,'portfolio','CREATE_COLLATERAL','COLLATERAL','CREATE',0),(204,'portfolio','UPDATE_COLLATERAL','COLLATERAL','UPDATE',0),(205,'portfolio','DELETE_COLLATERAL','C
 OLLATERAL','DELETE',0),(206,'portfolio','CREATE_COLLATERAL_CHECKER','COLLATERAL','CREATE',0),(207,'portfolio','UPDATE_COLLATERAL_CHECKER','COLLATERAL','UPDATE',0),(208,'portfolio','DELETE_COLLATERAL_CHECKER','COLLATERAL','DELETE',0),(209,'transaction_loan','APPROVE_LOAN','LOAN','APPROVE',0),(210,'transaction_loan','APPROVEINPAST_LOAN','LOAN','APPROVEINPAST',0),(211,'transaction_loan','REJECT_LOAN','LOAN','REJECT',0),(212,'transaction_loan','REJECTINPAST_LOAN','LOAN','REJECTINPAST',0),(213,'transaction_loan','WITHDRAW_LOAN','LOAN','WITHDRAW',0),(214,'transaction_loan','WITHDRAWINPAST_LOAN','LOAN','WITHDRAWINPAST',0),(215,'transaction_loan','APPROVALUNDO_LOAN','LOAN','APPROVALUNDO',0),(216,'transaction_loan','DISBURSE_LOAN','LOAN','DISBURSE',0),(217,'transaction_loan','DISBURSEINPAST_LOAN','LOAN','DISBURSEINPAST',0),(218,'transaction_loan','DISBURSALUNDO_LOAN','LOAN','DISBURSALUNDO',0),(219,'transaction_loan','REPAYMENT_LOAN','LOAN','REPAYMENT',0),(220,'transaction_loan','REPAYMENTINP
 AST_LOAN','LOAN','REPAYMENTINPAST',0),(221,'transaction_loan','ADJUST_LOAN','LOAN','ADJUST',0),(222,'transaction_loan','WAIVEINTERESTPORTION_LOAN','LOAN','WAIVEINTERESTPORTION',0),(223,'transaction_loan','WRITEOFF_LOAN','LOAN','WRITEOFF',0),(224,'transaction_loan','CLOSE_LOAN','LOAN','CLOSE',0),(225,'transaction_loan','CLOSEASRESCHEDULED_LOAN','LOAN','CLOSEASRESCHEDULED',0),(226,'transaction_loan','UPDATELOANOFFICER_LOAN','LOAN','UPDATELOANOFFICER',0),(227,'transaction_loan','UPDATELOANOFFICER_LOAN_CHECKER','LOAN','UPDATELOANOFFICER',0),(228,'transaction_loan','REMOVELOANOFFICER_LOAN','LOAN','REMOVELOANOFFICER',0),(229,'transaction_loan','REMOVELOANOFFICER_LOAN_CHECKER','LOAN','REMOVELOANOFFICER',0),(230,'transaction_loan','BULKREASSIGN_LOAN','LOAN','BULKREASSIGN',0),(231,'transaction_loan','BULKREASSIGN_LOAN_CHECKER','LOAN','BULKREASSIGN',0),(232,'transaction_loan','APPROVE_LOAN_CHECKER','LOAN','APPROVE',0),(233,'transaction_loan','APPROVEINPAST_LOAN_CHECKER','LOAN','APPROVEINPAST'
 ,0),(234,'transaction_loan','REJECT_LOAN_CHECKER','LOAN','REJECT',0),(235,'transaction_loan','REJECTINPAST_LOAN_CHECKER','LOAN','REJECTINPAST',0),(236,'transaction_loan','WITHDRAW_LOAN_CHECKER','LOAN','WITHDRAW',0),(237,'transaction_loan','WITHDRAWINPAST_LOAN_CHECKER','LOAN','WITHDRAWINPAST',0),(238,'transaction_loan','APPROVALUNDO_LOAN_CHECKER','LOAN','APPROVALUNDO',0),(239,'transaction_loan','DISBURSE_LOAN_CHECKER','LOAN','DISBURSE',0),(240,'transaction_loan','DISBURSEINPAST_LOAN_CHECKER','LOAN','DISBURSEINPAST',0),(241,'transaction_loan','DISBURSALUNDO_LOAN_CHECKER','LOAN','DISBURSALUNDO',0),(242,'transaction_loan','REPAYMENT_LOAN_CHECKER','LOAN','REPAYMENT',0),(243,'transaction_loan','REPAYMENTINPAST_LOAN_CHECKER','LOAN','REPAYMENTINPAST',0),(244,'transaction_loan','ADJUST_LOAN_CHECKER','LOAN','ADJUST',0),(245,'transaction_loan','WAIVEINTERESTPORTION_LOAN_CHECKER','LOAN','WAIVEINTERESTPORTION',0),(246,'transaction_loan','WRITEOFF_LOAN_CHECKER','LOAN','WRITEOFF',0),(247,'transact
 ion_loan','CLOSE_LOAN_CHECKER','LOAN','CLOSE',0),(248,'transaction_loan','CLOSEASRESCHEDULED_LOAN_CHECKER','LOAN','CLOSEASRESCHEDULED',0),(249,'transaction_savings','DEPOSIT_SAVINGSACCOUNT','SAVINGSACCOUNT','DEPOSIT',0),(250,'transaction_savings','DEPOSIT_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','DEPOSIT',0),(251,'transaction_savings','WITHDRAWAL_SAVINGSACCOUNT','SAVINGSACCOUNT','WITHDRAWAL',0),(252,'transaction_savings','WITHDRAWAL_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','WITHDRAWAL',0),(253,'transaction_savings','ACTIVATE_SAVINGSACCOUNT','SAVINGSACCOUNT','ACTIVATE',0),(254,'transaction_savings','ACTIVATE_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','ACTIVATE',0),(255,'transaction_savings','CALCULATEINTEREST_SAVINGSACCOUNT','SAVINGSACCOUNT','CALCULATEINTEREST',0),(256,'transaction_savings','CALCULATEINTEREST_SAVINGSACCOUNT_CHECKER','SAVINGSACCOUNT','CALCULATEINTEREST',0),(257,'accounting','CREATE_GLACCOUNT','GLACCOUNT','CREATE',0),(258,'accounting','UPDATE_GLACCOUNT','GLACCOUNT','UPDA
 TE',0),(259,'accounting','DELETE_GLACCOUNT','GLACCOUNT','DELETE',0),(260,'accounting','CREATE_GLCLOSURE','GLCLOSURE','CREATE',0),(261,'accounting','UPDATE_GLCLOSURE','GLCLOSURE','UPDATE',0),(262,'accounting','DELETE_GLCLOSURE','GLCLOSURE','DELETE',0),(263,'accounting','CREATE_JOURNALENTRY','JOURNALENTRY','CREATE',0),(264,'accounting','REVERSE_JOURNALENTRY','JOURNALENTRY','REVERSE',0),(265,'report','READ_Active Loans - Details','Active Loans - Details','READ',0),(266,'report','READ_Active Loans - Summary','Active Loans - Summary','READ',0),(267,'report','READ_Active Loans by Disbursal Period','Active Loans by Disbursal Period','READ',0),(268,'report','READ_Active Loans in last installment','Active Loans in last installment','READ',0),(269,'report','READ_Active Loans in last installment Summary','Active Loans in last installment Summary','READ',0),(270,'report','READ_Active Loans Passed Final Maturity','Active Loans Passed Final Maturity','READ',0),(271,'report','READ_Active Loans Pas
 sed Final Maturity Summary','Active Loans Passed Final Maturity Summary','READ',0),(272,'report','READ_A

<TRUNCATED>


[47/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/api-docs/jquery-1.7.min.js
----------------------------------------------------------------------
diff --git a/api-docs/jquery-1.7.min.js b/api-docs/jquery-1.7.min.js
deleted file mode 100644
index 3ca5e0f..0000000
--- a/api-docs/jquery-1.7.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v1.7 jquery.com | jquery.org/license */
-(function(a,b){function cA(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cx(a){if(!cm[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cn||(cn=c.createElement("iframe"),cn.frameBorder=cn.width=cn.height=0),b.appendChild(cn);if(!co||!cn.createElement)co=(cn.contentWindow||cn.contentDocument).document,co.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),co.close();d=co.createElement(a),co.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cn)}cm[a]=e}return cm[a]}function cw(a,b){var c={};f.each(cs.concat.apply([],cs.slice(0,b)),function(){c[this]=a});return c}function cv(){ct=b}function cu(){setTimeout(cv,0);return ct=f.now()}function cl(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ck(){try{return new a.XMLHttpRequest}catch(b){}}function ce(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p
 ;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cd(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function cc(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bG.test(a)?d(a,e):cc(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e i
 n b)cc(a+"["+e+"]",b[e],c,d);else d(a,b)}function cb(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function ca(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bV,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=ca(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=ca(a,c,d,e,"*",g));return l}function b_(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bR),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bE(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bz:bA;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bB(a,b,b);if(d<0||d==null)d=a.
 style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function br(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bi,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bq(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bp(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bp)}function bp(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bo(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bn(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.ou
 terHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bm(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bl(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function X(a){var b=Y.split(" "),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nod
 eType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(){return!0}function M(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c
 ,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var 
 g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7",length:0,size:function(){return this.l
 ength},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.add(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=
 arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attac
 hEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return a!=null&&m.test(a)&&!isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))
 return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replac
 e(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(I)return I.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(a
 rguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=
 b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())}),typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return e});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=
 c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){
 i.done(a).fail(b).progress(c);return this},always:function(){return i.done.apply(i,arguments).fail.apply(i,arguments)},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Ar
 ray(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/><nav></nav>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.o
 pacity),cssFloat:!!e.style.cssFloat,unknownElems:!!a.getElementsByTagName("nav").length,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",enctype:!!c.createElement("form").enctype,submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.lastChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("b
 ody")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-999px",top:"-999px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{m
 arginRight:0}).marginRight,10)||0)===0);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;f(function(){var a,b,d,e,g,h,i=1,j="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",l="visibility:hidden;border:0;",n="style='"+j+"border:5px solid #000;padding:0;'",p="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>";m=c.getElementsByTagName("body")[0];!m||(a=c.createElement("div"),a.style.cssText=l+"width:0;height:0;position:static;top:0;margin-top:"+i+"px",m.insertBefore(a,m.firstChild),o=c.createElement("div"),o.style.cssText=j+l,o.innerHTML=p,a.appendChild(o),b=o.firstChild,d=b.firstChild,g=b.nextSibling.firstChild.firstChild,h={doesNotAddBorder:d.offsetTop!==5,doesAddBorderForTableAndCells:g.offsetTop===5},d.style.position="fixed",d.style.top="20px",h.fixedPosition=d.offsetTop===20||d.offsetTop===15,d.style.position=d.s
 tyle.top="",b.style.overflow="hidden",b.style.position="relative",h.subtractsBorderForOverflowNotVisible=d.offsetTop===-5,h.doesNotIncludeMarginInBodyOffset=m.offsetTop!==i,m.removeChild(a),o=a=null,f.extend(k,h))}),o.innerHTML="",n.removeChild(o),o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[f.expando]:a[f.expando]&&f.expando,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[f.expando]=n=++f.uuid:n=f.expando),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.exte
 nd(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[f.expando]:f.expando;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)?b=b:b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" "));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.leng
 th){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))
 }},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx"
 ;var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="stri
 ng"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}e
 lse if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];if(!arguments.length){if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}return b}e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.att
 ributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!a||j===3||j===8||j===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if
 (h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g},removeAttr:function(a,b){var c,d,e,g,h=0;if(a.nodeType===1){d=(b||"").split(p),g=d.length;for(;h<g;h++)e=d[h].toLowerCase(),c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1)}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan
 :"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return b;h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var
  e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],functi
 on(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/\.(.*)$/,A=/^(?:textarea|input|select)$/i,B=/\./g,C=/ /g,D=/[^\w\s.|`]/g,E=/^([^\.]*)?(?:\.(.+))?$/,F=/\bhover(\.\S+)?/,G=/^key/,H=/^(?:mouse|contextmenu)|click/,I=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,J=function(a){var b=I.exec(a);b&&
-(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},K=function(a,b){return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||a.id===b[2])&&(!b[3]||b[3].test(a.className))},L=function(a){return f.event.special.hover?a:a.replace(F,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=L(c).split(" ");for(k=0;k<c.length;k++){l=E.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,namespace:n.join(".")},p),g&&(o.quick=J(g),!o.quick&&f.expr.match.POS.test(g
 )&&(o.isPositional=!0)),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d){var e=f.hasData(a)&&f._data(a),g,h,i,j,k,l,m,n,o,p,q;if(!!e&&!!(m=e.events)){b=L(b||"").split(" ");for(g=0;g<b.length;g++){h=E.exec(b[g])||[],i=h[1],j=h[2];if(!i){j=j?"."+j:"";for(l in m)f.event.remove(a,l+j,c,d);return}n=f.event.special[i]||{},i=(d?n.delegateType:n.bindType)||i,p=m[i]||[],k=p.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;if(c||j||d||n.remove)for(l=0;l<p.length;l++){q=p[l];if(!c||c.guid===q.guid)if(!j||j.test(q.namespace))if(!d||d===q.selector||d==="**"&&q.selector)p.splice(l--,1),q.selector&&p.delegateCount--,n.remove&&n.remove.call(a,q)}else p.length=0;p.length==
 =0&&k!==p.length&&((!n.teardown||n.teardown.call(a,j)===!1)&&f.removeEvent(a,i,e.handle),delete m[i])}f.isEmptyObject(m)&&(o=e.handle,o&&(o.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"",(g||!e)&&c.preventDefault();if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigg
 er&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,n=null;for(m=e.parentNode;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length;l++){m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d);if(c.isPropagationStopped())break}c.type=h,c.isDefaultPrevented()||(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=(f.event.special[c.type]||{}).handle,j=[],k,l,m,n,o,p,q,r,s,
 t,u;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click"))for(m=c.target;m!=this;m=m.parentNode||this){o={},q=[];for(k=0;k<e;k++)r=d[k],s=r.selector,t=o[s],r.isPositional?t=(t||(o[s]=f(s))).index(m)>=0:t===b&&(t=o[s]=r.quick?K(m,r.quick):f(m).is(s)),t&&q.push(r);q.length&&j.push({elem:m,matches:q})}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){p=j[k],c.currentTarget=p.elem;for(l=0;l<p.matches.length&&!c.isImmediatePropagationStopped();l++){r=p.matches[l];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=(i||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCo
 de key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement wheelDelta".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.meta
 Key===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},focus:{delegateType:"focusin",noBubble:!0},blur:{delegateType:"focusout",noBubble:!0},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?N:M):this.type=a,b&&f.extend(th
 is,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=N;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=N;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=N,this.stopPropagation()},isDefaultPrevented:M,isPropagationStopped:M,isImmediatePropagationStopped:M},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]=f.event.special[b]={delegateType:b,bindType:b,handle:function(a){var b=this,c=a.relatedTarget,d=a.handleObj,e=d.selector,g,h;if(!c||d.origType===a.type||c!==b&&!f.contains(b,c))g=a.type,a.type=d.origType,h=d.handler.apply(this,arguments),a.type=g;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.
 add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(A.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;A.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&f.event.simulate("change",this.pa
 rentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return A.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=M;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)}
 )},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=M);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=argument
 s,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),G.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),H.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k
 =!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift
 (),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesS
 elector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else bre
 ak;q=a}return s},m.error=function(a){throw"Syntax error, unrecognized expression: "+a};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([
 ^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:functio
 n(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]
 -0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;
 return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){retur
 n b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.no
 deType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if
 (b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if
 (a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!=
 "undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.
 parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c
 ){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0}
 ;f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?T.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=T.test(a)||typeof a!="string
 "?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a
 ,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a
 ,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y="abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",Z=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,_=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,ba=/<([\w:]+)/,bb=/<tbody/i,bc=/<|&#?\w+;/,bd=/<(?:script|style)/i,be=/<(?:script|object|embed|option|style)/i,bf=new RegExp("<(?:"+Y.replace(" ","|")+")","i"),bg=/checked\s*(?:[^=]|=\s*.checked.)/i,bh=/\/(java|ecma)script/i,bi=/^\s*<!(?:\[CDATA\[|\-\-)/,bj={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[
 1,"<map>","</map>"],_default:[0,"",""]},bk=X(c);bj.optgroup=bj.option,bj.tbody=bj.tfoot=bj.colgroup=bj.caption=bj.thead,bj.th=bj.td,f.support.htmlSerialize||(bj._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:functi
 on(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after"
-,arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Z,""):null;if(typeof a=="string"&&!bd.test(a)&&(f.support.leadingWhitespace||!$.test(a))&&!bj[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(_,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?t
 his.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bg.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,thi
 s,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bl(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,br)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!be.test(j)&&(f.support.checkClone||!bg.test(j))&&!f.support.unknownElems&&bf.test(j)&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(va
 r h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bn(a,d),e=bo(a),g=bo(d);for(h=0;e[h];++h)g[h]&&bn(e[h],g[h])}if(b){bm(a,d);if(c){e=bo(a),g=bo(d);for(h=0;e[h];++h)bm(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bc.test(k))k=b.createTextNode(k);else{k=k.replace(_,"<$1></$2>");var l=(ba.exec(k)||["",""])[1].toLowerCase(),m=bj[l]||bj._default,n=m[0],o=b.createElement("div");b===c?bk.appendChild(o):X(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=bb.test(k),q=l==="table"&&!p?
 o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&$.test(k)&&o.insertBefore(b.createTextNode($.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bq(k[i]);else bq(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bh.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[
 f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bs=/alpha\([^)]*\)/i,bt=/opacity=([^)]*)/,bu=/([A-Z]|^ms)/g,bv=/^-?\d+(?:px)?$/i,bw=/^-?\d/,bx=/^([\-+])=([\-+.\de]+)/,by={position:"absolute",visibility:"hidden",display:"block"},bz=["Left","Right"],bA=["Top","Bottom"],bB,bC,bD;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bB(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,
 h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bx.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bB)return bB(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bE(a,b,d);f.swap(a,by,function(){e=bE(a,b,d)});return e}},set:function(a,b){if(!bv.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a
 ,b){return bt.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bs,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bs.test(g)?g.replace(bs,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bB(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bC=function(a,c){var d,e,g;c=c.replace(bu,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bD=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b]
 ,g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bv.test(f)&&bw.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bB=bC||bD,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bF=/%20/g,bG=/\[\]$/,bH=/\r?\n/g,bI=/#.*$/,bJ=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bK=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bL=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bM=/^(?:GET|HEAD)$/,bN=/^\/\//,bO=/\?/,bP=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bQ=/^(?:select|textarea)/i,bR=/\s+/,bS=/([?&])_=[^&]*/,bT=/^([\w\+\.\-]+:)(?:
 \/\/([^\/?#:]*)(?::(\d+))?)?/,bU=f.fn.load,bV={},bW={},bX,bY,bZ=["*/"]+["*"];try{bX=e.href}catch(b$){bX=c.createElement("a"),bX.href="",bX=bX.href}bY=bT.exec(bX.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bU)return bU.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bP,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bQ.test(this.nodeName)||bK.test(this.type))}
 ).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bH,"\r\n")}}):{name:b.name,value:c.replace(bH,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?cb(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),cb(a,b);return a},ajaxSettings:{url:bX,isLocal:bL.test(bY[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bZ},contents:{xml:/xml/,html:/html/,json:/j
 son/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:b_(bV),ajaxTransport:b_(bW),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cd(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=ce(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d
 &&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bJ.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bI,"").replace(bN,bY[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bR),d.crossDomain==null&&(r=bT.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bY[1]&&r[2]==bY[2]&&(r[3]||(r[1]==="http:"?80:
 443))==(bY[3]||(bY[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),ca(bV,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bM.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bO.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bS,"$1_="+x);d.url=y+(y===d.url?(bO.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bZ+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.cal
 l(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=ca(bW,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)cc(g,a[g],c,e);return d.join("&").replace(bF,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cf=f.now(),cg=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cf++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1
 &&(cg.test(b.url)||e&&cg.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cg,l),b.url===j&&(e&&(k=k.replace(cg,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function
 (f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ch=a.ActiveXObject?function(){for(var a in cj)cj[a](0,1)}:!1,ci=0,cj;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ck()||cl()}:ck,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested
 -With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ch&&delete cj[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++ci,ch&&(cj||(cj={},f(a).unload(ch)),cj[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cm={},cn,co,cp=/^(?:toggle|show|hide)$/,cq=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cr,cs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],ct;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cw("sh
 ow",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cx(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cw("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cw("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opaci
 ty",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cx(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cp.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o
 ]()):j[h]()):(k=cq.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cw("show",1),slideUp:cw("hide",1),slideToggle:cw("toggle",1),fadeIn:{opacity:"sh
 ow"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this
 .prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=ct||cu(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cr&&(cr=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),thi
 s.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=ct||cu(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c-

<TRUNCATED>


[18/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-db/old-schema-files/0004-mifosx-core-reports-utf8.sql
----------------------------------------------------------------------
diff --git a/fineract-db/old-schema-files/0004-mifosx-core-reports-utf8.sql b/fineract-db/old-schema-files/0004-mifosx-core-reports-utf8.sql
deleted file mode 100644
index b6a728b..0000000
--- a/fineract-db/old-schema-files/0004-mifosx-core-reports-utf8.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-truncate table stretchy_report;
-truncate table stretchy_parameter;
-truncate table stretchy_report_parameter;
-
-INSERT INTO `stretchy_report` VALUES (1,'Client Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n c.account_no as \"Client Account No.\",  \r\nc.display_name as \"Name\",  \n\nc.joined_date as \"Joined\", c.external_id as \"External Id\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand \n\nounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\nwhere o.id = ${officeId}\r\nand c.is_deleted=0\r\n\n\norder by ounder.hierarchy, c.account_no','Individual Client Report\r\n\r\nLists the small number of defined fields on the client table.  Would expect to copy this \n\nreport and add any \'one to one\' additional data for specific tenant needs.\r\n\r\nCan be run for any size MFI but you\'d expect it only to be run within a branch 
 for \n\nlarger ones.  Depending on how many columns are displayed, there is probably is a limit of about 20/50k clients returned for html display (export to excel doesn\'t \n\nhave that client browser/memory impact).',1,1),(2,'Client Loans Listing','Table',NULL,'Client','select \r\nconcat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client \n\nAccount No.\", \r\nc.display_name as \"Name\", \r\nlo.display_name as \"Loan Officer\", l.account_no as \"Loan Account No.\", l.external_id as \"External Id\", \r\n\n\np.name as Loan, st.enum_message_property as \"Status\",  \r\nf.`name` as Fund, purp.code_value as \"Loan Purpose\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,  \r\nl.principal_amount,\n\n\r\nl.arrearstolerance_amount as \"Arrears Tolerance Amount\",\r\nl.number_of_repayments as \"Expected No. Repayments\",\r\nl.annual_nominal_interest_rate
  as \" Annual \n\nNominal Interest Rate\", \r\nl.nominal_interest_rate_per_period as \"Nominal Interest Rate Per Period\",\r\n\r\nipf.enum_message_property as \"Interest Rate Frequency\n\n\",\r\nim.enum_message_property as \"Interest Method\",\r\nicp.enum_message_property as \"Interest Calculated in Period\",\r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.repay_every as \"Repayment Frequency\",\r\nrf.enum_message_property as \"Repayment Frequency Period\",\n\n\r\nam.enum_message_property as \"Amortization\",\r\n\r\nl.total_charges_due_at_disbursement_derived as \"Total Charges Due At Disbursement\",\r\n\r\ndate( \n\nl.submittedon_date) as Submitted, date(l.approvedon_date) Approved, l.expected_disbursedon_date As \"Expected Disbursal\",\r\ndate(l.expected_firstrepaymenton_date) as \n\n\"Expected First Repayment\", date(l.interest_calculated_from_date) as \"Interest Calculated From\" ,\r\ndate(l.disbursedon_date) as Disbu
 rsed, date\n\n(l.expected_maturedon_date) \"Expected Maturity\",\r\ndate(l.maturedon_date) as \"Matured On\", date(l.closedon_date) as Closed,\r\ndate(l.rejectedon_date) as \n\nRejected, date(l.rescheduledon_date) as Rescheduled, \r\ndate(l.withdrawnon_date) as Withdrawn, date(l.writtenoffon_date) \"Written Off\"\r\nfrom m_office o \r\njoin \n\nm_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on \n\nc.office_id = ounder.id\r\nleft join m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_product_loan p on p.id = \n\nl.product_id\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join r_enum_value st on st.enum_name = \"loan_status_id\" and st.enum_id = l.loan_status_id\r\nleft join \n\nr_enum_value ipf on ipf.enum_name = \"interest_period_frequency_enum\" and ipf.enum_id = l.interest_period_frequency_enum\r\nleft join r_enum_value
  im on im.enum_name \n\n= \"interest_method_enum\" and im.enum_id = l.interest_method_enum\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = \n\nl.term_period_frequency_enum\r\nleft join r_enum_value icp on icp.enum_name = \"interest_calculated_in_period_enum\" and icp.enum_id = \n\nl.interest_calculated_in_period_enum\r\nleft join r_enum_value rf on rf.enum_name = \"repayment_period_frequency_enum\" and rf.enum_id = \n\nl.repayment_period_frequency_enum\r\nleft join r_enum_value am on am.enum_name = \"amortization_method_enum\" and am.enum_id = l.amortization_method_enum\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\n\r\nleft \n\njoin m_currency cur on cur.code = l.currency_code\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand \n\n(l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId
 }\" or \"-1\" = \n\n\"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\norder by ounder.hierarchy, 2 , l.id','Individual Client Report\r\n\r\nPretty \n\nwide report that lists the basic details of client loans.  \r\n\r\nCan be run for any size MFI but you\'d expect it only to be run within a branch for larger ones.  \n\nThere is probably is a limit of about 20/50k clients returned for html display (export to excel doesn\'t have that client browser/memory impact).',1,1),(5,'Loans Awaiting Disbursal','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No\", c.display_name as \"Name\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund, ifnull(cur.display_symbol, l
 .currency_code) as Currency,  \r\nl.principal_amount as Principal,  \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\",\r\ndate(l.approvedon_date) \"Approved\",\r\ndatediff(l.expected_disbursedon_date, curdate()) as \"Days to Disbursal\",\r\ndate(l.expected_disbursedon_date) \"Expected Disbursal\",\r\npurp.code_value as \"Loan Purpose\",\r\n lo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on p
 urp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\norder by ounder.hierarchy, datediff(l.expected_disbursedon_date, curdate()),  c.account_no','Individual Client Report',1,1),(6,'Loans Awaiting Disbursal Summary','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifn
 ull(cur.display_symbol, l.currency_code) as Currency,  f.`name` as Fund,\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurp
 ose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code,  f.`name`\r\norder by ounder.hierarchy, pl.`name`, l.currency_code,  f.`name`','Individual Client Report',1,1),(7,'Loans Awaiting Disbursal Summary by Month','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\",   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\npl.`name` as \"Product\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency,  \r\nyear(l.expected_disbursedon_date) as \"Year\", \r\nmonthname(l.expected_disbursedon_date) as \"Month\",\r\nsum(l.principal_amount) as Principal\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product
 _loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 200\r\ngroup by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)\r\norder by ounder.hierarchy, pl.`name`, l.currency_code, year(l.expected_disbursedon_date), month(l.expected_disbursedon_date)','Individual Client Report',1,1),(8,
 'Loans Pending Approval','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client Name\", \r\nifnull(cur.display_symbol, l.currency_code) as Currency,  pl.`name` as \"Product\", \r\nl.account_no as \"Loan Account No.\", \r\nl.principal_amount as \"Loan Amount\", \r\nl.term_frequency as \"Term Frequency\",\n\n\r\ntf.enum_message_property as \"Term Frequency Period\",\r\nl.annual_nominal_interest_rate as \" Annual \n\nNominal Interest Rate\", \r\ndatediff(curdate(), l.submittedon_date) \"Days Pending Approval\", \r\npurp.code_value as \"Loan Purpose\",\r\nlo.display_name as \"Loan Officer\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_i
 d = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join r_enum_value tf on tf.enum_name = \"term_period_frequency_enum\" and tf.enum_id = l.term_period_frequency_enum\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 100 /*Submitted and awaiting approval */\r\norder by ounder.hierarchy, l.submittedon_date,  l.account_no','Individual Client Report',1,1),(11,'Active Loans - Summary','Table',NULL,'Loan','select concat(repe
 at(\"..\",   \r\n   ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\n x.client_count as \"No. of Clients\", x.active_loan_count as \"No. Active Loans\", x. loans_in_arrears_count as \"No. of Loans in Arrears\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r
 \n	(case\r\n	when ${parType} = 1 then\r\n    cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n	when ${parType} = 2 then\r\n    cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n	when ${parType} = 3 then\r\n    cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding), 2) as char)\r\n	when ${parType} = 4 then\r\n    cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue + x.penalties_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding + x.penalties_overdue), 2) as char)\r\n	else \"invalid PAR Type\"\r\n	end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as  ac
 tive_loan_count,\r\ncount(distinct(if(laa.loan_id is not null,  l.id, null)  )) as loans_in_arrears_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(laa.principal_overdue_derived) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(laa.interest_overdue_derived) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived)  as fees_outstanding,\r\nsum(laa.fee_charges_overdue_derived) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsu
 m(laa.penalty_charges_overdue_derived) as penalties_overdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NUL
 L,1,1),(12,'Active Loans - Details','Table',NULL,'Loan','select concat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund,  \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overd
 ue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived  as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\npenalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\
 " or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(13,'Obligation Met Loans Details','Table',NULL,'Loan','select concat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No.\", c.display_name as \"Client\",\r\nl.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund,  \r\nl.principal_amount as \"Loan Amount\",
  \r\nl.total_repayment_derived  as \"Total Repaid\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", \r\ndate(l.closedon_date) as \"Closed\",\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${c
 urrencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n	when ${obligDateType} = 1 then\r\n    l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n	when ${obligDateType} = 2 then\r\n    l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n	else 1 = 1\r\n	end)\r\nand l.loan_status_id = 600\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(14,'Obligation Met Loans Summary','Table',NULL,'Loan','select concat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(
 cur.display_symbol, l.currency_code) as Currency,\r\ncount(distinct(c.id)) as \"No. of Clients\",\r\ncount(distinct(l.id)) as \"No. of Loans\",\r\nsum(l.principal_amount) as \"Total Loan Amount\", \r\nsum(l.principal_repaid_derived) as \"Total Principal Repaid\",\r\nsum(l.interest_repaid_derived) as \"Total Interest Repaid\",\r\nsum(l.fee_charges_repaid_derived) as \"Total Fees Repaid\",\r\nsum(l.penalty_charges_repaid_derived) as \"Total Penalties Repaid\",\r\nsum(l.interest_waived_derived) as \"Total Interest Waived\",\r\nsum(l.fee_charges_waived_derived) as \"Total Fees Waived\",\r\nsum(l.penalty_charges_waived_derived) as \"Total Penalties Waived\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo
 .id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand (case\r\n	when ${obligDateType} = 1 then\r\n    l.closedon_date between \'${startDate}\' and \'${endDate}\'\r\n	when ${obligDateType} = 2 then\r\n    l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\n	else 1 = 1\r\n	end)\r\nand l.loan_status_id = 600\r\ngroup by ounder.hierarchy, l.currency_code\r\norder by ounder.hierarchy, l.currency_code','Individual Client \n\nReport',1,1),(15,'Portfolio at Risk','Table',NULL,'Loan','
 select x.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n	(case\r\n	when ${parType} = 1 then\r\n    cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n	when ${parType} = 2 then\r\n    cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n	when ${parType} = 3 then\r\n    cast(round(((x.`Principal Overdue` + x.`Interest Overdue` + x.`Fees Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding` + x.`Fees Outstanding`), 2) as char)\r\n	when ${parType} = 4 then\r\n    cast(round(((x.`Principal Overdue` + x.`Interest Overdue` + x.`Fees Overdue` + x.`Penalties Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding` + x.`Fees Outstanding` + x.`Penalties Overdue`), 2) as char)\r\n	el
 se \"invalid PAR Type\"\r\n	end) as \"Portfolio at Risk %\"\r\n from \r\n(select  ifnull(cur.display_symbol, l.currency_code) as Currency,  \r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived)  as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin  m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_
 id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\ngroup by l.currency_code\r\norder by l.currency_code) x','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue 
 (possibly waived and written off too)',1,1),(16,'Portfolio at Risk by Branch','Table',NULL,'Loan','select concat(repeat(\"..\",   \r\n   ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\",\r\nx.Currency, x.`Principal Outstanding`, x.`Principal Overdue`, x.`Interest Outstanding`, x.`Interest Overdue`, \r\nx.`Fees Outstanding`, x.`Fees Overdue`, x.`Penalties Outstanding`, x.`Penalties Overdue`,\r\n\r\n	(case\r\n	when ${parType} = 1 then\r\n    cast(round((x.`Principal Overdue` * 100) / x.`Principal Outstanding`, 2) as char)\r\n	when ${parType} = 2 then\r\n    cast(round(((x.`Principal Overdue` + x.`Interest Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding`), 2) as char)\r\n	when ${parType} = 3 then\r\n    cast(round(((x.`Principal Overdue` + x.`Interest Overdue` + x.`Fees Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding` + x.`Fees Outstanding`), 2) as char)\r\n	when ${parType} = 
 4 then\r\n    cast(round(((x.`Principal Overdue` + x.`Interest Overdue` + x.`Fees Overdue` + x.`Penalties Overdue`) * 100) / (x.`Principal Outstanding` + x.`Interest Outstanding` + x.`Fees Outstanding` + x.`Penalties Overdue`), 2) as char)\r\n	else \"invalid PAR Type\"\r\n	end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select  ounder.id as \"branch\", ifnull(cur.display_symbol, l.currency_code) as Currency,  \r\n\r\nsum(l.principal_outstanding_derived) as \"Principal Outstanding\",\r\nsum(laa.principal_overdue_derived) as \"Principal Overdue\",\r\n\r\nsum(l.interest_outstanding_derived) as \"Interest Outstanding\",\r\nsum(laa.interest_overdue_derived) as \"Interest Overdue\",\r\n\r\nsum(l.fee_charges_outstanding_derived)  as \"Fees Outstanding\",\r\nsum(laa.fee_charges_overdue_derived) as \"Fees Overdue\",\r\n\r\nsum(penalty_charges_outstanding_derived) as \"Penalties Outstanding\",\r\nsum(laa.penalty_charges_overdue_derived) as \"Penalties Overdue\"\r\n\r\nfrom m
 _office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin  m_loan l on l.client_id = c.id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_code_value purp on purp.id = l.loanpurpose_cv_id\r\nleft join m_product_loan p on p.id = l.product_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId
 })\r\nand l.loan_status_id = 300\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency','Covers all loans.\r\n\r\nFor larger MFIs … we should add some derived fields on loan (or a 1:1 loan related table like mifos 2.x does)\r\nPrinciple, Interest, Fees, Penalties Outstanding and Overdue (possibly waived and written off too)',1,1),(20,'Funds Disbursed Between Dates Summary','Table',NULL,'Fund','select ifnull(f.`name`, \'-\') as Fund,  ifnull(cur.display_symbol, l.currency_code) as Currency, \r\nround(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office ounder \r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (l.currency_code = \'${currencyId}\' or \'-1\' = \'
 ${currencyId}\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\ngroup by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)\r\norder by ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(21,'Funds Disbursed Between Dates Summary by Office','Table',NULL,'Fund','select \r\nconcat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\n \n\nifnull(f.`name`, \'-\') as Fund,  ifnull(cur.display_symbol, l.currency_code) as Currency, round(sum(l.principal_amount), 4) as disbursed_amount\r\nfrom m_office o\r\n\n\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c \n\non c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_currency cur on cur.`code` = l.currency_code\r\nleft join m_fund f o
 n f.id = l.fund_id\r\n\n\nwhere disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand o.id = ${officeId}\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand \n\n(l.currency_code = \'${currencyId}\' or \'-1\' = \'${currencyId}\')\r\ngroup by ounder.`name`,  ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, \n\nl.currency_code)\r\norder by ounder.`name`,  ifnull(f.`name`, \'-\') , ifnull(cur.display_symbol, l.currency_code)',NULL,1,1),(48,'Balance Sheet','Pentaho',NULL,'Accounting',NULL,'Balance Sheet',1,1),(49,'Income Statement','Pentaho',NULL,'Accounting',NULL,'Profit and Loss Statement',1,1),(50,'Trial Balance','Pentaho',NULL,'Accounting',NULL,'Trial Balance Report',1,1),(51,'Written-Off Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency,  \r\nc.ac
 count_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Written-Off Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Written-Off Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Written-Off Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Written-Off Penalties\',\r\nn.note AS \'Reason For Write-Off\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_sta
 ff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 6 /*write-off */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=601\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\") \r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Written Off Loans',1,1),(52,'Aging Detail','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency,  \r\nmc.account_no as \"Client Account No.\"
 ,\r\n 	mc.display_name AS \"Client Name\",\r\n 	ml.account_no AS \"Account Number\",\r\n 	ml.principal_amount AS \"Loan Amount\",\r\n ml.principal_disbursed_derived AS \"Original Principal\",\r\n ml.interest_charged_derived AS \"Original Interest\",\r\n ml.principal_repaid_derived AS \"Principal Paid\",\r\n ml.interest_repaid_derived AS \"Interest Paid\",\r\n laa.principal_overdue_derived AS \"Principal Overdue\",\r\n laa.interest_overdue_derived AS \"Interest Overdue\",\r\nDATEDIFF(CURDATE(), laa.overdue_since_date_derived) as \"Days in Arrears\",\r\n\r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<7, \'<1\', \r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<8, \' 1\', \r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<15,  \'2\', \r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<22, \' 3\', \r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<29, \' 4\', \r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<36, \' 5\', \r\
 n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<43, \' 6\', \r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<50, \' 7\', \r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<57, \' 8\', \r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<64, \' 9\', \r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<71, \'10\', \r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<78, \'11\', \r\n 	IF(DATEDIFF(CURDATE(), laa.overdue_since_date_derived)<85, \'12\', \'12+\')))))))))))) )AS \"Weeks In Arrears Band\",\r\n\r\n		IF(DATEDIFF(CURDATE(),  laa.overdue_since_date_derived)<31, \'0 - 30\', \r\n		IF(DATEDIFF(CURDATE(),  laa.overdue_since_date_derived)<61, \'30 - 60\', \r\n		IF(DATEDIFF(CURDATE(),  laa.overdue_since_date_derived)<91, \'60 - 90\', \r\n		IF(DATEDIFF(CURDATE(),  laa.overdue_since_date_derived)<181, \'90 - 180\', \r\n		IF(DATEDIFF(CURDATE(),  laa.overdue_since_date_derived)<361, \'180 - 360\', \r\n				 \'> 360\'))))) AS \"Days in
  Arrears Band\"\r\n\r\n	FROM m_office mo \r\n    JOIN m_office ounder ON ounder.hierarchy like concat(mo.hierarchy, \'%\')\r\n	        AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n    INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n	    INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n	    INNER JOIN r_enum_value rev ON rev.enum_id=ml.loan_status_id\r\n    INNER JOIN m_loan_arrears_aging laa ON laa.loan_id=ml.id\r\n    left join m_currency cur on cur.code = ml.currency_code\r\n	WHERE ml.loan_status_id=300\r\n    AND mo.id=${officeId}\r\nORDER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Loan arrears aging (Weeks)',1,1),(53,'Aging Summary (Arrears in Weeks)','Table',NULL,'Loan','SELECT \r\n  IFNULL(periods.currencyName, periods.currency) as currency, \r\n  periods.period_no \'Weeks In Arrears (Up To)\', \r\n  IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n  IFNULL(ars.principal,0.0) \'Original Principal\', \r\n  IFNULL(a
 rs.interest,0.0) \'Original Interest\', \r\n  IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n  IFNULL(ars.intPaid,0.0) \'Interest Paid\', \r\n  IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n  IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n	/* full table of aging periods/currencies used combo to ensure each line represented */\r\n  (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n	(SELECT \'On Schedule\' period_no,1 pid UNION\r\n		SELECT \'1\',2 UNION\r\n		SELECT \'2\',3 UNION\r\n		SELECT \'3\',4 UNION\r\n		SELECT \'4\',5 UNION\r\n		SELECT \'5\',6 UNION\r\n		SELECT \'6\',7 UNION\r\n		SELECT \'7\',8 UNION\r\n		SELECT \'8\',9 UNION\r\n		SELECT \'9\',10 UNION\r\n		SELECT \'10\',11 UNION\r\n		SELECT \'11\',12 UNION\r\n		SELECT \'12\',13 UNION\r\n		SELECT \'12+\',14) pers,\r\n	(SELECT distinctrow moc.code, moc.name\r\n  	FROM m_office mo2\r\n   	INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n				LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND 
 ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n   	INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n   	INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n	INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n	WHERE ml2.loan_status_id=300 /* active */\r\n	AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n  	z.currency, z.arrPeriod, \r\n	COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n	SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n	SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n	/*derived table just used to get arrPeriod value (was much slower to\r\n	duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n	(SELECT x.loa
 nId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<8, \'1\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<15, \'2\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<22, \'3\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<29, \'4\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<36, \'5\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<43, \'6\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<50, \'7\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<57, \'8\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<64, \'9\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<71, \'10\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<78, \'11\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<85, \'12\',\r\n				 \'12+\'))))))))))))) AS arrPeriod\r\n\r\n	FROM /* get the individual loan details */\r\n		(SELECT ml.id AS loanId, ml.currency_code as currency,\r\n   			ml.
 principal_disbursed_derived as principal, \r\n			   ml.interest_charged_derived as interest, \r\n   			ml.principal_repaid_derived as prinPaid, \r\n			   ml.interest_repaid_derived intPaid,\r\n\r\n			   laa.principal_overdue_derived as prinOverdue,\r\n			   laa.interest_overdue_derived as intOverdue,\r\n\r\n			   IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n			  \r\n  		FROM m_office mo\r\n   		INNER JOIN m_office ounder ON ounder.hierarchy \r\n				LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n   		INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n   		INNER JOIN m_loan ml ON ml.client_id = mc.id\r\n		   LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n		WHERE ml.loan_status_id=300 /* active */\r\n     		AND mo.id=${officeId}\r\n     AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n  		GROUP BY ml.id) x\r\n	) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON
  ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(54,'Rescheduled Loans','Table',NULL,'Loan','SELECT \r\nconcat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, ml.currency_code) as Currency,  \r\nc.account_no as \"Client Account No.\",\r\nc.display_name AS \'Client Name\',\r\nml.account_no AS \'Loan Account No.\',\r\nmpl.name AS \'Product Name\',\r\nml.disbursedon_date AS \'Disbursed Date\',\r\nlt.transaction_date AS \'Written Off date\',\r\nml.principal_amount as \"Loan Amount\",\r\nifnull(lt.principal_portion_derived, 0) AS \'Rescheduled Principal\',\r\nifnull(lt.interest_portion_derived, 0) AS \'Rescheduled Interest\',\r\nifnull(lt.fee_charges_portion_derived,0) AS \'Rescheduled Fees\',\r\nifnull(lt.penalty_charges_portion_derived,0) AS \'Rescheduled
  Penalties\',\r\nn.note AS \'Reason For Rescheduling\',\r\nIFNULL(ms.display_name,\'-\') AS \'Loan Officer Name\'\r\nFROM m_office o\r\nJOIN m_office ounder ON ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\nJOIN m_client c ON c.office_id = ounder.id\r\nJOIN m_loan ml ON ml.client_id = c.id\r\nJOIN m_product_loan mpl ON mpl.id=ml.product_id\r\nLEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\nJOIN m_loan_transaction lt ON lt.loan_id = ml.id\r\nLEFT JOIN m_note n ON n.loan_transaction_id = lt.id\r\nLEFT JOIN m_currency cur on cur.code = ml.currency_code\r\nWHERE lt.transaction_type_enum = 7 /*marked for rescheduling */\r\nAND lt.is_reversed is false \r\nAND ml.loan_status_id=602\r\nAND o.id=${officeId}\r\nAND (mpl.id=${loanProductId} OR ${loanProductId}=-1)\r\nAND lt.transaction_date BETWEEN \'${startDate}\' AND \'${endDate}\'\r\nAND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nOR
 DER BY ounder.hierarchy, ifnull(cur.display_symbol, ml.currency_code), ml.account_no','Individual Lending Report. Rescheduled Loans.  The ability to reschedule (or mark that you have rescheduled the loan elsewhere) is a legacy of the older Mifos product.  Needed for migration.',1,1),(55,'Active Loans Passed Final Maturity','Table',NULL,'Loan','select concat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", \r\nc.display_name as \"Client\", l.account_no as \"Loan Account No.\", pl.`name` as \"Product\", \r\nf.`name` as Fund,  \r\nl.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\ndate(l.expected_maturedon_date) as \"Expected Matured On\",\r\n\r\nl.principal_repaid_derived a
 s \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl.fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived  as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.p
 roduct_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(56,'Active Loans Passed Final Maturity Summary','Table',NULL,'Loan','select concat(repeat(\"..\",   \r\n   ((LENGTH(mo.`hierarchy`) - LENGTH(REPL
 ACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\n x.client_count as \"No. of Clients\", x.active_loan_count as \"No. Active Loans\", x. arrears_loan_count as \"No. of Loans in Arrears\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n	(case\r\n	when ${parType} = 1 then\r\n    cast(round((x.pri
 ncipal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n	when ${parType} = 2 then\r\n    cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n	when ${parType} = 3 then\r\n    cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding), 2) as char)\r\n	when ${parType} = 4 then\r\n    cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue + x.penalties_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding + x.penalties_overdue), 2) as char)\r\n	else \"invalid PAR Type\"\r\n	end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select ounder.id as branch,\r\nifnull(cur.display_symbol, l.currency_code) as currency,\r\ncount(distinct(c.id)) as client_count, \r\ncount(distinct(l.id)) as  active_loan_count,\r\ncount(distinct(laa.loan_id)  ) as arrears_
 loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,\r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived)  as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_ove
 rdue\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\n\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand l.expected_maturedon_date < curdate()\r\ngroup by ounder.id, l.currency_code) x on x.branch = mo.id\r\norder by mo.hierarchy, x.Currency',NULL,1,1),(57
 ,'Active Loans in last installment','Table',NULL,'Loan','select concat(repeat(\"..\",   \r\n   ((LENGTH(lastInstallment.`hierarchy`) - LENGTH(REPLACE(lastInstallment.`hierarchy`, \'.\', \'\')) - 1))), lastInstallment.branch) as \"Office/Branch\",\r\nlastInstallment.Currency,\r\nlastInstallment.`Loan Officer`, \r\nlastInstallment.`Client Account No`, lastInstallment.`Client`, \r\nlastInstallment.`Loan Account No`, lastInstallment.`Product`, \r\nlastInstallment.`Fund`,  lastInstallment.`Loan Amount`, \r\nlastInstallment.`Annual Nominal Interest Rate`, \r\nlastInstallment.`Disbursed`, lastInstallment.`Expected Matured On` ,\r\n\r\nl.principal_repaid_derived as \"Principal Repaid\",\r\nl.principal_outstanding_derived as \"Principal Outstanding\",\r\nlaa.principal_overdue_derived as \"Principal Overdue\",\r\n\r\nl.interest_repaid_derived as \"Interest Repaid\",\r\nl.interest_outstanding_derived as \"Interest Outstanding\",\r\nlaa.interest_overdue_derived as \"Interest Overdue\",\r\n\r\nl
 .fee_charges_repaid_derived as \"Fees Repaid\",\r\nl.fee_charges_outstanding_derived  as \"Fees Outstanding\",\r\nlaa.fee_charges_overdue_derived as \"Fees Overdue\",\r\n\r\nl.penalty_charges_repaid_derived as \"Penalties Repaid\",\r\nl.penalty_charges_outstanding_derived as \"Penalties Outstanding\",\r\nlaa.penalty_charges_overdue_derived as \"Penalties Overdue\"\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as Fund,  l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_of
 fice o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r
 \nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\norder by lastInstallment.hierarchy, lastInstallment.Currency, lastInstallment.`Client Account No`, lastInstallment.`Loan Account No`','Individual Client \n\nReport',1,1),(58,'Active Loans in last installment Summary','Table',NULL,'Loan','select concat(repeat(\"..\",   \r\n   ((LENGTH(mo.`hierarchy`) - LENGTH(REPLACE(mo.`hierarchy`, \'.\', \'\')) - 1))), mo.`name`) as \"Office/Branch\", x.currency as Currency,\r\n x.client_count as \"No. of Clients\", x.active_loan_count as \"No. Active Loans\", x. arrears_loan_count as \"No. of Loans in Arrears\",\r\nx.principal as \"Total Loans Disbursed\", x.principal_repaid as \"Principal Repaid\", x.principal_outstanding as \"Principal Outstanding\", x.principal_overdue as \"Principal Overdue\",\r\nx.interest as \"Total
  Interest\", x.interest_repaid as \"Interest Repaid\", x.interest_outstanding as \"Interest Outstanding\", x.interest_overdue as \"Interest Overdue\",\r\nx.fees as \"Total Fees\", x.fees_repaid as \"Fees Repaid\", x.fees_outstanding as \"Fees Outstanding\", x.fees_overdue as \"Fees Overdue\",\r\nx.penalties as \"Total Penalties\", x.penalties_repaid as \"Penalties Repaid\", x.penalties_outstanding as \"Penalties Outstanding\", x.penalties_overdue as \"Penalties Overdue\",\r\n\r\n	(case\r\n	when ${parType} = 1 then\r\n    cast(round((x.principal_overdue * 100) / x.principal_outstanding, 2) as char)\r\n	when ${parType} = 2 then\r\n    cast(round(((x.principal_overdue + x.interest_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding), 2) as char)\r\n	when ${parType} = 3 then\r\n    cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding), 2) as char)\r\n	when ${parType} = 4 th
 en\r\n    cast(round(((x.principal_overdue + x.interest_overdue + x.fees_overdue + x.penalties_overdue) * 100) / (x.principal_outstanding + x.interest_outstanding + x.fees_outstanding + x.penalties_overdue), 2) as char)\r\n	else \"invalid PAR Type\"\r\n	end) as \"Portfolio at Risk %\"\r\n from m_office mo\r\njoin \r\n(select lastInstallment.branchId as branchId,\r\nlastInstallment.Currency,\r\ncount(distinct(lastInstallment.clientId)) as client_count, \r\ncount(distinct(lastInstallment.loanId)) as  active_loan_count,\r\ncount(distinct(laa.loan_id)  ) as arrears_loan_count,\r\n\r\nsum(l.principal_disbursed_derived) as principal,\r\nsum(l.principal_repaid_derived) as principal_repaid,\r\nsum(l.principal_outstanding_derived) as principal_outstanding,\r\nsum(ifnull(laa.principal_overdue_derived,0)) as principal_overdue,\r\n\r\nsum(l.interest_charged_derived) as interest,\r\nsum(l.interest_repaid_derived) as interest_repaid,\r\nsum(l.interest_outstanding_derived) as interest_outstanding,
 \r\nsum(ifnull(laa.interest_overdue_derived,0)) as interest_overdue,\r\n\r\nsum(l.fee_charges_charged_derived) as fees,\r\nsum(l.fee_charges_repaid_derived) as fees_repaid,\r\nsum(l.fee_charges_outstanding_derived)  as fees_outstanding,\r\nsum(ifnull(laa.fee_charges_overdue_derived,0)) as fees_overdue,\r\n\r\nsum(l.penalty_charges_charged_derived) as penalties,\r\nsum(l.penalty_charges_repaid_derived) as penalties_repaid,\r\nsum(l.penalty_charges_outstanding_derived) as penalties_outstanding,\r\nsum(ifnull(laa.penalty_charges_overdue_derived,0)) as penalties_overdue\r\n\r\nfrom \r\n(select l.id as loanId, l.number_of_repayments, min(r.installment), \r\nounder.id as branchId, ounder.hierarchy, ounder.`name` as branch, \r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nlo.display_name as \"Loan Officer\", c.id as clientId, c.account_no as \"Client Account No\",\r\nc.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`name` as \"Product\", \r\nf.`name` as 
 Fund,  l.principal_amount as \"Loan Amount\", \r\nl.annual_nominal_interest_rate as \"Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed\", date(l.expected_maturedon_date) as \"Expected Matured On\"\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_repayment_schedule r on r.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \
 "${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.loan_status_id = 300\r\nand r.completed_derived is false\r\nand r.duedate >= curdate()\r\ngroup by l.id\r\nhaving l.number_of_repayments = min(r.installment)) lastInstallment\r\njoin m_loan l on l.id = lastInstallment.loanId\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\ngroup by lastInstallment.branchId) x on x.branchId = mo.id\r\norder by mo.hierarchy, x.Currency','Individual Client \n\nReport',1,1),(59,'Active Loans by Disbursal Period','Table',NULL,'Loan','select concat(repeat(\"..\",   \r\n   ((LENGTH(ounder.`hierarchy`) - LENGTH(REPLACE(ounder.`hierarchy`, \'.\', \'\')) - 1))), ounder.`name`) as \"Office/Branch\",\r\nifnull(cur.display_symbol, l.currency_code) as Currency,\r\nc.account_no as \"Client Account No\", c.display_name as \"Client\", l.account_no as \"Loan Account No\", pl.`na
 me` as \"Product\", \r\nf.`name` as Fund,  \r\nl.principal_amount as \"Loan Principal Amount\", \r\nl.annual_nominal_interest_rate as \" Annual Nominal Interest Rate\", \r\ndate(l.disbursedon_date) as \"Disbursed Date\", \r\n\r\nl.total_expected_repayment_derived as \"Total Loan (P+I+F+Pen)\",\r\nl.total_repayment_derived as \"Total Repaid (P+I+F+Pen)\",\r\nlo.display_name as \"Loan Officer\"\r\n\r\nfrom m_office o \r\njoin m_office ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\nand ounder.hierarchy like concat(\'${currentUserHierarchy}\', \'%\')\r\njoin m_client c on c.office_id = ounder.id\r\njoin m_loan l on l.client_id = c.id\r\njoin m_product_loan pl on pl.id = l.product_id\r\nleft join m_staff lo on lo.id = l.loan_officer_id\r\nleft join m_currency cur on cur.code = l.currency_code\r\nleft join m_fund f on f.id = l.fund_id\r\nleft join m_loan_arrears_aging laa on laa.loan_id = l.id\r\nwhere o.id = ${officeId}\r\nand (l.currency_code = \"${currencyId}\" or \"-1\"
  = \"${currencyId}\")\r\nand (l.product_id = \"${loanProductId}\" or \"-1\" = \"${loanProductId}\")\r\nand (ifnull(l.loan_officer_id, -10) = \"${loanOfficerId}\" or \"-1\" = \"${loanOfficerId}\")\r\nand (ifnull(l.fund_id, -10) = ${fundId} or -1 = ${fundId})\r\nand (ifnull(l.loanpurpose_cv_id, -10) = ${loanPurposeId} or -1 = ${loanPurposeId})\r\nand l.disbursedon_date between \'${startDate}\' and \'${endDate}\'\r\nand l.loan_status_id = 300\r\ngroup by l.id\r\norder by ounder.hierarchy, l.currency_code, c.account_no, l.account_no','Individual Client \n\nReport',1,1),(61,'Aging Summary (Arrears in Months)','Table',NULL,'Loan','SELECT \r\n  IFNULL(periods.currencyName, periods.currency) as currency, \r\n  periods.period_no \'Days In Arrears\', \r\n  IFNULL(ars.loanId, 0) \'No Of Loans\', \r\n  IFNULL(ars.principal,0.0) \'Original Principal\', \r\n  IFNULL(ars.interest,0.0) \'Original Interest\', \r\n  IFNULL(ars.prinPaid,0.0) \'Principal Paid\', \r\n  IFNULL(ars.intPaid,0.0) \'Interest
  Paid\', \r\n  IFNULL(ars.prinOverdue,0.0) \'Principal Overdue\', \r\n  IFNULL(ars.intOverdue,0.0)\'Interest Overdue\'\r\nFROM \r\n	/* full table of aging periods/currencies used combo to ensure each line represented */\r\n  (SELECT curs.code as currency, curs.name as currencyName, pers.* from\r\n	(SELECT \'On Schedule\' period_no,1 pid UNION\r\n		SELECT \'0 - 30\',2 UNION\r\n		SELECT \'30 - 60\',3 UNION\r\n		SELECT \'60 - 90\',4 UNION\r\n		SELECT \'90 - 180\',5 UNION\r\n		SELECT \'180 - 360\',6 UNION\r\n		SELECT \'> 360\',7 ) pers,\r\n	(SELECT distinctrow moc.code, moc.name\r\n  	FROM m_office mo2\r\n   	INNER JOIN m_office ounder2 ON ounder2.hierarchy \r\n				LIKE CONCAT(mo2.hierarchy, \'%\')\r\nAND ounder2.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n   	INNER JOIN m_client mc2 ON mc2.office_id=ounder2.id\r\n   	INNER JOIN m_loan ml2 ON ml2.client_id = mc2.id\r\n	INNER JOIN m_organisation_currency moc ON moc.code = ml2.currency_code\r\n	WHERE ml2.loan_status_id=30
 0 /* active */\r\n	AND mo2.id=${officeId}\r\nAND (ml2.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")) curs) periods\r\n\r\n\r\nLEFT JOIN /* table of aging periods per currency with gaps if no applicable loans */\r\n(SELECT \r\n  	z.currency, z.arrPeriod, \r\n	COUNT(z.loanId) as loanId, SUM(z.principal) as principal, SUM(z.interest) as interest, \r\n	SUM(z.prinPaid) as prinPaid, SUM(z.intPaid) as intPaid, \r\n	SUM(z.prinOverdue) as prinOverdue, SUM(z.intOverdue) as intOverdue\r\nFROM\r\n	/*derived table just used to get arrPeriod value (was much slower to\r\n	duplicate calc of minOverdueDate in inner query)\r\nmight not be now with derived fields but didn’t check */\r\n	(SELECT x.loanId, x.currency, x.principal, x.interest, x.prinPaid, x.intPaid, x.prinOverdue, x.intOverdue,\r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<1, \'On Schedule\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<31, \'0 - 30\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<61, \'30 - 60\', \r\n	
 	IF(DATEDIFF(CURDATE(), minOverdueDate)<91, \'60 - 90\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<181, \'90 - 180\', \r\n		IF(DATEDIFF(CURDATE(), minOverdueDate)<361, \'180 - 360\', \r\n				 \'> 360\')))))) AS arrPeriod\r\n\r\n	FROM /* get the individual loan details */\r\n		(SELECT ml.id AS loanId, ml.currency_code as currency,\r\n   			ml.principal_disbursed_derived as principal, \r\n			   ml.interest_charged_derived as interest, \r\n   			ml.principal_repaid_derived as prinPaid, \r\n			   ml.interest_repaid_derived intPaid,\r\n\r\n			   laa.principal_overdue_derived as prinOverdue,\r\n			   laa.interest_overdue_derived as intOverdue,\r\n\r\n			   IFNULL(laa.overdue_since_date_derived, curdate()) as minOverdueDate\r\n			  \r\n  		FROM m_office mo\r\n   		INNER JOIN m_office ounder ON ounder.hierarchy \r\n				LIKE CONCAT(mo.hierarchy, \'%\')\r\nAND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n   		INNER JOIN m_client mc ON mc.office_id=ounder.id\r\n   		I
 NNER JOIN m_loan ml ON ml.client_id = mc.id\r\n		   LEFT JOIN m_loan_arrears_aging laa on laa.loan_id = ml.id\r\n		WHERE ml.loan_status_id=300 /* active */\r\n     		AND mo.id=${officeId}\r\n     AND (ml.currency_code = \"${currencyId}\" or \"-1\" = \"${currencyId}\")\r\n  		GROUP BY ml.id) x\r\n	) z \r\nGROUP BY z.currency, z.arrPeriod ) ars ON ars.arrPeriod=periods.period_no and ars.currency = periods.currency\r\nORDER BY periods.currency, periods.pid','Loan amount in arrears by branch',1,1),(91,'Loan Account Schedule','Pentaho',NULL,'Loan',NULL,NULL,1,0),(92,'Branch Expected Cash Flow','Pentaho',NULL,'Loan',NULL,NULL,1,1),(93,'Expected Payments By Date - Basic','Table',NULL,'Loan','SELECT \r\n      ounder.name \'Office\', \r\n      IFNULL(ms.display_name,\'-\') \'Loan Officer\',\r\n	  mc.account_no \'Client Account Number\',\r\n	  mc.display_name \'Name\',\r\n	  mp.name \'Product\',\r\n	  ml.account_no \'Loan Account Number\',\r\n	  mr.duedate \'Due Date\',\r\n	  mr.installment \
 'Installment\',\r\n	  cu.display_symbol \'Currency\',\r\n	  mr.principal_amount- IFNULL(mr.principal_completed_derived,0) \'Principal Due\',\r\n	  mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0) \'Interest Due\', \r\n	  IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0) \'Fees Due\', \r\n	  IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0) \'Penalty Due\',\r\n      (mr.principal_amount- IFNULL(mr.principal_completed_derived,0)) +\r\n       (mr.interest_amount- IFNULL(IFNULL(mr.interest_completed_derived,mr.interest_waived_derived),0)) + \r\n       (IFNULL(mr.fee_charges_amount,0)- IFNULL(IFNULL(mr.fee_charges_completed_derived,mr.fee_charges_waived_derived),0)) + \r\n       (IFNULL(mr.penalty_charges_amount,0)- IFNULL(IFNULL(mr.penalty_charges_completed_derived,mr.penalty_charges_waived_derived),0)) 
 \'Total Due\', \r\n     mlaa.total_overdue_derived \'Total Overdue\'\r\n										 \r\n FROM m_office mo\r\n  JOIN m_office ounder ON ounder.hierarchy LIKE CONCAT(mo.hierarchy, \'%\')\r\n  \r\n  AND ounder.hierarchy like CONCAT(\'${currentUserHierarchy}\', \'%\')\r\n	\r\n  LEFT JOIN m_client mc ON mc.office_id=ounder.id\r\n  LEFT JOIN m_loan ml ON ml.client_id=mc.id AND ml.loan_status_id=300\r\n  LEFT JOIN m_loan_arrears_aging mlaa ON mlaa.loan_id=ml.id\r\n  LEFT JOIN m_loan_repayment_schedule mr ON mr.loan_id=ml.id AND mr.completed_derived=0\r\n  LEFT JOIN m_product_loan mp ON mp.id=ml.product_id\r\n  LEFT JOIN m_staff ms ON ms.id=ml.loan_officer_id\r\n  LEFT JOIN m_currency cu ON cu.code=ml.currency_code\r\n WHERE mo.id=${officeId}\r\n AND (IFNULL(ml.loan_officer_id, -10) = \"${loanOfficerId}\" OR \"-1\" = \"${loanOfficerId}\")\r\n AND mr.duedate BETWEEN \'${startDate}\' AND \'${endDate}\'\r\n ORDER BY ounder.id,mr.duedate,ml.account_no','Test',1,1),(94,'Expected Payments By Date 
 - Formatted','Pentaho',NULL,'Loan',NULL,NULL,1,1);
-INSERT INTO `stretchy_parameter` VALUES (1,'startDateSelect','startDate','startDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(2,'endDateSelect','endDate','endDate','date','date','today',NULL,NULL,NULL,NULL,NULL),(3,'obligDateTypeSelect','obligDateType','obligDateType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Closed\" as `name` union all\r\nselect 2, \"Disbursal\" ) x\r\norder by x.`id`',NULL),(5,'OfficeIdSelectOne','officeId','Office','select','number','0',NULL,'Y',NULL,'select id, \r\nconcat(substring(\"........................................\", 1, \r\n   \n\n((LENGTH(`hierarchy`) - LENGTH(REPLACE(`hierarchy`, \'.\', \'\')) - 1) * 4)), \r\n   `name`) as tc\r\nfrom m_office\r\nwhere hierarchy like concat\n\n(\'${currentUserHierarchy}\', \'%\')\r\norder by hierarchy',NULL),(6,'loanOfficerIdSelectAll','loanOfficerId','Loan Officer','select','number','0',NULL,NULL,'Y','(select lo.id, lo.display_name as `Name` \r\nfrom m_office o \r\njoin m_offi
 ce ounder on ounder.hierarchy like concat(o.hierarchy, \'%\')\r\njoin m_staff lo on lo.office_id = ounder.id\r\nwhere lo.is_loan_officer = true\r\nand o.id = ${officeId})\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',5),(10,'currencyIdSelectAll','currencyId','Currency','select','number','0',NULL,NULL,'Y','select `code`, `name`\r\nfrom m_organisation_currency\r\norder by `code`',NULL),(20,'fundIdSelectAll','fundId','Fund','select','number','0',NULL,NULL,'Y','(select id, `name`\r\nfrom m_fund)\r\nunion all\r\n(select -10, \'-\')\r\norder by 2',NULL),(25,'loanProductIdSelectAll','loanProductId','Product','select','number','0',NULL,NULL,'Y','select p.id, p.`name`\r\nfrom m_product_loan p\r\nwhere p.currency_code = \'${currencyId}\'\r\norder by 2',10),(26,'loanPurposeIdSelectAll','loanPurposeId','Loan Purpose','select','number','0',NULL,NULL,'Y','select -10 as id, \'-\' as code_value\r\nunion all\r\nselect * from (select v.id, v.code_value\r\nfrom m_code c\r\njoin m_code_value v on 
 v.code_id = c.id\r\nwhere c.code_name = \"loanPurpose\"\r\norder by v.order_position)  x',NULL),(100,'parTypeSelect','parType','parType','select','number','0',NULL,NULL,NULL,'select * from\r\n(select 1 as id, \"Principal Only\" as `name` union all\r\nselect 2, \"Principal + Interest\" union all\r\nselect 3, \"Principal + Interest + Fees\" union all\r\nselect 4, \"Principal + Interest + Fees + Penalties\") x\r\norder by x.`id`',NULL),(1001,'FullReportList',NULL,'n/a','n/a','n/a','n/a','Y',NULL,NULL,'select  r.report_id, r.report_name, r.report_type, r.report_subtype, r.report_category,\r\n  \n\nrp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n  from stretchy_report r\r\n  left join stretchy_report_parameter rp on rp.report_id = r.report_id\r\n  \n\nleft join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n  where r.use_report is true\r\n  and exists\r\n  (\r\n select \'f\'\r\n  from m_appuser_role ur \n\n\r\n  join m_role r on r.id = ur.role_id\r\n  join m_r
 ole_permission rp on rp.role_id = r.id\r\n  join m_permission p on p.id = rp.permission_id\r\n  where \n\nur.appuser_id = ${currentUserId}\r\n  and (p.code in (\'ALL_FUNCTIONS_READ\', \'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n  order by \n\nr.report_category, r.report_name, rp.parameter_id',NULL),(1002,'FullParameterList',NULL,'n/a','n/a','n/a','n/a','Y',NULL,NULL,'select sp.parameter_name, sp.parameter_variable, sp.parameter_label, sp.parameter_displayType, \r\nsp.parameter_FormatType, sp.parameter_default, sp.selectOne,  sp.selectAll, spp.parameter_name as parentParameterName\r\nfrom stretchy_parameter sp\r\nleft join stretchy_parameter spp on spp.parameter_id = sp.parent_parameter_id\r\nwhere sp.special is null\r\nand exists \r\n	(select \'f\' \r\n	from stretchy_report sr\r\n	join stretchy_report_parameter srp on srp.report_id = sr.report_id\r\n	where sr.report_name in(${reportListing})\r\n	and srp.parameter_id = sp.parameter_id\r\n	)\r\norder by s
 p.parameter_id',NULL),(1003,'reportCategoryList',NULL,'n/a','n/a','n/a','n/a','Y',NULL,NULL,'select  r.report_id, r.report_name, r.report_type, r.report_subtype, \n\nr.report_category,\r\n  rp.parameter_id, rp.report_parameter_name, p.parameter_name\r\n  from stretchy_report r\r\n  left join stretchy_report_parameter rp on \n\nrp.report_id = r.report_id\r\n  left join stretchy_parameter p on p.parameter_id = rp.parameter_id\r\n  where r.report_category = \'${reportCategory}\'\r\n  and \n\nr.use_report is true\r\n  and exists\r\n  (\r\n select \'f\'\r\n  from m_appuser_role ur \r\n  join m_role r on r.id = ur.role_id\r\n  join m_role_permission rp on \n\nrp.role_id = r.id\r\n  join m_permission p on p.id = rp.permission_id\r\n  where ur.appuser_id = ${currentUserId}\r\n  and (p.code in (\'ALL_FUNCTIONS_READ\', \n\n\'ALL_FUNCTIONS\') or p.code = concat(\"READ_\", r.report_name))\r\n )\r\n  order by r.report_category, r.report_name, rp.parameter_id',NULL);
-INSERT INTO `stretchy_report_parameter` VALUES (1,5,NULL),(2,5,NULL),(2,6,NULL),(2,10,NULL),(2,20,NULL),(2,25,NULL),(2,26,NULL),(5,5,NULL),(5,6,NULL),(5,10,NULL),(5,20,NULL),(5,25,NULL),(5,26,NULL),(6,5,NULL),(6,6,NULL),(6,10,NULL),(6,20,NULL),(6,25,NULL),(6,26,NULL),(7,5,NULL),(7,6,NULL),(7,10,NULL),(7,20,NULL),(7,25,NULL),(7,26,NULL),(8,5,NULL),(8,6,NULL),(8,10,NULL),(8,25,NULL),(8,26,NULL),(11,5,NULL),(11,6,NULL),(11,10,NULL),(11,20,NULL),(11,25,NULL),(11,26,NULL),(11,100,NULL),(12,5,NULL),(12,6,NULL),(12,10,NULL),(12,20,NULL),(12,25,NULL),(12,26,NULL),(13,1,NULL),(13,2,NULL),(13,3,NULL),(13,5,NULL),(13,6,NULL),(13,10,NULL),(13,20,NULL),(13,25,NULL),(13,26,NULL),(14,1,NULL),(14,2,NULL),(14,3,NULL),(14,5,NULL),(14,6,NULL),(14,10,NULL),(14,20,NULL),(14,25,NULL),(14,26,NULL),(15,5,NULL),(15,6,NULL),(15,10,NULL),(15,20,NULL),(15,25,NULL),(15,26,NULL),(15,100,NULL),(16,5,NULL),(16,6,NULL),(16,10,NULL),(16,20,NULL),(16,25,NULL),(16,26,NULL),(16,100,NULL),(20,1,NULL),(20,2,NULL),(20,10,
 NULL),(20,20,NULL),(21,1,NULL),(21,2,NULL),(21,5,NULL),(21,10,NULL),(21,20,NULL),(48,5,'branch'),(48,2,'date'),(49,5,'branch'),(49,1,'fromDate'),(49,2,'toDate'),(50,5,'branch'),(50,1,'fromDate'),(50,2,'toDate'),(51,1,NULL),(51,2,NULL),(51,5,NULL),(51,10,NULL),(51,25,NULL),(52,5,NULL),(53,5,NULL),(53,10,NULL),(54,1,NULL),(54,2,NULL),(54,5,NULL),(54,10,NULL),(54,25,NULL),(55,5,NULL),(55,6,NULL),(55,10,NULL),(55,20,NULL),(55,25,NULL),(55,26,NULL),(56,5,NULL),(56,6,NULL),(56,10,NULL),(56,20,NULL),(56,25,NULL),(56,26,NULL),(56,100,NULL),(57,5,NULL),(57,6,NULL),(57,10,NULL),(57,20,NULL),(57,25,NULL),(57,26,NULL),(58,5,NULL),(58,6,NULL),(58,10,NULL),(58,20,NULL),(58,25,NULL),(58,26,NULL),(58,100,NULL),(59,1,NULL),(59,2,NULL),(59,5,NULL),(59,6,NULL),(59,10,NULL),(59,20,NULL),(59,25,NULL),(59,26,NULL),(61,5,NULL),(61,10,NULL),(92,1,'fromDate'),(92,5,'selectOffice'),(92,2,'toDate'),(93,1,NULL),(93,2,NULL),(93,5,NULL),(93,6,NULL),(94,2,'endDate'),(94,6,'loanOfficerId'),(94,5,'officeId'),(94,1,
 'startDate');
-
-insert into m_permission(grouping, `code`, entity_name, action_name, can_maker_checker)
-select 'report', concat('READ_', r.report_name), r.report_name, 'READ', false
-from stretchy_report r;
-

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/.gitignore
----------------------------------------------------------------------
diff --git a/fineract-provider/.gitignore b/fineract-provider/.gitignore
deleted file mode 100644
index 8e9e830..0000000
--- a/fineract-provider/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-bin
-out/
-build
-repos
-.classpath
-.project
-.settings
-.gradle
-*.log
-!gradle/wrapper/gradle-wrapper.jar
-/gradle

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/build.gradle
----------------------------------------------------------------------
diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle
deleted file mode 100644
index f915b18..0000000
--- a/fineract-provider/build.gradle
+++ /dev/null
@@ -1,346 +0,0 @@
-description = '''\
-Run as:
-gradle clean tomcatrunwar
-'''
-
-buildscript {
-  repositories {
-  	 jcenter()
-  }
-
-  dependencies {
-     classpath 'org.gradle.api.plugins:gradle-tomcat-plugin:1.0',
-               'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0',
-               'org.zeroturnaround:gradle-jrebel-plugin:1.1.2',
-               'org.springframework.boot:spring-boot-gradle-plugin:1.1.6.RELEASE' // also change springDataJpaVersion below
-  }
-}
-
-apply plugin: 'rebel'
-apply plugin: 'license'
-apply plugin: 'war'
-apply plugin: 'spring-boot'
-apply plugin: 'eclipse'
-apply plugin: 'idea'
-apply plugin: 'tomcat'
-apply plugin: 'project-report'
-apply plugin: 'java'
-
-/* define the valid syntax level for source files */
-sourceCompatibility = JavaVersion.VERSION_1_7
-/* define binary compatibility version */
-targetCompatibility = JavaVersion.VERSION_1_7
-
-project.ext.springBootVersion = '1.1.6.RELEASE'
-project.ext.springVersion = '4.0.7.RELEASE'
-project.ext.springOauthVersion = '2.0.4.RELEASE'
-project.ext.jerseyVersion = '1.17'
-project.ext.springDataJpaVersion = '1.7.0.RELEASE' // also change spring-boot-gradle-plugin version above
-
-project.ext.mysqlUser='root'
-project.ext.mysqlPassword='mysql'
-
-
-group = 'org.apache.fineract'
-
-repositories {
-	jcenter()
-	// mavenLocal() // useful for local dev using MariaDB4j SNAPSHOTs (not needed for real-world non-SNAPHOT builds)
-}
-
-configurations {
-	providedRuntime // needed for Spring Boot executable WAR
-    providedCompile
-	compile
-	runtime
-	all*.exclude group: 'commons-logging'
-}
-/* Pick up dependencies based on the environemnt, defaults to production */
-if (project.hasProperty('env') && project.getProperty('env') == 'dev') {
-    apply from:  'dev-dependencies.gradle'
-}  else {
-    apply from: 'dependencies.gradle'
-}
-
-/* Enable Oauth2 authentication based on environment, default to HTTP basic auth */
-if (project.hasProperty('security') && project.getProperty('security') == 'oauth') {
-	copy {
-	    from './properties/oauth/'
-	    into 'src/main/resources/'
-	    include '*.properties'
-	}
-}  else {
-	copy {
-	    from './properties/basicauth/'
-	    into 'src/main/resources/'
-	    include '*.properties'
-	}
-}
-
-task dist(type:Zip){
-	baseName = 'fineractplatform'
-	version = qualifyVersionIfNecessary(releaseVersion)
-    includeEmptyDirs = true
-	from('../') {
-		fileMode = 0755
-		include '*.md'
-	}
-    from('src/main/dist') {
-        fileMode = 0755
-        include '*'
-    }
-	from('../apps') {
-		fileMode = 0755
-        include '**/*'
-		into('apps')
-	}
-    from('../api-docs/') {
-        fileMode = 0755
-        include '*'
-        into('api-docs')
-    }
-    from('../fineract-db/') {
-        fileMode = 0755
-        include '*.sql'
-        into('database')
-    }
-    from('src/main/resources/sql/migrations') {
-        fileMode = 0755
-        include '**/*'
-        into('database/migrations')
-    }
-    
-    from war.outputs.files
-    into(baseName + '-' + version)
-}
-
-war {
-    war.finalizedBy(bootRepackage)
-}
-
-license {
-    header rootProject.file('../LICENSE.md')
-    excludes(["**/*.html", "**/*.mustache", "**/*.sql", "**/package-info.java", "**/keystore.jks"])
-    strictCheck true
-}
-
-tomcatRun {
-    httpPort = 8080
-    httpsPort = 8443
-    stopPort = 8081
-    stopKey=   'stopKey'
-    enableSSL = true
-    configFile = file('src/test/resources/META-INF/context.xml')
-}
-
-tomcatRunWar {
-    httpPort = 8080
-    httpsPort = 8443
-    stopPort = 8081
-    stopKey=   'stopKey'
-    enableSSL = true
-    keystoreFile = file('src/main/resources/keystore.jks')
-    keystorePass = 'openmf'
-    configFile = file('src/test/resources/META-INF/context.xml')
-}
-
-/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */
-sourceSets.main.output.resourcesDir = sourceSets.main.output.classesDir
-sourceSets.test.output.resourcesDir = sourceSets.test.output.classesDir
-
-/* Exclude maria db and embedded tomcat related files for non dev builds */
-if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
-sourceSets {
-    main {
-        java {
-            exclude '**/Server*'
-            exclude '**/MariaDB4j*'
-            exclude '**/EmbeddedTomcatWithSSLConfiguration.java'
-        }
-    }
-    test {
-    	java {
-    		exclude '**/core/boot/tests/**'
-    	}
-    }
-}
-}
-
-sourceSets {
- integrationTest {
-    	compileClasspath += main.output + test.output
-        runtimeClasspath += main.output + test.output
-    }
-}
-
-configurations {
-    integrationTestCompile.extendsFrom testCompile
-    integrationTestRuntime.extendsFrom testRuntime
-}
-
-task integrationTest(type:Test){
-    description = "Run integration tests (located in src/integrationTest/java). Starts tomcat in daemon mode before executing the tests."
-    it.dependsOn war
-    doFirst {
-        tomcatRunWar.daemon = true
-        tomcatRunWar.execute()
-    }
-
-
-    testClassesDir = project.sourceSets.integrationTest.output.classesDir
-    classpath = project.sourceSets.integrationTest.runtimeClasspath
-}
-
-
-import groovy.sql.Sql
-
-repositories {
-    mavenCentral()
-}
-configurations {
-    driver
-}
-dependencies {
-    driver 'mysql:mysql-connector-java:5.1.16'
-}
-
-URLClassLoader loader = GroovyObject.class.classLoader
-configurations.driver.each {File file ->
-    loader.addURL(file.toURL())
-}
-
-task createDB<<{
-    description= "Creates the Database. Needs database name to be passed (like: -PdbName=someDBname)"
-    sql = Sql.newInstance( 'jdbc:mysql://localhost:3306/', mysqlUser, mysqlPassword, 'com.mysql.jdbc.Driver' )
-    sql.execute( 'create database '+"`$dbName`" )
-}
-
-task dropDB<<{
-    description= "Drops the specified database. The database name has to be passed (like: -PdbName=someDBname)"
-    sql = Sql.newInstance( 'jdbc:mysql://localhost:3306/', mysqlUser, mysqlPassword, 'com.mysql.jdbc.Driver' )
-    sql.execute( 'DROP DATABASE '+"`$dbName`")
-}
-task setBlankPassword<<{
-    sql = Sql.newInstance( 'jdbc:mysql://localhost:3306/', mysqlUser, mysqlPassword, 'com.mysql.jdbc.Driver' )
-    sql.execute('USE `mifosplatform-tenants`')
-    sql.execute('UPDATE mifosplatform-tenants.tenants SET schema_server = \'localhost\', schema_server_port = \'3306\', schema_username = \'mifos\', schema_password = \'mysql\' WHERE id=1;')
-}
-
-
-apply plugin: 'flyway'
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-
-    dependencies {
-        classpath "org.flywaydb:flyway-gradle-plugin:3.0" // version upgraded during Spring Boot & MariaDB4j work, as prev. used v0.2 didn't work well after *.sql moved from fineract-db to fineract-provider/src/main/resources (new version also has clearer errors, e.g. in case of missing DB)
-        classpath 'mysql:mysql-connector-java:5.1.22'
-    }
-}
-
-
-flyway {
-    url = "jdbc:mysql://localhost:3306/mifostenant-default"
-    user = mysqlUser
-    password = mysqlPassword
-}
-
-task migrateTenantDB<<{
-    description="Migrates a Tenant DB. Optionally can pass dbName. Defaults to 'mifostenant-default' (Example: -PdbName=someTenantDBname)"
-
-	def filePath = "filesystem:$projectDir" + '/src/main/resources/sql/migrations/core_db'
-	def tenantDbName = 'mifostenant-default';
-    if (rootProject.hasProperty("dbName")) {
-		tenantDbName = rootProject.getProperty("dbName")
-	}
-	
-    flyway.url= "jdbc:mysql://localhost:3306/$tenantDbName"
-    flyway.locations= [filePath]
-    /**We use ${ as the prefix for strecthy reporting, do not want them to be interpreted by Flyway**/
-    flyway.placeholderPrefix = "\$\${"
-    flywayMigrate.execute()
-}
-
-task showTenantDBInfo<<{
-    description="Shows the migration info for a Tenant DB. Optionally can pass dbName. Defaults to 'mifostenant-default' (Example: -PdbName=someTenantDBname)"
-    
-	def filePath = "filesystem:$projectDir" + '/src/main/resources/sql/migrations/core_db'
-    def tenantDbName = 'mifostenant-default';
-    if (rootProject.hasProperty("dbName")) {
-		tenantDbName = rootProject.getProperty("dbName")
-	}
-	
-    flyway.url= "jdbc:mysql://localhost:3306/$tenantDbName"
-    flyway.locations= [filePath]
-    flywayInfo.execute()
-}
-
-
-task migrateTenantListDB<<{
-    description="Migrates a Tenant List DB. Optionally can pass dbName. Defaults to 'mifosplatform-tenants' (Example: -PdbName=someDBname)"
-
-	def filePath = "filesystem:$projectDir" + '/src/main/resources/sql/migrations/list_db'
- 	def tenantsDbName = 'mifosplatform-tenants';
-    if (rootProject.hasProperty("dbName")) {
-		tenantsDbName = rootProject.getProperty("dbName")
-	}
-	
-    flyway.url= "jdbc:mysql://localhost:3306/$tenantsDbName"
-    flyway.locations= [filePath]
-
-    flywayMigrate.execute()
-}
-
-task showTenantListDBInfo<<{
-    description="Shows the migration info for a List DB. Optionally can pass dbName. Defaults to 'mifosplatform-tenants' (Example: -PdbName=someDBname)"
-    
-	def filePath = "filesystem:$projectDir" + '/src/main/resources/sql/migrations/list_db'
-    def tenantsDbName = 'mifosplatform-tenants';
-    if (rootProject.hasProperty("dbName")) {
-		tenantsDbName = rootProject.getProperty("dbName")
-	}
-    
-    flyway.url= "jdbc:mysql://localhost:3306/$tenantsDbName"
-    flyway.locations= [filePath]
-    flywayInfo.execute()
-}
-
-task repairTenantDB<<{
-    description="repair migrate"
-    
-	def filePath = "filesystem:$projectDir" + '/src/main/resources/sql/migrations/list_db'
-    def tenantsDbName = 'mifosplatform-tenants';
-    if (rootProject.hasProperty("dbName")) {
-        tenantsDbName = rootProject.getProperty("dbName")
-    }
-    
-    flyway.url= "jdbc:mysql://localhost:3306/$tenantsDbName"
-    flyway.locations= [filePath]
-    flywayRepair.execute()
-}
-
-/*
-* Support publication of artifacts versioned by topic branch.
-* CI builds supply `-P BRANCH_NAME=<TOPIC>` to gradle at build time.
-* If <TOPIC> starts with 'MIFOSX-', change version
-* from BUILD-SNAPSHOT => <TOPIC>-SNAPSHOT
-* e.g. 1.1.0.BUILD-SNAPSHOT => 1.0.0.MIFOSX-1234-SNAPSHOT
-*/
-def qualifyVersionIfNecessary(version) {
-
-	if (rootProject.hasProperty("BRANCH_NAME")) {
-		def qualifier = rootProject.getProperty("BRANCH_NAME")
-		if (qualifier.startsWith("MIFOSX-")) {
-			return version.replace('BUILD', qualifier)
-		}
-	}
-	return version
-}
-
-springBoot {
-    mainClass = 'org.apache.fineract.ServerWithMariaDB4jApplication'
-}
-bootRepackage {
-    mainClass = 'org.apache.fineract.ServerWithMariaDB4jApplication'
-}


[09/51] [partial] incubator-fineract git commit: deleted initial code

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/HookIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/HookIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/HookIntegrationTest.java
deleted file mode 100644
index 5013a40..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/HookIntegrationTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import org.junit.Assert;
-
-import static org.junit.Assert.fail;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.fineract.integrationtests.common.HookHelper;
-import org.apache.fineract.integrationtests.common.OfficeHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.http.conn.HttpHostConnectException;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.RestAssured;
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.path.json.JsonPath;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-public class HookIntegrationTest {
-
-    private RequestSpecification requestSpec;
-    private ResponseSpecification responseSpec;
-
-    private HookHelper hookHelper;
-    private OfficeHelper officeHelper;
-
-    @Before
-    public void setUp() throws Exception {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.hookHelper = new HookHelper(this.requestSpec, this.responseSpec);
-        this.officeHelper = new OfficeHelper(this.requestSpec, this.responseSpec);
-    }
-
-    @Test
-    public void shouldSendOfficeCreationNotification() {
-        // Subject to https://echo-webhook.herokuapp.com being up
-        // See
-        // http://www.jamesward.com/2014/06/11/testing-webhooks-was-a-pain-so-i-fixed-the-glitch
-        final String payloadURL = "http://echo-webhook.herokuapp.com:80/Z7RXoCBdLSFMDrpn?";
-        this.hookHelper.createHook(payloadURL);
-        final Integer createdOfficeID = this.officeHelper.createOffice("01 January 2012");
-        try {
-
-            /**
-             * sleep for a three seconds after each failure to increase the
-             * likelihood of the previous request for creating office completing
-             **/
-
-            for (int i = 0; i < 6; i++) {
-                try {
-                    final String json = RestAssured.get(payloadURL.replace("?", "")).asString();
-                    final Integer notificationOfficeId = JsonPath.with(json).get("officeId");
-                    Assert.assertEquals("Equality check for created officeId and hook received payload officeId", createdOfficeID,
-                            notificationOfficeId);
-                    System.out.println("Notification Office Id - " + notificationOfficeId);
-                    i = 6;
-                } catch (Exception e) {
-                    TimeUnit.SECONDS.sleep(3);
-                    i++;
-                }
-            }
-
-        } catch (final Exception e) {
-            if (e instanceof HttpHostConnectException) {
-                fail("Failed to connect to https://echo-webhook.herokuapp.com platform");
-            }
-            throw new RuntimeException(e);
-        }
-
-    }
-    
-    @Test
-    public void createUpdateAndDeleteHook(){
-    	final String payloadURL = "http://echo-webhook.herokuapp.com:80/Z7RXoCBdLSFMDrpn?";
-    	final String updateURL = "http://localhost";
-
-        Long hookId = this.hookHelper.createHook(payloadURL).longValue();
-        Assert.assertNotNull(hookId);
-        this.hookHelper.verifyHookCreatedOnServer(hookId);
-    	System.out.println("---------------------SUCCESSFULLY CREATED AND VERIFIED HOOK-------------------------"+hookId);
-    	this.hookHelper.updateHook(updateURL, hookId);
-    	this.hookHelper.verifyUpdateHook(updateURL, hookId);
-    	System.out.println("---------------------SUCCESSFULLY UPDATED AND VERIFIED HOOK-------------------------"+hookId);
-    	this.hookHelper.deleteHook(hookId);
-    	this.hookHelper.verifyDeleteHook(hookId);
-    	System.out.println("---------------------SUCCESSFULLY DELETED AND VERIFIED HOOK-------------------------"+hookId);
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanApplicationApprovalTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanApplicationApprovalTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanApplicationApprovalTest.java
deleted file mode 100644
index 1ef1a20..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanApplicationApprovalTest.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings("rawtypes")
-public class LoanApplicationApprovalTest {
-
-    private ResponseSpecification responseSpec;
-    private ResponseSpecification responseSpecForStatusCode403;
-    private ResponseSpecification responseSpecForStatusCode400;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.responseSpecForStatusCode403 = new ResponseSpecBuilder().expectStatusCode(403).build();
-        this.responseSpecForStatusCode400 = new ResponseSpecBuilder().expectStatusCode(400).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-    }
-
-    /*
-     * Positive test case: Approved amount non zero is less than proposed amount
-     */
-    @Test
-    public void loanApplicationApprovedAmountLessThanProposedAmount() {
-
-        final String proposedAmount = "8000";
-        final String approvalAmount = "5000";
-        final String approveDate = "20 September 2012";
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2012");
-        final Integer loanProductID = this.loanTransactionHelper.getLoanProductId(new LoanProductTestBuilder().build(null));
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID, proposedAmount);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        final String expectedDisbursementDate = null;
-        List<HashMap> approveTranches = null;
-        loanStatusHashMap = this.loanTransactionHelper.approveLoanWithApproveAmount(approveDate, expectedDisbursementDate, approvalAmount,
-                loanID, approveTranches);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-    }
-
-    /*
-     * Negative test case: Approved amount non zero is greater than proposed
-     * amount
-     */
-    @Test
-    public void loanApplicationApprovedAmountGreaterThanProposedAmount() {
-
-        final String proposedAmount = "5000";
-        final String approvalAmount = "9000";
-        final String approveDate = "20 September 2011";
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2012");
-        final Integer loanProductID = this.loanTransactionHelper.getLoanProductId(new LoanProductTestBuilder().build(null));
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID, proposedAmount);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpecForStatusCode403);
-
-        @SuppressWarnings("unchecked")
-        List<HashMap> error = (List<HashMap>) this.loanTransactionHelper.approveLoan(approveDate, approvalAmount, loanID,
-                CommonConstants.RESPONSE_ERROR);
-
-        assertEquals("error.msg.loan.approval.amount.can't.be.greater.than.loan.amount.demanded",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-    }
-
-    public HashMap createTrancheDetail(final String date, final String amount) {
-        HashMap<String, Object> detail = new HashMap<>();
-        detail.put("expectedDisbursementDate", date);
-        detail.put("principal", amount);
-
-        return detail;
-    }
-
-    @Test
-    public void loanApplicationApprovalAndValidationForMultiDisburseLoans() {
-
-        List<HashMap> createTranches = new ArrayList<>();
-        createTranches.add(createTrancheDetail("1 March 2014", "1000"));
-        createTranches.add(createTrancheDetail("23 March 2014", "4000"));
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2014");
-        System.out.println("---------------------------------CLIENT CREATED WITH ID---------------------------------------------------"
-                + clientID);
-
-        final Integer loanProductID = this.loanTransactionHelper.getLoanProductId(new LoanProductTestBuilder()
-                .withInterestTypeAsDecliningBalance().withTranches(true).withInterestCalculationPeriodTypeAsRepaymentPeriod(true)
-                .build(null));
-        System.out.println("----------------------------------LOAN PRODUCT CREATED WITH ID-------------------------------------------"
-                + loanProductID);
-
-        this.trancheLoansApprovedAmountLesserThanProposedAmount(clientID, loanProductID, createTranches);
-        this.trancheLoansApprovalValidation(clientID, loanProductID, createTranches);
-
-    }
-
-    private void trancheLoansApprovedAmountLesserThanProposedAmount(Integer clientID, Integer loanProductID, List<HashMap> createTranches) {
-        final String proposedAmount = "5000";
-        final String approvalAmount = "2000";
-        final String approveDate = "1 March 2014";
-        final String expectedDisbursementDate = "1 March 2014";
-
-        List<HashMap> approveTranches = new ArrayList<>();
-        approveTranches.add(createTrancheDetail("1 March 2014", "1000"));
-        approveTranches.add(createTrancheDetail("23 March 2014", "1000"));
-
-        final Integer loanID = applyForLoanApplicationWithTranches(clientID, loanProductID, proposedAmount, createTranches);
-        System.out.println("-----------------------------------LOAN CREATED WITH LOANID-------------------------------------------------"
-                + loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoanWithApproveAmount(approveDate, expectedDisbursementDate, approvalAmount,
-                loanID, approveTranches);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-        System.out
-                .println("-----------------------------------MULTI DISBURSAL LOAN APPROVED SUCCESSFULLY---------------------------------------");
-
-    }
-
-    private void trancheLoansApprovalValidation(Integer clientID, Integer loanProductID, List<HashMap> createTranches) {
-        final String proposedAmount = "5000";
-        final String approvalAmount1 = "10000";
-        final String approvalAmount2 = "3000";
-        final String approvalAmount3 = "400";
-        final String approvalAmount4 = "200";
-
-        final String approveDate = "1 March 2014";
-        final String expectedDisbursementDate = "1 March 2014";
-
-        List<HashMap> approveTranche1 = new ArrayList<>();
-        approveTranche1.add(createTrancheDetail("1 March 2014", "5000"));
-        approveTranche1.add(createTrancheDetail("23 March 2014", "5000"));
-
-        List<HashMap> approveTranche2 = new ArrayList<>();
-        approveTranche2.add(createTrancheDetail("1 March 2014", "1000"));
-        approveTranche2.add(createTrancheDetail("23 March 2014", "1000"));
-        approveTranche2.add(createTrancheDetail("23 March 2014", "1000"));
-
-        List<HashMap> approveTranche3 = new ArrayList<>();
-        approveTranche3.add(createTrancheDetail("1 March 2014", "100"));
-        approveTranche3.add(createTrancheDetail("23 March 2014", "100"));
-        approveTranche3.add(createTrancheDetail("24 March 2014", "100"));
-        approveTranche3.add(createTrancheDetail("25 March 2014", "100"));
-
-        List<HashMap> approveTranche4 = new ArrayList<>();
-        approveTranche4.add(createTrancheDetail("1 March 2014", "100"));
-        approveTranche4.add(createTrancheDetail("23 March 2014", "100"));
-        approveTranche4.add(createTrancheDetail("24 March 2014", "100"));
-
-        final Integer loanID = applyForLoanApplicationWithTranches(clientID, loanProductID, proposedAmount, createTranches);
-        System.out.println("-----------------------------------LOAN CREATED WITH LOANID-------------------------------------------------"
-                + loanID);
-
-        HashMap<String, Object> loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------------------------");
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpecForStatusCode400);
-
-        /* Tranches with same expected disbursement date */
-        List<HashMap<String, Object>> error = this.loanTransactionHelper.approveLoanForTranches(approveDate, expectedDisbursementDate,
-                approvalAmount2, loanID, approveTranche2, CommonConstants.RESPONSE_ERROR);
-        assertEquals("validation.msg.loan.expectedDisbursementDate.disbursement.date.must.be.unique.for.tranches",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        /* Sum of tranches is greater than approved amount */
-        error = this.loanTransactionHelper.approveLoanForTranches(approveDate, expectedDisbursementDate, approvalAmount4, loanID,
-                approveTranche4, CommonConstants.RESPONSE_ERROR);
-        assertEquals("validation.msg.loan.principal.sum.of.multi.disburse.amounts.must.be.equal.to.or.lesser.than.approved.principal",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpecForStatusCode403);
-
-        /* Sum of tranches exceeds the proposed amount */
-        error = this.loanTransactionHelper.approveLoanForTranches(approveDate, expectedDisbursementDate, approvalAmount1, loanID,
-                approveTranche1, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.loan.approval.amount.can't.be.greater.than.loan.amount.demanded",
-                error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        /* No. of tranches exceeds the max tranche count at product level */
-        error = this.loanTransactionHelper.approveLoanForTranches(approveDate, expectedDisbursementDate, approvalAmount3, loanID,
-                approveTranche3, CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.disbursementData.exceeding.max.tranche.count", error.get(0)
-                .get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-
-        /* If tranches are not specified for a multi-disburse loan */
-        /**
-         * error =
-         * this.loanTransactionHelper.approveLoanForTranches(approveDate,
-         * expectedDisbursementDate, approvalAmount5, loanID, approveTranche5,
-         * CommonConstants.RESPONSE_ERROR);
-         * assertEquals("error.msg.disbursementData.required",
-         * error.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-         **/
-    }
-
-    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID, final String proposedAmount) {
-        final String loanApplication = new LoanApplicationTestBuilder().withPrincipal(proposedAmount).withLoanTermFrequency("5")
-                .withLoanTermFrequencyAsMonths().withNumberOfRepayments("5").withRepaymentEveryAfter("1")
-                .withRepaymentFrequencyTypeAsMonths().withInterestRatePerPeriod("2").withExpectedDisbursementDate("04 April 2012")
-                .withSubmittedOnDate("02 April 2012").build(clientID.toString(), loanProductID.toString(), null);
-        return this.loanTransactionHelper.getLoanId(loanApplication);
-    }
-
-    public Integer applyForLoanApplicationWithTranches(final Integer clientID, final Integer loanProductID, String principal,
-            List<HashMap> tranches) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder()
-        //
-                .withPrincipal(principal)
-                //
-                .withLoanTermFrequency("5")
-                //
-                .withLoanTermFrequencyAsMonths()
-                //
-                .withNumberOfRepayments("5").withRepaymentEveryAfter("1").withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withExpectedDisbursementDate("1 March 2014") //
-                .withTranches(tranches) //
-                .withInterestTypeAsDecliningBalance() //
-                .withSubmittedOnDate("1 March 2014") //
-                .build(clientID.toString(), loanProductID.toString(), null);
-
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanApplicationUndoLastTrancheTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanApplicationUndoLastTrancheTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanApplicationUndoLastTrancheTest.java
deleted file mode 100644
index 672972e..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanApplicationUndoLastTrancheTest.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import java.math.BigDecimal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.LoanApplicationApprovalTest;
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings("rawtypes")
-public class LoanApplicationUndoLastTrancheTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-    private LoanApplicationApprovalTest loanApplicationApprovalTest;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        this.loanApplicationApprovalTest = new LoanApplicationApprovalTest();
-    }
-
-    @Test
-    public void LoanApplicationUndoLastTranche() {
-
-        final String proposedAmount = "5000";
-        final String approvalAmount = "2000";
-        final String approveDate = "1 March 2014";
-        final String expectedDisbursementDate = "1 March 2014";
-        final String disbursalDate = "1 March 2014";
-
-        // CREATE CLIENT
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2014");
-        System.out.println("---------------------------------CLIENT CREATED WITH ID---------------------------------------------------"
-                + clientID);
-
-        // CREATE LOAN MULTIDISBURSAL PRODUCT
-        final Integer loanProductID = this.loanTransactionHelper.getLoanProductId(new LoanProductTestBuilder()
-                .withInterestTypeAsDecliningBalance().withTranches(true).withInterestCalculationPeriodTypeAsRepaymentPeriod(true)
-                .build(null));
-        System.out.println("----------------------------------LOAN PRODUCT CREATED WITH ID-------------------------------------------"
-                + loanProductID);
-
-        // CREATE TRANCHES
-        List<HashMap> createTranches = new ArrayList<>();
-        createTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("1 March 2014", "1000"));
-        createTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("23 June 2014", "4000"));
-
-        // APPROVE TRANCHES
-        List<HashMap> approveTranches = new ArrayList<>();
-        approveTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("1 March 2014", "1000"));
-        approveTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("23 June 2014", "1000"));
-
-        // APPLY FOR LOAN WITH TRANCHES
-        final Integer loanID = applyForLoanApplicationWithTranches(clientID, loanProductID, proposedAmount, createTranches);
-        System.out.println("-----------------------------------LOAN CREATED WITH LOANID-------------------------------------------------"
-                + loanID);
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-
-        // VALIDATE THE LOAN STATUS
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoanWithApproveAmount(approveDate, expectedDisbursementDate, approvalAmount,
-                loanID, approveTranches);
-
-        // VALIDATE THE LOAN IS APPROVED
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-
-        // DISBURSE A LOAN
-        this.loanTransactionHelper.disburseLoan(disbursalDate, loanID);
-        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-
-        // VALIDATE THE LOAN IS ACTIVE STATUS
-        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-        System.out.println("-------------Make repayment 1-----------");
-        this.loanTransactionHelper.makeRepayment("01 April 2014", Float.valueOf("420"), loanID);
-        System.out.println("-------------Make repayment 2-----------");
-        this.loanTransactionHelper.makeRepayment("01 May 2014", Float.valueOf("412"), loanID);
-        System.out.println("-------------Make repayment 3-----------");
-        this.loanTransactionHelper.makeRepayment("01 June 2014", Float.valueOf("204"), loanID);
-        // DISBURSE A SECOND TRANCHE
-        this.loanTransactionHelper.disburseLoan("23 June 2014", loanID);
-        // UNDO LAST TRANCHE
-        Float disbursedAmount = this.loanTransactionHelper.undoLastDisbursal(loanID);
-        validateDisbursedAmount(disbursedAmount);
-    }
-
-    private void validateDisbursedAmount(Float disbursedAmount) {
-        Assert.assertEquals(Float.valueOf("1000.0"), disbursedAmount);
-
-    }
-
-    public Integer applyForLoanApplicationWithTranches(final Integer clientID, final Integer loanProductID, String principal,
-            List<HashMap> tranches) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder()
-        //
-                .withPrincipal(principal)
-                //
-                .withLoanTermFrequency("5")
-                //
-                .withLoanTermFrequencyAsMonths()
-                //
-                .withNumberOfRepayments("5").withRepaymentEveryAfter("1").withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withExpectedDisbursementDate("1 March 2014") //
-                .withTranches(tranches) //
-                .withInterestTypeAsDecliningBalance() //
-                .withSubmittedOnDate("1 March 2014") //
-                .build(clientID.toString(), loanProductID.toString(), null);
-
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursementDetailsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursementDetailsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursementDetailsIntegrationTest.java
deleted file mode 100644
index cecac3d..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanDisbursementDetailsIntegrationTest.java
+++ /dev/null
@@ -1,501 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.math.BigDecimal;
-import java.math.MathContext;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanDisbursementTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class LoanDisbursementDetailsIntegrationTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-    private Integer loanID;
-    private Integer disbursementId;
-    final String approveDate = "01 March 2014";
-    final String expectedDisbursementDate = "01 March 2014";
-    final String proposedAmount = "5000";
-    final String approvalAmount = "5000";
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-    }
-
-    @Test
-    public void createAndValidateMultiDisburseLoansBasedOnEmi() {
-        List<HashMap> createTranches = new ArrayList<>();
-        String id = null;
-        String installmentAmount = "800";
-        String withoutInstallmentAmount = "";
-        String proposedAmount = "10000";
-        createTranches.add(this.loanTransactionHelper.createTrancheDetail(id, "01 June 2015", "5000"));
-        createTranches.add(this.loanTransactionHelper.createTrancheDetail(id, "01 Sep 2015", "5000"));
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2014");
-        System.out.println("---------------------------------CLIENT CREATED WITH ID---------------------------------------------------"
-                + clientID);
-
-        final Integer loanProductID = this.loanTransactionHelper.getLoanProductId(new LoanProductTestBuilder()
-                .withInterestTypeAsDecliningBalance().withMoratorium("", "").withAmortizationTypeAsEqualInstallments().withTranches(true)
-                .withInterestCalculationPeriodTypeAsRepaymentPeriod(true).build(null));
-        System.out.println("----------------------------------LOAN PRODUCT CREATED WITH ID-------------------------------------------"
-                + loanProductID);
-
-        final Integer loanIDWithEmi = applyForLoanApplicationWithEmiAmount(clientID, loanProductID, proposedAmount, createTranches,
-                installmentAmount);
-
-        System.out
-                .println("-----------------------------------LOAN CREATED WITH EMI LOANID-------------------------------------------------"
-                        + loanIDWithEmi);
-
-        HashMap repaymentScheduleWithEmi = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec,
-                loanIDWithEmi, "repaymentSchedule");
-
-        ArrayList<HashMap> periods = (ArrayList<HashMap>) repaymentScheduleWithEmi.get("periods");
-        assertEquals(periods.size(), 15);
-
-        this.validateRepaymentScheduleWithEMI(periods);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanIDWithEmi);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoanWithApproveAmount("01 June 2015", "01 June 2015", "10000", loanIDWithEmi,
-                createTranches);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-        System.out
-                .println("-----------------------------------MULTI DISBURSAL LOAN WITH EMI APPROVED SUCCESSFULLY---------------------------------------");
-
-        final Integer loanIDWithoutEmi = applyForLoanApplicationWithEmiAmount(clientID, loanProductID, proposedAmount, createTranches,
-                withoutInstallmentAmount);
-
-        HashMap repaymentScheduleWithoutEmi = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec,
-                loanIDWithoutEmi, "repaymentSchedule");
-
-        ArrayList<HashMap> periods1 = (ArrayList<HashMap>) repaymentScheduleWithEmi.get("periods");
-        assertEquals(periods1.size(), 15);
-
-        System.out
-                .println("-----------------------------------LOAN CREATED WITHOUT EMI LOANID-------------------------------------------------"
-                        + loanIDWithoutEmi);
-
-        /* To be uncommented once issue MIFOSX-2006 is closed. */
-        // this.validateRepaymentScheduleWithoutEMI(periods1);
-
-        HashMap loanStatusMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanIDWithoutEmi);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoanWithApproveAmount("01 June 2015", "01 June 2015", "10000",
-                loanIDWithoutEmi, createTranches);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-        System.out
-                .println("-----------------------------------MULTI DISBURSAL LOAN WITHOUT EMI APPROVED SUCCESSFULLY---------------------------------------");
-
-    }
-
-    private void validateRepaymentScheduleWithEMI(ArrayList<HashMap> periods) {
-        LoanDisbursementTestBuilder expectedRepaymentSchedule0 = new LoanDisbursementTestBuilder("[2015, 6, 1]", 0.0f, 0.0f, null, null,
-                5000.0f, null, null, null);
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule1 = new LoanDisbursementTestBuilder("[2015, 7, 1]", 800f, 800.0f, 50.0f,
-                750.0f, 4250.0f, 750.0f, 750.0f, "[2015, 6, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule2 = new LoanDisbursementTestBuilder("[2015, 8, 1]", 800.0f, 800.0f, 42.5f,
-                757.5f, 3492.5f, 757.5f, 757.5f, "[2015, 7, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule3 = new LoanDisbursementTestBuilder("[2015, 9, 1]", 0.0f, 0.0f, null, null,
-                5000.0f, null, null, null);
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule4 = new LoanDisbursementTestBuilder("[2015, 9, 1]", 800.0f, 800.0f, 34.92f,
-                765.08f, 7727.42f, 765.08f, 765.08f, "[2015, 8, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule5 = new LoanDisbursementTestBuilder("[2015, 10, 1]", 800.0f, 800.0f, 77.27f,
-                722.73f, 7004.69f, 722.73f, 722.73f, "[2015, 9, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule6 = new LoanDisbursementTestBuilder("[2015, 11, 1]", 800.0f, 800.0f, 70.05f,
-                729.95f, 6274.74f, 729.95f, 729.95f, "[2015, 10, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule7 = new LoanDisbursementTestBuilder("[2015, 12, 1]", 800.0f, 800.0f, 62.75f,
-                737.25f, 5537.49f, 737.25f, 737.25f, "[2015, 11, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule8 = new LoanDisbursementTestBuilder("[2016, 1, 1]", 800.0f, 800.0f, 55.37f,
-                744.63f, 4792.86f, 744.63f, 744.63f, "[2015, 12, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule9 = new LoanDisbursementTestBuilder("[2016, 2, 1]", 800.0f, 800.0f, 47.93f,
-                752.07f, 4040.79f, 752.07f, 752.07f, "[2016, 1, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule10 = new LoanDisbursementTestBuilder("[2016, 3, 1]", 800.0f, 800.0f, 40.41f,
-                759.59f, 3281.2f, 759.59f, 759.59f, "[2016, 2, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule11 = new LoanDisbursementTestBuilder("[2016, 4, 1]", 800.0f, 800.0f, 32.81f,
-                767.19f, 2514.01f, 767.19f, 767.19f, "[2016, 3, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule12 = new LoanDisbursementTestBuilder("[2016, 5, 1]", 800.0f, 800.0f, 25.14f,
-                774.86f, 1739.15f, 774.86f, 774.86f, "[2016, 4, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule13 = new LoanDisbursementTestBuilder("[2016, 6, 1]", 800.0f, 800.0f, 17.39f,
-                782.61f, 956.54f, 782.61f, 782.61f, "[2016, 5, 1]");
-
-        LoanDisbursementTestBuilder expectedRepaymentSchedule14 = new LoanDisbursementTestBuilder("[2016, 7, 1]", 966.11f, 966.11f, 9.57f,
-                956.54f, 0.0f, 956.54f, 956.54f, "[2016, 6, 1]");
-
-        ArrayList<LoanDisbursementTestBuilder> list = new ArrayList<LoanDisbursementTestBuilder>();
-        list.add(expectedRepaymentSchedule0);
-        list.add(expectedRepaymentSchedule1);
-        list.add(expectedRepaymentSchedule2);
-        list.add(expectedRepaymentSchedule3);
-        list.add(expectedRepaymentSchedule4);
-        list.add(expectedRepaymentSchedule5);
-        list.add(expectedRepaymentSchedule6);
-        list.add(expectedRepaymentSchedule7);
-        list.add(expectedRepaymentSchedule8);
-        list.add(expectedRepaymentSchedule9);
-        list.add(expectedRepaymentSchedule10);
-        list.add(expectedRepaymentSchedule11);
-        list.add(expectedRepaymentSchedule12);
-        list.add(expectedRepaymentSchedule13);
-        list.add(expectedRepaymentSchedule14);
-
-        for (int i = 0; i < list.size(); i++) {
-            this.assertRepaymentScheduleValuesWithEMI(periods.get(i), list.get(i), i);
-        }
-    }
-
-    private void assertRepaymentScheduleValuesWithEMI(HashMap period, LoanDisbursementTestBuilder expectedRepaymentSchedule, int position) {
-
-        assertEquals(period.get("dueDate").toString(), expectedRepaymentSchedule.getDueDate());
-        assertEquals(period.get("principalLoanBalanceOutstanding"), expectedRepaymentSchedule.getPrincipalLoanBalanceOutstanding());
-        System.out.println(period.get("totalOriginalDueForPeriod").toString());
-        assertEquals(new Float(period.get("totalOriginalDueForPeriod").toString()), expectedRepaymentSchedule
-                .getTotalOriginalDueForPeriod().floatValue(), 0.0f);
-
-        assertEquals(new Float(period.get("totalOutstandingForPeriod").toString()).floatValue(),
-                expectedRepaymentSchedule.getTotalOutstandingForPeriod(), 0.0f);
-
-        if (position != 0 && position != 3) {
-
-            assertEquals(new Float(period.get("interestOutstanding").toString()).floatValue(),
-                    expectedRepaymentSchedule.getInterestOutstanding(), 0.0f);
-            assertEquals(new Float(period.get("principalOutstanding").toString()).floatValue(),
-                    expectedRepaymentSchedule.getPrincipalOutstanding(), 0.0f);
-            assertEquals(new Float(period.get("principalDue").toString()).floatValue(), expectedRepaymentSchedule.getPrincipalDue(), 0.0f);
-            assertEquals(new Float(period.get("principalOriginalDue").toString()).floatValue(),
-                    expectedRepaymentSchedule.getPrincipalOriginalDue(), 0.0f);
-            assertEquals(period.get("fromDate").toString(), expectedRepaymentSchedule.getFromDate());
-        }
-    }
-
-    /* Uncomment and modify test builder values once MIFOSX-2006 is closed. */
-    /*
-     * private void validateRepaymentScheduleWithoutEMI(ArrayList<HashMap>
-     * periods){ LoanDisbursementTestBuilder expectedRepaymentSchedule0 = new
-     * LoanDisbursementTestBuilder( "[2015, 6, 1]", 0.0f, 0.0f, null, null,
-     * 5000.0f, null, null, null);
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule1 = new
-     * LoanDisbursementTestBuilder( "[2015, 7, 1]", 800.0f, 800.0f, 50.0f,
-     * 750.0f, 4250.0f, 750.0f, 750.0f, "[2015, 6, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule2 = new
-     * LoanDisbursementTestBuilder( "[2015, 8, 1]", 800.0f, 800.0f, 42.5f,
-     * 757.5f, 3492.5f, 757.5f, 757.5f, "[2015, 7, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule3 = new
-     * LoanDisbursementTestBuilder( "[2015, 9, 1]", 0.0f, 0.0f, null, null,
-     * 5000.0f, null, null, null);
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule4 = new
-     * LoanDisbursementTestBuilder( "[2015, 9, 1]", 800.0f, 800.0f, 34.92f,
-     * 765.08f, 7727.42f, 765.08f, 765.08f, "[2015, 8, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule5 = new
-     * LoanDisbursementTestBuilder( "[2015, 10, 1]", 800.0f, 800.0f, 77.27f,
-     * 722.73f, 7004.69f, 722.73f, 722.73f, "[2015, 9, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule6 = new
-     * LoanDisbursementTestBuilder( "[2015, 11, 1]", 800.0f, 800.0f, 70.05f,
-     * 729.95f, 6274.74f, 729.95f, 729.95f, "[2015, 10, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule7 = new
-     * LoanDisbursementTestBuilder( "[2015, 12, 1]", 800.0f, 800.0f, 62.75f,
-     * 737.25f, 5537.49f, 737.25f, 737.25f, "[2015, 11, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule8 = new
-     * LoanDisbursementTestBuilder( "[2016, 1, 1]", 800.0f, 800.0f, 55.37f,
-     * 744.63f, 4792.86f, 744.63f, 744.63f, "[2015, 12, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule9 = new
-     * LoanDisbursementTestBuilder( "[2016, 2, 1]", 800.0f, 800.0f, 47.93f,
-     * 752.07f, 4040.79f, 752.07f, 752.07f, "[2016, 1, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule10 = new
-     * LoanDisbursementTestBuilder( "[2016, 3, 1]", 800.0f, 800.0f, 40.41f,
-     * 759.59f, 3281.2f, 759.59f, 759.59f, "[2016, 2, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule11 = new
-     * LoanDisbursementTestBuilder( "[2016, 4, 1]", 800.0f, 800.0f, 32.81f,
-     * 767.19f, 2514.01f, 767.19f, 767.19f, "[2016, 3, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule12 = new
-     * LoanDisbursementTestBuilder( "[2016, 5, 1]", 800.0f, 800.0f, 25.14f,
-     * 774.86f, 1739.15f, 774.86f, 774.86f, "[2016, 4, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule13 = new
-     * LoanDisbursementTestBuilder( "[2016, 6, 1]", 800.0f, 800.0f, 17.39f,
-     * 782.61f, 956.54f, 782.61f, 782.61f, "[2016, 5, 1]");
-     * 
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule14 = new
-     * LoanDisbursementTestBuilder( "[2016, 7, 1]", 966.11f, 966.11f, 9.57f,
-     * 956.54f, 0.0f, 956.54f, 956.54f, "[2016, 6, 1]");
-     * 
-     * ArrayList<LoanDisbursementTestBuilder> list = new
-     * ArrayList<LoanDisbursementTestBuilder>();
-     * list.add(expectedRepaymentSchedule0);
-     * list.add(expectedRepaymentSchedule1);
-     * list.add(expectedRepaymentSchedule2);
-     * list.add(expectedRepaymentSchedule3);
-     * list.add(expectedRepaymentSchedule4);
-     * list.add(expectedRepaymentSchedule5);
-     * list.add(expectedRepaymentSchedule6);
-     * list.add(expectedRepaymentSchedule7);
-     * list.add(expectedRepaymentSchedule8);
-     * list.add(expectedRepaymentSchedule9);
-     * list.add(expectedRepaymentSchedule10);
-     * list.add(expectedRepaymentSchedule11);
-     * list.add(expectedRepaymentSchedule12);
-     * list.add(expectedRepaymentSchedule13);
-     * list.add(expectedRepaymentSchedule14);
-     * 
-     * for (int i = 0; i < list.size(); i++) {
-     * this.assertRepaymentScheduleValuesWithoutEMI(periods.get(i), list.get(i),
-     * i); } }
-     * 
-     * private void assertRepaymentScheduleValuesWithoutEMI(HashMap period,
-     * LoanDisbursementTestBuilder expectedRepaymentSchedule, int position) {
-     * 
-     * assertEquals(period.get("dueDate").toString(),
-     * expectedRepaymentSchedule.getDueDate());
-     * assertEquals(period.get("principalLoanBalanceOutstanding"),
-     * expectedRepaymentSchedule.getPrincipalLoanBalanceOutstanding());
-     * assertEquals(period.get("totalOriginalDueForPeriod"),
-     * expectedRepaymentSchedule.getTotalOriginalDueForPeriod());
-     * assertEquals(period.get("totalOutstandingForPeriod"),
-     * expectedRepaymentSchedule.getTotalOutstandingForPeriod());
-     * 
-     * if (position != 0 && position != 3) {
-     * 
-     * assertEquals(period.get("interestOutstanding"),
-     * expectedRepaymentSchedule.getInterestOutstanding());
-     * assertEquals(period.get("principalOutstanding"),
-     * expectedRepaymentSchedule.getPrincipalOutstanding());
-     * assertEquals(period.get("principalDue"),
-     * expectedRepaymentSchedule.getPrincipalDue());
-     * assertEquals(period.get("principalOriginalDue"),
-     * expectedRepaymentSchedule.getPrincipalOriginalDue());
-     * assertEquals(period.get("fromDate").toString(),
-     * expectedRepaymentSchedule.getFromDate()); } }
-     */
-    private Integer applyForLoanApplicationWithEmiAmount(final Integer clientID, final Integer loanProductID, final String proposedAmount,
-            List<HashMap> tranches, final String installmentAmount) {
-
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder()
-        //
-                .withPrincipal(proposedAmount)
-                //
-                .withLoanTermFrequency("12")
-                //
-                .withLoanTermFrequencyAsMonths()
-                //
-                .withNumberOfRepayments("12").withRepaymentEveryAfter("1").withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("1") //
-                .withExpectedDisbursementDate("01 June 2015") //
-                .withTranches(tranches) //
-                .withFixedEmiAmount(installmentAmount) //
-                .withInterestTypeAsDecliningBalance() //
-                .withSubmittedOnDate("01 June 2015") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .build(clientID.toString(), loanProductID.toString(), null);
-
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-
-    }
-
-    @Test
-    public void createApproveAndValidateMultiDisburseLoan() {
-
-        List<HashMap> createTranches = new ArrayList<>();
-        String id = null;
-        createTranches.add(this.loanTransactionHelper.createTrancheDetail(id, "01 March 2014", "1000"));
-
-        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2014");
-        System.out.println("---------------------------------CLIENT CREATED WITH ID---------------------------------------------------"
-                + clientID);
-
-        final Integer loanProductID = this.loanTransactionHelper.getLoanProductId(new LoanProductTestBuilder()
-                .withInterestTypeAsDecliningBalance().withTranches(true).withInterestCalculationPeriodTypeAsRepaymentPeriod(true)
-                .build(null));
-        System.out.println("----------------------------------LOAN PRODUCT CREATED WITH ID-------------------------------------------"
-                + loanProductID);
-
-        this.loanID = applyForLoanApplicationWithTranches(clientID, loanProductID, proposedAmount, createTranches);
-        System.out.println("-----------------------------------LOAN CREATED WITH LOANID-------------------------------------------------"
-                + loanID);
-
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoanWithApproveAmount(approveDate, expectedDisbursementDate, approvalAmount,
-                loanID, createTranches);
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-        System.out
-                .println("-----------------------------------MULTI DISBURSAL LOAN APPROVED SUCCESSFULLY---------------------------------------");
-        ArrayList<HashMap> disbursementDetails = (ArrayList<HashMap>) this.loanTransactionHelper.getLoanDetail(this.requestSpec,
-                this.responseSpec, this.loanID, "disbursementDetails");
-        this.disbursementId = (Integer) disbursementDetails.get(0).get("id");
-        this.editLoanDisbursementDetails();
-    }
-
-    private void editLoanDisbursementDetails() {
-        this.editDateAndPrincipalOfExistingTranche();
-        this.addNewDisbursementDetails();
-        this.deleteDisbursmentDetails();
-    }
-
-    private void addNewDisbursementDetails() {
-        List<HashMap> addTranches = new ArrayList<>();
-        ArrayList<HashMap> disbursementDetails = (ArrayList<HashMap>) this.loanTransactionHelper.getLoanDetail(this.requestSpec,
-                this.responseSpec, this.loanID, "disbursementDetails");
-        ArrayList expectedDisbursementDate = (ArrayList) disbursementDetails.get(0).get("expectedDisbursementDate");
-        String date = formatExpectedDisbursementDate(expectedDisbursementDate.toString());
-
-        String id = null;
-        addTranches.add(this.loanTransactionHelper.createTrancheDetail(disbursementDetails.get(0).get("id").toString(), date,
-                disbursementDetails.get(0).get("principal").toString()));
-        addTranches.add(this.loanTransactionHelper.createTrancheDetail(id, "3 March 2014", "2000"));
-        addTranches.add(this.loanTransactionHelper.createTrancheDetail(id, "4 March 2014", "500"));
-
-        /* Add disbursement detail */
-        this.loanTransactionHelper.addAndDeleteDisbursementDetail(this.loanID, this.approvalAmount, this.expectedDisbursementDate,
-                addTranches, "");
-    }
-
-    private void deleteDisbursmentDetails() {
-        List<HashMap> deleteTranches = new ArrayList<>();
-        ArrayList<HashMap> disbursementDetails = (ArrayList<HashMap>) this.loanTransactionHelper.getLoanDetail(this.requestSpec,
-                this.responseSpec, this.loanID, "disbursementDetails");
-        /* Delete the last tranche */
-        for (int i = 0; i < disbursementDetails.size() - 1; i++) {
-            ArrayList expectedDisbursementDate = (ArrayList) disbursementDetails.get(i).get("expectedDisbursementDate");
-            String disbursementDate = formatExpectedDisbursementDate(expectedDisbursementDate.toString());
-            deleteTranches.add(this.loanTransactionHelper.createTrancheDetail(disbursementDetails.get(i).get("id").toString(),
-                    disbursementDate, disbursementDetails.get(i).get("principal").toString()));
-        }
-
-        /* Add disbursement detail */
-        this.loanTransactionHelper.addAndDeleteDisbursementDetail(this.loanID, this.approvalAmount, this.expectedDisbursementDate,
-                deleteTranches, "");
-    }
-
-    private void editDateAndPrincipalOfExistingTranche() {
-        String updatedExpectedDisbursementDate = "01 March 2014";
-        String updatedPrincipal = "900";
-        /* Update */
-        this.loanTransactionHelper.editDisbursementDetail(this.loanID, this.disbursementId, this.approvalAmount,
-                this.expectedDisbursementDate, updatedExpectedDisbursementDate, updatedPrincipal, "");
-        /* Validate Edit */
-        ArrayList<HashMap> disbursementDetails = (ArrayList<HashMap>) this.loanTransactionHelper.getLoanDetail(this.requestSpec,
-                this.responseSpec, this.loanID, "disbursementDetails");
-        assertEquals(Float.valueOf(updatedPrincipal), disbursementDetails.get(0).get("principal"));
-        ArrayList expectedDisbursementDate = (ArrayList) disbursementDetails.get(0).get("expectedDisbursementDate");
-        String date = formatExpectedDisbursementDate(expectedDisbursementDate.toString());
-        assertEquals(updatedExpectedDisbursementDate, date);
-
-    }
-
-    private String formatExpectedDisbursementDate(String expectedDisbursementDate) {
-
-        SimpleDateFormat source = new SimpleDateFormat("[yyyy, MM, dd]");
-        SimpleDateFormat target = new SimpleDateFormat("dd MMMM yyyy");
-        String date = null;
-        try {
-            date = target.format(source.parse(expectedDisbursementDate));
-        } catch (ParseException e) {
-            e.printStackTrace();
-        }
-        return date;
-    }
-
-    private Integer applyForLoanApplicationWithTranches(final Integer clientID, final Integer loanProductID, String principal,
-            List<HashMap> tranches) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder()
-        //
-                .withPrincipal(principal)
-                //
-                .withLoanTermFrequency("5")
-                //
-                .withLoanTermFrequencyAsMonths()
-                //
-                .withNumberOfRepayments("5").withRepaymentEveryAfter("1").withRepaymentFrequencyTypeAsMonths() //
-                .withInterestRatePerPeriod("2") //
-                .withExpectedDisbursementDate("01 March 2014") //
-                .withTranches(tranches) //
-                .withInterestTypeAsDecliningBalance() //
-                .withSubmittedOnDate("01 March 2014") //
-                .build(clientID.toString(), loanProductID.toString(), null);
-
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRepaymentRescheduleAtDisbursementTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRepaymentRescheduleAtDisbursementTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRepaymentRescheduleAtDisbursementTest.java
deleted file mode 100644
index d0018cd..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRepaymentRescheduleAtDisbursementTest.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.accounting.Account;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-@SuppressWarnings("rawtypes")
-public class LoanRepaymentRescheduleAtDisbursementTest {
-
-	private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-    private LoanApplicationApprovalTest loanApplicationApprovalTest;
-    private ResponseSpecification generalResponseSpec;
-    
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        this.loanApplicationApprovalTest = new LoanApplicationApprovalTest();
-        this.generalResponseSpec = new ResponseSpecBuilder().build();
-    }
-    
-	@SuppressWarnings("unchecked")
-	@Test
-    public void testLoanRepaymentRescheduleAtDisbursement(){
-    	
-        final String approvalAmount = "10000";
-        final String approveDate = "01 March 2015";
-        final String expectedDisbursementDate = "01 March 2015";
-        final String disbursementDate = "01 March 2015";
-        final String adjustRepaymentDate = "16 March 2015";
-        final String recalculationRestFrequencyDate = "01 January 2012";
-         
-        // CREATE CLIENT
-    	final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2014");
-        System.out.println("---------------------------------CLIENT CREATED WITH ID---------------------------------------------------"
-                + clientID);
-
-        // CREATE LOAN MULTIDISBURSAL PRODUCT WITH INTEREST RECALCULATION 
-        final Integer loanProductID = createLoanProductWithInterestRecalculation(LoanProductTestBuilder.RBI_INDIA_STRATEGY,
-                LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE,
-                LoanProductTestBuilder.RECALCULATION_STRATEGY_REDUCE_NUMBER_OF_INSTALLMENTS,
-                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_DAILY, "0", recalculationRestFrequencyDate,
-                LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null);
-        
-        // CREATE TRANCHES
-        List<HashMap> createTranches = new ArrayList<>();
-        createTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("01 March 2015", "5000"));
-        createTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("01 May 2015", "5000"));
-    	
-        // APPROVE TRANCHES
-        List<HashMap> approveTranches = new ArrayList<>();
-        approveTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("01 March 2015", "5000"));
-        approveTranches.add(this.loanApplicationApprovalTest.createTrancheDetail("01 May 2015", "5000"));
-        
-        // APPLY FOR TRANCHE LOAN WITH INTEREST RECALCULATION 
-        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, disbursementDate,
-        		recalculationRestFrequencyDate, LoanApplicationTestBuilder.RBI_INDIA_STRATEGY, new ArrayList<HashMap>(0), createTranches);
-        
-        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        
-        // VALIDATE THE LOAN STATUS
-        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-        System.out.println("-----------------------------------APPROVE LOAN-----------------------------------------------------------");
-        loanStatusHashMap = this.loanTransactionHelper.approveLoanWithApproveAmount(approveDate, expectedDisbursementDate, approvalAmount,
-                loanID, approveTranches);
-        
-        // VALIDATE THE LOAN IS APPROVED
-        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-        LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
-        
-        // DISBURSE A FIRST TRANCHE
-        this.loanTransactionHelper.disburseLoanWithRepaymentReschedule(disbursementDate, loanID, adjustRepaymentDate);
-        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
-        
-        ArrayList<HashMap> loanRepaymnetSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec, generalResponseSpec, loanID);
-        HashMap firstInstallement  = loanRepaymnetSchedule.get(1);
-        Map<String, Object> expectedvalues = new HashMap<>(3);
-        Calendar date = Calendar.getInstance(Utils.getTimeZoneOfTenant());
-        date.set(2015, Calendar.MARCH, 16);
-        expectedvalues.put("dueDate", getDateAsArray(date, 0));
-        expectedvalues.put("principalDue", "834.71");
-        expectedvalues.put("interestDue", "49.32");
-        expectedvalues.put("feeChargesDue", "0");
-        expectedvalues.put("penaltyChargesDue", "0");
-        expectedvalues.put("totalDueForPeriod", "884.03");
-        
-        // VALIDATE REPAYMENT SCHEDULE
-        verifyLoanRepaymentSchedule(firstInstallement, expectedvalues);
-        
-    }
-	
-	private void verifyLoanRepaymentSchedule(final HashMap firstInstallement, final Map<String, Object> expectedvalues) {
-       
-		assertEquals(expectedvalues.get("dueDate"), firstInstallement.get("dueDate"));
-		assertEquals(String.valueOf(expectedvalues.get("principalDue")), String.valueOf(firstInstallement.get("principalDue")));
-		assertEquals(String.valueOf(expectedvalues.get("interestDue")), String.valueOf(firstInstallement.get("interestDue")));
-		assertEquals(String.valueOf(expectedvalues.get("feeChargesDue")), String.valueOf(firstInstallement.get("feeChargesDue")));
-		assertEquals(String.valueOf(expectedvalues.get("penaltyChargesDue")), String.valueOf(firstInstallement.get("penaltyChargesDue")));
-		assertEquals(String.valueOf(expectedvalues.get("totalDueForPeriod")), String.valueOf(firstInstallement.get("totalDueForPeriod")));
-
-    }
-    
-    private Integer createLoanProductWithInterestRecalculation(final String repaymentStrategy,
-            final String interestRecalculationCompoundingMethod, final String rescheduleStrategyMethod,
-            final String recalculationRestFrequencyType, final String recalculationRestFrequencyInterval,
-            final String recalculationRestFrequencyDate, final String preCloseInterestCalculationStrategy, final Account[] accounts) {
-        final String recalculationCompoundingFrequencyType = null;
-        final String recalculationCompoundingFrequencyInterval = null;
-        final String recalculationCompoundingFrequencyDate = null;
-        return createLoanProductWithInterestRecalculation(repaymentStrategy, interestRecalculationCompoundingMethod,
-                rescheduleStrategyMethod, recalculationRestFrequencyType, recalculationRestFrequencyInterval,
-                recalculationRestFrequencyDate, recalculationCompoundingFrequencyType, recalculationCompoundingFrequencyInterval,
-                recalculationCompoundingFrequencyDate, preCloseInterestCalculationStrategy, accounts, null, false);
-    }
-    
-    private Integer createLoanProductWithInterestRecalculation(final String repaymentStrategy,
-            final String interestRecalculationCompoundingMethod, final String rescheduleStrategyMethod,
-            final String recalculationRestFrequencyType, final String recalculationRestFrequencyInterval,
-            final String recalculationRestFrequencyDate, final String recalculationCompoundingFrequencyType,
-            final String recalculationCompoundingFrequencyInterval, final String recalculationCompoundingFrequencyDate,
-            final String preCloseInterestCalculationStrategy, final Account[] accounts, final String chargeId,
-            boolean isArrearsBasedOnOriginalSchedule) {
-        System.out.println("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        LoanProductTestBuilder builder = new LoanProductTestBuilder()
-                .withPrincipal("10000.00")
-                .withNumberOfRepayments("12")
-                .withRepaymentAfterEvery("2")
-                .withRepaymentTypeAsWeek()
-                .withinterestRatePerPeriod("2")
-                .withInterestRateFrequencyTypeAsMonths()
-                .withTranches(true)
-                .withInterestCalculationPeriodTypeAsRepaymentPeriod(true)
-                .withRepaymentStrategy(repaymentStrategy)
-                .withInterestTypeAsDecliningBalance()
-                .withInterestRecalculationDetails(interestRecalculationCompoundingMethod, rescheduleStrategyMethod,
-                        preCloseInterestCalculationStrategy)
-                .withInterestRecalculationRestFrequencyDetails(recalculationRestFrequencyType, recalculationRestFrequencyInterval,
-                        recalculationRestFrequencyDate)
-                .withInterestRecalculationCompoundingFrequencyDetails(recalculationCompoundingFrequencyType,
-                        recalculationCompoundingFrequencyInterval, recalculationCompoundingFrequencyDate);
-        if (accounts != null) {
-            builder = builder.withAccountingRulePeriodicAccrual(accounts);
-        }
-
-        if (isArrearsBasedOnOriginalSchedule) builder = builder.withArrearsConfiguration();
-
-        final String loanProductJSON = builder.build(chargeId);
-        return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    }
-    
-    private Integer applyForLoanApplicationForInterestRecalculation(final Integer clientID, final Integer loanProductID,
-            final String disbursementDate, final String restStartDate, final String repaymentStrategy, final List<HashMap> charges, List<HashMap> tranches) {
-        final String graceOnInterestPayment = null;
-        final String compoundingStartDate = null;
-        final String graceOnPrincipalPayment = null;
-        return applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, disbursementDate, restStartDate,
-                compoundingStartDate, repaymentStrategy, charges, graceOnInterestPayment, graceOnPrincipalPayment,tranches);
-    }
-    
-    private Integer applyForLoanApplicationForInterestRecalculation(final Integer clientID, final Integer loanProductID,
-            final String disbursementDate, final String restStartDate, final String compoundingStartDate, final String repaymentStrategy,
-            final List<HashMap> charges, final String graceOnInterestPayment, final String graceOnPrincipalPayment, List<HashMap> tranches) {
-        System.out.println("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
-        final String loanApplicationJSON = new LoanApplicationTestBuilder() //
-                .withPrincipal("10000.00") //
-                .withLoanTermFrequency("24") //
-                .withLoanTermFrequencyAsWeeks() //
-                .withNumberOfRepayments("12") //
-                .withRepaymentEveryAfter("2") //
-                .withRepaymentFrequencyTypeAsWeeks() //
-                .withInterestRatePerPeriod("2") //
-                .withAmortizationTypeAsEqualInstallments() //
-                .withTranches(tranches)
-                .withFixedEmiAmount("") //
-                .withInterestTypeAsDecliningBalance() //
-                .withInterestCalculationPeriodTypeAsDays() //
-                .withInterestCalculationPeriodTypeAsDays() //
-                .withExpectedDisbursementDate(disbursementDate) //
-                .withSubmittedOnDate(disbursementDate) //
-                .withRestFrequencyDate(restStartDate)//
-                .withwithRepaymentStrategy(repaymentStrategy) //
-                .withCharges(charges)//
-                .build(clientID.toString(), loanProductID.toString(), null);
-        return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    }
-    
-    private List getDateAsArray(Calendar date, int addPeriod) {
-        return getDateAsArray(date, addPeriod, Calendar.DAY_OF_MONTH);
-    }
-
-    private List getDateAsArray(Calendar date, int addvalue, int type) {
-    	date.add(type, addvalue);
-        return new ArrayList<>(Arrays.asList(date.get(Calendar.YEAR), date.get(Calendar.MONTH) + 1,
-        		date.get(Calendar.DAY_OF_MONTH)));
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66cee785/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java
deleted file mode 100644
index 2b00a98..0000000
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.HashMap;
-
-import org.apache.fineract.integrationtests.common.ClientHelper;
-import org.apache.fineract.integrationtests.common.LoanRescheduleRequestHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanRescheduleRequestTestBuilder;
-import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-
-/** 
- * Test the creation, approval and rejection of a loan reschedule request 
- **/
-@SuppressWarnings({ "rawtypes" })
-public class LoanRescheduleRequestTest {
-	private ResponseSpecification responseSpec;
-	private ResponseSpecification generalResponseSpec;
-    private RequestSpecification requestSpec;
-    private LoanTransactionHelper loanTransactionHelper;
-    private LoanRescheduleRequestHelper loanRescheduleRequestHelper;
-    private Integer clientId;
-    private Integer loanProductId;
-    private Integer loanId;
-    private Integer loanRescheduleRequestId;
-    private String loanPrincipalAmount = "100000.00";
-    private String numberOfRepayments = "12";
-    private String interestRatePerPeriod = "18";
-    private String dateString = "4 September 2014";
-    
-    @Before
-    public void initialize() {
-    	Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-        this.loanRescheduleRequestHelper = new LoanRescheduleRequestHelper(this.requestSpec, this.responseSpec);
-
-        this.generalResponseSpec = new ResponseSpecBuilder().build();
-        
-        // create all required entities
-        this.createRequiredEntities();
-    }
-    
-    /** 
-     * Creates the client, loan product, and loan entities 
-     **/
-    private void createRequiredEntities() {
-    	this.createClientEntity();
-    	this.createLoanProductEntity();
-    	this.createLoanEntity();
-    }
-    
-    /** 
-     * create a new client 
-     **/ 
-    private void createClientEntity() {
-    	this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-    	
-        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, this.clientId);
-    }
-    
-    /** 
-     * create a new loan product 
-     **/
-    private void createLoanProductEntity() {
-    	System.out.println("---------------------------------CREATING LOAN PRODUCT------------------------------------------");
-    	
-    	final String loanProductJSON = new LoanProductTestBuilder()
-    			.withPrincipal(loanPrincipalAmount)
-    			.withNumberOfRepayments(numberOfRepayments)
-    			.withinterestRatePerPeriod(interestRatePerPeriod)
-    			.withInterestRateFrequencyTypeAsYear()
-    			.build(null);
-    	
-    	this.loanProductId = this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-    	System.out.println("Successfully created loan product  (ID: " + this.loanProductId + ")");
-    }
-    
-    /** 
-     * submit a new loan application, approve and disburse the loan 
-     **/
-    private void createLoanEntity() {
-    	System.out.println("---------------------------------NEW LOAN APPLICATION------------------------------------------");
-    	
-    	final String loanApplicationJSON = new LoanApplicationTestBuilder()
-    			.withPrincipal(loanPrincipalAmount)
-    			.withLoanTermFrequency(numberOfRepayments)
-                .withLoanTermFrequencyAsMonths()
-                .withNumberOfRepayments(numberOfRepayments)
-                .withRepaymentEveryAfter("1")
-                .withRepaymentFrequencyTypeAsMonths()
-                .withAmortizationTypeAsEqualInstallments()
-                .withInterestCalculationPeriodTypeAsDays()
-                .withInterestRatePerPeriod(interestRatePerPeriod)
-                .withLoanTermFrequencyAsMonths()
-                .withSubmittedOnDate(dateString)
-                .withExpectedDisbursementDate(dateString)
-                .withPrincipalGrace("2")
-                .withInterestGrace("2")
-    			.build(this.clientId.toString(), this.loanProductId.toString(), null);
-    	
-    	this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-    	
-    	System.out.println("Sucessfully created loan (ID: " + this.loanId + ")");
-    	
-    	this.approveLoanApplication();
-    	this.disburseLoan();
-    }
-    
-    /** 
-     * approve the loan application 
-     **/
-    private void approveLoanApplication() {
-    	
-    	if(this.loanId != null) {
-    		this.loanTransactionHelper.approveLoan(this.dateString, this.loanId);
-    		System.out.println("Successfully approved loan (ID: " + this.loanId + ")");
-    	}
-    }
-    
-    /** 
-     * disburse the newly created loan 
-     **/
-    private void disburseLoan() {
-    	
-    	if(this.loanId != null) {
-    		this.loanTransactionHelper.disburseLoan(this.dateString, this.loanId);
-    		System.out.println("Successfully disbursed loan (ID: " + this.loanId + ")");
-    	}
-    }
-    
-    /** 
-     * create new loan reschedule request 
-     **/
-    private void createLoanRescheduleRequest() {
-    	System.out.println("---------------------------------CREATING LOAN RESCHEDULE REQUEST------------------------------------------");
-    	
-    	final String requestJSON = new LoanRescheduleRequestTestBuilder().build(this.loanId.toString());
-    	
-    	this.loanRescheduleRequestId = this.loanRescheduleRequestHelper.createLoanRescheduleRequest(requestJSON);
-    	this.loanRescheduleRequestHelper.verifyCreationOfLoanRescheduleRequest(this.loanRescheduleRequestId);
-    	
-    	System.out.println("Successfully created loan reschedule request (ID: " + this.loanRescheduleRequestId + ")");
-    }
-    
-    @Test
-    public void testCreateLoanRescheduleRequest() {
-    	this.createLoanRescheduleRequest();
-    }
-    
-    @Test
-    public void testRejectLoanRescheduleRequest() {
-    	this.createLoanRescheduleRequest();
-    	
-    	System.out.println("-----------------------------REJECTING LOAN RESCHEDULE REQUEST--------------------------");
-    	
-    	final String requestJSON = new LoanRescheduleRequestTestBuilder().getRejectLoanRescheduleRequestJSON();
-    	this.loanRescheduleRequestHelper.rejectLoanRescheduleRequest(this.loanRescheduleRequestId, requestJSON);
-    	
-    	final HashMap response = (HashMap) this.loanRescheduleRequestHelper.getLoanRescheduleRequest(loanRescheduleRequestId, "statusEnum");
-    	assertTrue((Boolean)response.get("rejected"));
-    	
-    	System.out.println("Successfully rejected loan reschedule request (ID: " + this.loanRescheduleRequestId + ")");
-    }
-    
-    @Test
-    public void testApproveLoanRescheduleRequest() {
-    	this.createLoanRescheduleRequest();
-    	
-    	System.out.println("-----------------------------APPROVING LOAN RESCHEDULE REQUEST--------------------------");
-    	
-    	final String requestJSON = new LoanRescheduleRequestTestBuilder().getApproveLoanRescheduleRequestJSON();
-    	this.loanRescheduleRequestHelper.approveLoanRescheduleRequest(this.loanRescheduleRequestId, requestJSON);
-    	
-    	final HashMap response = (HashMap) this.loanRescheduleRequestHelper.getLoanRescheduleRequest(loanRescheduleRequestId, "statusEnum");
-    	assertTrue((Boolean)response.get("approved"));
-    	
-    	final Integer numberOfRepayments = (Integer) this.loanTransactionHelper.getLoanDetail(requestSpec, generalResponseSpec, loanId, "numberOfRepayments");
-    	final HashMap loanSummary = this.loanTransactionHelper.getLoanSummary(requestSpec, generalResponseSpec, loanId);
-    	final Float totalExpectedRepayment = (Float) loanSummary.get("totalExpectedRepayment");
-    	
-    	assertEquals("NUMBER OF REPAYMENTS SHOULD BE 16, NOT 12", "16", numberOfRepayments.toString());
-    	assertEquals("TOTAL EXPECTED REPAYMENT MUST BE EQUAL TO 118000.0", "118000.0", totalExpectedRepayment.toString());
-    	
-    	System.out.println("Successfully approved loan reschedule request (ID: " + this.loanRescheduleRequestId + ")");
-    }
-}