-Improved loading of settings including warning of missing and/or invalid settings and the ability to load the explorer using defaults without a settings.json file
-Restructured the settings.json.template and settings.js files with better groupings
-Added better comments for improved explanations of all settings
-Better handling of page length options on all datatables; Page length options are now configurable and also only display options based on limits set by certain items_per_page and max_items_per_query settings
-Markets have been extended to support unlimited trading pairs for each exchange
-Added coin_symbol and pair_symbol to the markets schema to support multiple trading pairs
-Added a burned field to the richlist schema for tracking burned coin addresses
-Added a locale string for the new richlist wealth distribution "Top 1-100 Total" table row
-Updated a couple locale strings that were incomplete or needed fixing (api_getblockhash and api_getnextrewardwhenstr)
-Added a new css class to remove some redundant inline styles for the richlist wealth distribution color boxes
-Richlist page now allows better separation of the top list(s) and the wealth distribution table and chart (you can now hide or show sections as desired)
-Richlist page now allows for better burned coin support (Hide burned coin addresses from lists and totals even when the burned coin amounts are still included in the total coin supply value)
-Block page now only displays the raw block link if the api_page.public_apis.rpc.getblock.enabled settings is set to true
-Transaction page now only displays the raw tx link if the api_page.public_apis.rpc.getrawtransaction.enabled setting is set to true
-Rate limiting class has been made global and is now used to limit market requests
-getnetworkhashps rpc call now returns a '-' if shared_pages.show_hashrate is not set to true
-Searching for unsycned blocks/txs no longer saves the data locally but instead still shows the data on screen. This helps prevent syncing data out-of-order (This eliminates the need for db_index.pid which has been removed)
-Coin supply is now always taken from the stats collection database instead of from the wallet via rpc command in all cases except when syncing
-Lots of misc fixes and code cleanup changes
-List of changed settings:
-title -> shared_pages.page_title
-coin -> coin.name
-symbol -> coin.symbol
-logo -> shared_pages.logo
-headerlogo -> shared_pages.page_header.home_link_logo
-favicon -> shared_pages.favicon
-homelink -> shared_pages.page_header.home_link
-logoheight -> shared_pages.page_header.home_link_logo_height
-sticky_header -> shared_pages.page_header.sticky_header
-sticky_footer -> shared_pages.page_footer.sticky_footer
-footer_height_desktop -> shared_pages.page_footer.footer_height_desktop
-footer_height_tablet -> shared_pages.page_footer.footer_height_tablet
-footer_height_mobile -> shared_pages.page_footer.footer_height_mobile
-social_link_percent_height_desktop -> shared_pages.page_footer.social_link_percent_height_desktop
-social_link_percent_height_tablet -> shared_pages.page_footer.social_link_percent_height_tablet
-social_link_percent_height_mobile -> shared_pages.page_footer.social_link_percent_height_mobile
-theme -> shared_pages.theme
-port -> webserver.port
-update_timeout -> sync.update_timeout
-check_timeout -> sync.check_timeout
-block_parallel_tasks -> sync.block_parallel_tasks
-use_rpc -> api_cmds.use_rpc
-confirmations -> shared_pages.confirmations
-display.api -> api_page.enabled
-display.markets -> markets_page.enabled
-display.richlist -> richlist_page.enabled
-display.search -> shared_pages.page_header.show_search
-display.movement -> movement_page.enabled
-display.network -> network_page.enabled
-display.masternodes -> masternodes_page.enabled
-display.claim_address -> claim_address_page.enabled
-display.claim_address_header_menu -> claim_address_page.show_header_menu
-display.page_header_bgcolor -> shared_pages.page_header.bgcolor
-display.page_footer_bgcolor -> shared_pages.page_footer.bgcolor
-display.table_header_bgcolor -> shared_pages.table_header_bgcolor
-display.networkpnl -> shared_pages.page_header.panels.network_panel.display_order
-display.difficultypnl -> shared_pages.page_header.panels.difficulty_panel.display_order
-display.masternodespnl -> shared_pages.page_header.panels.masternodes_panel.display_order
-display.coinsupplypnl -> shared_pages.page_header.panels.coin_supply_panel.display_order
-display.pricepnl -> shared_pages.page_header.panels.price_panel.display_order
-display.marketcappnl -> shared_pages.page_header.panels.market_cap_panel.display_order
-display.logopnl -> shared_pages.page_header.panels.logo_panel.display_order
-index.show_last_updated -> index_page.show_last_updated
-index.show_hashrate -> shared_pages.show_hashrate
-index.difficulty -> shared_pages.difficulty
-index.last_txs -> api_page.public_apis.ext.getlasttxs.max_items_per_query
-index.txs_per_page -> index_page.transaction_table.items_per_page (for index page) AND movement_page.movement_table.items_per_page (for movement page)
-reward_page.show_last_updated -> blockchain_specific.heavycoin.reward_page.show_last_updated
-api.blockindex -> api_page.sample_data.blockindex
-api.blockhash -> api_page.sample_data.blockhash
-api.txhash -> api_page.sample_data.txhash
-api.address -> api_page.sample_data.address
-markets.exchange -> markets_page.default_exchange.trading_pair
-markets.default -> markets_page.default_exchange.exchange_name
-markets.market_dropdown_menu -> markets_page.show_market_dropdown_menu
-markets.market_select_visible -> markets_page.show_market_select
-richlist.distribution -> richlist_page.wealth_distribution.show_distribution_chart
-richlist.received -> richlist_page.show_received_coins
-richlist.balance -> richlist_page.show_current_balance
-movement.min_amount -> movement_page.movement_table.min_amount
-movement.low_flag -> movement_page.movement_table.low_warning_flag
-movement.high_flag -> movement_page.movement_table.high_warning_flag
-social_links -> shared_pages.page_footer.social_links
-social_links[x].image_url -> shared_pages.page_footer.social_links[x].image_path
-genesis_tx -> transaction_page.genesis_tx
-genesis_block -> block_page.genesis_block
-heavy -> blockchain_specific.heavycoin.enabled
-save_stats_after_sync_blocks -> sync.save_stats_after_sync_blocks
-txcount -> api_page.public_apis.ext.getaddresstxs.max_items_per_query
-txcount_per_page -> address_page.history_table.items_per_page
-show_sent_received -> address_page.show_sent_received
-supply -> sync.supply
-nethash -> shared_pages.page_header.panels.network_panel.nethash
-nethash_units -> shared_pages.page_header.panels.network_panel.nethash_units
-usecors -> webserver.cors.enabled
-corsorigin -> webserver.cors.corsorigin
-burned_coins -> richlist_page.burned_coins.addresses
-public_api.rpc.getdifficulty -> api_page.public_apis.rpc.getdifficulty.enabled
-public_api.rpc.getconnectioncount -> api_page.public_apis.rpc.getconnectioncount.enabled
-public_api.rpc.getblockcount -> api_page.public_apis.rpc.getblockcount.enabled
-public_api.rpc.getblockhash -> api_page.public_apis.rpc.getblockhash.enabled
-public_api.rpc.getblock -> api_page.public_apis.rpc.getblock.enabled
-public_api.rpc.getrawtransaction -> api_page.public_apis.rpc.getrawtransaction.enabled
-public_api.rpc.getnetworkhashps -> api_page.public_apis.rpc.getnetworkhashps.enabled
-public_api.rpc.getvotelist -> api_page.public_apis.rpc.getvotelist.enabled
-public_api.rpc.getmasternodecount -> api_page.public_apis.rpc.getmasternodecount.enabled
-public_api.rpc.getmaxmoney -> blockchain_specific.heavycoin.public_apis.getmaxmoney.enabled
-public_api.rpc.getmaxvote -> blockchain_specific.heavycoin.public_apis.getmaxvote.enabled
-public_api.rpc.getvote -> blockchain_specific.heavycoin.public_apis.getvote.enabled
-public_api.rpc.getphase -> blockchain_specific.heavycoin.public_apis.getphase.enabled
-public_api.rpc.getreward -> blockchain_specific.heavycoin.public_apis.getreward.enabled
-public_api.rpc.getsupply -> blockchain_specific.heavycoin.public_apis.getsupply.enabled
-public_api.rpc.getnextrewardestimate -> blockchain_specific.heavycoin.public_apis.getnextrewardestimate.enabled
-public_api.rpc.getnextrewardwhenstr -> blockchain_specific.heavycoin.public_apis.getnextrewardwhenstr.enabled
-public_api.ext.getmoneysupply -> api_page.public_apis.ext.getmoneysupply.enabled
-public_api.ext.getdistribution -> api_page.public_apis.ext.getdistribution.enabled
-public_api.ext.getaddress -> api_page.public_apis.ext.getaddress.enabled
-public_api.ext.getaddresstxs -> api_page.public_apis.ext.getaddresstxs.enabled
-public_api.ext.gettx -> api_page.public_apis.ext.gettx.enabled
-public_api.ext.getbalance -> api_page.public_apis.ext.getbalance.enabled
-public_api.ext.getlasttxs -> api_page.public_apis.ext.getlasttxs.enabled
-public_api.ext.getcurrentprice -> api_page.public_apis.ext.getcurrentprice.enabled
-public_api.ext.getbasicstats -> api_page.public_apis.ext.getbasicstats.enabled
-public_api.ext.getsummary -> api_page.public_apis.ext.getsummary.enabled
-public_api.ext.getnetworkpeers -> api_page.public_apis.ext.getnetworkpeers.enabled
-public_api.ext.getmasternodelist -> api_page.public_apis.ext.getmasternodelist.enabled
-public_api.ext.getmasternoderewards -> api_page.public_apis.ext.getmasternoderewards.enabled
-public_api.ext.getmasternoderewardstotal -> api_page.public_apis.ext.getmasternoderewardstotal.enabled
-api_cmds.heavies.getmaxmoney -> blockchain_specific.heavycoin.api_cmds.getmaxmoney
-api_cmds.heavies.getmaxvote -> blockchain_specific.heavycoin.api_cmds.getmaxvote
-api_cmds.heavies.getvote -> blockchain_specific.heavycoin.api_cmds.getvote
-api_cmds.heavies.getphase -> blockchain_specific.heavycoin.api_cmds.getphase
-api_cmds.heavies.getreward -> blockchain_specific.heavycoin.api_cmds.getreward
-api_cmds.heavies.getnextrewardestimate -> blockchain_specific.heavycoin.api_cmds.getnextrewardestimate
-api_cmds.heavies.getnextrewardwhenstr -> blockchain_specific.heavycoin.api_cmds.getnextrewardwhenstr
-api_cmds.heavies.getsupply -> blockchain_specific.heavycoin.api_cmds.getsupply
-List of new settings:
-shared_pages.page_header.panels.network_panel.enabled: allow enabling/disabling of the network panel
-shared_pages.page_header.panels.difficulty_panel.enabled: allow enabling/disabling of the difficulty panel
-shared_pages.page_header.panels.masternodes_panel.enabled: allow enabling/disabling of the masternodes panel
-shared_pages.page_header.panels.coin_supply_panel.enabled: allow enabling/disabling of the coin supply panel
-shared_pages.page_header.panels.price_panel.enabled: allow enabling/disabling of the price panel
-shared_pages.page_header.panels.market_cap_panel.enabled: allow enabling/disabling of the market cap panel
-shared_pages.page_header.panels.logo_panel.enabled: allow enabling/disabling of the logo panel
-index_page.transaction_table.page_length_options: specify the page length options that determine how many items/records to display in the table at any given time
-index_page.transaction_table.reload_table_seconds: the time in seconds to automatically reload the table data from the server
-address_page.history_table.page_length_options: specify the page length options that determine how many items/records to display in the table at any given time
-masternodes_page.masternode_table.page_length_options: specify the page length options that determine how many items/records to display in the table at any given time
-masternodes_page.masternode_table.items_per_page: the default amount of items/records to display in the table at any given time
-movement_page.movement_table.page_length_options: specify the page length options that determine how many items/records to display in the table at any given time
-movement_page.movement_table.reload_table_seconds: the time in seconds to automatically reload the table data from the server
-network_page.connections_table.page_length_options: specify the page length options that determine how many items/records to display in the table at any given time
-network_page.connections_table.items_per_page: the default amount of items/records to display in the table at any given time
-network_page.addnodes_table.page_length_options: specify the page length options that determine how many items/records to display in the table at any given time
-network_page.addnodes_table.items_per_page: the default amount of items/records to display in the table at any given time
-network_page.onetry_table.page_length_options: specify the page length options that determine how many items/records to display in the table at any given time
-network_page.onetry_table.items_per_page: the default amount of items/records to display in the table at any given time
-richlist_page.wealth_distribution.show_distribution_table: show/hide the wealth distribution summary table
-richlist_page.wealth_distribution.colors: a list of html color codes to represent the top 100 groupings in the wealth distribution table and pie chart
-richlist_page.burned_coins.include_burned_coins_in_distribution: determine whether to include burned coins in the wealth distribution section or not
-markets_page.exchanges.altmarkets.enabled: enable/disable the altmarkets exchange
-markets_page.exchanges.altmarkets.trading_pairs: a list of market trading pair symbols
-markets_page.exchanges.bittrex.enabled: enable/disable the bittrex exchange
-markets_page.exchanges.bittrex.trading_pairs: a list of market trading pair symbols
-markets_page.exchanges.bleutrade.enabled: enable/disable the bleutrade exchange
-markets_page.exchanges.bleutrade.trading_pairs: a list of market trading pair symbols
-markets_page.exchanges.crex.enabled: enable/disable the crex exchange
-markets_page.exchanges.crex.trading_pairs: a list of market trading pair symbols
-markets_page.exchanges.poloniex.enabled: enable/disable the poloniex exchange
-markets_page.exchanges.poloniex.trading_pairs: a list of market trading pair symbols
-markets_page.exchanges.stex.enabled: enable/disable the stex exchange
-markets_page.exchanges.stex.trading_pairs: a list of market trading pair symbols
-markets_page.exchanges.yobit.enabled: enable/disable the yobit exchange
-markets_page.exchanges.yobit.trading_pairs: a list of market trading pair symbols
-claim_address_page.enable_bad_word_filter: enable/disable the "bad word" filter for claimed addresses, so that trying to claim an address with a bad word will fail
-sync.show_sync_msg_when_syncing_more_than_blocks: show the sync msg at the top of all pages during index syncronization if there are more than this many blocks to process
-labels[x].enabled: allow enabling/disabling of specific wallet address labels
-blockchain_specific.heavycoin.reward_page.enabled: enable/disable the reward page
-blockchain_specific.zksnarks.enabled: enable/disable Zcash zk-SNARKs private transaction support (WIP - 90% complete)
-List of deleted settings
-address: unnecessary setting has been replaced by dynamic values via http request
-markets.coin: replaced by a richer set of settings that allow choosing the coin for each market
-markets.enabled -> replaced by a richer set of settings that allow enabling/disabling each market specifically
-lock_during_index: no longer possible to save unsynced blocks/txs via search so this settings is now obsolete/unused
-Added new social_links setting to allow adding as many custom links as desired including the ability to display as image or fontawesome icon
-Removed old hardcoded settings for twitter, facebook, google+, bitcointalk, github, slack, discord, telegram, reddit, youtube and custom website link
-Added sample external and coingecko images to demonstrate social icons with images
-Removed address_history.pug, net_addnodes.pug, net_list.pug, rl_balance.pug, rl_received.pug and restored code in place of include due to only being used in one place
-Added new public api setting for enabling disabling public use of /ext/getnetworkpeers api
-Added new entry to the /info api page for the /ext/getnetworkpeers api
-Integrated /ext/getnetworkpeers api into the network page + network includes and removed the deleted /ext/connections api references
-Moved /ext/summary from routes/index.js to app.js with the rest of the extended apis and renamed to /etc/getsummary
-Added a new setting to enable/disable public use of /ext/getsummary + added it to list of public apis on the /info page
-Added a new setting to enable/disable public use of /ext/getaddresstxs + added it to list of public apis on the /info page + updated the return data so that it returns a named object array for public api for better readability and still returns the same array list for internal datatable use
-Updated /ext/getlasttxs so that it returns a named object array for public api for better readability and still returns the same array list for internal datatable use
-/ext/getsummary now only returns the online and offline masternode counts if the getmasternodecount api is available and enabled
-Added new configurable settings to allow displaying a "last updated date" timestamp for: index, reward, masternode, movement, network, richlist and market pages
-Affected pages are now configured to be completely hidden and disabled when their display settings are set to false
-Added /ext/getmasternoderewards which returns a list of masternode reward transactions for a single address since a particular block height
-Added /ext/getmasternoderewardstotal which returns the total masternode rewards earned for a single address since a particular block height
-Added a new "Masternodes" page which displays the current list of masternodes on the network
-/api/getmasternodelist is no longer publicly accessible and has been replaced by /ext/getmasternodelist which returns the masternode list from local collection instead of directly from wallet
-Added new masternode sync options to sync.js and sync.sh
-Added new masternodes_last_updated field to the Stats collection
-Updated delete_database.sh and restore_backup.sh to include support for the new masternodes collection
-Network header menu icon changed to allow the new Masternodes menu item to use the old network icon
-All coind + extended public api calls can now be enabled/disabled individually via settings.json; Disabled apis still work internally when disabled; The only noteworthy exception is the extended /ext/getlasttxs endpoint which is the only extended api consumed by the explorer itself, although it works to prevent outside access by default, it is controlled by http headers which can be manipulated and it's extremely likely that a savvy user could enable usage of /ext/getlasttxs for their own needs even if the site has specifically disabled that public api. More thought may be needed to properly resolve that problem, but it may also not be a big deal since it's data that is available to the explorer and in no way hidden or secret
-Disabled apis do not show up on the /info page and will return a "This method is disabled" msg if the endpoint is called
-Applied some code formatting to the /lib/nodeapi.js file
-When "homelink" setting is set to 'logo', it now first checks the "headerlogo" value and uses that value if set correctly otherwise it will failover to using the normal "logo"
-Added a sample Exor header logo
-Lots of changes to the claim address page: now supports the ability to enter a wallet address instead of always being read-only; no longer displays address information summary; updated alert text and display with better icons; initial info alert denotes current claim status when viewing an existing address; you can now show/hide claim instructions which are defaulted to hidden; Submit button changed to Claim button; Updated page text and verbiage
-Added new setting, "claim_address_header_menu" which shows/hides a new "Claim Address" header menu item
-Claim url changed from /address/{hash}/claim to /claim and /claim/{hash}
-Added additional error handling for successfully verifying a wallet address that is now known to the explorer
-Added a new locale string for the "Claim Address" header menu
-Table columns are no longer being hidden on mobile/tablet views. Instead, clickable columns with long data (such as hashes) are now reduced to an eye icon on mobile and smaller tablets to save space. In the event that text still doesn't fit in the viewport, applicable tables now allow horizontal scrolling to reveal the rest of the data
-Many table columns had their horizontal alignment updated to better match the type of data being displayed
-Moved some table columns around to be more consistent across all pages
-Applied some additional small tweaks and fixes to provide a better overall user experience
-Add new market_dropdown_menu setting for displaying the Markets header menu item as a dropdown
-Add new market_select_visible setting for displaying a clickable list of enabled markets near the top of all market pages
-Market select box header text changed to 'Market Select' and added to locale strings
-Claimed addresses now replace actual wallet addresses across all pages of the site
-Add new claim_address setting to enable/disable claiming of addresses
-Add ability to un-claim an address by signing a blank message
-Moved code to enable tooltips into a global function and the call is now made closer to page load being complete
-Added error checking for browsers with no tooltip support
-Added a few new locale strings for tooltip titles
-Rename spec directory to test
-Move old data.js file into the new test directory and rename to testData.js
-Remove unused support/jasmine.json file
-Populate testData.js with sample data from Exor blockchain
-Re-configure explorerSpec.js tests to match new testData.js data
-Remove navbar_dark and navbar_light settings
-Add page_header_bgcolor setting for changing page header background color via bootstrap css classes
-Add page_footer_bgcolor setting for changing page footer background color via bootstrap css classes