text:
City purchase of long-vacant Pilsen site, tax credits highlight mayor's plan to build over $1B in affordable housing
A new round of federal low-income housing tax credits will allow for 24 developments citywide, officials said.
By David Roeder@RoederDavid Updated Dec 6, 2021, 5:58pm CST
Share All sharing options for: City purchase of long-vacant Pilsen site, tax credits highlight mayor's plan to build over $1B in affordable housing
A vacant site north of 18th Street at Peoria Street will be acquired by the city as part of a plan to provided affordable housing.
Pat Nabong/Sun-Times
Outlining an expansion of affordable housing, Mayor Lori Lightfoot said Monday the city has acquired a critical vacant parcel in Pilsen and approved federal tax credits to support $1 billion worth of projects throughout Chicago, with an emphasis on the South and West sides.
The Pilsen site is more than 6 acres at 18th and Peoria streets, and the city is buying it for $12 million, said Housing Commissioner Marisa Novara. The parcel could accommodate at least 280 affordable homes, Novara added, although details will depend on standard zoning reviews.
Novara said the city acted to preserve economic diversity in the neighborhood. She called the site "the last large, vacant, developable site in Pilsen, where we're seeing rapid gentrification."
Lea este artículo en español en La Voz Chicago, un servicio presentado por AARP Chicago.
The federal low-income housing tax credits will support 24 additional developments that create or retain 2,428 living units, of which 2,175 will be affordable under city ordinance, officials said. The allocation is more than double the number of projects and units backed during 2019, the most recent round of awards, officials said.
At an event announcing the tax credits, Lightfoot said the developments "move us one step closer toward our vision of a more equitable and inclusive city of Chicago. We envision a city where every resident, no matter age, income, identity, ability, have the opportunities and the resources to lead comfortable lives in the communities they call home."
Discussing Pilsen, Lightfoot said, "We recognize that gentrification is taking a devastating toll on long-term residents who are being driven out of their homes because they are unable to afford to stay in their communities." Noting that she lives in Logan Square, which she called "ground zero" for gentrification, the mayor said, "Shame on us if we don't learn a lesson of those experiences."
Of the 24 projects, 10 are within or close to the 10 communities Lightfoot has targeted for special attention in her Invest South/West program. Five involve units set aside for Chicago Housing Authority tenants, such as work at the Lathrop Homes on the North Side and the LeClaire Courts redevelopment on the Southwest Side.
Officials said 684 of the new units will be family-sized, with two to four bedrooms. Housing programs have been criticized for subsidizing too many small apartments.
All projects involve minority-owned firms as investors or contractors, officials said. The city decides which projects merit the tax credits, which amount to 4% or 9% of construction or property acquisition costs, under rules the federal government has set. In exchange for the credits, developers agree to offer units at below-market rents with income limits for qualified tenants.
Novara said her agency emphasized racial equity in reviewing the projects. "We feel very strongly about the way we are doing this and not just the number of units," she said. The department's review was "really our own check on ourselves to say, despite our best intentions, what are the ways we may be unintentionally reinforcing racially discriminatory outcomes and how do we solve for that?" she said.
Chicago Housing Commissioner Marisa Novara.
Ashlee Rezin/Sun-Times
Some projects also could get a city tax subsidy. The proposals are at various stages of financing and zoning review and could move forward over the next eight to 18 months, officials said.
They are located across the city, including the Near North and Near South sides, Austin, Englewood, Lincoln Square, Humboldt Park, Uptown and Woodlawn.
The Pilsen site has been controversial for years. New York-based Property Markets Group proposed building 434 units on the property in 2019. A lack of commitment on affordable units brought opposition from Ald. Byron Sigcho-Lopez (25th) and residents concerned about being pushed out by rising rents and property taxes. The project never advanced.
Property Markets Group had sued the city earlier, in 2018, over its rezoning to limit the property to industrial use. The move, championed by former Ald. Danny Solis, was designed to make any developer negotiate a residential plan with city officials and local groups.
The case is still pending, but Novara said the property owners have agreed to the $12 million sale. She said the city will sell the land to a developer, perhaps after requesting competitive proposals.
Records indicate interest in the property has transferred to New York-based Raven Capital Management, which Property Markets Group identifies as a co-developer. The firms could not be reached for comment.
Sigcho-Lopez said he supports the city's plans as they respect Pilsen's social fabric, in contrast to the developer wanting luxury housing. "It's a welcome change. The credit goes to the community residents that overwhelmingly asked for something else," he said.
The city also announced it has opened a second round of applications of rental assistance for tenants and landlords affected financially by the pandemic. The applications can be submitted via the city's website until 11:59 p.m. Dec. 18.
The program has $102 million from the federal American Rescue Plan Act and will offer up to 18 months of help with rents and utility bills.


text:
/*
 * Qt4 bitcoin GUI.
 *
 * W.J. van der Laan 2011-2012
 * The Bitcoin Developers 2011-2012
 */
#include "bitcoingui.h"
#include "transactiontablemodel.h"
#include "addressbookpage.h"
#include "sendcoinsdialog.h"
#include "signverifymessagedialog.h"
#include "optionsdialog.h"
#include "aboutdialog.h"
#include "clientmodel.h"
#include "walletmodel.h"
#include "editaddressdialog.h"
#include "optionsmodel.h"
#include "transactiondescdialog.h"
#include "addresstablemodel.h"
#include "transactionview.h"
#include "overviewpage.h"
#include "bitcoinunits.h"
#include "guiconstants.h"
#include "askpassphrasedialog.h"
#include "notificator.h"
#include "guiutil.h"
#include "rpcconsole.h"
#include "wallet.h"
#include "blockbrowser.h"

#ifdef Q_OS_MAC
#include "macdockiconhandler.h"
#endif

#include <QDebug>
#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QIcon>
#include <QTabWidget>
#include <QVBoxLayout>
#include <QToolBar>
#include <QStatusBar>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QLocale>
#include <QMessageBox>
#include <QMimeData>
#include <QProgressBar>
#include <QStackedWidget>
#include <QDateTime>
#include <QMovie>
#include <QFileDialog>
#include <QDesktopServices>
#include <QTimer>
#include <QDragEnterEvent>
#include <QUrl>
#include <QStyle>

#include <iostream>

extern CWallet* pwalletMain;
extern int64_t nLastCoinStakeSearchInterval;
extern unsigned int nTargetSpacing;
double GetPoSKernelPS(const CBlockIndex* blockindex = NULL);

BitcoinGUI::BitcoinGUI(QWidget *parent):
    QMainWindow(parent),
    clientModel(0),
    walletModel(0),
    encryptWalletAction(0),
    changePassphraseAction(0),
    unlockWalletAction(0),
    lockWalletAction(0),
    aboutQtAction(0),
    trayIcon(0),
    notificator(0),
    rpcConsole(0),
    blockBrowser(0)
{
    updateStyle();
    resize(850, 550);
    setWindowTitle(tr("HOST") + " - " + tr("Wallet"));
#ifndef Q_OS_MAC
    qApp->setWindowIcon(QIcon(":icons/bitcoin"));
    setWindowIcon(QIcon(":icons/bitcoin"));
#else
    setUnifiedTitleAndToolBarOnMac(true);
    QApplication::setAttribute(Qt::AA_DontShowIconsInMenus);
#endif
    // Accept D&D of URIs
    setAcceptDrops(true);

    // Create actions for the toolbar, menu bar and tray/dock icon
    createActions();

    // Create application menu bar
    createMenuBar();

    // Create the toolbars
    createToolBars();

    // Create the tray icon (or setup the dock icon)
    createTrayIcon();

    // Create tabs
    overviewPage = new OverviewPage();
    blockBrowser = new BlockBrowser(this);

    transactionsPage = new QWidget(this);
    QVBoxLayout *vbox = new QVBoxLayout();
    transactionView = new TransactionView(this);
    vbox->addWidget(transactionView);
    transactionsPage->setLayout(vbox);

    addressBookPage = new AddressBookPage(AddressBookPage::ForEditing, AddressBookPage::SendingTab);

    receiveCoinsPage = new AddressBookPage(AddressBookPage::ForEditing, AddressBookPage::ReceivingTab);

    sendCoinsPage = new SendCoinsDialog(this);

    signVerifyMessageDialog = new SignVerifyMessageDialog(this);

    centralWidget = new QStackedWidget(this);
    centralWidget->addWidget(overviewPage);
    centralWidget->addWidget(transactionsPage);
    centralWidget->addWidget(addressBookPage);
    centralWidget->addWidget(receiveCoinsPage);
    centralWidget->addWidget(sendCoinsPage);
    centralWidget->addWidget(blockBrowser);
    setCentralWidget(centralWidget);

     // Create status bar
    statusBar();

    // Status bar notification icons
    QFrame *frameBlocks = new QFrame();
    frameBlocks->setContentsMargins(0,0,0,0);
    frameBlocks->setMinimumWidth(98);
    frameBlocks->setMaximumWidth(98);
    QHBoxLayout *frameBlocksLayout = new QHBoxLayout(frameBlocks);
    frameBlocksLayout->setContentsMargins(0,0,0,0);
    frameBlocksLayout->setSpacing(3);
    labelEncryptionIcon = new QLabel();
	labelStakingIcon = new QLabel();
    labelConnectionsIcon = new QLabel();
    labelBlocksIcon = new QLabel();

	if (GetBoolArg("-staking", true))
    {
        QTimer *timerStakingIcon = new QTimer(labelStakingIcon);
        connect(timerStakingIcon, SIGNAL(timeout()), this, SLOT(updateStakingIcon()));
        timerStakingIcon->start(30 * 1000);
        updateStakingIcon();
    }

    frameBlocksLayout->addStretch();
    frameBlocksLayout->addWidget(labelEncryptionIcon);
    frameBlocksLayout->addStretch();
    frameBlocksLayout->addWidget(labelStakingIcon);
    frameBlocksLayout->addStretch();
    frameBlocksLayout->addWidget(labelConnectionsIcon);
    frameBlocksLayout->addStretch();
    frameBlocksLayout->addWidget(labelBlocksIcon);
    frameBlocksLayout->addStretch();

    // Progress bar and label for blocks download
    progressBarLabel = new QLabel();
    progressBarLabel->setVisible(false);
    progressBar = new QProgressBar();
    progressBar->setAlignment(Qt::AlignCenter);
    progressBar->setVisible(false);

    // Override style sheet for progress bar for styles that have a segmented progress bar,
    // as they make the text unreadable (workaround for issue #1071)
    // See https://qt-project.org/doc/qt-4.8/gallery.html
    QString curStyle = qApp->style()->metaObject()->className();
    if(curStyle == "QWindowsStyle" || curStyle == "QWindowsXPStyle")
    {
        progressBar->setStyleSheet("QProgressBar { background-color: #e8e8e8; border: 1px solid grey; border-radius: 7px; padding: 1px; text-align: center; } QProgressBar::chunk { background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #FF8000, stop: 1 orange); border-radius: 7px; margin: 0px; }");
    }

    statusBar()->addWidget(progressBarLabel);
    statusBar()->addWidget(progressBar);
    statusBar()->addPermanentWidget(frameBlocks);

    syncIconMovie = new QMovie(":/movies/update_spinner", "mng", this);
    stakingOnMovie = new QMovie(":/movies/staking_on", "mng", this);

    // Clicking on a transaction on the overview page simply sends you to transaction history page
    connect(overviewPage, SIGNAL(transactionClicked(QModelIndex)), this, SLOT(gotoHistoryPage()));
    connect(overviewPage, SIGNAL(transactionClicked(QModelIndex)), transactionView, SLOT(focusTransaction(QModelIndex)));

    // Double-clicking on a transaction on the transaction history page shows details
    connect(transactionView, SIGNAL(doubleClicked(QModelIndex)), transactionView, SLOT(showDetails()));

    rpcConsole = new RPCConsole(this);
    connect(openRPCConsoleAction, SIGNAL(triggered()), rpcConsole, SLOT(showTab_Debug()));

    blockBrowser = new BlockBrowser(this);
    connect(blockAction, SIGNAL(triggered()), blockBrowser, SLOT(show()));

    // Clicking on "Verify Message" in the address book sends you to the verify message tab
    connect(addressBookPage, SIGNAL(verifyMessage(QString)), this, SLOT(gotoVerifyMessageTab(QString)));
    // Clicking on "Sign Message" in the receive coins page sends you to the sign message tab
    connect(receiveCoinsPage, SIGNAL(signMessage(QString)), this, SLOT(gotoSignMessageTab(QString)));
    // Clicking on "Block Explorer" in the transaction page sends you to the blockbrowser
    connect(transactionView, SIGNAL(blockBrowserSignal(QString)), this, SLOT(gotoBlockBrowser(QString)));

    gotoOverviewPage();
}

BitcoinGUI::~BitcoinGUI()
{
    if(trayIcon) // Hide tray icon, as deleting will let it linger until quit (on Ubuntu)
        trayIcon->hide();
#ifdef Q_OS_MAC
    delete appMenuBar;
#endif
}

void BitcoinGUI::createActions()
{
    QActionGroup *tabGroup = new QActionGroup(this);

    overviewAction = new QAction(QIcon(":/icons/overview2"), tr("&Overview"), this);
    overviewAction->setToolTip(tr("Wallet overview"));
    overviewAction->setCheckable(true);
    overviewAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_1));
    tabGroup->addAction(overviewAction);

    sendCoinsAction = new QAction(QIcon(":/icons/send2"), tr("&Send"), this);
    sendCoinsAction->setToolTip(tr("Transfer space to another address"));
    sendCoinsAction->setCheckable(true);
    sendCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_2));
    tabGroup->addAction(sendCoinsAction);

    receiveCoinsAction = new QAction(QIcon(":/icons/receiving_addresses2"), tr("&Addys"), this);
    receiveCoinsAction->setToolTip(tr("Shows all of your wallet's addresses"));
    receiveCoinsAction->setCheckable(true);
    receiveCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_3));
    tabGroup->addAction(receiveCoinsAction);

    historyAction = new QAction(QIcon(":/icons/history2"), tr("&Histroy"), this);
    historyAction->setToolTip(tr("Shows a timeline of past transfers"));
    historyAction->setCheckable(true);
    historyAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_4));
    tabGroup->addAction(historyAction);

    addressBookAction = new QAction(QIcon(":/icons/address-book2"), tr("&Contacts"), this);
    addressBookAction->setToolTip(tr("View and edit stored contacts"));
    addressBookAction->setCheckable(true);
    addressBookAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_5));
    tabGroup->addAction(addressBookAction);

    connect(overviewAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized()));
    connect(overviewAction, SIGNAL(triggered()), this, SLOT(gotoOverviewPage()));
    connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized()));
    connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(gotoSendCoinsPage()));
    connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized()));
    connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(gotoReceiveCoinsPage()));
    connect(historyAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized()));
    connect(historyAction, SIGNAL(triggered()), this, SLOT(gotoHistoryPage()));
    connect(addressBookAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized()));
    connect(addressBookAction, SIGNAL(triggered()), this, SLOT(gotoAddressBookPage()));

    quitAction = new QAction(QIcon(":/icons/quit"), tr("E&xit"), this);
    quitAction->setToolTip(tr("Quit application"));
    quitAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q));
    quitAction->setMenuRole(QAction::QuitRole);
    aboutAction = new QAction(QIcon(":/icons/bitcoin"), tr("&About HOST"), this);
    aboutAction->setToolTip(tr("Show information about HOST"));
    aboutAction->setMenuRole(QAction::AboutRole);
    aboutQtAction = new QAction(QIcon(":/trolltech/qmessagebox/images/qtlogo-64.png"), tr("About &Qt"), this);
    aboutQtAction->setToolTip(tr("Show information about Qt"));
    aboutQtAction->setMenuRole(QAction::AboutQtRole);
    optionsAction = new QAction(QIcon(":/icons/options"), tr("&Options..."), this);
    optionsAction->setToolTip(tr("Modify configuration options for HOST"));
    optionsAction->setMenuRole(QAction::PreferencesRole);
    toggleHideAction = new QAction(QIcon(":/icons/bitcoin"), tr("&Show / Hide"), this);
    encryptWalletAction = new QAction(QIcon(":/icons/lock_closed"), tr("&Encrypt Wallet..."), this);
    encryptWalletAction->setToolTip(tr("Encrypt or decrypt wallet"));
    encryptWalletAction->setCheckable(true);
    backupWalletAction = new QAction(QIcon(":/icons/filesave"), tr("&Backup Wallet..."), this);
    backupWalletAction->setToolTip(tr("Backup wallet to another location"));
    changePassphraseAction = new QAction(QIcon(":/icons/key"), tr("&Change Passphrase..."), this);
    changePassphraseAction->setToolTip(tr("Change the passphrase used for wallet encryption"));
    unlockWalletAction = new QAction(QIcon(":/icons/lock_open"), tr("&Unlock Wallet..."), this);
    unlockWalletAction->setToolTip(tr("Unlock wallet"));
    lockWalletAction = new QAction(QIcon(":/icons/lock_closed"), tr("&Lock Wallet"), this);
    lockWalletAction->setToolTip(tr("Lock wallet"));
    signMessageAction = new QAction(QIcon(":/icons/edit"), tr("Sign &message..."), this);
    verifyMessageAction = new QAction(QIcon(":/icons/transaction_0"), tr("&Verify message..."), this);

    exportAction = new QAction(QIcon(":/icons/export2"), tr("&Export..."), this);
    exportAction->setToolTip(tr("Export the data in the current tab to a file"));
    openRPCConsoleAction = new QAction(QIcon(":/icons/debugwindow2"), tr("&Debug window"), this);
    openRPCConsoleAction->setToolTip(tr("Open debugging and diagnostic console"));

    blockAction = new QAction(QIcon(":/icons/blockbrowser2"), tr("&Block Browser"), this);
    blockAction->setToolTip(tr("Explore the BlockChain"));

    connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
    connect(aboutAction, SIGNAL(triggered()), this, SLOT(aboutClicked()));
    connect(aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
    connect(optionsAction, SIGNAL(triggered()), this, SLOT(optionsClicked()));
    connect(toggleHideAction, SIGNAL(triggered()), this, SLOT(toggleHidden()));
    connect(encryptWalletAction, SIGNAL(triggered(bool)), this, SLOT(encryptWallet(bool)));
    connect(backupWalletAction, SIGNAL(triggered()), this, SLOT(backupWallet()));
    connect(changePassphraseAction, SIGNAL(triggered()), this, SLOT(changePassphrase()));
    connect(unlockWalletAction, SIGNAL(triggered()), this, SLOT(unlockWallet()));
    connect(lockWalletAction, SIGNAL(triggered()), this, SLOT(lockWallet()));
    connect(signMessageAction, SIGNAL(triggered()), this, SLOT(gotoSignMessageTab()));
    connect(verifyMessageAction, SIGNAL(triggered()), this, SLOT(gotoVerifyMessageTab()));
    connect(blockAction, SIGNAL(triggered()), this, SLOT(gotoBlockBrowser()));
}

void BitcoinGUI::createMenuBar()
{
#ifdef Q_OS_MAC
    // Create a decoupled menu bar on Mac which stays even if the window is closed
    appMenuBar = new QMenuBar();
#else
    // Get the main window's menu bar on other platforms
    appMenuBar = menuBar();
#endif

    // Configure the menus
    QMenu *file = appMenuBar->addMenu(tr("&File"));
    file->addAction(backupWalletAction);
    file->addAction(exportAction);
    file->addAction(signMessageAction);
    file->addAction(verifyMessageAction);
    file->addSeparator();
    file->addAction(quitAction);

    QMenu *settings = appMenuBar->addMenu(tr("&Settings"));
    settings->addAction(encryptWalletAction);
    settings->addAction(changePassphraseAction);
    settings->addAction(unlockWalletAction);
    settings->addAction(lockWalletAction);
    settings->addSeparator();
    settings->addAction(optionsAction);

    QMenu *help = appMenuBar->addMenu(tr("&Help"));
    help->addAction(openRPCConsoleAction);
    help->addSeparator();
    help->addAction(aboutAction);
    help->addAction(aboutQtAction);
}

void BitcoinGUI::createToolBars()
{
    QToolBar *toolbar = addToolBar(tr("Tabs toolbar"));
    toolbar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    toolbar->addAction(overviewAction);
    toolbar->addAction(sendCoinsAction);
    toolbar->addAction(receiveCoinsAction);
    toolbar->addAction(historyAction);
    toolbar->addAction(addressBookAction);

    QToolBar *toolbar2 = addToolBar(tr("Actions toolbar"));
    toolbar2->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    toolbar2->addAction(openRPCConsoleAction);
    toolbar2->addAction(blockAction);
    toolbar2->addAction(exportAction);
}

void BitcoinGUI::setClientModel(ClientModel *clientModel)
{
    this->clientModel = clientModel;
    if(clientModel)
    {
        // Replace some strings and icons, when using the testnet
        if(clientModel->isTestNet())
        {
            setWindowTitle(windowTitle() + QString(" ") + tr("[testnet]"));
#ifndef Q_OS_MAC
            qApp->setWindowIcon(QIcon(":icons/bitcoin_testnet"));
            setWindowIcon(QIcon(":icons/bitcoin_testnet"));
#else
            MacDockIconHandler::instance()->setIcon(QIcon(":icons/bitcoin_testnet"));
#endif
            if(trayIcon)
            {
                trayIcon->setToolTip(tr("HOST Wallet") + QString(" ") + tr("[testnet]"));
                trayIcon->setIcon(QIcon(":/icons/toolbar_testnet"));
                toggleHideAction->setIcon(QIcon(":/icons/toolbar_testnet"));
            }

            aboutAction->setIcon(QIcon(":/icons/toolbar_testnet"));
        }

        // Keep up to date with client
        setNumConnections(clientModel->getNumConnections());
        connect(clientModel, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int)));

        setNumBlocks(clientModel->getNumBlocks(), clientModel->getNumBlocksOfPeers());
        connect(clientModel, SIGNAL(numBlocksChanged(int,int)), this, SLOT(setNumBlocks(int,int)));
        connect(clientModel, SIGNAL(numBlocksChanged(int,int)), this, SLOT(updateStakingIcon()));

        // Report errors from network/worker thread
        connect(clientModel, SIGNAL(error(QString,QString,bool)), this, SLOT(error(QString,QString,bool)));

        rpcConsole->setClientModel(clientModel);
        addressBookPage->setOptionsModel(clientModel->getOptionsModel());
        receiveCoinsPage->setOptionsModel(clientModel->getOptionsModel());
    }
}

void BitcoinGUI::setWalletModel(WalletModel *walletModel)
{
    this->walletModel = walletModel;
    if(walletModel)
    {
        // Report errors from wallet thread
        connect(walletModel, SIGNAL(error(QString,QString,bool)), this, SLOT(error(QString,QString,bool)));

        // Put transaction list in tabs
        transactionView->setModel(walletModel);

        overviewPage->setModel(walletModel);
        addressBookPage->setModel(walletModel->getAddressTableModel());
        receiveCoinsPage->setModel(walletModel->getAddressTableModel());
        sendCoinsPage->setModel(walletModel);
        signVerifyMessageDialog->setModel(walletModel);

        setEncryptionStatus(walletModel->getEncryptionStatus());
        connect(walletModel, SIGNAL(encryptionStatusChanged(int)), this, SLOT(setEncryptionStatus(int)));
        connect(walletModel, SIGNAL(encryptionStatusChanged(int)), this, SLOT(updateStakingIcon()));

        // Balloon pop-up for new transaction
        connect(walletModel->getTransactionTableModel(), SIGNAL(rowsInserted(QModelIndex,int,int)),
                this, SLOT(incomingTransaction(QModelIndex,int,int)));

        // Ask for passphrase if needed
        connect(walletModel, SIGNAL(requireUnlock()), this, SLOT(unlockWallet()));
    }
}

void BitcoinGUI::createTrayIcon()
{
    QMenu *trayIconMenu;
#ifndef Q_OS_MAC
    trayIcon = new QSystemTrayIcon(this);
    trayIconMenu = new QMenu(this);
    trayIcon->setContextMenu(trayIconMenu);
    trayIcon->setToolTip(tr("HOST Wallet"));
    trayIcon->setIcon(QIcon(":/icons/toolbar"));
    connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
            this, SLOT(trayIconActivated(QSystemTrayIcon::ActivationReason)));
    trayIcon->show();
#else
    // Note: On Mac, the dock icon is used to provide the tray's functionality.
    MacDockIconHandler *dockIconHandler = MacDockIconHandler::instance();
    dockIconHandler->setMainWindow((QMainWindow *)this);
    trayIconMenu = dockIconHandler->dockMenu();
#endif

    // Configuration of the tray icon (or dock icon) icon menu
    trayIconMenu->addAction(toggleHideAction);
    trayIconMenu->addSeparator();
    trayIconMenu->addAction(sendCoinsAction);
    trayIconMenu->addAction(receiveCoinsAction);
    trayIconMenu->addSeparator();
    trayIconMenu->addAction(signMessageAction);
    trayIconMenu->addAction(verifyMessageAction);
    trayIconMenu->addSeparator();
    trayIconMenu->addAction(optionsAction);
    trayIconMenu->addAction(openRPCConsoleAction);
#ifndef Q_OS_MAC // This is built-in on Mac
    trayIconMenu->addSeparator();
    trayIconMenu->addAction(quitAction);
#endif

    notificator = new Notificator(qApp->applicationName(), trayIcon);
}

#ifndef Q_OS_MAC
void BitcoinGUI::trayIconActivated(QSystemTrayIcon::ActivationReason reason)
{
    if(reason == QSystemTrayIcon::Trigger)
    {
        // Click on system tray icon triggers show/hide of the main window
        toggleHideAction->trigger();
    }
}
#endif

void BitcoinGUI::optionsClicked()
{
    if(!clientModel || !clientModel->getOptionsModel())
        return;
    OptionsDialog dlg;
    dlg.setModel(clientModel->getOptionsModel());
    dlg.exec();
}

void BitcoinGUI::aboutClicked()
{
    AboutDialog dlg;
    dlg.setModel(clientModel);
    dlg.exec();
}

void BitcoinGUI::setNumConnections(int count)
{
    QString icon;
    switch(count)
    {
    case 0: icon = ":/icons/connect_0"; break;
    case 1: case 2: case 3: icon = ":/icons/connect_1"; break;
    case 4: case 5: case 6: icon = ":/icons/connect_2"; break;
    case 7: case 8: case 9: icon = ":/icons/connect_3"; break;
    default: icon = ":/icons/connect_4"; break;
    }
    labelConnectionsIcon->setPixmap(QIcon(icon).pixmap(28,54));
    labelConnectionsIcon->setToolTip(tr("%n active connection(s) to HOST network", "", count));
}

void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks)
{
    // don't show / hide progress bar and its label if we have no connection to the network
    if (!clientModel || clientModel->getNumConnections() == 0)
    {
        progressBarLabel->setVisible(false);
        progressBar->setVisible(false);

        return;
    }

    QString strStatusBarWarnings = clientModel->getStatusBarWarnings();
    QString tooltip;

    if(count < nTotalBlocks)
    {
        int nRemainingBlocks = nTotalBlocks - count;
        float nPercentageDone = count / (nTotalBlocks * 0.01f);

        if (strStatusBarWarnings.isEmpty())
        {
            progressBarLabel->setText(tr("Synchronizing with network..."));
            progressBarLabel->setVisible(true);
            progressBar->setFormat(tr("~%n block(s) remaining", "", nRemainingBlocks));
            progressBar->setMaximum(nTotalBlocks);
            progressBar->setValue(count);
            progressBar->setVisible(true);
        }

        tooltip = tr("Downloaded %1 of %2 blocks of transfer history (%3% done).").arg(count).arg(nTotalBlocks).arg(nPercentageDone, 0, 'f', 2);
    }
    else
    {
        if (strStatusBarWarnings.isEmpty())
            progressBarLabel->setVisible(false);

        progressBar->setVisible(false);
        tooltip = tr("Downloaded %1 blocks of transfer history.").arg(count);
    }

    // Override progressBarLabel text and hide progress bar, when we have warnings to display
    if (!strStatusBarWarnings.isEmpty())
    {
        progressBarLabel->setText(strStatusBarWarnings);
         progressBarLabel->setVisible(true);
        progressBar->setVisible(false);
    }

    QDateTime lastBlockDate = clientModel->getLastBlockDate();
    int secs = lastBlockDate.secsTo(QDateTime::currentDateTime());
    QString text;

    // Represent time from last generated block in human readable text
    if(secs <= 0)
    {
        // Fully up to date. Leave text empty.
    }
    else if(secs < 60)
    {
        text = tr("%n second(s) ago","",secs);
    }
    else if(secs < 60*60)
    {
        text = tr("%n minute(s) ago","",secs/60);
    }
    else if(secs < 24*60*60)
    {
        text = tr("%n hour(s) ago","",secs/(60*60));
    }
    else
    {
        text = tr("%n day(s) ago","",secs/(60*60*24));
    }

    // Set icon state: spinning if catching up, tick otherwise
    if(secs < 90*60 && count >= nTotalBlocks)
    {
        tooltip = tr("Up to date") + QString(".<br>") + tooltip;
        labelBlocksIcon->setPixmap(QIcon(":/icons/synced").pixmap(28,54));

        overviewPage->showOutOfSyncWarning(false);
    }
    else
    {
        tooltip = tr("Catching up...") + QString("<br>") + tooltip;
        labelBlocksIcon->setMovie(syncIconMovie);
        syncIconMovie->start();

        overviewPage->showOutOfSyncWarning(true);
    }

    if(!text.isEmpty())
    {
        tooltip += QString("<br>");
        tooltip += tr("Last received block was generated %1.").arg(text);
    }

    // Don't word-wrap this (fixed-width) tooltip
    tooltip = QString("<nobr>") + tooltip + QString("</nobr>");

    labelBlocksIcon->setToolTip(tooltip);
    progressBarLabel->setToolTip(tooltip);
    progressBar->setToolTip(tooltip);
}

void BitcoinGUI::updateStakingIcon()
{
    uint64_t nMinWeight = 0, nMaxWeight = 0, nWeight = 0;
    if (pwalletMain)
        pwalletMain->GetStakeWeight(*pwalletMain, nMinWeight, nMaxWeight, nWeight);

    if (nLastCoinStakeSearchInterval && nWeight)
    {
        uint64_t nNetworkWeight = GetPoSKernelPS();
        unsigned nEstimateTime = nTargetSpacing * nNetworkWeight / nWeight;

        QString text;
        if (nEstimateTime < 60)
        {
            text = tr("%n second(s)", "", nEstimateTime);
        }
        else if (nEstimateTime < 60*60)
        {
            text = tr("%n minute(s)", "", nEstimateTime/60);
        }
        else if (nEstimateTime < 24*60*60)
        {
            text = tr("%n hour(s)", "", nEstimateTime/(60*60));
        }
        else
        {
            text = tr("%n day(s)", "", nEstimateTime/(60*60*24));
        }

        labelStakingIcon->setMovie(stakingOnMovie);
        stakingOnMovie->start();
        labelStakingIcon->setToolTip(tr("Staking.<br>Your weight is %1<br>Network weight is %2<br>Expected time to earn reward is %3").arg(nWeight).arg(nNetworkWeight).arg(text));
    }
    else
    {
        labelStakingIcon->setPixmap(QIcon(":/icons/staking_off").pixmap(28,54));
        if (pwalletMain && pwalletMain->IsLocked())
            labelStakingIcon->setToolTip(tr("Not staking because wallet is locked"));
        else if (vNodes.empty())
            labelStakingIcon->setToolTip(tr("Not staking because wallet is offline"));
        else if (IsInitialBlockDownload())
            labelStakingIcon->setToolTip(tr("Not staking because wallet is syncing"));
        else if (!nWeight)
            labelStakingIcon->setToolTip(tr("Not staking because you don't have mature coins"));
        else
            labelStakingIcon->setToolTip(tr("Not staking"));
    }
}
void BitcoinGUI::error(const QString &title, const QString &message, bool modal)
{
    // Report errors from network/worker thread
    if(modal)
    {
        QMessageBox::critical(this, title, message, QMessageBox::Ok, QMessageBox::Ok);
    } else {
        notificator->notify(Notificator::Critical, title, message);
    }
}

void BitcoinGUI::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
#ifndef Q_OS_MAC // Ignored on Mac
    if(e->type() == QEvent::WindowStateChange)
    {
        if(clientModel && clientModel->getOptionsModel()->getMinimizeToTray())
        {
            QWindowStateChangeEvent *wsevt = static_cast<QWindowStateChangeEvent*>(e);
            if(!(wsevt->oldState() & Qt::WindowMinimized) && isMinimized())
            {
                QTimer::singleShot(0, this, SLOT(hide()));
                e->ignore();
            }
        }
    }
#endif
}

void BitcoinGUI::closeEvent(QCloseEvent *event)
{
    if(clientModel)
    {
#ifndef Q_OS_MAC // Ignored on Mac
        if(!clientModel->getOptionsModel()->getMinimizeToTray() &&
           !clientModel->getOptionsModel()->getMinimizeOnClose())
        {
            qApp->quit();
        }
#endif
    }
    QMainWindow::closeEvent(event);
}

void BitcoinGUI::askFee(qint64 nFeeRequired, bool *payFee)
{
    QString strMessage =
        tr("Your space requires protection to reach it's destination. To continue you must purchase protection. "
          "Do you wish to purchase protection?").arg(
                BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, nFeeRequired));
    QMessageBox::StandardButton retval = QMessageBox::question(
          this, tr("Confirm secure transfer"), strMessage,
          QMessageBox::Yes|QMessageBox::Cancel, QMessageBox::Yes);
    *payFee = (retval == QMessageBox::Yes);
}

void BitcoinGUI::incomingTransaction(const QModelIndex & parent, int start, int end)
{
    if(!walletModel || !clientModel)
        return;
    TransactionTableModel *ttm = walletModel->getTransactionTableModel();
    qint64 amount = ttm->index(start, TransactionTableModel::Amount, parent)
                    .data(Qt::EditRole).toULongLong();
    if(!clientModel->inInitialBlockDownload())
    {
        // On new transaction, make an info balloon
        // Unless the initial block download is in progress, to prevent balloon-spam
        QString date = ttm->index(start, TransactionTableModel::Date, parent)
                        .data().toString();
        QString type = ttm->index(start, TransactionTableModel::Type, parent)
                        .data().toString();
        QString address = ttm->index(start, TransactionTableModel::ToAddress, parent)
                        .data().toString();
        QIcon icon = qvariant_cast<QIcon>(ttm->index(start,
                            TransactionTableModel::ToAddress, parent)
                        .data(Qt::DecorationRole));

        notificator->notify(Notificator::Information,
                            (amount)<0 ? tr("Transfer Sent") :
                                         tr("Transfer Received"),
                              tr("Date: %1\n"
                                 "Amount: %2\n"
                                 "Type: %3\n"
                                 "Address: %4\n")
                              .arg(date)
                              .arg(BitcoinUnits::formatWithUnit(walletModel->getOptionsModel()->getDisplayUnit(), amount, true))
                              .arg(type)
                              .arg(address), icon);
    }
}

void BitcoinGUI::gotoOverviewPage()
{
    overviewAction->setChecked(true);
    centralWidget->setCurrentWidget(overviewPage);

    exportAction->setEnabled(false);
    disconnect(exportAction, SIGNAL(triggered()), 0, 0);
}

void BitcoinGUI::gotoHistoryPage()
{
    historyAction->setChecked(true);
    centralWidget->setCurrentWidget(transactionsPage);

    exportAction->setEnabled(true);
    disconnect(exportAction, SIGNAL(triggered()), 0, 0);
    connect(exportAction, SIGNAL(triggered()), transactionView, SLOT(exportClicked()));
}

void BitcoinGUI::gotoAddressBookPage()
{
    addressBookAction->setChecked(true);
    centralWidget->setCurrentWidget(addressBookPage);

    exportAction->setEnabled(true);
    disconnect(exportAction, SIGNAL(triggered()), 0, 0);
    connect(exportAction, SIGNAL(triggered()), addressBookPage, SLOT(exportClicked()));
}

void BitcoinGUI::gotoBlockBrowser(QString transactionId)
{
    if(!transactionId.isEmpty())
    blockBrowser->setTransactionId(transactionId);

    blockBrowser->show();
}

void BitcoinGUI::gotoReceiveCoinsPage()
{
    receiveCoinsAction->setChecked(true);
    centralWidget->setCurrentWidget(receiveCoinsPage);

    exportAction->setEnabled(true);
    disconnect(exportAction, SIGNAL(triggered()), 0, 0);
    connect(exportAction, SIGNAL(triggered()), receiveCoinsPage, SLOT(exportClicked()));
}

void BitcoinGUI::gotoSendCoinsPage()
{
    sendCoinsAction->setChecked(true);
    centralWidget->setCurrentWidget(sendCoinsPage);

    exportAction->setEnabled(false);
    disconnect(exportAction, SIGNAL(triggered()), 0, 0);
}

void BitcoinGUI::gotoSignMessageTab(QString addr)
{
    // call show() in showTab_SM()
    signVerifyMessageDialog->showTab_SM(true);

    if(!addr.isEmpty())
        signVerifyMessageDialog->setAddress_SM(addr);
}

void BitcoinGUI::gotoVerifyMessageTab(QString addr)
{
    // call show() in showTab_VM()
    signVerifyMessageDialog->showTab_VM(true);

    if(!addr.isEmpty())
        signVerifyMessageDialog->setAddress_VM(addr);
}

void BitcoinGUI::dragEnterEvent(QDragEnterEvent *event)
{
    // Accept only URIs
    if(event->mimeData()->hasUrls())
        event->acceptProposedAction();
}

void BitcoinGUI::dropEvent(QDropEvent *event)
{
    if(event->mimeData()->hasUrls())
    {
        int nValidUrisFound = 0;
        QList<QUrl> uris = event->mimeData()->urls();
        foreach(const QUrl &uri, uris)
        {
            if (sendCoinsPage->handleURI(uri.toString()))
                nValidUrisFound++;
        }

        // if valid URIs were found
        if (nValidUrisFound)
            gotoSendCoinsPage();
        else
            notificator->notify(Notificator::Warning, tr("URI handling"), tr("URI can not be parsed! This can be caused by an invalid HOST address or malformed URI parameters."));
    }

    event->acceptProposedAction();
}

void BitcoinGUI::handleURI(QString strURI)
{
    // URI has to be valid
    if (sendCoinsPage->handleURI(strURI))
    {
        showNormalIfMinimized();
        gotoSendCoinsPage();
    }
    else
        notificator->notify(Notificator::Warning, tr("URI handling"), tr("URI can not be parsed! This can be caused by an invalid HOST address or malformed URI parameters."));
}

void BitcoinGUI::setEncryptionStatus(int status)
{
    switch(status)
    {
    case WalletModel::Unencrypted:
        labelEncryptionIcon->hide();
        encryptWalletAction->setChecked(false);
        changePassphraseAction->setEnabled(false);
        unlockWalletAction->setVisible(false);
        lockWalletAction->setVisible(false);
        encryptWalletAction->setEnabled(true);
        break;
    case WalletModel::Unlocked:
        labelEncryptionIcon->show();
        labelEncryptionIcon->setPixmap(QIcon(":/icons/lock_open").pixmap(28,54));
        labelEncryptionIcon->setToolTip(tr("Wallet is <b>encrypted</b> and currently <b>unlocked</b>"));
        encryptWalletAction->setChecked(true);
        changePassphraseAction->setEnabled(true);
        unlockWalletAction->setVisible(false);
        lockWalletAction->setVisible(true);
        encryptWalletAction->setEnabled(false); // TODO: decrypt currently not supported
        break;
    case WalletModel::Locked:
        labelEncryptionIcon->show();
        labelEncryptionIcon->setPixmap(QIcon(":/icons/lock_closed").pixmap(28,54));
        labelEncryptionIcon->setToolTip(tr("Wallet is <b>encrypted</b> and currently <b>locked</b>"));
        encryptWalletAction->setChecked(true);
        changePassphraseAction->setEnabled(true);
        unlockWalletAction->setVisible(true);
        lockWalletAction->setVisible(false);
        encryptWalletAction->setEnabled(false); // TODO: decrypt currently not supported
        break;
    }
}

void BitcoinGUI::encryptWallet(bool status)
{
    if(!walletModel)
        return;
    AskPassphraseDialog dlg(status ? AskPassphraseDialog::Encrypt:
                                     AskPassphraseDialog::Decrypt, this);
    dlg.setModel(walletModel);
    dlg.exec();

    setEncryptionStatus(walletModel->getEncryptionStatus());
}

void BitcoinGUI::backupWallet()
{
    QString saveDir = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation);
    QString filename = QFileDialog::getSaveFileName(this, tr("Backup Wallet"), saveDir, tr("Wallet Data (*.dat)"));
    if(!filename.isEmpty()) {
        if(!walletModel->backupWallet(filename)) {
            QMessageBox::warning(this, tr("Backup Failed"), tr("There was an error trying to save the wallet data to the new location."));
        }
    }
}

void BitcoinGUI::changePassphrase()
{
    AskPassphraseDialog dlg(AskPassphraseDialog::ChangePass, this);
    dlg.setModel(walletModel);
    dlg.exec();
}

void BitcoinGUI::unlockWallet()
{
    if(!walletModel)
        return;
    // Unlock wallet when requested by wallet model
    if(walletModel->getEncryptionStatus() == WalletModel::Locked)
    {
        AskPassphraseDialog::Mode mode = sender() == unlockWalletAction ?
              AskPassphraseDialog::UnlockStaking : AskPassphraseDialog::Unlock;
        AskPassphraseDialog dlg(mode, this);
        dlg.setModel(walletModel);
        dlg.exec();
    }
}

void BitcoinGUI::lockWallet()
{
    if(!walletModel)
        return;

    walletModel->setWalletLocked(true);
}

void BitcoinGUI::showNormalIfMinimized(bool fToggleHidden)
{
    // activateWindow() (sometimes) helps with keyboard focus on Windows
    if (isHidden())
    {
        show();
        activateWindow();
    }
    else if (isMinimized())
    {
        showNormal();
        activateWindow();
    }
    else if (GUIUtil::isObscured(this))
    {
        raise();
        activateWindow();
    }
    else if(fToggleHidden)
        hide();
}

void BitcoinGUI::toggleHidden()
{
    showNormalIfMinimized(true);
}

void BitcoinGUI::updateStyleSlot()
{
    updateStyle();
}

void BitcoinGUI::updateStyle()
{
    if (!fUseHOSTTheme)
        return;

    QString qssPath = QString::fromStdString( GetDataDir().string() ) + "/HOST.qss";

    QFile f( qssPath );

    if (!f.exists())
        writeDefaultStyleSheet( qssPath );

    if (!f.open(QFile::ReadOnly))
    {
        qDebug() << "failed to open style sheet";
        return;
    }

    qDebug() << "loading theme";
    qApp->setStyleSheet( f.readAll() );
}

void BitcoinGUI::writeDefaultStyleSheet(const QString &qssPath)
{
    qDebug() << "writing default style sheet";

    QFile qss( ":/text/stylesheet" );
    qss.open( QFile::ReadOnly );

    QFile f( qssPath );
    f.open( QFile::ReadWrite );
    f.write( qss.readAll() );
}

redpajama_set_name: RedPajamaGithub


"I make hand built, hand polished porcelain pieces. My work evolves from a seamless combination of making and ideas which allows me to explore human emotion.
A personal obsession with sampling every and any combination of possible eventualities means I have to impose my own boundaries, or I would gladly produce samples forever (I enjoy creating my very own collection of possibilities).


text:
More Than $10 Billion In Bets Will Be Made On The NCAA Tournament
By Joey Held on March 19, 2017 in Articles › Sports News
The NCAA Tournament is upon us, and with it comes the joy of filling out brackets. Americans across the country look for the perfect combination of upsets and favorites to jot down in the hopes of winning it all – or at least getting bragging rights over their friends.
As a whole, Americans are expected to fill out 70 million NCAA Tournament brackets this year. Each bracket will have, on average, $29 wagered on it, which contributes to the whopping $10.4 billion that will be bet on March Madness this year, per the American Gaming Association.
This $10.4 billion number includes popular office pools and is a 13 percent increase from last season. Perhaps unsurprisingly, only about three percent of the money bet on the tournament is believed to be wagered legally in the U.S. The other $10.1 billion or so is placed using offshore sportsbooks and local bookmakers.
What could you get with that amount of money? 336,667 cars, 50,500 houses, or 92 Boeing 737 jetliners. Not too shabby.
The NCAA, for its part, is vehemently opposed to all forms of sports betting, whether legal or not. In fact, five University of Richmond players were recently suspended simply for playing fantasy football. That's in stark contrast to NBA commissioner Adam Silver, who supports legalizing betting on professional sports, believing having regulations in place would protect the integrity of the games. Similarly, commissioners from Major League Baseball, MLS and the PGA have also said they'd consider sports betting.
These numbers are a conservative estimate, of course. It's hard to know just how many unregulated office pools take place in a given year. Law enforcement is certainly aware of these kinds of pools, but are more focused on organizations that offer gambling on a commercial basis, not smaller pools.
Only a few states offer legal sports betting, and Nevada is the only state that has a permit for single-game wagering, which is the most common form of sports betting.
The Nevada Gaming Control Board combines revenue from both the NBA and college basketball into one category on its monthly reports. A record $422 million was bet last season at Nevada sportsbooks. That's more than twice as much money that was wagered on basketball in either of the previous two months. Thanks to a slew of upsets, the books won $21.5 million on basketball last March.
The AGA estimates $295 million will be bet on the NCAA Tournament at Nevada sportsbooks this season, with the most popular bets ranging from $20 to $50 for a single game. That's more than double what Super Bowl LI saw. The matchup between the Patriots and Falcons drew $138.4 million, a record for the event.
Best of luck in filling out your brackets this year. Here's hoping you take home the grand prize – and hey, maybe you can even buy yourself an airplane.
Americans Will Bet Almost $5 Billion Super Bowl This Weekend
The ACC Just Made A Ton Of Money In The NCAA Tournament
More than One-Third Of NCAA Tournament Teams Say They Don't Turn A Profit
NCAA Suffers Revenue Loss In 2015 Due To Bad Investments
A Look Inside The NBA's Proposal To Legalize Gambling In Professional Sports
How Billy Walters Became The Most Successful Gambler In The World
Tony Bennett Turned Down A $500,000 Raise So The University Of Virginia Could Start A Career Program Instead
Bob Huggins Net Worth
Warren Buffett Will Give $1 Billion To Anyone Who Fills Out A Perfect NCAA Bracket

redpajama_set_name: RedPajamaCommonCrawl


The #RHOBH mom puts on her brave face while on vacation in Mexico.
Kyle Richards has achieved so much in her life, but one thing that has been a constant challenge for her is overcoming her fear of flying. She's even tried doing hypnotherapy with both Lisa Vanderpump and Eileen Davidson on The Real Housewives of Beverly Hills to not feel afraid when she's up in the air.
And it looks like that treatment has finally worked. Not only did Kyle have a pleasant ride in an airplane on her way to Cabo this weekend, but she also sat in the co-pilot seat in the cockpit of the aircraft, which can be intimidating even for those who love to fly. "I've come a long way with my fear of flying," Kyle captioned this jolly pic on Instagram.
As Kyle's hynotherapy partner, Lisa took some credit for helping her get over her fear.
@KyleRichards yep thanks to me!
It looks like conquering her fear of flying was well worth it for Kyle as she got to enjoy a weekend full of fun in the sun in Cabo with her hubby Mauricio Umansky and his Agency team.
It's a good thing Kyle conquered her fear of flying because she is quite the jetsetter, along with her RHOBH castmates. Relive their amazing trip to Dubai last season, below.


Parish Mission on "Healing Life's Hurts".
What follows is a succinct explanation of the mission and why this mission brings so much fruit to the parishioners and to the parish as a community.
WHY - We are all in need of healing, whether it be in our mind or our body or the most important part - in our spiritual being.
Healing Lifes Hurts is a faith and community building two evening parish mission. The people who come experience the love of God in action for them. No one leaves the mission without experiencing healing in some area of their life, physical, spiritual or emotional. The greatest healing which we see is spiritual healing, especially the healing of unforgiveness.
GIVEN BY Sr. Brigid Meierotto and Sr. Jan Nattermann, S.N.C. who are Sisters of the New Covenant, a Franciscan Missionary Community from the Archdiocese of Denver, Colorado. Sr. Brigid and Sr. Jan have given numerous Renewal Weekends, Healing Seminars, and Leadership Training in Evangelization in the U.S. and other countries since 1979 with the blessing of bishops and priests.
Helps for praying and for reading the Bible.
WHERE - We have been to over 70 parishes. References are available and additional information.
We would like to come to your parish to give a very beautiful and powerful two night mission series at no direct cost to the parish. "Healing Life's Hurts" will help your parish immensely. Although we call it a parish mission, it is not to be confused with a mission that is usually only given during Advent or Lent. Sr. Jan and Sr. Brigid give these during other months of the year as well. They are Sisters of the New Covenant, a Franciscan Community from the Archdiocese of Denver, Colorado. Our Community has given countless Renewal Weekends, Healing Missions, and Leadership Trainings in Evangelization throughout the world since 1979 with the blessing of numerous priests and bishops.
If you want something really effective to help strengthen your community - to help heal some of the hurts and broken lives of individuals and their families within the parish community -- or if you would like some effective way to help bring people back to the church and to the sacraments and back to a deeper appreciation of their faith -- or if you would like to more fully involve the laity -- then this is something you should very seriously consider for your parish. If you want to help wake up some of the laity who are sleeping in their faith, this mission has been given a five star rating.
Sr. Jan and Sr. Brigid introduce the mission at the Saturday evening and Sunday Masses the weekend prior to the mission. As a result, the people come out for the mission in very large numbers. The priests and staff are usually elated to see that it is not just those people you normally would expect to come. In addition, there is a wide variety of people: little children, the teenagers, and the often hard to reach 20 -30 age group, as well as the seniors.
Each of the two evenings lasts a little over two hours. Very often it takes place on a Monday/Tuesday evening, Wednesday/Thursday evening, or Thursday/Friday evening.
By the second night word gets around to many friends and relatives of the parishioners and they get curious and want to come. Very often, these are people you rarely see around the church except at Christmas, Easter or to zip in to get their "ashes" on Ash Wednesday. It is for this reason that so many pastors have passed the word on to their fellow priests saying this is "Tops" on their list for evangelization of a parish community as well as sparking the faith of the average church-goer. As one priest put it, "I have never seen anything in all my years as a priest that has touched so many people in such a short time." The success rate is extra-ordinary!
There Is No Direct Cost To The Parish.
Aside from the printing of some inexpensive announcement flyers, there is: No Cost to the parish -- No Stipend, No Housing, and No Traveling Expenses!! We take up a free-will offering and whatever the people give is acceptable to us.
It's easy to set up - very little for the Pastor or Staff to do other than say "yes."
No direct cost to the parish - aside from printing some inexpensive announcement flyers. There are no transportation costs, no housing, no food, no stipend. We take up a free will offering and whatever is given by the people is acceptable to us.
Knits the parish community closer together - regardless of size of the parish the sense of community is the hallmark of this event.
Many, many people are helped - marriages are healed, widows and widowers are comforted, those with emotional, physical or spiritual problems are helped tremendously.
It's different and quite enjoyable - the music, talks, and praying is loved by both the young and old.
A very powerful tool for evangelization - many follow-up options are available to help you in this area, if you wish.
Large turnouts without major publicity - by simply speaking at the weekend Masses the week prior to the mission and a few flyers and bulletin announcements, an amazing thing happens: large numbers attend.
Parishioner response overwhelmingly positive - most Pastors have said they have never had so many people thank them so many times for anything as for this Mission. Most priests and parishioners alike say it's the most successful event in their parish history.
Great help to the laity - in realizing their role within the Church.
It works - not one flop. As one parishioner put it: "This is the best use of my time in years."
Four Things This Mission Is Not.
It is not a mission that can only be given during Lent or Advent.
It is not a "wild and woolly" type of a gathering.
It is not to promote any type of renewal movement such as the Cursillo, Marriage Encounter or the Charismatic Renewal.
It is not just attended by people who ordinarily attend a mission.
If you want something that will really benefit your community -- this is it!
On March 15-16, 2000, Sr. Jan Natterman and Sr. Brigid Meierotto conducted a Mission on "Healing Life's Hurts" at Holy Name Parish. They and the Mission were very well received. Many, many parishioners attended both nights. It was a powerful religious experience.
I especially likes St. Jan's talks. Her talks were excellent. I heard many people comment on them positively.
I think the Mission was a blessing to the parish. Not all the people related to the second part of each evening (the praying over people). There were fewer people the second night. But that's OK. The fact is that it touched the lives of many people and helped them grow spiritually.
I heard only positive comments from parishioners after your healing mission. It was a departure, for some, of typical "Catholic" spirituality, but a feeling of good will prevailed over all. Thank you for sharing your gifts with us. - March 2000, Father Randall Weber, Pastor, St. Andrew Catholic Church, Abilene, KS.
We would like to thank you for conducting the mission "Healing Life's Hurts" here at Most Pure Heart of Mary Church on October 4th and 5th.
Dear Sr. Jan and Sr. Brigid, people are still talking about the mission. We incorporated some of the prayers for healing into our scrutiny rites.
Thanks for the evaluation papers. Pat Lechtenberg went through all of them and put together a summary. We will follow up. I am going to talk to some people about doing a monthly healing prayer service in order to carry on the ministry of healing that has begun.
I am very grateful for your presentations here at St. John's and for leading us forward in our prayer life as a parish. As I told Monte Mace this morning, this mission literally dropped into our laps. I believe it was the Holy Spirit's work that made it possible to have this healing mission right on the heals of our Lenten theme of "broken pots." Mr. Mace asked me, "Who contacted whom on this mission?" I am sure it was one of you that initially contacted me, but I am also sure that the idea was lost in the stack of other things that were demanding attention. Somehow it came to the fore at exactly the right time. Who can deny the workings of the Holy Spirit?
My mother was unable to attend the mission in Hays. Unfortunately, she does not want to go out at all at night. She's ninety, and I suppose that is to be expected.
I know that there are lots of good things still to come as a result and a benefit of this mission. We are all expecting more miracles now that we have better instruments of God's healing love and power to each other. I hope the people of the parishes you visited after us found their missions to be just as fruitful and hopeful.
Again, thanks. I have not looked at the video recordings. I will send you the tapes, although I know that the sound did not come through as good as I would have wanted it to.
In behalf of the Catholic Community of Immaculate Heart of Mary, as well as the community at large, I wish to thank you for being here on March 12 and 13 in conducting the "Healing Life's Hurts" mini-mission. There were people who came from other parishes and personally thanked me for having hosted the mission. In return, I thanked them for coming for they indeed appeared to be greatly enriched by the experience!
Over the weekend, I received a call from a lady who heard the talk given by you during the weekend liturgies. She was from Norcatur, KS. and here for the IA basketball tournament. She had questions about the mission and where you would make your next mission and how to contact you. She was sent the "prayer for the wholly innocent" card. Perhaps your spirits shall meet soon?!
I am relatively certain that a number of people had not prayed like that for a long time, perhaps ever! But you in your kind and gentle manner led people through an experience that was non-threatening and life-giving. We are blessed! Thank you.
Thank You for the parish mission, Healing Life's Hurts, which you recently gave at Good Shepherd Parish.
I found the mission to be based on sound Scriptural interpretation and Spiritual theology. The Gospels reveal that Jesus healed many people of their physical, emotional and spiritual weaknesses. The Lord desires that we pray for one another in his Name to continue his healing mission. This is what you brought to us at Good Shepherd.
May God bless you in your ministry to his people. And may your mission of healing continue to bring praise and glory to the Father in his Holy Spirit through Jesus Christ. - March 2002, Father Greg Mikesch, The Church of the Good Shepherd, Ferguson, MO.
Thank you for the mission, "Healing Life's Hurts" at St. Patrick in Wentzville this past month.
I think that one of the greatest benefits of the mission was the opportunity to pray in a new way. Presented in a very Scriptural manner, the mission reminded us that the healing power of Jesus continues in the church today, is in our midst, and can transform our lives. I, for one, needed to hear that truth once again.
Thank you for a beautiful two days. The Healing Life's Hurts Mission was a great out-pouring of God's love on our parish. About one hundred parishioners took part in the Healing Services and many told me how blessed they were.
It certainly gives Christians the concrete tools to pray for the healing that God intends for us. Personally I learned a method of prayer for healing that I have used many times with people since praying with you. God is so good and God has blessed our Parish through you. - November 2002, Reverand William Kester, Pastor, Saint Matthias the Apostle Church, St. Louis, MO.
Thank you and Sr. Jan for sharing the Mission "Healing Life's Hurts" with our parish community. It was a wonderful experience for all who attended. It was particularly impressive when people were asked to gather around those in need of healing and pray for them as a group. You could sense the power of God's grace and His healing touch eminate throughout our church.
I know the many responses you shared with us from the participants will allow our parish to grow even stronger as we continue to pray for healing in our lives.
St Michael's Parish was deeply effected by your Healing Life's Hurts Mission. Many people were called forth wanting healing in so many diverse ways and everyone I talked to expressed an inner peace, healing in many forms and a deepening of their prayer life.
Not only did the Mission effect those who attended but also I heard from others who wanted to know about the two days. They heard from others and how God touched them and expressed regret that they were not able to attend.
I was not sure how many people would attend and I was pleasantly surprised that the numbers were very good. I should never doubt the need for healing and the power of the Holy Spirit to touch the lives of our people.
Sisters Jan and Brigid again thank you for deepening our prayer life and for reminding us of the healing power of prayer. - March 2003, Reverand Edmond Fitzgibbon, Pastor of St. Michael Church, Shrewsbury, MO.
Thank you for your recent Mission of healing and spiritual well being which you brought to Annunciation parish. It was a welcome "rest stop" for our spiritual journey of faith. I'm glad you felt at home among our people and were able to feel their warmth and hospitality. I too find them to be very genuine and open to a deepening of their spiritual lives. Many people who came to the Mission experienced healing, bodily and spiritually. It appealed to people of all ages. One young 19 year old expressed that her faith had been pretty weak lately, but now it was restored and felt a heavy burden lifted from her. Several said they could better forgive another person and understood better what it means to forgive. The mission not only gave people an opportunity to tell of their need for healing, it also gave them time to pray for another, to join with others in praying for the healing grace and mercy of Jesus. I think there was also a renewed interest on the part of some to read the Scriptures on a more regular basis.
I want to thank you for presenting the healing mission at Our Lady of Lourdes on Oct. 13 and 14. This was a new experience for most of my parishioners and I was pleased with the turnout (approx. 100 each night) and the participation. Your explanation of the types of healing and the talks helped to put everyone at ease. You helped them to realize that they have the faith to ask for healing and to be persistent. It was great to observe their openness to a 'new' way of prayer and their concern for others in need on those nights. Their evaluations indicate that it was a valuable and worthwhile experience. Many expressed an easing of their aches and pains. More spoke about receiving a sense of peace and serenity.
We were grateful to have had Sr. Jan and Sr. Brigid in our parish leading the Healing Life's Hurts Retreat. Many parishioners have spoken favorably of the experience.
On Wednesday and Thursday of this week, Sister Brigid Meierotto and Sister Jan Nattermann, Sisters of the New Covenant, led a large number of our parish community in a mission: Healing Life's Hurts. I was very pleased with the mission and do not hesitate to recommend it strongly to other pastors.
The sisters contacted me well ahead of the proposed date, dearly explained the mission, and sent me excellent materials to promote the mission. Sister Jan came to all the masses the Saturday and Sunday before the mission to encourage people to come. The days of the mission itself, they were here well ahead of time to set things up.
The presentations were excellent! Not only was there solid content to the talks on Faith, prayer, and forgiveness, there was strong encouragement to deepen our love relationship with Jesus, to closer ties to the Church, and more active participation in the Eucharist and the sacraments. They offered the rationale and motivation for a more active Christian life. As pastor, I could not have been happier with their message to our community.
You will be happy you did! Your people will be blessed in new ways!! You will find a new way to talk to and pray with those who are suffering. The Lord will work through these sisters in both manifest and hidden ways.
The sisters are gentle and beautiful women of God. There is no fanfare or "noise". God is praised and people are healed.
Let me quote some of the comments of our people after a two night "mini-mission".
"The mission has brought me closer to God."
"I was able to forgive someone."
"I came in with a headache and now it is gone without using any medicine!"
"I was able to forgive myself."
In October 2007 St Dominic Catholic Parish in Denver, Colorado participated in a parish mission entitled: "Healing Life's Hurts" presented by the Sisters of the New Covenant Community. The two night mission focused on the need for healing in its various forms: physical, emotional, or spiritual whether or long standing. The brief, but poignant presentations helped prepare those attending to enter into a time of prayer for healing.
For me, the times of prayer were especially impressive. The people were made to feel that it is O.K. to ask for healing for themselves and for others. Having people find a prayer partner, gave the opportunity to enter into intercessory prayer for another, rather than just asking for one's own self and well being. There was also time for people to gather around individuals, and if they felt comfortable, to lay their hands on them while praying. The atmosphere was gentle, not forced, without emphasizing any form or format or style of prayer over another.
The people of St Dominic's who came to the mission have come away with a deepened appreciation that God wants the best for His People; and to come to the Lord in fervent and constant prayer asking for in this case, asking for healing an abundance of Grace and Blessings. God wants people to come to Him, opening up their lives and hearts.
We at St Dominic Catholic Church in Denver, thank your Community for coming to share this ministry of prayer and accompaniment on our common journey of faith.
I wish to thank you so much for coming to lead the "Healing Life's Hurts" Mission at our church in October. I heard many wornderful comments from our parishioners who attended. I think you offered a very gentle, inviting way for people to enter into prayer for one another's healing, without making them feel uncomfortable, even though it may have been an unfamiliar form of prayer for many of them.
One suggestion I might have would be that in addition to the prayers for bodily healing, there might be more time spent praying for the healing of spiritual and emotional hurts as well. However, overall we were very pleased with the mission and the positive impact it has had on our parish community.
May God's good graces continue to guide your ministry and fill your lives with much joy.
I knew almost nothing about Sisters Bridget and Jan when I accepted their invitation to conduct a retreat for my parish. As their arrival come closer, I became more apprehensive. Would they mislead the people? Will they be "off-the-wall"? What am I getting them and me into? I resolved all this by a leap of faith, a wonderful leap as it turned out.
Both Sisters are delightful, down to earth people. They are vivacious, warm, gentle, and filled with the love of our Lord. They love His Church. Their messages of Christ's willingness to heal, and the power of prayer were delivered with conviction, effectively and with humor. They were well received, especially by those who testified they received healing.
These ladies brought our Lord. I and we are grateful.
"During the healing service, the Lord started healing my spine especially my neck. The pain diminished and my neck became more flexible and I can turn my head around more freely."
"The Lord Jesus healed me of migraines which had been very painful for me since my youth. It became worse and worse. It was so painful recently that I couldn't bear it. I was healed of this ailment."
"Yesterday I experienced inner healing -- the Lord took away pain, fear, aggression and guilt connected with a bad relationship between my mother and me. The Lord filled me with peace and joy."
"I want to share my experience at the healing service. I prayed for three things: help with anger, help with depression and healing from breast cancer. My feelings were if I couldn't get past being mad and sad about my breast cancer, then a healing from breast cancer meant nothing. My anger and sadness keep me distant from my family and God. I went into that prayer service pretty beat up and worn out as I am nearing the end of my chemo treatments and my blood counts (red and white) were non-existent. I had been told to avoid large populations. I cried during the service. Afterwards I was just drained but within a day, my emotions seemed to have resolved themselves. I haven't been angry or sad since. Those feelings are just gone. I went to my oncologist on the following Thursday and they wanted to know what I had done to change my blood counts so dramatically. White and Red blood counts returned to normal level (unlikely at this point in chemo). I have my last chemo session this Thursday and am looking forward to putting my life back in order. Thank you!!"


Can I recoup some of my start up costs?
I am curious I have a accountant meeting me next week at my home. I started this business in January of 2011 and I spent about 14,896.00 on costs associated to get this thing going. Most of the start up costs were printing, office supplies, graphics artists comapnies, a web design company, some high end software for the business and signs. I did not make any money off this business yet. So for the calender year of 2011 I do have documented all receipts and going out there 5 hours per day, 5 days per week marketing and selling what my business has to offer. This year of course I will actually have about 200 sales :). Anyways the point is if my company made no money but I have all receipts can I get any money back for costs to start this business up for the 2011 year? I also have/had a regular job full time 40 hrs per week I worked as well. The accountant I talked with will be doing those taxes for me as well. I made 39,000.00 in the year with my regular job. If you need any other information from me that is fine ask away. I am just asking because 2 accountants I talked with said no because I made no money for the year. The accountant I am meeting said he thinks I can but is not sure yet.
Re: Can I recoup some of my start up costs?
You asked 2 accountants and they said NO.
You are meeting with another accountant next week. See what this accountant says.
When I set up my llc, my accountant told me I should be able to write off my physical start-up costs such as printing, marketing, etc. She then proceeded to do so. I would have suggested you find another accountant after two said no so I'm glad you are meeting with another one that said "maybe..."