diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index aed22eba9fe6f20a56c9654f3abcfda2b0518260..d4d0cf334985badd5fb4fad5f816269ab0c2715b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='utf-8'?>
-<manifest android:hardwareAccelerated="true" android:versionCode="106030" android:versionName="1.6.3" package="fr.duniter.cesium" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
+<manifest android:hardwareAccelerated="true" android:versionCode="106040" android:versionName="1.6.4" package="fr.duniter.cesium" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
     <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
     <uses-permission android:name="android.permission.INTERNET" />
     <application tools:replace="android:appComponentFactory" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
diff --git a/assets/www/config.js b/assets/www/config.js
index 7b3bb56f0d871fd7e2282a2f67540ee2d4ae87b4..b2df25c551b3f6ad27ed649ffba92326a7bf60fa 100644
--- a/assets/www/config.js
+++ b/assets/www/config.js
@@ -95,8 +95,8 @@ angular.module("cesium.config", [])
 			"defaultCountry": "France"
 		}
 	},
-	"version": "1.6.3",
-	"build": "2020-04-14T15:27:14.343Z",
+	"version": "1.6.4",
+	"build": "2020-04-22T16:26:05.338Z",
 	"newIssueUrl": "https://git.duniter.org/clients/cesium-grp/cesium/issues/new"
 })
 
diff --git a/assets/www/dist_js/cesium.js b/assets/www/dist_js/cesium.js
index b462bdc2992aedc8a86a90fa3ff27512e6660563..f46864c7bf495c2923ecedb213ee43986fa1affa 100644
--- a/assets/www/dist_js/cesium.js
+++ b/assets/www/dist_js/cesium.js
@@ -8067,7 +8067,7 @@ angular.module('cesium.tx.services', ['ngApi', 'cesium.bma.services',
           tx.history.sort(function(tx1, tx2) {
             return (tx2.time - tx1.time);
           });
-          var firstValidatedTxIndex = tx.history.findIndex(function(tx){
+          var firstValidatedTxIndex = _.findIndex(tx.history, function(tx){
             return (tx.block_number <= current.number - csSettings.data.blockValidityWindow);
           });
           // remove validating from history
@@ -16805,7 +16805,7 @@ function WalletListImportModalController($scope, $timeout, BMA, csWallet) {
     $scope.hasContent = angular.isDefined(file) && file !== '';
     $scope.fileData = file.fileData ? file.fileData : '';
     var isValidFile = $scope.fileData !== '' &&
-      ($scope.fileData.type == 'text/csv' || $scope.fileData.type == 'text/plain' || 'application/vnd.ms-excel' /*fix issue #810*/);
+      ($scope.fileData.type === 'text/csv' || $scope.fileData.type === 'text/plain' || 'application/vnd.ms-excel' /*fix issue #810*/);
 
     // Bad file type: invalid file
     if (!isValidFile) {
@@ -21039,6 +21039,17 @@ $templateCache.put('templates/blockchain/lookup.html','<ion-view><ion-nav-title>
 $templateCache.put('templates/blockchain/lookup_lg.html','<ion-view><ion-nav-title><span translate>BLOCKCHAIN.LOOKUP.TITLE</span></ion-nav-title><ion-content class="padding no-padding-xs no-padding-sm" scroll="true"><ng-include src="::\'templates/blockchain/list_blocks_lg.html\'"></ng-include></ion-content></ion-view>');
 $templateCache.put('templates/blockchain/unlock_condition_popover.html','<ion-popover-view class="fit"><ion-header-bar><h1 class="title" translate>BLOCKCHAIN.VIEW.TX_OUTPUT_UNLOCK_CONDITIONS</h1></ion-header-bar><ion-content scroll="true"><div class="row" ng-repeat="condition in popoverData.unlockConditions track by $index" ng-style="::condition.style"><span class="gray" ng-if="::condition.operator">{{::\'BLOCKCHAIN.VIEW.TX_OUTPUT_OPERATOR.\'+condition.operator|translate}}&nbsp;</span><div ng-if="::condition.type==\'SIG\'"><i class="icon ion-key dark"></i> <span class="dark" ng-bind-html="::\'BLOCKCHAIN.VIEW.TX_OUTPUT_FUNCTION.SIG\' | translate"></span> <a ng-click="goState(\'app.wot_identity\', {pubkey:condition.value})" style="text-decoration: none" class="positive">{{condition.value|formatPubkey}}</a></div><div ng-if="::condition.type==\'XHX\'"><i class="icon ion-lock-combination dark"></i> <span class="dark" ng-bind-html="::\'BLOCKCHAIN.VIEW.TX_OUTPUT_FUNCTION.XHX\' | translate"></span> <a copy-on-click="{{::condition.value}}" class="positive">{{::condition.value|formatPubkey}}...</a></div><div ng-if="condition.type==\'CSV\'"><i class="icon ion-clock dark"></i> <span class="dark" ng-bind-html="::\'BLOCKCHAIN.VIEW.TX_OUTPUT_FUNCTION.CSV\' | translate"></span> {{::condition.value|formatDuration}}</div><div ng-if="condition.type==\'CLTV\'"><i class="icon ion-clock dark"></i> <span class="dark" ng-bind-html="::\'BLOCKCHAIN.VIEW.TX_OUTPUT_FUNCTION.CLTV\' | translate"></span> {{::condition.value|medianDate}}</div></div></ion-content></ion-popover-view>');
 $templateCache.put('templates/blockchain/view_block.html','<ion-view><ion-nav-title><span class="title visible-xs visible-sm" ng-if="number==\'current\'">{{\'BLOCKCHAIN.VIEW.TITLE_CURRENT\'|translate}}</span> <span class="title visible-xs visible-sm" ng-if="number!=\'current\'">{{\'BLOCKCHAIN.VIEW.TITLE\'|translate:formData}}</span></ion-nav-title><ion-content class="no-padding-xs no-padding-sm" scroll="true"><div class="row no-padding"><div class="col no-padding"><div class="center padding" ng-if="loading"><ion-spinner icon="android"></ion-spinner></div><div class="list item-text-wrap no-padding-xs" ng-if="!loading"><div class="item item-text-wrap"><h3><span class="dark"><i class="icon ion-clock"></i> {{formData.medianTime | medianFromNowAndDate}}</span></h3><h3><span class="dark"><i class="icon ion-lock-combination"></i> {{\'BLOCKCHAIN.VIEW.COMPUTED_BY\'|translate}} </span><a class="positive" ui-sref="app.wot_identity({pubkey:issuer.pubkey, uid: issuer.uid})"><i class="icon ion-person positive"></i> {{issuer.name||issuer.uid}} <span class="gray" ng-if="issuer.name">({{issuer.uid}})</span></a></h3><h3><a ng-click="openRawBlock($event)"><i class="icon ion-share"></i> {{\'BLOCKCHAIN.VIEW.SHOW_RAW\'|translate}}</a></h3></div><span class="item item-divider">{{\'BLOCKCHAIN.VIEW.TECHNICAL_DIVIDER\' | translate}}</span><ion-item class="item-icon-left item-text-wrap" ng-if="!compactMode || $root.settings.expertMode"><i class="icon ion-gear-b"></i> {{\'BLOCKCHAIN.VIEW.VERSION\'|translate}} <span class="badge badge-stable">{{::formData.version}}</span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="!compactMode || $root.settings.expertMode" copy-on-click="{{::formData.powMin}}"><i class="icon ion-lock-combination"></i> {{\'BLOCKCHAIN.VIEW.POW_MIN\'|translate}}<h4 class="gray">{{\'BLOCKCHAIN.VIEW.POW_MIN_HELP\'|translate}}</h4><span class="badge badge-stable">{{::formData.powMin}}</span></ion-item><ion-item class="item-icon-left item-text-wrap" copy-on-click="{{::formData.hash}}"><i class="icon ion-pound"></i> {{\'BLOCKCHAIN.VIEW.HASH\'|translate}}<h5 class="visible-xs visible-sm dark">{{::formData.hash}}</h5></ion-item><span class="item item-divider">{{\'BLOCKCHAIN.VIEW.DATA_DIVIDER\' | translate}}</span><ion-item ng-if="compactMode && formData.empty" class="item-icon-left item-text-wrap">{{\'BLOCKCHAIN.VIEW.EMPTY\'|translate}}</ion-item><ion-item ng-if="!compactMode || formData.dividend" class="item-icon-left item-text-wrap" copy-on-click="{{::formData.dividend/100}}"><i class="icon ion-arrow-up-c"></i><div class="col col-60">{{\'COMMON.UNIVERSAL_DIVIDEND\'|translate}}<h4 class="gray">{{\'BLOCKCHAIN.VIEW.UNIVERSAL_DIVIDEND_HELP\'|translate: {membersCount: formData.membersCount} }}</h4></div><span class="badge badge-balanced" ng-if="formData.dividend">+1 <span ng-bind-html="formData.currency|currencySymbol: {useRelative: true} "></span> / {{\'COMMON.MEMBER\'|translate|lowercase}} </span><span class="badge badge-stable" ng-if="!formData.dividend">0</span> <span class="badge badge-secondary" ng-if="formData.dividend">+ {{formData.dividend| formatAmount: {currency: formData.currency, useRelative: false} }} / {{\'COMMON.MEMBER\'|translate|lowercase}}</span></ion-item><ng-if ng-if="!compactMode || formData.identitiesCount"><ion-item class="item-icon-left"><i class="icon ion-person"></i> <b class="ion-clock" style="position: absolute; top: 16px; left: 39px; font-size: 12px"></b> {{\'BLOCKCHAIN.VIEW.IDENTITIES_COUNT\'|translate}} <span class="badge badge-balanced" ng-if="formData.identitiesCount">+{{::formData.identitiesCount}}</span> <span class="badge badge-stable" ng-if="!formData.identitiesCount">0</span></ion-item><div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.identitiesCount"><ion-item ng-repeat="identity in ::formData.identities" class="item-border-large item-small-height" ng-include="::\'templates/blockchain/link_identity.html\'"></ion-item></div></ng-if><ng-if ng-if="!compactMode || formData.joinersCount"><ion-item class="item-icon-left"><i class="icon ion-person-add"></i> {{\'BLOCKCHAIN.VIEW.JOINERS_COUNT\'|translate}} <span class="badge badge-balanced" ng-if="formData.joinersCount">+{{::formData.joinersCount}}</span> <span class="badge badge-stable" ng-if="!formData.joinersCount">0</span></ion-item><div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.joinersCount"><ion-item ng-repeat="identity in ::formData.joiners" class="item-border-large item-small-height" ng-include="::\'templates/blockchain/link_identity.html\'"></ion-item></div></ng-if><ng-if ng-if="!compactMode || formData.activesCount"><ion-item class="item-icon-left"><i class="icon ion-person"></i> <b class="ion-refresh" style="position: absolute; top: 25px; left: 39px; font-size: 12px"></b> {{\'BLOCKCHAIN.VIEW.ACTIVES_COUNT\'|translate}}<h4 class="gray">{{\'BLOCKCHAIN.VIEW.ACTIVES_COUNT_HELP\'|translate}}</h4><span class="badge badge-balanced" ng-if="formData.activesCount">{{::formData.activesCount}}</span> <span class="badge badge-stable" ng-if="!formData.activesCount">0</span></ion-item><div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.activesCount"><ion-item ng-repeat="identity in ::formData.actives" class="item-border-large item-small-height" ng-include="::\'templates/blockchain/link_identity.html\'"></ion-item></div></ng-if><ng-if ng-if="!compactMode || (formData.excludedCount-formData.revokedCount)"><ion-item class="item-icon-left"><i class="icon ion-person"></i> <b class="ion-close dark" style="position: absolute; top: 25px; left: 39px; font-size: 12px"></b> {{\'BLOCKCHAIN.VIEW.EXCLUDED_COUNT\'|translate}}<h4 class="gray">{{\'BLOCKCHAIN.VIEW.EXCLUDED_COUNT_HELP\'|translate}}</h4><span class="badge badge-assertive" ng-if="formData.excludedCount-formData.revokedCount">-{{::formData.excludedCount-formData.revokedCount}}</span> <span class="badge badge-stable" ng-if="!(formData.excludedCount-formData.revokedCount)">0</span></ion-item><div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.excludedCount"><ion-item ng-repeat="identity in ::formData.excluded" class="item-border-large item-small-height" ng-include="::\'templates/blockchain/link_identity.html\'"></ion-item></div></ng-if><ng-if ng-if="!compactMode || formData.leaversCount"><ion-item class="item-icon-left" ng-if="!compactMode || formData.leaversCount"><i class="icon ion-person"></i> <b class="ion-minus" style="position: absolute; top: 25px; left: 39px; font-size: 12px"></b> {{\'BLOCKCHAIN.VIEW.LEAVERS_COUNT\'|translate}}<h4 class="gray">{{\'BLOCKCHAIN.VIEW.LEAVERS_COUNT_HELP\'|translate}}</h4><span class="badge badge-assertive" ng-if="formData.leaversCount">-{{::formData.leaversCount}}</span> <span class="badge badge-stable" ng-if="!formData.leaversCount">0</span></ion-item><div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.leaversCount"><ion-item ng-repeat="identity in ::formData.leavers" class="item-border-large item-small-height" ng-include="::\'templates/blockchain/link_identity.html\'"></ion-item></div></ng-if><ng-if ng-if="!compactMode || formData.revokedCount"><ion-item class="item-icon-left"><i class="icon ion-person"></i> <b class="ion-minus-circled assertive" style="position: absolute; top: 25px; left: 39px; font-size: 12px"></b> {{\'BLOCKCHAIN.VIEW.REVOKED_COUNT\'|translate}}<h4 class="gray">{{\'BLOCKCHAIN.VIEW.REVOKED_COUNT_HELP\'|translate}}</h4><span class="badge badge-balanced" ng-if="formData.revokedCount">-{{::formData.revokedCount}}</span> <span class="badge badge-stable" ng-if="!formData.revokedCount">0</span></ion-item><div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.revokedCount"><ion-item ng-repeat="identity in ::formData.revoked" class="item-border-large item-small-height" ng-include="::\'templates/blockchain/link_identity.html\'"></ion-item></div></ng-if><ng-if ng-if="!compactMode || formData.certificationsCount"><ion-item class="item-icon-left"><i class="icon ion-ribbon-a"></i> {{\'BLOCKCHAIN.VIEW.CERT_COUNT\'|translate}} <span class="badge badge-stable" ng-class="{\'badge-positive\':formData.certificationsCount}">{{::formData.certificationsCount}}</span></ion-item><div class="padding-bottom item-icon-left-padding item-icon-right-padding no-padding-xs" ng-if="formData.certificationsCount"><div ng-repeat="(key, certs) in formData.certifications" class="item item-border-large item-small-height"><div class="row no-padding"><div class="col col-center no-padding"><ng-repeat ng-repeat="cert in certs"><ng-include src="::\'templates/blockchain/link_identity.html\'" onload="identity=cert.from"></ng-include><br></ng-repeat></div><div class="col col-10 col-center gray text-center no-padding"><h2><i class="icon ion-arrow-right-a"></i></h2></div><div class="col col-40 col-center no-padding" ng-include="::\'templates/blockchain/link_identity.html\'" onload="identity=certs[0].to"></div></div></div></div></ng-if><ng-if ng-if="!compactMode || formData.transactionsCount"><ion-item class="item-icon-left"><i class="icon ion-card"></i> {{\'BLOCKCHAIN.VIEW.TX_COUNT\'|translate}} <span class="badge badge-stable" ng-class="{\'badge-positive\':formData.transactionsCount}">{{::formData.transactionsCount}}</span></ion-item><div class="padding-bottom item-icon-left-padding item-icon-right-padding no-padding-xs" ng-if="formData.transactionsCount"><div ng-repeat="tx in ::formData.transactions" class="item item-small-height item-border-large"><div class="row no-padding" style="padding-top: 3px"><div class="col col-40 col-center no-padding list no-margin"><div ng-repeat="identity in ::tx.issuers" class="item no-padding item-small-height"><ng-include src="\'templates/blockchain/link_identity.html\'"></ng-include></div></div><div class="col col-10 col-center gray text-center no-padding"><h2><i class="icon ion-arrow-right-a"></i></h2></div><div class="col no-padding padding-right no-padding-xs col-text-wrap list no-margin"><span class="gray" ng-if="tx.toHimself" translate="">BLOCKCHAIN.VIEW.TX_TO_HIMSELF</span><div ng-repeat="output in ::tx.outputs" class="item no-padding item-small-height"><ng-include ng-if="::output.pubkey" src="\'templates/blockchain/link_identity.html\'" onload="identity=output"></ng-include><span ng-if="::!output.pubkey && output.unlockFunctions"><i class="icon ion-locked"></i> (<a ng-click="showUnlockConditionPopover(output, $event)"> <i ng-repeat="unlockFunction in ::output.unlockFunctions" ng-class="::{\'ion-key\': (unlockFunction==\'SIG\'), \'ion-clock\': (unlockFunction==\'CSV\' || unlockFunction==\'CLTV\'), \'ion-lock-combination\': (unlockFunction==\'XHX\') }" class="icon"></i> </a>) </span><span class="badge badge-balanced" ng-bind-html="::output.amount | formatAmount:{currency: formData.currency, useRelative: false} "></span></div></div></div></div></div></ng-if></div></div></div></ion-content></ion-view>');
+$templateCache.put('templates/common/badge_certification_count.html','<span ng-attr-id="{{$ctrl.csId}}" class="badge badge-balanced" ng-class="{\'badge-energized\': $ctrl.requirements.willNeedCertificationCount || ($ctrl.requirements.needCertificationCount + $ctrl.requirements.pendingCertificationCount >= $ctrl.parameters.sigQty),\n               \'badge-assertive\': ($ctrl.requirements.needCertificationCount + $ctrl.requirements.pendingCertificationCount < $ctrl.parameters.sigQty)}"><span ng-if="$ctrl.requirements.certificationCount || !$ctrl.requirements.pendingCertificationCount"><i ng-if="!$ctrl.requirements.needCertificationCount" class="ion-android-done"></i> {{$ctrl.requirements.certificationCount}} <i ng-if="$ctrl.requirements.willNeedCertificationCount" class="ion-android-warning"></i> </span><span ng-if="$ctrl.requirements.pendingCertificationCount"><ng-if ng-if="$ctrl.requirements.certificationCount">+</ng-if><i class="ion-clock"></i> {{$ctrl.requirements.pendingCertificationCount}}</span></span>');
+$templateCache.put('templates/common/badge_given_certification_count.html','<div ng-attr-id="{{$ctrl.csId}}" class="badge badge-calm" ng-class="{\'badge-assertive\': $ctrl.identity.given_cert.length >= $ctrl.parameters.sigStock}"><span><i ng-if="$ctrl.identity.given_cert.length" class="ion-android-done"></i> {{$ctrl.identity.given_cert.length}} </span><span ng-if="$ctrl.identity.given_cert_pending.length">(<ng-if ng-if="$ctrl.identity.given_cert.length">+</ng-if><i class="ion-clock"></i> {{$ctrl.identity.given_cert_pending.length}}) </span><small>/ {{$ctrl.parameters.sigStock}}</small></div>');
+$templateCache.put('templates/common/form_error_messages.html','<div class="form-error" ng-message="minlength"><span translate="ERROR.FIELD_TOO_SHORT"></span></div><div class="form-error" ng-message="maxlength"><span translate="ERROR.FIELD_TOO_LONG"></span></div><div class="form-error" ng-message="pattern"><span translate="ERROR.FIELD_ACCENT"></span></div><div class="form-error" ng-message="required"><span translate="ERROR.FIELD_REQUIRED"></span></div>');
+$templateCache.put('templates/common/popover_copy.html','<ion-popover-view class="popover-copy" style="height: {{(!rows || rows &lt;= 1) ? 50 : rows*22}}px"><ion-content scroll="false"><div class="list"><div class="item item-input"><input type="text" autocomplete="off" ng-if="!rows || rows &lt;= 1" ng-model="value"><textarea ng-if="rows && rows > 1" ng-model="value" rows="{{rows}}" cols="10">\n      </textarea></div></div></ion-content></ion-popover-view>');
+$templateCache.put('templates/common/popover_helptip.html','<ion-popover-view class="popover-helptip"><ion-content scroll="false" class="list"><p><i ng-if="icon.position && !icon.position.startsWith(\'bottom-\')" class="{{icon.class}} icon-{{icon.position}} hidden-xs" style="{{icon.style}}"></i><a ng-click="closePopover()" class="pull-right button-close" ng-class="{\'pull-left\': icon.position === \'right\', \'pull-right\': icon.position !== \'right\'}"><i class="ion-close"></i> </a><span>&nbsp;</span></p><p class="padding light"><ng-bind-html ng-bind-html="content | translate:contentParams"></ng-bind-html><ng-bind-html ng-bind-html="trustContent"></ng-bind-html></p><div class="text-center" ng-if="!tour"><button class="button button-small button-stable" ng-if="!hasNext" ng-click="closePopover(true)" translate>COMMON.BTN_UNDERSTOOD</button> <button class="button button-small button-stable" id="helptip-btn-ok" ng-if="hasNext" ng-click="closePopover(false)" translate>COMMON.BTN_UNDERSTOOD</button> <button id="helptip-btn-ok" class="button button-small button-positive icon-right ink" ng-if="hasNext" ng-click="closePopover(true)"><i class="icon ion-chevron-right"></i></button></div><div class="text-center" ng-if="tour"><button class="button button-small button-positive" id="helptip-btn-ok" ng-if="!hasNext" ng-click="closePopover(false)" translate>COMMON.BTN_CLOSE</button> <button id="helptip-btn-ok" class="button button-small button-positive icon-right ink" ng-if="hasNext" ng-click="closePopover(true)">{{\'COMMON.BTN_CONTINUE\'|translate}} <i class="icon ion-chevron-right"></i></button></div><p><i ng-if="icon.position && icon.position.startsWith(\'bottom-\')" class="{{icon.class}} icon-{{icon.position}} hidden-xs"></i></p></ion-content></ion-popover-view>');
+$templateCache.put('templates/common/popover_locales.html','<ion-popover-view class="fit popover-locales" style="height: {{locales.length*48}}px"><ion-content scroll="false"><div class="list item-text-wrap block"><a ng-repeat="l in locales track by l.id" class="item item-icon-left ink" ng-click="changeLanguage(l.id)"><i class="item-image avatar" style="background-image: url(./img/flag-{{l.flag}}.png)"></i> {{l.label | translate}}</a></div></ion-content></ion-popover-view>');
+$templateCache.put('templates/common/popover_profile.html','');
+$templateCache.put('templates/common/popover_share.html','<ion-popover-view class="popover-share"><ion-content scroll="false"><div class="bar bar-header"><h1 class="title">{{titleKey|translate:titleValues}}</h1><span class="gray pull-right">{{time|formatDate}}</span></div><div class="list no-margin no-padding has-header has-footer block"><div class="item item-input"><input type="text" autocomplete="off" ng-model="value"></div></div><div class="bar bar-footer"><div class="button-bar"><a class="button button-icon positive icon ion-social-facebook" href="https://www.facebook.com/sharer/sharer.php?u={{postUrl|formatEncodeURI}}&amp;title={{postMessage|formatEncodeURI}}" onclick="window.open(this.href, \'facebook-share\',\'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width=580,height=296\');return false;" title="{{\'COMMON.POPOVER_SHARE.SHARE_ON_FACEBOOK\'|translate}}"></a> <a class="button button-icon positive icon ion-social-twitter" href="https://twitter.com/intent/tweet?url={{postUrl|formatEncodeURI}}&amp;text={{postMessage|formatEncodeURI}}" onclick="window.open(this.href, \'twitter-share\',\'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width=580,height=296\');return false;" title="{{\'COMMON.POPOVER_SHARE.SHARE_ON_TWITTER\'|translate}}"></a> <a class="button button-icon positive icon ion-social-googleplus" href="https://plus.google.com/share?url={{postUrl|formatEncodeURI}}" onclick="window.open(this.href, \'google-plus-share\', \'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=296,width=580\');return false;" title="{{\'COMMON.POPOVER_SHARE.SHARE_ON_GOOGLEPLUS\'|translate}}"></a> <a class="button button-icon positive icon ion-social-diaspora" href="https://sharetodiaspora.github.io/?title={{postMessage|formatEncodeURI}}&amp;url={{postUrl|formatEncodeURI}}" onclick="window.open(this.href, \'diaspora-share\',\'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width=580,height=296\');return false;" title="{{\'COMMON.POPOVER_SHARE.SHARE_ON_DIASPORA\'|translate}}"></a> <a class="button-close" title="{{\'COMMON.BTN_CLOSE\'|translate}}" ng-click="closePopover()"><i class="icon ion-close"></i></a></div></div></ion-content></ion-popover-view>');
+$templateCache.put('templates/common/popup_password.html','<form name="pwdForm" ng-submit="submit($event)"><div class="list" ng-init="setForm(pwdForm)"><label class="item item-input" ng-class="{\'item-input-error\': pwdForm.$submitted && pwdForm.password.$invalid}"><input name="password" type="password" placeholder="{{\'ACCOUNT.SECURITY.KEYFILE.PASSWORD_POPUP.PASSWORD_HELP\' | translate}}" ng-model="formData.password" ng-minlength="1" required></label><div class="form-errors" ng-if="pwdForm.$submitted && pwdForm.pseudo.$error" ng-messages="pwdForm.password.$error"><div class="form-error" ng-message="required"><span translate="ERROR.FIELD_REQUIRED"></span></div><div class="form-error" ng-message="minlength"><span translate="ERROR.FIELD_TOO_SHORT"></span></div></div><div class="form-errors" ng-if="error"><div class="form-error">{{error|translate}}</div></div></div></form>');
+$templateCache.put('templates/common/qrcode.html','<a ng-attr-id="{{ qrcodeId }}" ng-show="!loading" class="qrcode fade-in pull-right" ng-class="{\'active\': toggleQRCode}" ng-click="toggleQRCode = !toggleQRCode"><div class="content"></div><div class="footer item item-icon-left item-text-wrap ink" on-hold="copy(formData.pubkey)" copy-on-click="{{:rebind:formData.pubkey}}" ng-click="$event.stopPropagation()"><i class="icon ion-key"></i> <span>{{:locale:\'COMMON.PUBKEY\'|translate}}</span><h4 id="pubkey" class="dark">{{:rebind:formData.pubkey}}</h4></div></a>');
+$templateCache.put('templates/common/view_passcode.html','<ion-view left-buttons="leftButtons"><ion-nav-title><span class="visible-xs visible-sm" translate>COMMON.PASSCODE.TITLE</span></ion-nav-title><ion-content scroll="false"></ion-content></ion-view>');
 $templateCache.put('templates/currency/items_network.html','<ion-item id="helptip-network-blockchain" class="item-icon-left item-text-wrap"><i class="icon ion-clock"></i> <span class="col col-60" translate="">CURRENCY.VIEW.MEDIAN_TIME</span> <span class="badge badge-stable">{{formData.medianTime | medianDate}}</span></ion-item><ion-item class="item-icon-left item-text-wrap"><i class="icon ion-lock-combination"></i> <span class="col col-75" translate="">CURRENCY.VIEW.POW_MIN</span> <span class="badge badge-stable">{{formData.difficulty | formatInteger}}</span></ion-item><cs-extension-point name="network-actual"></cs-extension-point><div class="item item-divider"><span translate="">CURRENCY.VIEW.NETWORK_RULES_DIVIDER</span></div><ion-item class="item-icon-left item-text-wrap"><i class="icon ion-clock" style="position: absolute; font-size: 20px; left: 16px; margin-top: 11px"></i> <b class="icon-secondary ion-lock-combination" style="left: 14px; margin-top: -4px"></b> <b class="icon-secondary ion-arrow-right-c" style="font-size: 12px; left: 28px; margin-top: -4px"></b> <b class="icon-secondary ion-lock-combination" style="left: 38px; margin-top: -4px"></b> <span class="col col-75" translate="">CURRENCY.VIEW.AVG_GEN_TIME</span> <span class="badge badge-stable">{{formData.avgGenTime | formatDuration}}</span></ion-item><div id="helptip-network-peers" class="item item-divider"><div class="pull-left"><span ng-if="search.type==\'member\'" translate="">PEER.MEMBERS</span> <span ng-if="search.type==\'mirror\'" translate="">PEER.MIRRORS</span> <span ng-if="search.type==\'offline\'" translate="">PEER.OFFLINE</span> <span ng-if="!search.type" translate="">PEER.PEERS</span> <span ng-if="!search.loading">({{search.results.length}})</span></div><div class="buttons pull-right"><ion-spinner class="icon" icon="android" ng-if="search.loading"></ion-spinner></div></div><ng-include src="::\'templates/network/items_peers.html\'"></ng-include>');
 $templateCache.put('templates/currency/items_parameters.html','<div bind-notifier="{ rebind:formData.useRelative }"><ion-item class="item-icon-left item-text-wrap visible-xs visible-sm"><i class="icon ion-android-bookmark"></i> <span translate>CURRENCY.VIEW.CURRENCY_NAME</span><div class="item-note dark" ng-if="!loading">{{formData.currency}} (<span ng-bind-html=":rebind:formData.currency | currencySymbol:formData.useRelative"></span>)</div></ion-item><ion-item id="helptip-currency-mass-member" class="item-icon-left item-text-wrap"><i class="icon ion-pie-graph"></i><div class="col col-60"><span translate>CURRENCY.VIEW.SHARE</span> <span class="gray">(M<sub>t</sub>/N<sub>t</sub>)</span></div><span id="helptip-currency-mass-member-unit" ng-if="!loading" class="badge badge-calm" ng-bind-html=":rebind:formData.MoverN | formatAmount:{currency: formData.currency, useRelative: formData.useRelative, currentUD: formData.currentUD}"></span></ion-item><ion-item class="item-icon-left item-text-wrap"><i class="icon ion-record"></i><div class="col col-60"><span translate>CURRENCY.VIEW.MASS</span> <span class="gray">(M<sub>t</sub>)</span></div><span class="badge badge-energized" ng-if="!loading" ng-bind-html=":rebind:formData.M | formatAmount:{currency: formData.currency, useRelative: formData.useRelative, currentUD: formData.currentUD}"></span></ion-item><cs-extension-point name="parameters-actual"></cs-extension-point><ion-item class="item-icon-left item-text-wrap"><i class="icon ion-arrow-graph-up-right"></i><div class="col col-60"><span translate>CURRENCY.VIEW.C_ACTUAL</span> <span class="gray">(c<sub>{{\'CURRENCY.VIEW.CURRENT\'|translate}}</sub>)</span></div><span class="badge badge-stable">{{formData.cactual | formatNumeral: \'0,0.00\'}} %&nbsp;/&nbsp;{{formData.dt | formatPeriod}}</span></ion-item><ion-item class="item-icon-left item-text-wrap"><i class="icon ion-load-c"></i><div class="col col-60"><span translate>CURRENCY.VIEW.UD</span> <span class="gray">({{\'COMMON.UD\'|translate}}<sub>t</sub>)</span></div><div class="badge badge-royal" ng-if="!loading"><span ng-if="formData.useRelative">1<ng-bind-html ng-bind-html=":rebind:formData.currency| currencySymbol:true"></ng-bind-html></span><span ng-if="!formData.useRelative" ng-bind-html=":rebind:formData.currentUD | formatAmount:{currency: formData.currency, useRelative: formData.useRelative, currentUD: formData.currentUD}"></span> &nbsp;/&nbsp;{{formData.dt | formatPeriod}}</div></ion-item><div class="item item-toggle dark"><div class="item-label text-right gray" translate>COMMON.BTN_RELATIVE_UNIT</div><label class="toggle toggle-royal" id="helptip-currency-change-unit"><input type="checkbox" ng-model="formData.useRelative"><div class="track"><div class="handle"></div></div></label></div><a name="helptip-currency-rules-anchor"></a><div class="item item-divider" id="helptip-currency-rules"><span translate>CURRENCY.VIEW.MONEY_RULES_DIVIDER</span></div><ion-item class="item-icon-left item-text-wrap"><i class="icon ion-arrow-graph-up-right"></i><div class="col col-60"><span translate>CURRENCY.VIEW.C_RULE</span> <span class="gray">(c)</span></div><span class="item-note dark" ng-if="!loading && !formData.udReevalTime0">{{formData.c*100 | formatNumeral: \'0,0.00\'}} %&nbsp;/&nbsp;{{formData.dt | formatPeriod}}</span><span class="badge badge-stable" ng-if="!loading && formData.udReevalTime0">{{formData.c*100 | formatNumeral: \'0,0.00\'}} %&nbsp;/&nbsp;{{formData.dtReeval | formatDuration}}</span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="formData.udReevalTime0 && formData.allRules"><i class="icon ion-load-c"></i> <b class="ion-clock icon-secondary" style="font-size: 18px; left: 36px; top: -12px"></b><div class="col col-60"><span translate>CURRENCY.VIEW.DT_REEVAL</span> <span class="gray">(dt<sub>{{\'CURRENCY.VIEW.REEVAL_SYMBOL\'|translate}}</sub>)</span></div><span class="item-note dark" ng-if="!loading" translate="CURRENCY.VIEW.DT_REEVAL_VALUE" translate-values="formData"></span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="formData.udReevalTime0 && formData.allRules"><i class="icon ion-load-c"></i> <b class="ion-calendar icon-secondary" style="font-size: 18px; left: 36px; top: -12px"></b><div class="col col-60"><span translate>CURRENCY.VIEW.UD_REEVAL_TIME0</span> <span class="gray">(t0<sub>{{\'CURRENCY.VIEW.REEVAL_SYMBOL\'|translate}}</sub>)</span></div><span class="item-note dark" ng-if="!loading">{{formData.udReevalTime0|medianDate}}</span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="formData.allRules"><i class="icon ion-load-c"></i> <b class="ion-calculator icon-secondary" style="font-size: 18px; left: 36px; top: -12px"></b><div class="col col-60"><span translate>CURRENCY.VIEW.UD_RULE</span> <span class="gray" ng-if="formData.udReevalTime0">- {{\'COMMON.UD\'|translate}}<sub>{{formData.dt|formatPeriod}}</sub>(t<sub>{{\'CURRENCY.VIEW.REEVAL_SYMBOL\'|translate}}</sub>)</span></div><span class="item-note dark" ng-if="!loading && !formData.udReevalTime0">{{\'COMMON.UD\'|translate}}<sub>t-1</sub> + c<sup>2</sup> * M<sub>t-1</sub>/N<sub>t-1</sub></span><span class="item-note dark" ng-if="!loading && formData.udReevalTime0">{{\'COMMON.UD\'|translate}}<sub>{{formData.dt|formatPeriod}}</sub>(t<sub>{{\'CURRENCY.VIEW.REEVAL_SYMBOL\'|translate}}</sub> - dt<sub>{{\'CURRENCY.VIEW.REEVAL_SYMBOL\'|translate}}</sub>)+ c<sup>2</sup> * (M/N)(t<sub>{{\'CURRENCY.VIEW.REEVAL_SYMBOL\'|translate}}</sub> - dt<sub>{{\'CURRENCY.VIEW.REEVAL_SYMBOL\'|translate}}</sub>) / dt<sub>{{\'CURRENCY.VIEW.REEVAL_SYMBOL\'|translate}}</sub></span></ion-item><div class="item item-toggle dark"><div class="item-label text-right gray" translate>CURRENCY.VIEW.DISPLAY_ALL_RULES</div><label class="toggle toggle-royal"><input type="checkbox" ng-model="formData.allRules"><div class="track"><div class="handle"></div></div></label></div></div>');
 $templateCache.put('templates/currency/items_wot.html','<div bind-notifier="{ rebind:formData.useRelative }"><a name="helptip-currency-newcomers-anchor"></a><ion-item class="item-icon-left item-text-wrap"><i class="icon ion-person-stalker"></i><div class="col col-60"><span translate>CURRENCY.VIEW.MEMBERS</span> <span class="gray">(N<sub>{{\'CURRENCY.VIEW.CURRENT\'|translate}}</sub>)</span></div><span class="badge badge-calm" ng-if="!loading">{{formData.N | formatInteger}}</span></ion-item><ion-item id="helptip-currency-newcomers" class="item-icon-left item-text-wrap"><i class="icon ion-arrow-graph-up-right"></i><div class="col col-75"><span translate="CURRENCY.VIEW.MEMBERS_VARIATION" translate-values="{duration: formData.durationFromLastUD}"></span> <span class="gray">(&#916;N)</span></div><div class="badge" ng-if="!loading" ng-class="{\'badge-balanced\': (formData.N>formData.Nprev), \'badge-stable\': (formData.N==formData.Nprev) ,\'badge-assertive\': (formData.Nprev>formData.N)}">{{formData.N > formData.Nprev ? \'+\' : \'\'}}{{formData.N - formData.Nprev}}</div></ion-item><cs-extension-point name="wot-actual"></cs-extension-point><div class="item item-divider"><span translate>CURRENCY.VIEW.WOT_RULES_DIVIDER</span></div><ion-item class="item-icon-left item-text-wrap"><i class="icon ion-ribbon-b"></i> <span class="col col-75" translate>CURRENCY.VIEW.SIG_QTY_RULE</span> <span class="badge badge-balanced" ng-if="!loading">{{formData.sigQty}}</span></ion-item><ion-item class="item-icon-left item-text-wrap"><i class="icon ion-person"></i> <b class="ion-clock icon-secondary" style="font-size: 18px; left: 33px; top: -12px"></b> <span class="col col-60" translate>CURRENCY.VIEW.MS_WINDOW</span> <span class="badge badge-assertive" ng-if="!loading">{{formData.msWindow | formatDuration}}</span></ion-item><ion-item class="item-icon-left item-text-wrap"><i class="icon ion-person"></i> <b class="ion-calendar icon-secondary" style="font-size: 18px; left: 33px; top: -12px"></b> <span class="col col-60" translate>CURRENCY.VIEW.MS_VALIDITY</span> <span class="badge badge-balanced" ng-if="!loading">{{formData.msValidity | formatDuration}}</span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="formData.allWotRules"><i class="icon ion-ribbon-b"></i> <b class="ion-clock icon-secondary" style="font-size: 18px; left: 33px; top: -12px"></b> <span class="col col-60" translate>CURRENCY.VIEW.SIG_WINDOW</span> <span class="badge badge-stable" ng-if="!loading">{{formData.sigWindow | formatDuration}}</span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="formData.allWotRules"><i class="icon ion-ribbon-b"></i> <b class="ion-calendar icon-secondary" style="font-size: 18px; left: 33px; top: -12px"></b> <span class="col col-60" translate>CURRENCY.VIEW.SIG_VALIDITY</span> <span class="badge badge-balanced" ng-if="!loading">{{formData.sigValidity | formatDuration}}</span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="formData.allWotRules"><i class="icon ion-ribbon-a"></i> <span class="col col-75" translate>CURRENCY.VIEW.SIG_STOCK</span> <span class="badge badge-stable" ng-if="!loading">{{formData.sigStock}}</span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="formData.allWotRules"><i class="icon ion-clock" style="position: absolute; font-size: 20px; left: 16px"></i> <b class="ion-ribbon-a icon-secondary" style="left: 16px; top: -15px"></b> <b class="ion-arrow-right-c icon-secondary" style="left: 28px; top: -15px"></b> <b class="ion-ribbon-a icon-secondary" style="left: 40px; top: -15px"></b> <span class="col col-75" translate>CURRENCY.VIEW.SIG_PERIOD</span> <span class="badge badge-stable" ng-if="!loading">{{formData.sigPeriod | formatDuration}}</span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="formData.allWotRules"><i class="icon ion-steam"></i> <b class="ion-person icon-secondary" style="left: 38px; top: -17px"></b><div class="col col-75"><span ng-bind-html="\'CURRENCY.VIEW.STEP_MAX\'|translate"></span> <span class="gray">(stepMax)</span></div><span class="badge badge-assertive" ng-if="!loading">{{formData.stepMax}}</span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="formData.allWotRules"><i class="icon ion-ribbon-b"></i> <b class="ion-star icon-secondary" style="color: yellow; font-size: 16px; left: 25px; top: -7px"></b> <span class="col col-75" translate>CURRENCY.VIEW.SENTRIES</span> <span class="badge badge-stable" ng-if="!loading">{{formData.sentries}}</span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="formData.allWotRules"><i class="icon ion-ribbon-b"></i> <b class="ion-star icon-secondary" style="color: yellow; font-size: 16px; left: 25px; top: -7px"></b> <span class="col col-75" translate>CURRENCY.VIEW.SENTRIES_FORMULA</span> <span class="item-note dark" ng-if="!loading">{{\'CURRENCY.VIEW.MATH_CEILING\'| translate}}( N<sub>t</sub><sup>^ (1 / stepMax)</sup>)</span></ion-item><ion-item class="item-icon-left item-text-wrap" ng-if="formData.allWotRules"><i class="icon ion-pull-request"></i> <span class="col col-75" translate>CURRENCY.VIEW.XPERCENT</span> <span class="badge badge-stable" ng-if="!loading">{{formData.xpercent*100| formatNumeral: \'0,0\'}} %</span></ion-item><div class="item item-toggle dark"><div class="item-label text-right gray" translate>CURRENCY.VIEW.DISPLAY_ALL_RULES</div><label class="toggle toggle-royal"><input type="checkbox" ng-model="formData.allWotRules"><div class="track"><div class="handle"></div></div></label></div></div>');
@@ -21051,17 +21062,6 @@ $templateCache.put('templates/currency/view_currency_lg.html','<ion-view left-bu
 $templateCache.put('templates/help/help.html','<a name="join"></a><h2 translate>HELP.JOIN.SECTION</h2><a name="join-salt"></a><div class="row responsive-sm" ng-class="itemsClass[\'join-salt\']"><div class="col col-20" translate>LOGIN.SALT</div><div class="col" translate>HELP.JOIN.SALT</div></div><a name="join-password"></a><div class="row responsive-sm" ng-class="itemsClass[\'join-password\']"><div class="col col-20" translate>LOGIN.PASSWORD</div><div class="col" translate>HELP.JOIN.PASSWORD</div></div><a name="join-pseudo"></a><div class="row responsive-sm" ng-class="itemsClass[\'join-pseudo\']"><div class="col col-20" translate>ACCOUNT.NEW.PSEUDO</div><div class="col" translate>HELP.JOIN.PSEUDO</div></div><a name="login"></a><h2 translate>HELP.LOGIN.SECTION</h2><a name="login-pubkey"></a><div class="row responsive-sm" ng-class="itemsClass[\'login-pubkey\']"><div class="col col-20" translate>HELP.LOGIN.PUBKEY</div><div class="col" translate>HELP.LOGIN.PUBKEY_DEF</div></div><a name="login-method"></a><div class="row responsive-sm" ng-class="itemsClass[\'login-method\']"><div class="col col-20" translate>HELP.LOGIN.METHOD</div><div class="col" translate>HELP.LOGIN.METHOD_DEF</div></div><a name="glossary"></a><h2 translate>HELP.GLOSSARY.SECTION</h2><a name="pubkey"></a><div class="row responsive-sm" ng-class="itemsClass.pubkey"><div class="col col-20" translate>COMMON.PUBKEY</div><div class="col" translate>HELP.GLOSSARY.PUBKEY_DEF</div></div><a name="blockchain"></a><div class="row responsive-sm" ng-class="itemsClass.blockchain"><div class="col col-20" translate>HELP.GLOSSARY.BLOCKCHAIN</div><div class="col" translate>HELP.GLOSSARY.BLOCKCHAIN_DEF</div></div><a name="universal_dividend"></a> <a name="ud"></a><div class="row responsive-sm" ng-class="itemsClass.ud"><div class="col col-20" translate>COMMON.UNIVERSAL_DIVIDEND</div><div class="col" translate>HELP.GLOSSARY.UNIVERSAL_DIVIDEND_DEF</div></div><a name="member"></a><div class="row responsive-sm" ng-class="itemsClass.member"><div class="col col-20" translate>HELP.GLOSSARY.MEMBER</div><div class="col" translate>HELP.GLOSSARY.MEMBER_DEF</div></div><a name="wot"></a><div class="row responsive-sm" ng-class="itemsClass.wot"><div class="col col-20" translate>HELP.GLOSSARY.WOT</div><div class="col" translate>HELP.GLOSSARY.WOT_DEF</div></div><a name="currency_rules"></a><div class="row responsive-sm" ng-class="itemsClass.currency_rules"><div class="col col-20" translate>HELP.GLOSSARY.CURRENCY_RULES</div><div class="col" translate>HELP.GLOSSARY.CURRENCY_RULES_DEF</div></div><a name="distance_rule"></a><div class="row responsive-sm" ng-class="itemsClass.distance_rule"><div class="col col-20" translate>HELP.GLOSSARY.DISTANCE_RULE</div><div class="col" translate>HELP.GLOSSARY.DISTANCE_RULE_DEF</div></div>');
 $templateCache.put('templates/help/modal_help.html','<ion-modal-view class="modal-full-height modal-help"><ion-header-bar class="bar-positive"><button class="button button-clear" ng-click="closeModal()" translate>COMMON.BTN_CLOSE</button><h1 class="title" translate>HELP.TITLE</h1></ion-header-bar><ion-content scroll="true" class="padding no-padding-xs"><div ng-class="listClass"><ng-include src="::\'templates/help/help.html\'"></ng-include></div><div class="padding hidden-xs text-center"><button class="button button-positive ink" type="submit" ng-click="closeModal()">{{\'COMMON.BTN_CLOSE\' | translate}}</button></div></ion-content></ion-modal-view>');
 $templateCache.put('templates/help/view_help.html','<ion-view left-buttons="leftButtons"><ion-nav-title><span class="visible-xs visible-sm" translate="">HELP.TITLE</span></ion-nav-title><ion-content scroll="true" class="padding"><ng-include src="::\'templates/help/help.html\'"></ng-include></ion-content></ion-view>');
-$templateCache.put('templates/common/badge_certification_count.html','<span ng-attr-id="{{$ctrl.csId}}" class="badge badge-balanced" ng-class="{\'badge-energized\': $ctrl.requirements.willNeedCertificationCount || ($ctrl.requirements.needCertificationCount + $ctrl.requirements.pendingCertificationCount >= $ctrl.parameters.sigQty),\n               \'badge-assertive\': ($ctrl.requirements.needCertificationCount + $ctrl.requirements.pendingCertificationCount < $ctrl.parameters.sigQty)}"><span ng-if="$ctrl.requirements.certificationCount || !$ctrl.requirements.pendingCertificationCount"><i ng-if="!$ctrl.requirements.needCertificationCount" class="ion-android-done"></i> {{$ctrl.requirements.certificationCount}} <i ng-if="$ctrl.requirements.willNeedCertificationCount" class="ion-android-warning"></i> </span><span ng-if="$ctrl.requirements.pendingCertificationCount"><ng-if ng-if="$ctrl.requirements.certificationCount">+</ng-if><i class="ion-clock"></i> {{$ctrl.requirements.pendingCertificationCount}}</span></span>');
-$templateCache.put('templates/common/badge_given_certification_count.html','<div ng-attr-id="{{$ctrl.csId}}" class="badge badge-calm" ng-class="{\'badge-assertive\': $ctrl.identity.given_cert.length >= $ctrl.parameters.sigStock}"><span><i ng-if="$ctrl.identity.given_cert.length" class="ion-android-done"></i> {{$ctrl.identity.given_cert.length}} </span><span ng-if="$ctrl.identity.given_cert_pending.length">(<ng-if ng-if="$ctrl.identity.given_cert.length">+</ng-if><i class="ion-clock"></i> {{$ctrl.identity.given_cert_pending.length}}) </span><small>/ {{$ctrl.parameters.sigStock}}</small></div>');
-$templateCache.put('templates/common/form_error_messages.html','<div class="form-error" ng-message="minlength"><span translate="ERROR.FIELD_TOO_SHORT"></span></div><div class="form-error" ng-message="maxlength"><span translate="ERROR.FIELD_TOO_LONG"></span></div><div class="form-error" ng-message="pattern"><span translate="ERROR.FIELD_ACCENT"></span></div><div class="form-error" ng-message="required"><span translate="ERROR.FIELD_REQUIRED"></span></div>');
-$templateCache.put('templates/common/popover_copy.html','<ion-popover-view class="popover-copy" style="height: {{(!rows || rows &lt;= 1) ? 50 : rows*22}}px"><ion-content scroll="false"><div class="list"><div class="item item-input"><input type="text" autocomplete="off" ng-if="!rows || rows &lt;= 1" ng-model="value"><textarea ng-if="rows && rows > 1" ng-model="value" rows="{{rows}}" cols="10">\n      </textarea></div></div></ion-content></ion-popover-view>');
-$templateCache.put('templates/common/popover_helptip.html','<ion-popover-view class="popover-helptip"><ion-content scroll="false" class="list"><p><i ng-if="icon.position && !icon.position.startsWith(\'bottom-\')" class="{{icon.class}} icon-{{icon.position}} hidden-xs" style="{{icon.style}}"></i><a ng-click="closePopover()" class="pull-right button-close" ng-class="{\'pull-left\': icon.position === \'right\', \'pull-right\': icon.position !== \'right\'}"><i class="ion-close"></i> </a><span>&nbsp;</span></p><p class="padding light"><ng-bind-html ng-bind-html="content | translate:contentParams"></ng-bind-html><ng-bind-html ng-bind-html="trustContent"></ng-bind-html></p><div class="text-center" ng-if="!tour"><button class="button button-small button-stable" ng-if="!hasNext" ng-click="closePopover(true)" translate>COMMON.BTN_UNDERSTOOD</button> <button class="button button-small button-stable" id="helptip-btn-ok" ng-if="hasNext" ng-click="closePopover(false)" translate>COMMON.BTN_UNDERSTOOD</button> <button id="helptip-btn-ok" class="button button-small button-positive icon-right ink" ng-if="hasNext" ng-click="closePopover(true)"><i class="icon ion-chevron-right"></i></button></div><div class="text-center" ng-if="tour"><button class="button button-small button-positive" id="helptip-btn-ok" ng-if="!hasNext" ng-click="closePopover(false)" translate>COMMON.BTN_CLOSE</button> <button id="helptip-btn-ok" class="button button-small button-positive icon-right ink" ng-if="hasNext" ng-click="closePopover(true)">{{\'COMMON.BTN_CONTINUE\'|translate}} <i class="icon ion-chevron-right"></i></button></div><p><i ng-if="icon.position && icon.position.startsWith(\'bottom-\')" class="{{icon.class}} icon-{{icon.position}} hidden-xs"></i></p></ion-content></ion-popover-view>');
-$templateCache.put('templates/common/popover_locales.html','<ion-popover-view class="fit popover-locales" style="height: {{locales.length*48}}px"><ion-content scroll="false"><div class="list item-text-wrap block"><a ng-repeat="l in locales track by l.id" class="item item-icon-left ink" ng-click="changeLanguage(l.id)"><i class="item-image avatar" style="background-image: url(./img/flag-{{l.flag}}.png)"></i> {{l.label | translate}}</a></div></ion-content></ion-popover-view>');
-$templateCache.put('templates/common/popover_profile.html','');
-$templateCache.put('templates/common/popover_share.html','<ion-popover-view class="popover-share"><ion-content scroll="false"><div class="bar bar-header"><h1 class="title">{{titleKey|translate:titleValues}}</h1><span class="gray pull-right">{{time|formatDate}}</span></div><div class="list no-margin no-padding has-header has-footer block"><div class="item item-input"><input type="text" autocomplete="off" ng-model="value"></div></div><div class="bar bar-footer"><div class="button-bar"><a class="button button-icon positive icon ion-social-facebook" href="https://www.facebook.com/sharer/sharer.php?u={{postUrl|formatEncodeURI}}&amp;title={{postMessage|formatEncodeURI}}" onclick="window.open(this.href, \'facebook-share\',\'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width=580,height=296\');return false;" title="{{\'COMMON.POPOVER_SHARE.SHARE_ON_FACEBOOK\'|translate}}"></a> <a class="button button-icon positive icon ion-social-twitter" href="https://twitter.com/intent/tweet?url={{postUrl|formatEncodeURI}}&amp;text={{postMessage|formatEncodeURI}}" onclick="window.open(this.href, \'twitter-share\',\'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width=580,height=296\');return false;" title="{{\'COMMON.POPOVER_SHARE.SHARE_ON_TWITTER\'|translate}}"></a> <a class="button button-icon positive icon ion-social-googleplus" href="https://plus.google.com/share?url={{postUrl|formatEncodeURI}}" onclick="window.open(this.href, \'google-plus-share\', \'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=296,width=580\');return false;" title="{{\'COMMON.POPOVER_SHARE.SHARE_ON_GOOGLEPLUS\'|translate}}"></a> <a class="button button-icon positive icon ion-social-diaspora" href="https://sharetodiaspora.github.io/?title={{postMessage|formatEncodeURI}}&amp;url={{postUrl|formatEncodeURI}}" onclick="window.open(this.href, \'diaspora-share\',\'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,width=580,height=296\');return false;" title="{{\'COMMON.POPOVER_SHARE.SHARE_ON_DIASPORA\'|translate}}"></a> <a class="button-close" title="{{\'COMMON.BTN_CLOSE\'|translate}}" ng-click="closePopover()"><i class="icon ion-close"></i></a></div></div></ion-content></ion-popover-view>');
-$templateCache.put('templates/common/popup_password.html','<form name="pwdForm" ng-submit="submit($event)"><div class="list" ng-init="setForm(pwdForm)"><label class="item item-input" ng-class="{\'item-input-error\': pwdForm.$submitted && pwdForm.password.$invalid}"><input name="password" type="password" placeholder="{{\'ACCOUNT.SECURITY.KEYFILE.PASSWORD_POPUP.PASSWORD_HELP\' | translate}}" ng-model="formData.password" ng-minlength="1" required></label><div class="form-errors" ng-if="pwdForm.$submitted && pwdForm.pseudo.$error" ng-messages="pwdForm.password.$error"><div class="form-error" ng-message="required"><span translate="ERROR.FIELD_REQUIRED"></span></div><div class="form-error" ng-message="minlength"><span translate="ERROR.FIELD_TOO_SHORT"></span></div></div><div class="form-errors" ng-if="error"><div class="form-error">{{error|translate}}</div></div></div></form>');
-$templateCache.put('templates/common/qrcode.html','<a ng-attr-id="{{ qrcodeId }}" ng-show="!loading" class="qrcode fade-in pull-right" ng-class="{\'active\': toggleQRCode}" ng-click="toggleQRCode = !toggleQRCode"><div class="content"></div><div class="footer item item-icon-left item-text-wrap ink" on-hold="copy(formData.pubkey)" copy-on-click="{{:rebind:formData.pubkey}}" ng-click="$event.stopPropagation()"><i class="icon ion-key"></i> <span>{{:locale:\'COMMON.PUBKEY\'|translate}}</span><h4 id="pubkey" class="dark">{{:rebind:formData.pubkey}}</h4></div></a>');
-$templateCache.put('templates/common/view_passcode.html','<ion-view left-buttons="leftButtons"><ion-nav-title><span class="visible-xs visible-sm" translate>COMMON.PASSCODE.TITLE</span></ion-nav-title><ion-content scroll="false"></ion-content></ion-view>');
 $templateCache.put('templates/home/home.html','<ion-view id="home"><ion-nav-title></ion-nav-title><ion-nav-buttons side="secondary"></ion-nav-buttons><ion-content class="positive-900-bg circle-bg-dark"><div class="row padding-horizontal no-padding-xxs responsive-lg"><div class="col text-center no-padding-xs main-container"><div id="helptip-home-logo" class="logo"></div><h4><span class="hidden-xs" translate="">HOME.WELCOME</span> <b ng-show="!loading" translate-values=":currency:{currency: $root.currency.name}" translate="">HOME.MESSAGE</b></h4><div class="center padding" ng-if="loading"><ion-spinner icon="android"></ion-spinner></div><div class="center padding animate-fade-in animate-show-hide ng-hide" ng-show="!loading && error"><div class="card card-item padding"><p class="item-content item-text-wrap"><span class="dark" trust-as-html="\'HOME.CONNECTION_ERROR\'|translate:node"></span></p><button type="button" class="button button-positive icon icon-left ion-refresh ink" ng-click="reload()">{{\'COMMON.BTN_REFRESH\'|translate}}</button></div></div><div class="center animate-show-hide ng-hide" ng-show="!loading && !error"><button type="button" class="button button-block button-stable button-raised icon-left icon ion-easel ink-dark hidden-xs" ng-show="login" ng-click="startHelpTour($event)">{{\'COMMON.BTN_HELP_TOUR\'|translate}}</button> <button type="button" class="button button-block button-positive button-raised ink-dark" ng-click="showJoinModal()" ng-if="!login" translate="">LOGIN.CREATE_FREE_ACCOUNT</button> <button type="button" class="item button button-block button-raised icon icon-left ion-person ink-dark" ng-class="{\'button-stable\': smallscreen, \'button-positive\': !smallscreen}" ui-sref="app.view_wallet" ng-show="login" translate="">MENU.ACCOUNT</button> <button type="button" class="item button button-block button-stable button-raised icon icon-left ion-card ink-dark visible-xs" ui-sref="app.view_wallet_tx" ng-if="login"><b class="icon-secondary ion-clock" style="left: 52px; top: -2px; font-size: 10pt; display: block"></b> {{\'MENU.TRANSACTIONS\'|translate}}</button> <button type="button" class="item button button-block button-positive button-raised icon icon-left ion-paper-airplane ink-dark visible-xs" ng-click="showTransferModal()" ng-if="login" translate="">COMMON.BTN_SEND_MONEY</button><br class="visible-xs visible-sm"><div class="text-center no-padding" ng-show="!login"><br class="visible-xs visible-sm">{{\'LOGIN.HAVE_ACCOUNT_QUESTION\'|translate}} <b></b></div><div class="text-center no-padding" ng-show="login"><br class="visible-xs visible-sm"><span ng-bind-html="\'HOME.NOT_YOUR_ACCOUNT_QUESTION\'|translate:{pubkey: walletData.pubkey}"></span><br><b><a class="assertive" ng-click="logout({askConfirm: true})" translate="">HOME.BTN_CHANGE_ACCOUNT</a></b></div><button type="button" class="button button-block button-stable button-raised ink visible-xs visible-sm" ui-sref="app.view_wallet" ng-if="!login" translate="">COMMON.BTN_LOGIN</button><div class="text-center no-padding visible-xs stable"><br>{{\'COMMON.APP_VERSION\'|translate:{version: config.version} }} | <a href="#" ng-click="showAboutModal()" translate="">HOME.BTN_ABOUT</a></div></div></div><div class="col no-padding" ng-class="{\'col-30\': !feed, \'col-10\': feed}">&nbsp;</div><div class="col col-30 no-padding" ng-if="feed"><div class="feed padding-horizontal no-padding-xs padding-top"><h3 class="padding-left"><i class="icon ion-speakerphone"></i> {{feed.title}} <small><a ng-click="openLink($event, feed.home_page_url)" class="gray"><span translate="">HOME.SHOW_ALL_FEED</span> <i class="icon ion-chevron-right"></i></a></small></h3><div class="animate-show-hide ng-hide" ng-show="feed"><div ng-repeat="item in feed.items" class="card padding no-margin-xs"><div class="header"><i ng-if="item.author.avatar" class="avatar" style="background-image: url({{item.author.avatar}})"></i> <a ng-class="{\'avatar-left-padding\': item.author.avatar}" class="author" ng-click="item.author.url && openLink($event, item.author.url)">{{item.author.name}} </a><a ng-if="item.time" title="{{item.time|formatDate}}" ng-click="openLink($event, item.url)" class="item-note"><small><i class="icon ion-clock"></i>&nbsp;{{item.time|formatFromNow}}</small></a></div><h2 class="title feed-title"><a ng-click="openLink($event, item.url)">{{item.title}}</a></h2><div ng-if="item.content" class="content feed-content" trust-as-html="item.content"></div><h4 class="card-footer feed-footer text-right positive-100"><a ng-click="openLink($event, item.url)"><span ng-if="item.truncated" translate="">HOME.READ_MORE</span> <span ng-if="!item.truncated" translate="">COMMON.BTN_SHOW</span> <i class="icon ion-chevron-right"></i></a></h4></div></div></div></div></div></ion-content></ion-view>');
 $templateCache.put('templates/join/modal_choose_account_type.html','<ion-modal-view class="modal-full-height"><ion-header-bar class="bar-positive"><button class="button button-clear visible-xs" ng-if="!slides.slider.activeIndex" ng-click="closeModal()" translate="">COMMON.BTN_CANCEL</button> <button class="button button-icon button-clear icon ion-ios-arrow-back buttons header-item" ng-click="slidePrev()" ng-if="slides.slider.activeIndex"></button><h1 class="title" translate="">ACCOUNT.NEW.TITLE</h1><button class="button button-clear icon-right visible-xs" ng-if="slides.slider.activeIndex === 0" ng-click="slideNext()"><span translate="">COMMON.BTN_NEXT</span> <i class="icon ion-ios-arrow-right"></i></button></ion-header-bar><ion-slides options="slides.options" slider="slides.slider"><ion-slide-page><ion-content class="has-header padding"><div class="center padding" ng-if="loading"><ion-spinner class="icon" icon="android"></ion-spinner></div><div ng-if="!loading"><p ng-bind-html="\'ACCOUNT.NEW.INTRO_WARNING_TIME\'|translate:currency"></p><div class="row responsive-sm"><div class="col"><div class="item card item-icon-left padding item-text-wrap stable-bg"><i class="icon ion-android-warning assertive"></i><p class="item-content item-icon-left-padding"><span class="dark" translate="">ACCOUNT.NEW.INTRO_WARNING_SECURITY</span><br><small translate="">ACCOUNT.NEW.INTRO_WARNING_SECURITY_HELP</small></p></div></div><div class="col"><div class="item card item-icon-left padding item-text-wrap stable-bg"><i class="icon ion-information-circled positive"></i><p class="item-content item-icon-left-padding"><span class="dark" trust-as-html="\'ACCOUNT.NEW.REGISTRATION_NODE\'|translate:currency.node"></span><br><small trust-as-html="\'ACCOUNT.NEW.REGISTRATION_NODE_HELP\'|translate:currency.node"></small></p></div></div></div></div><div class="padding hidden-xs text-right"><button class="button button-clear button-dark ink" ng-click="closeModal()" type="button" translate="">COMMON.BTN_CANCEL</button> <button class="button button-positive icon-right ion-chevron-right ink" ng-click="slideNext()" ng-disabled="loading" type="button" translate="">COMMON.BTN_START</button></div></ion-content></ion-slide-page><ion-slide-page><ion-content class="has-header padding"><p translate="">ACCOUNT.NEW.SELECT_ACCOUNT_TYPE</p><div class="list"><div class="item item-complex card stable-bg item-icon-left item-icon-right ink" ng-click="selectAccountTypeAndClose(\'member\')"><div class="item-content item-text-wrap"><i class="item-image icon dark ion-person"></i><h2 translate="">ACCOUNT.NEW.MEMBER_ACCOUNT</h2><h4 class="gray" ng-bind-html="\'ACCOUNT.NEW.MEMBER_ACCOUNT_HELP\'|translate:currency"></h4><i class="icon dark ion-ios-arrow-right"></i></div></div><cs-extension-point name="select-account-type"></cs-extension-point><div class="item item-complex card stable-bg item-icon-left item-icon-right ink" ng-click="selectAccountTypeAndClose(\'wallet\')"><div class="item-content item-text-wrap"><i class="item-image icon dark ion-card"></i><h2 translate="">ACCOUNT.NEW.WALLET_ACCOUNT</h2><h4 class="gray" translate="">ACCOUNT.NEW.WALLET_ACCOUNT_HELP</h4><i class="icon dark ion-ios-arrow-right"></i></div></div></div><div class="padding hidden-xs text-right"><button class="button button-clear button-dark ink" ng-click="closeModal()" type="button" translate="">COMMON.BTN_CANCEL</button></div></ion-content></ion-slide-page></ion-slides></ion-modal-view>');
 $templateCache.put('templates/join/modal_join_member.html','<ion-modal-view class="modal-full-height"><ion-header-bar class="bar-positive"><button class="button button-clear visible-xs" ng-if="!slides.slider.activeIndex" ng-click="closeModal()" translate>COMMON.BTN_CANCEL</button> <button class="button button-icon button-clear icon ion-ios-arrow-back buttons header-item" ng-click="doPrev()" ng-if="slides.slider.activeIndex && slideBehavior.hasPreviousButton"></button> <button class="button button-icon button-clear icon ion-ios-help-outline visible-xs" ng-if="slideBehavior.helpAnchor" ng-click="showHelpModal(slideBehavior.helpAnchor)"></button><h1 class="title" translate>ACCOUNT.NEW.MEMBER_ACCOUNT_TITLE</h1><button class="button button-clear icon-right visible-xs" ng-if="slideBehavior.hasNextButton" ng-click="doNext()"><span translate>COMMON.BTN_NEXT</span> <i class="icon ion-ios-arrow-right"></i></button> <button class="button button-clear icon-right visible-xs" ng-class="{\'button-text-stable\': !isLicenseRead}" ng-if="slideBehavior.hasAcceptButton" ng-click="isLicenseRead ? doNext() : undefined"><span translate>ACCOUNT.NEW.BTN_ACCEPT</span> <i class="icon ion-ios-arrow-right"></i></button> <button class="button button-clear icon-right visible-xs" ng-if="slideBehavior.hasSendButton" ng-click="doNewAccount()"><i class="icon ion-android-send"></i></button></ion-header-bar><ion-slides options="slides.options" slider="slides.slider"><ion-slide-page ng-if="licenseFileUrl"><ion-content class="has-header" scroll="false"><div class="padding" translate>ACCOUNT.NEW.INFO_LICENSE</div><div class="center padding" ng-if="loading"><ion-spinner class="icon" icon="android"></ion-spinner></div><iframe ng-if="!loading" class="padding-left padding-right no-padding-xs iframe-license" id="iframe-license" ng-src="{{licenseFileUrl}}"></iframe><div class="padding hidden-xs text-right"><button class="button button-clear button-dark ink" ng-click="closeModal()" type="button" translate>COMMON.BTN_CANCEL</button> <button class="button button-calm icon-right ion-chevron-right ink" ng-click="doNext(\'licenceForm\')" ng-disabled="!isLicenseRead" type="button" translate>ACCOUNT.NEW.BTN_ACCEPT_LICENSE</button></div></ion-content></ion-slide-page><ion-slide-page><ion-content class="has-header" scroll="true"><form name="pseudoForm" novalidate="" ng-submit="doNext(\'pseudoForm\')"><div class="item item-text-wrap text-center padding"><a class="pull-right icon-help hidden-xs" ng-click="showHelpModal(\'join-pseudo\')"></a> <span translate>ACCOUNT.NEW.PSEUDO_WARNING</span></div><div class="list" ng-init="setForm(pseudoForm, \'pseudoForm\')"><div class="item item-input" ng-class="{\'item-input-error\': (pseudoForm.$submitted && pseudoForm.pseudo.$invalid) || (uiAlreadyUsed && formData.pseudo)}"><span class="input-label" translate>ACCOUNT.NEW.PSEUDO</span> <input id="pseudo" name="pseudo" type="text" placeholder="{{\'ACCOUNT.NEW.PSEUDO_HELP\' | translate}}" ng-model="formData.pseudo" autocomplete="off" ng-minlength="3" ng-maxlength="100" ng-pattern="userIdPattern" ng-model-options="{ debounce: 250 }" required></div><div class="form-errors" ng-show="pseudoForm.$submitted && pseudoForm.pseudo.$error" ng-messages="pseudoForm.pseudo.$error"><div class="form-error" ng-message="minlength"><span translate="ERROR.FIELD_TOO_SHORT_WITH_LENGTH" translate-values="{minLength: 3}"></span></div><div class="form-error" ng-message="maxlength"><span translate="ERROR.FIELD_TOO_LONG_WITH_LENGTH" translate-values="{maxLength: 100}"></span></div><div class="form-error" ng-message="required"><span translate="ERROR.FIELD_REQUIRED"></span></div><div class="form-error" ng-message="pattern"><span translate="ERROR.INVALID_USER_ID"></span></div></div><div class="text-right" style="min-height: 18px"><div class="form-error gray" ng-if="formData.computing && formData.pseudo"><ion-spinner class="icon ion-spinner-small" icon="android" ng-if="formData.computing && formData.pseudo"></ion-spinner><span translate>ACCOUNT.NEW.CHECKING_PSEUDO</span></div><ng-if ng-if="!formData.computing && formData.pseudo"><div class="form-error balanced" ng-if="!uiAlreadyUsed "><i class="icon ion-checkmark balanced"></i> <span translate>ACCOUNT.NEW.PSEUDO_AVAILABLE</span></div><div class="form-error" ng-if="uiAlreadyUsed"><i class="icon ion-close-circled assertive"></i> <span translate>ACCOUNT.NEW.PSEUDO_NOT_AVAILABLE</span></div></ng-if></div><div class="padding hidden-xs text-right"><button class="button button-clear button-dark ink" ng-click="closeModal()" type="button" translate>COMMON.BTN_CANCEL</button> <button class="button button-calm icon-right ion-chevron-right ink" type="submit" ng-disabled="uiAlreadyUsed" translate>COMMON.BTN_NEXT</button></div></div></form></ion-content></ion-slide-page><ion-slide-page ng-if="!formData.pubkey"><ion-content class="has-header" scroll="true"><form name="saltForm" novalidate="" ng-submit="doNext(\'saltForm\')"><div class="list" ng-init="setForm(saltForm, \'saltForm\')"><div class="item item-text-wrap text-center padding hidden-xs"><a class="pull-right icon-help" ng-click="showHelpModal(\'join-salt\')"></a> <span translate>ACCOUNT.NEW.SALT_WARNING</span></div><div class="item item-input" ng-class="{ \'item-input-error\': saltForm.$submitted && saltForm.username.$invalid}"><span class="input-label" translate>LOGIN.SALT</span> <input ng-if="!showUsername" name="username" type="password" placeholder="{{\'LOGIN.SALT_HELP\' | translate}}" ng-change="formDataChanged()" ng-model="formData.username" autocomplete="off" ng-minlength="8" different-to="formData.pseudo" required> <input ng-if="showUsername" name="username" type="text" placeholder="{{\'LOGIN.SALT_HELP\' | translate}}" ng-change="formDataChanged()" ng-model="formData.username" autocomplete="off" ng-minlength="8" different-to="formData.pseudo" required></div><div class="form-errors" ng-show="saltForm.$submitted && saltForm.username.$error" ng-messages="saltForm.username.$error"><div class="form-error" ng-message="minlength"><span translate="ERROR.FIELD_TOO_SHORT_WITH_LENGTH" translate-values="{minLength: 8}"></span></div><div class="form-error" ng-message="required"><span translate="ERROR.FIELD_REQUIRED"></span></div><div class="form-error" ng-message="differentTo"><span translate="ERROR.EQUALS_TO_PSEUDO"></span></div></div><div class="item item-input" ng-class="{ \'item-input-error\': saltForm.$submitted && saltForm.confirmSalt.$invalid}"><span class="input-label pull-right" translate>ACCOUNT.NEW.SALT_CONFIRM</span> <input ng-if="!showUsername" name="confirmUsername" type="password" placeholder="{{\'ACCOUNT.NEW.SALT_CONFIRM_HELP\' | translate}}" ng-model="formData.confirmUsername" autocomplete="off" compare-to="formData.username"> <input ng-if="showUsername" name="confirmUsername" type="text" placeholder="{{\'ACCOUNT.NEW.SALT_CONFIRM_HELP\' | translate}}" ng-model="formData.confirmUsername" autocomplete="off" compare-to="formData.username"></div><div class="form-errors" ng-show="saltForm.$submitted && saltForm.confirmUsername.$error" ng-messages="saltForm.confirmUsername.$error"><div class="form-error" ng-message="compareTo"><span translate="ERROR.SALT_NOT_CONFIRMED"></span></div></div><div class="item item-toggle dark"><span translate>COMMON.SHOW_VALUES</span><label class="toggle toggle-royal"><input type="checkbox" ng-model="showUsername"><div class="track"><div class="handle"></div></div></label></div><div class="padding hidden-xs text-right"><button class="button button-clear button-dark ink" ng-click="closeModal()" type="button" translate>COMMON.BTN_CANCEL</button> <button class="button button-calm icon-right ion-chevron-right ink" type="submit" translate>COMMON.BTN_NEXT <i class="icon ion-arrow-right-a"></i></button></div></div></form></ion-content></ion-slide-page><ion-slide-page ng-if="!formData.pubkey"><ion-content class="has-header" scroll="true"><form name="passwordForm" novalidate="" ng-submit="doNext(\'passwordForm\')"><div class="item item-text-wrap text-center padding hidden-xs"><a class="pull-right icon-help" ng-click="showHelpModal(\'join-password\')"></a> <span translate>ACCOUNT.NEW.PASSWORD_WARNING</span></div><div class="list" ng-init="setForm(passwordForm, \'passwordForm\')"><div class="item item-input" ng-class="{ \'item-input-error\': passwordForm.$submitted && passwordForm.password.$invalid}"><span class="input-label" translate>LOGIN.PASSWORD</span> <input ng-if="!showPassword" name="password" type="password" placeholder="{{\'LOGIN.PASSWORD_HELP\' | translate}}" ng-model="formData.password" autocomplete="off" ng-change="formDataChanged()" ng-minlength="8" different-to="formData.username" required> <input ng-if="showPassword" name="text" type="text" placeholder="{{\'LOGIN.PASSWORD_HELP\' | translate}}" ng-model="formData.password" autocomplete="off" ng-change="formDataChanged()" ng-minlength="8" different-to="formData.username" required></div><div class="form-errors" ng-show="passwordForm.$submitted && passwordForm.password.$error" ng-messages="passwordForm.password.$error"><div class="form-error" ng-message="minlength"><span translate="ERROR.FIELD_TOO_SHORT_WITH_LENGTH" translate-values="{minLength: 8}"></span></div><div class="form-error" ng-message="required"><span translate="ERROR.FIELD_REQUIRED"></span></div><div class="form-error" ng-message="differentTo"><span translate="ERROR.EQUALS_TO_SALT"></span></div></div><div class="item item-input" ng-class="{ \'item-input-error\': passwordForm.$submitted && passwordForm.confirmPassword.$invalid}"><span class="input-label" translate>ACCOUNT.NEW.PASSWORD_CONFIRM</span> <input ng-if="!showPassword" name="confirmPassword" type="password" placeholder="{{\'ACCOUNT.NEW.PASSWORD_CONFIRM_HELP\' | translate}}" ng-model="formData.confirmPassword" autocomplete="off" compare-to="formData.password"> <input ng-if="showPassword" name="confirmPassword" type="text" placeholder="{{\'ACCOUNT.NEW.PASSWORD_CONFIRM_HELP\' | translate}}" ng-model="formData.confirmPassword" autocomplete="off" compare-to="formData.password"></div><div class="form-errors" ng-show="passwordForm.$submitted && passwordForm.confirmPassword.$error" ng-messages="passwordForm.confirmPassword.$error"><div class="form-error" ng-message="compareTo"><span translate="ERROR.PASSWORD_NOT_CONFIRMED"></span></div></div><div class="item item-toggle dark"><span translate>COMMON.SHOW_VALUES</span><label class="toggle toggle-royal"><input type="checkbox" ng-model="showPassword"><div class="track"><div class="handle"></div></div></label></div></div><div class="padding hidden-xs text-right"><button class="button button-clear button-dark ink" ng-click="closeModal()" type="button" translate>COMMON.BTN_CANCEL</button> <button class="button button-calm icon-right ion-chevron-right ink" type="submit" ng-click="getRevocationDocument()" translate>COMMON.BTN_NEXT</button></div><div class="padding hidden-xs"></div></form></ion-content></ion-slide-page><ion-slide-page><ion-content class="has-header" scroll="true"><div class="center padding" ng-if="formData.computing"><ion-spinner icon="android"></ion-spinner></div><ng-if ng-if="!formData.computing"><div class="animate-fade-in animate-show-hide ng-hide" ng-show="accountAvailable"><div class="padding text-center" translate>ACCOUNT.NEW.LAST_SLIDE_CONGRATULATION</div><div class="list"><ion-item class="item text-center item-text-wrap"><h3 class="gray" translate>LOGIN.ASSOCIATED_PUBKEY</h3><h3 class="dark bold">{{formData.pubkey}}</h3></ion-item></div><div class="padding hidden-xs text-right"><button class="button button-clear button-dark ink" ng-click="closeModal()" type="button" translate>COMMON.BTN_CANCEL</button> <button class="button button-positive ink" ng-click="doNewAccount()" translate>COMMON.BTN_SEND <i class="icon ion-android-send"></i></button></div></div><div class="animate-fade-in animate-show-hide ng-hide" ng-show="!accountAvailable"><ion-item class="item-icon-left item-text-wrap text-center"><i class="icon ion-minus-circled assertive"></i> <span id="modal-license" trust-as-html="\'ERROR.EXISTING_ACCOUNT\'|translate"></span></ion-item><div class="list"><ion-item class="item item-text-wrap item-border"><div class="padding text-center"><span class="gray text-no-wrap">{{formData.pubkey}}</span></div></ion-item><div class="padding text-center"><span translate>ERROR.EXISTING_ACCOUNT_REQUEST</span></div></div><div class="padding hidden-xs text-left"><button class="button button-assertive icon-left ion-chevron-left ink" ng-click="identifierRecovery()" translate>COMMON.BTN_MODIFY</button></div></div></ng-if></ion-content></ion-slide-page></ion-slides></ion-modal-view>');
@@ -31097,92 +31097,77 @@ $translateProvider.translations("nl-NL", {
 );
 
 $translateProvider.translations("en-GB", {
-  "NETWORK": {
-    "VIEW": {
-      "BTN_GRAPH": "Statistics"
-    }
-  },
-  "GRAPH": {
+  "MAP": {
     "COMMON": {
-      "LINEAR_SCALE" : "Linear scale",
-      "LOGARITHMIC_SCALE" : "Logarithmic scale",
-      "BTN_SHOW_STATS": "See statistics",
-      "BTN_SHOW_DETAILED_STATS": "Detailed statistics",
-      "RANGE_DURATION_DIVIDER": "Step unit:",
-      "RANGE_DURATION": {
-        "HOUR": "Group by <b>hour</b>",
-        "DAY": "Group by <b>day</b>",
-        "MONTH": "Group by <b>month</b>"
-      }
-    },
-    "ACCOUNT": {
-      "TITLE": "Statistics",
-      "BTN_SHOW_STATS": "View account Statistics",
-      "BALANCE_DIVIDER": "Account status",
-      "BALANCE_TITLE": "Evolution of the account {{pubkey|formatPubkey}}",
-      "TX_RECEIVED_LABEL": "Receipts",
-      "TX_SENT_LABEL": "Spending",
-      "UD_LABEL": "UD",
-      "BALANCE_LABEL": "Balance",
-      "INPUT_CHART_TITLE": "Sum of incoming flows, per transmitter:",
-      "OUTPUT_CHART_TITLE": "Sum of outgoing flows, per recipient:"
-    },
-    "BLOCKCHAIN": {
-      "TITLE": "Statistics",
-      "BLOCKS_ISSUERS_DIVIDER": "Written blocks by members",
-      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} members</b> calculated <b>{{blockCount|formatInteger}} blocks</b>",
-      "BLOCKS_ISSUERS_TITLE": "Number of blocks calculated per member",
-      "BLOCKS_ISSUERS_LABEL": "Number of blocks",
-      "TX_DIVIDER": "Analysis of transactions",
-      "TX_AMOUNT_TITLE": "Transaction volume",
-      "TX_AMOUNT_PUBKEY_TITLE": "Volume of transactions calculated by {{issuer | formatPubkey}}",
-      "TX_AMOUNT_LABEL": "Exchange volume",
-      "TX_COUNT_TITLE": "Number of written transactions",
-      "TX_COUNT_LABEL": "Number of transactions",
-      "TX_AVG_BY_BLOCK": "Average per block"
-    },
-    "CURRENCY": {
-      "MONETARY_MASS_TITLE": "Evolution of the monetary mass",
-      "MONETARY_MASS_LABEL": "Monetary mass",
-      "MONETARY_MASS_SHARE_LABEL": "Average per member",
-      "UD_TITLE": "Evolution of the universal dividend",
-      "MEMBERS_COUNT_TITLE": "Evolution of the number of members",
-      "MEMBERS_COUNT_LABEL": "Number of members"
+      "SEARCH_DOTS": "Search...",
+      "BTN_LOCALIZE_ME": "Localize me"
     },
-    "PEER": {
+    "NETWORK": {
+      "LOOKUP": {
+        "BTN_MAP": "Peers map",
+        "BTN_MAP_HELP": "Open peers map"
+      },
       "VIEW": {
-        "BLOCK_COUNT_LABEL": "Computed blocks count",
-        "BLOCK_COUNT": "{{count}} blocks",
-        "NO_BLOCK": "No block"
+        "TITLE": "Peers map",
+        "LAYER": {
+          "MEMBER": "Member peers",
+          "MIRROR": "Mirror peers",
+          "OFFLINE": "Offline peers"
+        }
       }
     },
-    "DOC_STATS": {
-      "TITLE": "Data storage statistics (Cesium+)",
-      "USER": {
-        "TITLE": "Number of documents linked to an account",
-        "USER_PROFILE": "User profiles",
-        "USER_SETTINGS": "Saved settings"
-      },
-      "USER_DELTA": {
-        "TITLE": "Delta / Number of documents linked to an account",
-        "USER_PROFILE": "User profiles",
-        "USER_SETTINGS": "Saved settings"
+    "WOT": {
+      "LOOKUP": {
+        "BTN_MAP": "Map",
+        "BTN_MAP_HELP": "Open members map"
       },
-      "MESSAGE": {
-        "TITLE": "Number of documents related to the communication",
-        "MESSAGE_INBOX": "Messages in inbox",
-        "MESSAGE_OUTBOX": "Messages in outbox",
-        "INVITATION_CERTIFICATION": "Invitations to certify"
+      "VIEW": {
+        "TITLE": "Members map",
+        "LAYER": {
+          "MEMBER": "<i class=\"icon ion-person positive\"></i> Members",
+          "PENDING": "<i class=\"icon ion-clock energized\"></i> Pending registrations",
+          "WALLET": "<i class=\"icon ion-card gray\"></i> Simple wallets"
+        }
       },
-      "SOCIAL": {
-        "TITLE": "Number of page or group",
-        "PAGE_COMMENT": "Comments",
-        "PAGE_RECORD": "Pages",
-        "GROUP_RECORD": "Groups"
+      "ERROR": {
+        "LOAD_POSITION_FAILED": "Can not retrieve the positions to display."
+      }
+    },
+    "REGISTRY": {
+      "LOOKUP": {
+        "BTN_MAP": "Map",
+        "BTN_MAP_HELP": "Open the map of the pages"
       },
-      "OTHER": {
-        "TITLE": "Other documents",
-        "HISTORY_DELETE": "Deletion of documents"
+      "VIEW": {
+        "TITLE": "Map of pages",
+        "LAYER": {
+          "SHOP": "<i class=\"icon ion-page-shop positive\"></i> Local shops",
+          "COMPANY": "<i class=\"icon ion-page-company positive\"></i> Companies",
+          "ASSOCIATION": "<i class=\"icon ion-page-association energized\"></i> Associations",
+          "INSTITUTION": "<i class=\"icon ion-page-institution gray\"></i> Institutions"
+        }
+      }
+    },
+    "PROFILE": {
+      "MARKER_HELP": "<b>Drag and drop</b> this marker to <b>update<br/>your position</b>, or use the buttons<br/>on top of the map."
+    },
+    "ERROR": {
+      "LOCALIZE_ME_FAILED": "Unable to retrieve your current position"
+    },
+    "SETTINGS": {
+      "MAP_DIVIDER": "Maps",
+      "ENABLE_GOOGLE_API": "Enable Google API services?",
+      "ENABLE_GOOGLE_API_HELP": "In the <b>members map</b>, allows you to display accounts with an address but without geolocation.",
+      "GOOGLE_API_KEY": "Google API key",
+      "BTN_GOOGLE_API": "Getting a key",
+      "BTN_GOOGLE_API_WARNING": "requires a Google account",
+      "GOOGLE_API_KEY_PLACEHOLDER": "eg: AIzaqyAgszvWm0tM81x1sMK_ipDHBI7EowLqR7I"
+    },
+    "HELP": {
+      "TIP": {
+        "WOT": "This map displays <b>profiles with a position</b>, whether they are member accounts or not.<br/><br/>Only profiles with the option &quot;appear on the map&quot; has been activated.",
+        "WOT_BTN_LAYERS": "<b>Filter the displayed data</b>: members, pending registrations, simple portfolios, etc.",
+        "WOT_BTN_SEARCH": "You can <b>search</b> by name, public key, or member pseudonym."
       }
     }
   }
@@ -31190,92 +31175,77 @@ $translateProvider.translations("en-GB", {
 );
 
 $translateProvider.translations("en", {
-  "NETWORK": {
-    "VIEW": {
-      "BTN_GRAPH": "Statistics"
-    }
-  },
-  "GRAPH": {
+  "MAP": {
     "COMMON": {
-      "LINEAR_SCALE" : "Linear scale",
-      "LOGARITHMIC_SCALE" : "Logarithmic scale",
-      "BTN_SHOW_STATS": "See statistics",
-      "BTN_SHOW_DETAILED_STATS": "Detailed statistics",
-      "RANGE_DURATION_DIVIDER": "Step unit:",
-      "RANGE_DURATION": {
-        "HOUR": "Group by <b>hour</b>",
-        "DAY": "Group by <b>day</b>",
-        "MONTH": "Group by <b>month</b>"
-      }
-    },
-    "ACCOUNT": {
-      "TITLE": "Statistics",
-      "BTN_SHOW_STATS": "View account Statistics",
-      "BALANCE_DIVIDER": "Account status",
-      "BALANCE_TITLE": "Evolution of the account {{pubkey|formatPubkey}}",
-      "TX_RECEIVED_LABEL": "Receipts",
-      "TX_SENT_LABEL": "Spending",
-      "UD_LABEL": "UD",
-      "BALANCE_LABEL": "Balance",
-      "INPUT_CHART_TITLE": "Sum of incoming flows, per transmitter:",
-      "OUTPUT_CHART_TITLE": "Sum of outgoing flows, per recipient:"
-    },
-    "BLOCKCHAIN": {
-      "TITLE": "Statistics",
-      "BLOCKS_ISSUERS_DIVIDER": "Written blocks by members",
-      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} members</b> calculated <b>{{blockCount|formatInteger}} blocks</b>",
-      "BLOCKS_ISSUERS_TITLE": "Number of blocks calculated per member",
-      "BLOCKS_ISSUERS_LABEL": "Number of blocks",
-      "TX_DIVIDER": "Analysis of transactions",
-      "TX_AMOUNT_TITLE": "Transaction volume",
-      "TX_AMOUNT_PUBKEY_TITLE": "Volume of transactions calculated by {{issuer | formatPubkey}}",
-      "TX_AMOUNT_LABEL": "Exchange volume",
-      "TX_COUNT_TITLE": "Number of written transactions",
-      "TX_COUNT_LABEL": "Number of transactions",
-      "TX_AVG_BY_BLOCK": "Average per block"
-    },
-    "CURRENCY": {
-      "MONETARY_MASS_TITLE": "Evolution of the monetary mass",
-      "MONETARY_MASS_LABEL": "Monetary mass",
-      "MONETARY_MASS_SHARE_LABEL": "Average per member",
-      "UD_TITLE": "Evolution of the universal dividend",
-      "MEMBERS_COUNT_TITLE": "Evolution of the number of members",
-      "MEMBERS_COUNT_LABEL": "Number of members"
+      "SEARCH_DOTS": "Search...",
+      "BTN_LOCALIZE_ME": "Localize me"
     },
-    "PEER": {
+    "NETWORK": {
+      "LOOKUP": {
+        "BTN_MAP": "Peers map",
+        "BTN_MAP_HELP": "Open peers map"
+      },
       "VIEW": {
-        "BLOCK_COUNT_LABEL": "Computed blocks count",
-        "BLOCK_COUNT": "{{count}} blocks",
-        "NO_BLOCK": "No block"
+        "TITLE": "Peers map",
+        "LAYER": {
+          "MEMBER": "Member peers",
+          "MIRROR": "Mirror peers",
+          "OFFLINE": "Offline peers"
+        }
       }
     },
-    "DOC_STATS": {
-      "TITLE": "Data storage statistics (Cesium+)",
-      "USER": {
-        "TITLE": "Number of documents linked to an account",
-        "USER_PROFILE": "User profiles",
-        "USER_SETTINGS": "Saved settings"
+    "WOT": {
+      "LOOKUP": {
+        "BTN_MAP": "Map",
+        "BTN_MAP_HELP": "Open members map"
       },
-      "USER_DELTA": {
-        "TITLE": "Delta / Number of documents linked to an account",
-        "USER_PROFILE": "User profiles",
-        "USER_SETTINGS": "Saved settings"
+      "VIEW": {
+        "TITLE": "Members map",
+        "LAYER": {
+          "MEMBER": "<i class=\"icon ion-person positive\"></i> Members",
+          "PENDING": "<i class=\"icon ion-clock energized\"></i> Pending registrations",
+          "WALLET": "<i class=\"icon ion-card gray\"></i> Simple wallets"
+        }
       },
-      "MESSAGE": {
-        "TITLE": "Number of documents related to the communication",
-        "MESSAGE_INBOX": "Messages in inbox",
-        "MESSAGE_OUTBOX": "Messages in outbox",
-        "INVITATION_CERTIFICATION": "Invitations to certify"
-      },
-      "SOCIAL": {
-        "TITLE": "Number of page or group",
-        "PAGE_COMMENT": "Comments",
-        "PAGE_RECORD": "Pages",
-        "GROUP_RECORD": "Groups"
+      "ERROR": {
+        "LOAD_POSITION_FAILED": "Can not retrieve the positions to display."
+      }
+    },
+    "REGISTRY": {
+      "LOOKUP": {
+        "BTN_MAP": "Map",
+        "BTN_MAP_HELP": "Open the map of the pages"
       },
-      "OTHER": {
-        "TITLE": "Other documents",
-        "HISTORY_DELETE": "Deletion of documents"
+      "VIEW": {
+        "TITLE": "Map of pages",
+        "LAYER": {
+          "SHOP": "<i class=\"icon ion-page-shop positive\"></i> Local shops",
+          "COMPANY": "<i class=\"icon ion-page-company positive\"></i> Companies",
+          "ASSOCIATION": "<i class=\"icon ion-page-association energized\"></i> Associations",
+          "INSTITUTION": "<i class=\"icon ion-page-institution gray\"></i> Institutions"
+        }
+      }
+    },
+    "PROFILE": {
+      "MARKER_HELP": "<b>Drag and drop</b> this marker to <b>update<br/>your position</b>, or use the buttons<br/>on top of the map."
+    },
+    "ERROR": {
+      "LOCALIZE_ME_FAILED": "Unable to retrieve your current position"
+    },
+    "SETTINGS": {
+      "MAP_DIVIDER": "Maps",
+      "ENABLE_GOOGLE_API": "Enable Google API services?",
+      "ENABLE_GOOGLE_API_HELP": "In the <b>members map</b>, allows you to display accounts with an address but without geolocation.",
+      "GOOGLE_API_KEY": "Google API key",
+      "BTN_GOOGLE_API": "Getting a key",
+      "BTN_GOOGLE_API_WARNING": "requires a Google account",
+      "GOOGLE_API_KEY_PLACEHOLDER": "eg: AIzaqyAgszvWm0tM81x1sMK_ipDHBI7EowLqR7I"
+    },
+    "HELP": {
+      "TIP": {
+        "WOT": "This map displays <b>profiles with a position</b>, whether they are member accounts or not.<br/><br/>Only profiles with the option &quot;appear on the map&quot; has been activated.",
+        "WOT_BTN_LAYERS": "<b>Filter the displayed data</b>: members, pending registrations, simple portfolios, etc.",
+        "WOT_BTN_SEARCH": "You can <b>search</b> by name, public key, or member pseudonym."
       }
     }
   }
@@ -31283,692 +31253,595 @@ $translateProvider.translations("en", {
 );
 
 $translateProvider.translations("eo-EO", {
-  "NETWORK": {
-    "VIEW": {
-      "BTN_GRAPH": "Statistikoj"
-    }
-  },
-  "GRAPH": {
+  "MAP": {
     "COMMON": {
-      "LINEAR_SCALE" : "Lineara skalo",
-      "LOGARITHMIC_SCALE" : "Logaritma skalo",
-      "BTN_SHOW_STATS": "Vidi la statistikojn",
-      "BTN_SHOW_DETAILED_STATS": "Detalaj statistikoj",
-      "RANGE_DURATION_DIVIDER": "Tempo-unuo:",
-      "RANGE_DURATION": {
-        "HOUR": "Horo",
-        "DAY": "Tago",
-        "MONTH": "Monato"
-      }
-    },
-    "ACCOUNT": {
-      "TITLE": "Statistikoj",
-      "BTN_SHOW_STATS": "Vidi la statistikojn de la konto",
-      "BALANCE_DIVIDER": "Stato de la konto",
-      "BALANCE_TITLE": "Evoluo de la konto {{pubkey|formatPubkey}}",
-      "TX_RECEIVED_LABEL": "Enspezoj",
-      "TX_SENT_LABEL": "Elspezoj",
-      "TX_ACCUMULATION_LABEL": "Bilanco de la spezoj",
-      "UD_LABEL": "UD",
-      "UD_ACCUMULATION_LABEL": "Bilanco de la UD",
-      "BALANCE_LABEL": "Saldo",
-      "WOT_DIVIDER": "Reto de fido",
-      "CERTIFICATION_TITLE": "Nombro de atestaĵoj - {{pubkey|formatPubkey}}",
-      "RECEIVED_CERT_LABEL": "Tuto pri la ricevitaj",
-      "RECEIVED_CERT_DELTA_LABEL": "Vario pri la ricevitaj",
-      "GIVEN_CERT_LABEL": "Tuto pri la senditaj",
-      "GIVEN_CERT_DELTA_LABEL": "Vario pri la senditaj",
-      "INPUT_CHART_TITLE": "Sumo de la enirantaj fluoj, por ĉiu sendinto:",
-      "OUTPUT_CHART_TITLE": "Sumo de la elirantaj fluoj, por ĉiu ricevinto:"
-    },
-    "BLOCKCHAIN": {
-      "TITLE": "Statistikoj",
-      "BLOCKS_ISSUERS_DIVIDER": "Analizo de la kalkul-distribuo",
-      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} membroj</b> kalkulis <b>{{blockCount|formatInteger}} blokojn</b>",
-      "BLOCKS_ISSUERS_TITLE": "Nombro de blokoj kalkulitaj por membro",
-      "BLOCKS_ISSUERS_LABEL": "Nombro de blokoj",
-      "TX_DIVIDER": "Analizo de la spezoj",
-      "TX_AMOUNT_TITLE": "Kvanto de la spezoj",
-      "TX_AMOUNT_PUBKEY_TITLE": "Kvanto de spezoj kalkulitaj de {{issuer | formatPubkey}}",
-      "TX_AMOUNT_LABEL": "Kvanto interŝanĝita",
-      "TX_COUNT_TITLE": "Nombro de spezoj skribitaj",
-      "TX_COUNT_LABEL": "Nombro de spezoj",
-      "TX_AVG_BY_BLOCK": "Meza nombro de spezoj / bloko"
-
-    },
-    "CURRENCY": {
-      "MONETARY_MASS_TITLE": "Evoluo de la mona maso",
-      "MONETARY_MASS_LABEL": "Mona maso",
-      "MONETARY_MASS_SHARE_LABEL": "Mezumo por membro",
-      "UD_TITLE": "Evoluo de la universala dividendo",
-      "MEMBERS_COUNT_TITLE": "Evoluo de la nombro de membroj",
-      "MEMBERS_COUNT_LABEL": "Nombro de membroj"
+      "SEARCH_DOTS": "Traserĉi...",
+      "BTN_LOCALIZE_ME": "Lokalizi min"
     },
-    "PEER": {
+    "NETWORK": {
+      "LOOKUP": {
+        "BTN_MAP": "Mapo",
+        "BTN_MAP_HELP": "Malfermi la mapon pri nodoj"
+      },
       "VIEW": {
-        "BLOCK_COUNT_LABEL": "Nombro de blokoj kalkulitaj",
-        "BLOCK_COUNT": "{{count}} blokoj",
-        "NO_BLOCK": "Neniu bloko"
+        "TITLE": "Mapo pri nodoj",
+        "LAYER": {
+          "MEMBER": "Membro-nodoj",
+          "MIRROR": "Spegul-nodoj",
+          "OFFLINE": "Nekonektitaj nodoj"
+        }
       }
     },
-    "DOC_STATS": {
-      "TITLE": "Statistikoj pri stokado",
-      "USER": {
-        "TITLE": "Nombro de dokumentoj ligitaj al konto",
-        "USER_PROFILE": "Uzanto-profiloj",
-        "USER_SETTINGS": "Parametroj konservitaj"
-      },
-      "USER_DELTA": {
-        "TITLE": "Variado de la nombro de dokumentoj ligitaj al konto",
-        "USER_PROFILE": "Uzanto-profiloj",
-        "USER_SETTINGS": "Parametroj konservitaj"
-      },
-      "MESSAGE": {
-        "TITLE": "Nombro de dokumentoj ligitaj al komunikado",
-        "MESSAGE_INBOX": "Mesaĝoj en ricevujo",
-        "MESSAGE_OUTBOX": "Senditaj mesaĝoj konservitaj",
-        "INVITATION_CERTIFICATION": "Invitoj atestotaj"
+    "WOT": {
+      "LOOKUP": {
+        "BTN_MAP": "Mapo",
+        "BTN_MAP_HELP": "Malfermi la mapon pri membroj"
       },
-      "SOCIAL": {
-        "TITLE": "Nombro de paĝoj aŭ grupoj",
-        "PAGE_COMMENT": "Komentoj",
-        "PAGE_RECORD": "Paĝoj",
-        "GROUP_RECORD": "Grupoj"
+      "VIEW": {
+        "TITLE": "Mapo pri membroj",
+        "LAYER": {
+          "MEMBER": "<i class=\"icon ion-person positive\"></i> Membroj",
+          "PENDING": "<i class=\"icon ion-clock energized\"></i> Aliĝoj atendantaj",
+          "WALLET": "<i class=\"icon ion-card gray\"></i> Simplaj monujoj"
+        }
       },
-      "OTHER": {
-        "TITLE": "Aliaj dokumentoj",
-        "HISTORY_DELETE": "Forigoj de dokumentoj"
+      "ERROR": {
+        "LOAD_POSITION_FAILED": "Neeblas ricevi la lokojn afiŝotajn."
       }
     },
-    "SYNCHRO": {
-      "TITLE": "Statistikoj pri sinkronigoj",
-      "COUNT": {
-        "TITLE": "Kvanto sinkronigita",
-        "INSERTS": "Enmetoj",
-        "UPDATES": "Ĝisdatigoj",
-        "DELETES": "Forigoj"
-      },
-      "PEER": {
-        "TITLE": "Nodoj informpetitaj",
-        "ES_USER_API": "Nodoj pri datenoj de uzantoj",
-        "ES_SUBSCRIPTION_API": "Nodoj pri retaj servoj"
+    "REGISTRY": {
+      "LOOKUP": {
+        "BTN_MAP": "Mapo",
+        "BTN_MAP_HELP": "Malfermi la mapon pri paĝoj"
       },
-      "PERFORMANCE": {
-        "TITLE": "Efikecoj pri efektiviĝo",
-        "DURATION": "Tempo por efektiviĝo (ms)"
+      "VIEW": {
+        "TITLE": "Mapo pri paĝoj",
+        "LAYER": {
+          "SHOP": "<i class=\"icon ion-page-shop positive\"></i> Lokaj komercoj",
+          "COMPANY": "<i class=\"icon ion-page-company positive\"></i> Entreprenoj",
+          "ASSOCIATION": "<i class=\"icon ion-page-association energized\"></i> Asocioj",
+          "INSTITUTION": "<i class=\"icon ion-page-institution gray\"></i> Institucioj"
+        }
+      }
+    },
+    "PROFILE": {
+      "MARKER_HELP": "<b>Ŝovu-demetu</b> tiun ĉi markilon por <b>aktualigi<br/> vian lokon</b> sur la mapo, aŭ uzu la serĉo-butonon<br/>super la mapo."
+    },
+    "ERROR": {
+      "LOCALIZE_ME_FAILED": "Neeblas ricevi vian nunan lokon"
+    },
+    "SETTINGS": {
+      "MAP_DIVIDER": "Mapoj",
+      "ENABLE_GOOGLE_API": "Aktivigi la Google-API-servojn?",
+      "ENABLE_GOOGLE_API_HELP": "Ebligas afiŝi sur la <b>mapo pri membroj</b> kontojn kun adreso sed sen iu GPS-lokalizo.",
+      "GOOGLE_API_KEY": "Google-API-ŝlosilo",
+      "BTN_GOOGLE_API": "Ekhavi ŝlosilon",
+      "BTN_GOOGLE_API_WARNING": "Necesigas havi Google-konton",
+      "GOOGLE_API_KEY_PLACEHOLDER": "Ekzemple: AIzaqyAgszvWm0tM81x1sMK_ipDHBI7EowLqR7I"
+    },
+    "HELP": {
+      "TIP": {
+        "WOT": "Tiu ĉi mapo afiŝas <b>la profilojn kun loko</b>, ĉu ili rilatas al membro-kontoj aŭ ne.<br/><br/>Nur videblas la profiloj, kies kromaĵo &quot;aperi sur la mapo&quot; estis aktivigita.",
+        "WOT_BTN_LAYERS": "<b>Filtru ĉi tie la afiŝitajn datenojn</b>: membroj, aliĝoj atendantaj, simplaj monujoj, ktp.",
+        "WOT_BTN_SEARCH": "Vi povas <b>efektivigi serĉadon</b> laŭ nomo, publika ŝlosilo aŭ membro-pseŭdonimo."
       }
     }
   }
 }
 );
 
-$translateProvider.translations("es-ES", {
-  "NETWORK": {
-    "VIEW": {
-      "BTN_GRAPH": "Estadística"
-    }
-  },
-  "GRAPH": {
+$translateProvider.translations("fr-FR", {
+  "MAP": {
     "COMMON": {
-      "LINEAR_SCALE" : "Escala lineal",
-      "LOGARITHMIC_SCALE" : "Escala logarítmica",
-      "BTN_SHOW_STATS": "Ver estadísticas",
-      "BTN_SHOW_DETAILED_STATS": "Estadísticas detalladas",
-      "RANGE_DURATION_DIVIDER": "Unidad de paso:",
-      "RANGE_DURATION": {
-        "HOUR": "Grupo por <b>hora</b>",
-        "DAY": "Grupo por <b>día</b>",
-        "MONTH": "Grupo por <b>mes</b>"
-      }
+      "SEARCH_DOTS": "Rechercher...",
+      "BTN_LOCALIZE_ME": "Me localiser"
     },
-    "ACCOUNT": {
-      "INPUT_CHART_TITLE": "Suma del flujo entrante, por el transmisor:",
-      "OUTPUT_CHART_TITLE": "Suma de las salidas por destino:"
+    "NETWORK": {
+      "LOOKUP": {
+        "BTN_MAP": "Carte",
+        "BTN_MAP_HELP": "Ouvrir la carte des noeuds"
+      },
+      "VIEW": {
+        "TITLE": "Carte des noeuds",
+        "LAYER": {
+          "MEMBER": "Nœuds membre",
+          "MIRROR": "Nœuds miroir",
+          "OFFLINE": "Nœuds hors ligne"
+        }
+      }
     },
-    "BLOCKCHAIN": {
-      "TITLE": "Estadística",
-      "BLOCKS_ISSUERS_DIVIDER": "Bloques escritos por los miembros",
-      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} members</b> has computed <b>{{blockCount|formatInteger}} blocks</b>",
-      "BLOCKS_ISSUERS_TITLE": "Número de bloques miembro calculado",
-      "BLOCKS_ISSUERS_LABEL": "Número de bloques",
-      "TX_DIVIDER": "Análisis de transacciones",
-      "TX_AMOUNT_TITLE": "El volumen de operaciones",
-      "TX_AMOUNT_PUBKEY_TITLE": "El volumen de operaciones calculado por {{issuer | formatPubkey}}",
-      "TX_AMOUNT_LABEL": "Volumen negociado",
-      "TX_COUNT_TITLE": "Número de transacciones escritas",
-      "TX_COUNT_LABEL": "Número de transacciones",
-      "TX_AVG_BY_BLOCK": "Promedio por bloque"
-    },
-    "CURRENCY": {
-      "MONETARY_MASS_TITLE": "Evolución de la masa monetaria",
-      "MONETARY_MASS_LABEL": "Masa monetaria",
-      "MONETARY_MASS_SHARE_LABEL": "Promedio miembro",
-      "UD_TITLE": "Evolución del dividendo universales",
-      "MEMBERS_COUNT_TITLE": "Evolución del número de miembros",
-      "MEMBERS_COUNT_LABEL": "Número de miembros"
+    "WOT": {
+      "LOOKUP": {
+        "BTN_MAP": "Carte",
+        "BTN_MAP_HELP": "Ouvrir la carte des membres"
+      },
+      "VIEW": {
+        "TITLE": "Carte des membres",
+        "LAYER": {
+          "MEMBER": "<i class=\"icon ion-person positive\"></i> Membres",
+          "PENDING": "<i class=\"icon ion-clock energized\"></i> Inscriptions en attente",
+          "WALLET": "<i class=\"icon ion-card gray\"></i> Simples portefeuilles"
+        }
+      },
+      "ERROR": {
+        "LOAD_POSITION_FAILED": "Impossible de récupérer les positions à afficher."
+      }
     },
-    "PEER": {
+    "REGISTRY": {
+      "LOOKUP": {
+        "BTN_MAP": "Carte",
+        "BTN_MAP_HELP": "Ouvrir la carte des pages"
+      },
       "VIEW": {
-        "BLOCK_COUNT_LABEL": "Número de bloques calculados",
-        "BLOCK_COUNT": "{{count}} bloques",
-        "NO_BLOCK": "Ningún bloque"
+        "TITLE": "Carte des pages",
+        "LAYER": {
+          "SHOP": "<i class=\"icon ion-page-shop positive\"></i> Commerces locaux",
+          "COMPANY": "<i class=\"icon ion-page-company positive\"></i> Entreprises",
+          "ASSOCIATION": "<i class=\"icon ion-page-association energized\"></i> Associations",
+          "INSTITUTION": "<i class=\"icon ion-page-institution gray\"></i> Institutions"
+        }
+      }
+    },
+    "PROFILE": {
+      "MARKER_HELP": "<b>Glissez-déposez</b> ce marqueur pour <b>mettre<br/>à jour votre position</b> sur la carte, ou utilisez le bouton<br/>de recherche au-dessus de la carte."
+    },
+    "ERROR": {
+      "LOCALIZE_ME_FAILED": "Impossible de récupérer votre position actuelle"
+    },
+    "SETTINGS": {
+      "MAP_DIVIDER": "Cartes",
+      "ENABLE_GOOGLE_API": "Activer les services Google API ?",
+      "ENABLE_GOOGLE_API_HELP": "Permet l'affichage dans la <b>carte des membres</b> des comptes ayant une adresse mais aucun positionnement GPS.",
+      "GOOGLE_API_KEY": "Clé d'API Google",
+      "BTN_GOOGLE_API": "Obtenir une clé",
+      "BTN_GOOGLE_API_WARNING": "Nécessite d'avoir un compte Google",
+      "GOOGLE_API_KEY_PLACEHOLDER": "Exemple : AIzaqyAgszvWm0tM81x1sMK_ipDHBI7EowLqR7I"
+    },
+    "HELP": {
+      "TIP": {
+        "WOT": "Cette carte affiche <b>les profils ayant une position</b>, qu'ils correspondent à des comptes membre ou non.<br/><br/>Seuls sont visibles les profils dont l'option &quot;apparaître sur la carte&quot; a été activée.",
+        "WOT_BTN_LAYERS": "<b>Filtrez ici les données affichées</b> : membres, inscriptions en attente, simples portefeuilles, etc.",
+        "WOT_BTN_SEARCH": "Vous pouvez <b>effectuer une recherche</b> par nom, clef publique ou pseudonyme de membre."
       }
     }
   }
 }
 );
 
-$translateProvider.translations("fr-FR", {
+$translateProvider.translations("it-IT", {
+   "MAP": {
+     "COMMON": {
+       "SEARCH_DOTS": "Ricerca...",
+       "BTN_LOCALIZE_ME": "Trovami"
+     },
+     "NETWORK": {
+       "LOOKUP": {
+         "BTN_MAP": "Mappa dei peers",
+         "BTN_MAP_HELP": "Aprire mappa dei peers"
+       },
+       "VIEW": {
+         "TITLE": "Mappa dei peers",
+         "LAYER": {
+           "MEMBER": "Peers membri",
+           "MIRROR": "Peers specchi",
+           "OFFLINE": "Peers offline"
+         }
+       }
+     },
+     "WOT": {
+       "LOOKUP": {
+         "BTN_MAP": "Mappa dei membri",
+         "BTN_MAP_HELP": "Aprire mappa dei membri"
+       },
+       "VIEW": {
+         "TITLE": "Mappa membri",
+         "LAYER": {
+           "MEMBER": "<i class=\"icon ion-person positive\"></i> Membri",
+           "PENDING": "<i class=\"icon ion-clock energized\"></i> Registrazione pendenti",
+           "WALLET": "<i class=\"icon ion-card gray\"></i> Portafogli osservatori"
+         }
+       },
+       "ERROR": {
+         "LOAD_POSITION_FAILED": "Errore nel caricamento delle posizioni."
+       }
+     },
+     "REGISTRY": {
+       "LOOKUP": {
+         "BTN_MAP": "Mappa",
+         "BTN_MAP_HELP": "Aprire la mappa delle pagine pro"
+       },
+       "VIEW": {
+         "TITLE": "Mappa delle pagine pro",
+         "LAYER": {
+           "SHOP": "<i class=\"icon ion-page-shop positive\"></i> Negozi locali",
+           "COMPANY": "<i class=\"icon ion-page-company positive\"></i> Aziende",
+           "ASSOCIATION": "<i class=\"icon ion-page-association energized\"></i> Associazioni",
+           "INSTITUTION": "<i class=\"icon ion-page-institution gray\"></i> Instituti"
+         }
+       }
+     },
+     "PROFILE": {
+       "MARKER_HELP": "<b>Drag and drop</b> questo indicatore per <b>aggiornare<br/>tua posizione</b>, o usa i bottoni <br/>sopra la mappa."
+     },
+     "ERROR": {
+       "LOCALIZE_ME_FAILED": "Impossible trovare tua posizione attuale"
+     },
+     "SETTINGS": {
+       "MAP_DIVIDER": "Mappe",
+       "ENABLE_GOOGLE_API": "Abilitare i servizi Google API ?",
+       "ENABLE_GOOGLE_API_HELP": "Sulla <b>mappa dei membri</b>, ti permette di visualizzare i conti con un indirizzo ma senza geolocalizzazione.",
+       "GOOGLE_API_KEY": "Chiave Google API",
+       "BTN_GOOGLE_API": "Ottenere una chiave",
+       "BTN_GOOGLE_API_WARNING": "necessita un conto Google",
+       "GOOGLE_API_KEY_PLACEHOLDER": "per es. : AIzaqyAgszvWm0tM81x1sMK_ipDHBI7EowLqR7I"
+     },
+     "HELP": {
+       "TIP": {
+         "WOT": "Questa mappa mostra <b>profili che hanno fornito una posizione</b>, che siano conti membri o no.<br/><br/>Solo i profili che hanno attivato l'opzione &quot;apparire sulla mappa&quot; sono stati attivati.",
+         "WOT_BTN_LAYERS": "<b>Filtrare i dati visibili</b>: membri, registrazioni pendenti, portafogli osservatori, etc.",
+         "WOT_BTN_SEARCH": "Puoi <b>cercare</b> per nome, chiave pubblica, o pseudonimo del membro."
+       }
+     }
+   }
+ }
+ );
+
+$translateProvider.translations("en-GB", {
   "NETWORK": {
     "VIEW": {
-      "BTN_GRAPH": "Statistiques"
+      "BTN_GRAPH": "Statistics"
     }
   },
   "GRAPH": {
     "COMMON": {
-      "LINEAR_SCALE" : "Echelle linéaire",
-      "LOGARITHMIC_SCALE" : "Echelle logarithmique",
-      "BTN_SHOW_STATS": "Voir les statistiques",
-      "BTN_SHOW_DETAILED_STATS": "Statistiques détaillées",
-      "RANGE_DURATION_DIVIDER": "Unité de temps :",
+      "LINEAR_SCALE" : "Linear scale",
+      "LOGARITHMIC_SCALE" : "Logarithmic scale",
+      "BTN_SHOW_STATS": "See statistics",
+      "BTN_SHOW_DETAILED_STATS": "Detailed statistics",
+      "RANGE_DURATION_DIVIDER": "Step unit:",
       "RANGE_DURATION": {
-        "HOUR": "Heure",
-        "DAY": "Jour",
-        "MONTH": "Mois"
+        "HOUR": "Group by <b>hour</b>",
+        "DAY": "Group by <b>day</b>",
+        "MONTH": "Group by <b>month</b>"
       }
     },
     "ACCOUNT": {
-      "TITLE": "Statistiques",
-      "BTN_SHOW_STATS": "Voir les statistiques du compte",
-      "BALANCE_DIVIDER": "Situation du compte",
-      "BALANCE_TITLE": "Evolution du compte {{pubkey|formatPubkey}}",
-      "TX_RECEIVED_LABEL": "Recettes",
-      "TX_SENT_LABEL": "Dépenses",
-      "TX_ACCUMULATION_LABEL": "Bilan des transactions",
-      "UD_LABEL": "DU",
-      "UD_ACCUMULATION_LABEL": "Bilan des DU",
-      "BALANCE_LABEL": "Solde",
-      "WOT_DIVIDER": "Toile de confiance",
-      "CERTIFICATION_TITLE": "Nombre de certifications - {{pubkey|formatPubkey}}",
-      "RECEIVED_CERT_LABEL": "Total reçues",
-      "RECEIVED_CERT_DELTA_LABEL": "Variation reçues",
-      "GIVEN_CERT_LABEL": "Total envoyées",
-      "GIVEN_CERT_DELTA_LABEL": "Variation envoyées",
-      "INPUT_CHART_TITLE": "Somme des flux entrants, par émetteur :",
-      "OUTPUT_CHART_TITLE": "Somme des flux sortants, par destinaire :"
+      "TITLE": "Statistics",
+      "BTN_SHOW_STATS": "View account Statistics",
+      "BALANCE_DIVIDER": "Account status",
+      "BALANCE_TITLE": "Evolution of the account {{pubkey|formatPubkey}}",
+      "TX_RECEIVED_LABEL": "Receipts",
+      "TX_SENT_LABEL": "Spending",
+      "UD_LABEL": "UD",
+      "BALANCE_LABEL": "Balance",
+      "INPUT_CHART_TITLE": "Sum of incoming flows, per transmitter:",
+      "OUTPUT_CHART_TITLE": "Sum of outgoing flows, per recipient:"
     },
     "BLOCKCHAIN": {
-      "TITLE": "Statistiques",
-      "BLOCKS_ISSUERS_DIVIDER": "Analyse de la répartition du calcul",
-      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} membres</b> ont calculé <b>{{blockCount|formatInteger}} blocs</b>",
-      "BLOCKS_ISSUERS_TITLE": "Nombre de blocs calculés par membre",
-      "BLOCKS_ISSUERS_LABEL": "Nombre de blocs",
-      "TX_DIVIDER": "Analyse des transactions",
-      "TX_AMOUNT_TITLE": "Volume des transactions",
-      "TX_AMOUNT_PUBKEY_TITLE": "Volume des transactions calculées par {{issuer | formatPubkey}}",
-      "TX_AMOUNT_LABEL": "Volume échangé",
-      "TX_COUNT_TITLE": "Nombre de transactions écrites",
-      "TX_COUNT_LABEL": "Nombre de transactions",
-      "TX_AVG_BY_BLOCK": "Nombre moyen de transactions / bloc"
-
+      "TITLE": "Statistics",
+      "BLOCKS_ISSUERS_DIVIDER": "Written blocks by members",
+      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} members</b> calculated <b>{{blockCount|formatInteger}} blocks</b>",
+      "BLOCKS_ISSUERS_TITLE": "Number of blocks calculated per member",
+      "BLOCKS_ISSUERS_LABEL": "Number of blocks",
+      "TX_DIVIDER": "Analysis of transactions",
+      "TX_AMOUNT_TITLE": "Transaction volume",
+      "TX_AMOUNT_PUBKEY_TITLE": "Volume of transactions calculated by {{issuer | formatPubkey}}",
+      "TX_AMOUNT_LABEL": "Exchange volume",
+      "TX_COUNT_TITLE": "Number of written transactions",
+      "TX_COUNT_LABEL": "Number of transactions",
+      "TX_AVG_BY_BLOCK": "Average per block"
     },
     "CURRENCY": {
-      "MONETARY_MASS_TITLE": "Evolution de la masse monétaire",
-      "MONETARY_MASS_LABEL": "Masse monétaire",
-      "MONETARY_MASS_SHARE_LABEL": "Moyenne par membre",
-      "UD_TITLE": "Evolution du dividende universel",
-      "MEMBERS_COUNT_TITLE": "Evolution du nombre de membres",
-      "MEMBERS_COUNT_LABEL": "Nombre de membres"
+      "MONETARY_MASS_TITLE": "Evolution of the monetary mass",
+      "MONETARY_MASS_LABEL": "Monetary mass",
+      "MONETARY_MASS_SHARE_LABEL": "Average per member",
+      "UD_TITLE": "Evolution of the universal dividend",
+      "MEMBERS_COUNT_TITLE": "Evolution of the number of members",
+      "MEMBERS_COUNT_LABEL": "Number of members"
     },
     "PEER": {
       "VIEW": {
-        "BLOCK_COUNT_LABEL": "Nombre de blocs calculés",
-        "BLOCK_COUNT": "{{count}} blocs",
-        "NO_BLOCK": "Aucun bloc"
+        "BLOCK_COUNT_LABEL": "Computed blocks count",
+        "BLOCK_COUNT": "{{count}} blocks",
+        "NO_BLOCK": "No block"
       }
     },
     "DOC_STATS": {
-      "TITLE": "Statistiques de stockage",
+      "TITLE": "Data storage statistics (Cesium+)",
       "USER": {
-        "TITLE": "Nombre de documents liés à un compte",
-        "USER_PROFILE": "Profils utilisateur",
-        "USER_SETTINGS": "Paramètres sauvegardés"
+        "TITLE": "Number of documents linked to an account",
+        "USER_PROFILE": "User profiles",
+        "USER_SETTINGS": "Saved settings"
       },
       "USER_DELTA": {
-        "TITLE": "Variation du nombre de documents liés à un compte",
-        "USER_PROFILE": "Profils utilisateur",
-        "USER_SETTINGS": "Paramètres sauvegardés"
+        "TITLE": "Delta / Number of documents linked to an account",
+        "USER_PROFILE": "User profiles",
+        "USER_SETTINGS": "Saved settings"
       },
       "MESSAGE": {
-        "TITLE": "Nombre de documents liés à la communication",
-        "MESSAGE_INBOX": "Messages en boîte de réception",
-        "MESSAGE_OUTBOX": "Messages envoyés sauvegardés",
-        "INVITATION_CERTIFICATION": "Invitations à certifier"
-      },
+        "TITLE": "Number of documents related to the communication",
+        "MESSAGE_INBOX": "Messages in inbox",
+        "MESSAGE_OUTBOX": "Messages in outbox",
+        "INVITATION_CERTIFICATION": "Invitations to certify"
+      },
       "SOCIAL": {
-        "TITLE": "Nombre de pages ou groupes",
-        "PAGE_COMMENT": "Commentaires",
+        "TITLE": "Number of page or group",
+        "PAGE_COMMENT": "Comments",
         "PAGE_RECORD": "Pages",
-        "GROUP_RECORD": "Groupes"
+        "GROUP_RECORD": "Groups"
       },
       "OTHER": {
-        "TITLE": "Autres documents",
-        "HISTORY_DELETE": "Suppressions de documents"
-      }
-    },
-    "SYNCHRO": {
-      "TITLE": "Statistiques de synchronisations",
-      "COUNT": {
-        "TITLE": "Volume synchronisé",
-        "INSERTS": "Insertions",
-        "UPDATES": "Mises à jour",
-        "DELETES": "Suppressions"
-      },
-      "PEER": {
-        "TITLE": "Noeuds requêtés",
-        "ES_USER_API": "Noeuds données utilisateurs",
-        "ES_SUBSCRIPTION_API": "Noeuds services en ligne"
-      },
-      "PERFORMANCE": {
-        "TITLE": "Performances d'exécution",
-        "DURATION": "Temps d'exécution (ms)"
+        "TITLE": "Other documents",
+        "HISTORY_DELETE": "Deletion of documents"
       }
     }
   }
 }
 );
 
-$translateProvider.translations("it-IT", {
-   "NETWORK": {
-     "VIEW": {
-       "BTN_GRAPH": "Statistiche"
-     }
-   },
-   "GRAPH": {
-     "COMMON": {
-       "LINEAR_SCALE" : "Scala lineare",
-       "LOGARITHMIC_SCALE" : "Scala logaritmica",
-       "BTN_SHOW_STATS": "Vedere le statistiche",
-       "BTN_SHOW_DETAILED_STATS": "Statistiche dettagliate",
-       "RANGE_DURATION_DIVIDER": "Unità di tempo :",
-       "RANGE_DURATION": {
-         "HOUR": "Ora",
-         "DAY": "Giorno",
-         "MONTH": "Mese"
-       }
-     },
-     "ACCOUNT": {
-       "TITLE": "Statistiche",
-       "BTN_SHOW_STATS": "Visualizzare le statistiche del conto",
-       "BALANCE_DIVIDER": "Situazione del conto",
-       "BALANCE_TITLE": "Evoluzione del conto {{pubkey|formatPubkey}}",
-       "TX_RECEIVED_LABEL": "Incassi",
-       "TX_SENT_LABEL": "Spese",
-       "TX_ACCUMULATION_LABEL": "Bilancio delle transazioni",
-       "UD_LABEL": "DU",
-       "UD_ACCUMULATION_LABEL": "Bilancio dei DU",
-       "BALANCE_LABEL": "Saldo",
-       "WOT_DIVIDER": "Tela di fiducia",
-       "CERTIFICATION_TITLE": "Numero di certificazioni - {{pubkey|formatPubkey}}",
-       "RECEIVED_CERT_LABEL": "Totale ricevute",
-       "RECEIVED_CERT_DELTA_LABEL": "Variazione ricevute",
-       "GIVEN_CERT_LABEL": "Totale inviate",
-       "GIVEN_CERT_DELTA_LABEL": "Variazione inviate",
-       "INPUT_CHART_TITLE": "Somma dei flussi in entrata, par emittente :",
-       "OUTPUT_CHART_TITLE": "Somma dei flussi in uscita, per destinatario :"
-     },
-     "BLOCKCHAIN": {
-       "TITLE": "Statistiche",
-       "BLOCKS_ISSUERS_DIVIDER": "Analisi della ripartizione del calcolo",
-       "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} membri</b> hanno calcolato <b>{{blockCount|formatInteger}} blocchi</b>",
-       "BLOCKS_ISSUERS_TITLE": "Numero di blocchi calcolati a membro",
-       "BLOCKS_ISSUERS_LABEL": "Numero di blocchi",
-       "TX_DIVIDER": "Analisi delle transazioni",
-       "TX_AMOUNT_TITLE": "Volume delle transazioni",
-       "TX_AMOUNT_PUBKEY_TITLE": "Volume delle transazioni calcolato da {{issuer | formatPubkey}}",
-       "TX_AMOUNT_LABEL": "Volume scambiato",
-       "TX_COUNT_TITLE": "Numero di transazioni scritte",
-       "TX_COUNT_LABEL": "Numero di transazioni",
-       "TX_AVG_BY_BLOCK": "Numero medio di transazioni / blocco"
-     },
-     "CURRENCY": {
-       "MONETARY_MASS_TITLE": "Evoluzione della massa monetaria",
-       "MONETARY_MASS_LABEL": "Massa monetaria",
-       "MONETARY_MASS_SHARE_LABEL": "Media a membro",
-       "UD_TITLE": "Evoluzione del Dividendo Universale",
-       "MEMBERS_COUNT_TITLE": "Evoluzione del numero di membri",
-       "MEMBERS_COUNT_LABEL": "Numero di membri"
-     },
-     "PEER": {
-       "VIEW": {
-         "BLOCK_COUNT_LABEL": "Numero di blocchi calcolati",
-         "BLOCK_COUNT": "{{count}} blocchi",
-         "NO_BLOCK": "Nessun blocco"
-       }
-     },
-     "DOC_STATS": {
-       "TITLE": "Statistiche di stoccaggio",
-       "USER": {
-         "TITLE": "Numero di documenti legati ad un conto",
-         "USER_PROFILE": "Profili dell'utente",
-         "USER_SETTINGS": "Impostazioni salvate",
-       },
-       "MESSAGE": {
-         "TITLE": "Numero di documenti legati alla conversazione",
-         "MESSAGE_INBOX": "Messaggi in arrivo",
-         "MESSAGE_OUTBOX": "Messaggi inviati salvati",
-         "INVITATION_CERTIFICATION": "Invitazioni da certificare"
-       },
-       "SOCIAL": {
-         "TITLE": "Numero di pagine o gruppi",
-         "PAGE_COMMENT": "Commenti",
-         "PAGE_RECORD": "Pagine",
-         "GROUP_RECORD": "Gruppi",
-       },
-       "OTHER": {
-         "TITLE": "Altri documenti",
-         "HISTORY_DELETE": "Cronologia eliminazione documenti",
-       }
-     },
-     "SYNCHRO": {
-       "TITLE": "Statistiche di sincronizzazioni",
-       "COUNT": {
-         "TITLE": "Volume sincronizzato",
-         "INSERTS": "Inserimenti",
-         "UPDATES": "Aggiornamenti",
-         "DELETES": "Eliminazioni"
-       },
-       "PEER": {
-         "TITLE": "Nodi interrogati",
-         "ES_USER_API": "Nodi dati utenti",
-         "ES_SUBSCRIPTION_API": "Noeuds servizi online"
-       },
-       "PERFORMANCE": {
-         "TITLE": "Prestazioni (performance) di esecuzione",
-         "DURATION": "Tempo di esecuzione (ms)"
-       }
-     }
-   }
- }
-);
-
-$translateProvider.translations("nl-NL", {
+$translateProvider.translations("en", {
   "NETWORK": {
     "VIEW": {
-      "BTN_GRAPH": "Statistieken"
+      "BTN_GRAPH": "Statistics"
     }
   },
   "GRAPH": {
     "COMMON": {
-      "LINEAR_SCALE" : "Lineaire schaal",
-      "LOGARITHMIC_SCALE" : "Logaritmische schaal",
-      "BTN_SHOW_STATS": "Zie statistieken",
-      "BTN_SHOW_DETAILED_STATS": "Gedetailleerde statistieken",
-      "RANGE_DURATION_DIVIDER": "Stap eenheid:",
+      "LINEAR_SCALE" : "Linear scale",
+      "LOGARITHMIC_SCALE" : "Logarithmic scale",
+      "BTN_SHOW_STATS": "See statistics",
+      "BTN_SHOW_DETAILED_STATS": "Detailed statistics",
+      "RANGE_DURATION_DIVIDER": "Step unit:",
       "RANGE_DURATION": {
-        "HOUR": "Groep per <b>uur</b>",
-        "DAY": "Groep per <b>dag</b>",
-        "MONTH": "Groep per <b>maand</b>"
+        "HOUR": "Group by <b>hour</b>",
+        "DAY": "Group by <b>day</b>",
+        "MONTH": "Group by <b>month</b>"
       }
     },
     "ACCOUNT": {
-      "INPUT_CHART_TITLE": "Som van de binnenkomende stroom, door de zender:",
-      "OUTPUT_CHART_TITLE": "Som van de uitstroom per bestemming:"
+      "TITLE": "Statistics",
+      "BTN_SHOW_STATS": "View account Statistics",
+      "BALANCE_DIVIDER": "Account status",
+      "BALANCE_TITLE": "Evolution of the account {{pubkey|formatPubkey}}",
+      "TX_RECEIVED_LABEL": "Receipts",
+      "TX_SENT_LABEL": "Spending",
+      "UD_LABEL": "UD",
+      "BALANCE_LABEL": "Balance",
+      "INPUT_CHART_TITLE": "Sum of incoming flows, per transmitter:",
+      "OUTPUT_CHART_TITLE": "Sum of outgoing flows, per recipient:"
     },
     "BLOCKCHAIN": {
-      "TITLE": "Statistieken",
-      "BLOCKS_ISSUERS_DIVIDER": "Schriftelijke blokken door leden",
-      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} leden</b> berekend <b>{{blockCount|formatInteger}} blokken</b>",
-      "BLOCKS_ISSUERS_TITLE": "Aantal blokken berekend per lid",
-      "BLOCKS_ISSUERS_LABEL": "Aantal blokken",
-      "TX_DIVIDER": "Analyse van transacties",
-      "TX_AMOUNT_TITLE": "Trading volume",
-      "TX_AMOUNT_PUBKEY_TITLE": "Trading volume dat wordt berekend door {{issuer | formatPubkey}}",
-      "TX_AMOUNT_LABEL": "Verhandeld volume",
-      "TX_COUNT_TITLE": "Aantal schriftelijke transacties",
-      "TX_COUNT_LABEL": "Aantal transacties",
-      "TX_AVG_BY_BLOCK": "Gemiddeld aantal transacties / blok"
+      "TITLE": "Statistics",
+      "BLOCKS_ISSUERS_DIVIDER": "Written blocks by members",
+      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} members</b> calculated <b>{{blockCount|formatInteger}} blocks</b>",
+      "BLOCKS_ISSUERS_TITLE": "Number of blocks calculated per member",
+      "BLOCKS_ISSUERS_LABEL": "Number of blocks",
+      "TX_DIVIDER": "Analysis of transactions",
+      "TX_AMOUNT_TITLE": "Transaction volume",
+      "TX_AMOUNT_PUBKEY_TITLE": "Volume of transactions calculated by {{issuer | formatPubkey}}",
+      "TX_AMOUNT_LABEL": "Exchange volume",
+      "TX_COUNT_TITLE": "Number of written transactions",
+      "TX_COUNT_LABEL": "Number of transactions",
+      "TX_AVG_BY_BLOCK": "Average per block"
     },
     "CURRENCY": {
-      "MONETARY_MASS_TITLE": "Evolutie van de monetaire massa",
-      "MONETARY_MASS_LABEL": "Monetaire massa",
-      "MONETARY_MASS_SHARE_LABEL": "Gemiddelde leden",
-      "UD_TITLE": "Ontwikkeling van de universele dividend",
-      "MEMBERS_COUNT_TITLE": "Evolutie van het aantal leden",
-      "MEMBERS_COUNT_LABEL": "Aantal leden"
-    }
-  }
-}
-);
-
-$translateProvider.translations("en-GB", {
-  "MAP": {
-    "COMMON": {
-      "SEARCH_DOTS": "Search...",
-      "BTN_LOCALIZE_ME": "Localize me"
+      "MONETARY_MASS_TITLE": "Evolution of the monetary mass",
+      "MONETARY_MASS_LABEL": "Monetary mass",
+      "MONETARY_MASS_SHARE_LABEL": "Average per member",
+      "UD_TITLE": "Evolution of the universal dividend",
+      "MEMBERS_COUNT_TITLE": "Evolution of the number of members",
+      "MEMBERS_COUNT_LABEL": "Number of members"
     },
-    "NETWORK": {
-      "LOOKUP": {
-        "BTN_MAP": "Peers map",
-        "BTN_MAP_HELP": "Open peers map"
-      },
+    "PEER": {
       "VIEW": {
-        "TITLE": "Peers map",
-        "LAYER": {
-          "MEMBER": "Member peers",
-          "MIRROR": "Mirror peers",
-          "OFFLINE": "Offline peers"
-        }
+        "BLOCK_COUNT_LABEL": "Computed blocks count",
+        "BLOCK_COUNT": "{{count}} blocks",
+        "NO_BLOCK": "No block"
       }
     },
-    "WOT": {
-      "LOOKUP": {
-        "BTN_MAP": "Map",
-        "BTN_MAP_HELP": "Open members map"
+    "DOC_STATS": {
+      "TITLE": "Data storage statistics (Cesium+)",
+      "USER": {
+        "TITLE": "Number of documents linked to an account",
+        "USER_PROFILE": "User profiles",
+        "USER_SETTINGS": "Saved settings"
       },
-      "VIEW": {
-        "TITLE": "Members map",
-        "LAYER": {
-          "MEMBER": "<i class=\"icon ion-person positive\"></i> Members",
-          "PENDING": "<i class=\"icon ion-clock energized\"></i> Pending registrations",
-          "WALLET": "<i class=\"icon ion-card gray\"></i> Simple wallets"
-        }
+      "USER_DELTA": {
+        "TITLE": "Delta / Number of documents linked to an account",
+        "USER_PROFILE": "User profiles",
+        "USER_SETTINGS": "Saved settings"
       },
-      "ERROR": {
-        "LOAD_POSITION_FAILED": "Can not retrieve the positions to display."
-      }
-    },
-    "REGISTRY": {
-      "LOOKUP": {
-        "BTN_MAP": "Map",
-        "BTN_MAP_HELP": "Open the map of the pages"
+      "MESSAGE": {
+        "TITLE": "Number of documents related to the communication",
+        "MESSAGE_INBOX": "Messages in inbox",
+        "MESSAGE_OUTBOX": "Messages in outbox",
+        "INVITATION_CERTIFICATION": "Invitations to certify"
       },
-      "VIEW": {
-        "TITLE": "Map of pages",
-        "LAYER": {
-          "SHOP": "<i class=\"icon ion-page-shop positive\"></i> Local shops",
-          "COMPANY": "<i class=\"icon ion-page-company positive\"></i> Companies",
-          "ASSOCIATION": "<i class=\"icon ion-page-association energized\"></i> Associations",
-          "INSTITUTION": "<i class=\"icon ion-page-institution gray\"></i> Institutions"
-        }
-      }
-    },
-    "PROFILE": {
-      "MARKER_HELP": "<b>Drag and drop</b> this marker to <b>update<br/>your position</b>, or use the buttons<br/>on top of the map."
-    },
-    "ERROR": {
-      "LOCALIZE_ME_FAILED": "Unable to retrieve your current position"
-    },
-    "SETTINGS": {
-      "MAP_DIVIDER": "Maps",
-      "ENABLE_GOOGLE_API": "Enable Google API services?",
-      "ENABLE_GOOGLE_API_HELP": "In the <b>members map</b>, allows you to display accounts with an address but without geolocation.",
-      "GOOGLE_API_KEY": "Google API key",
-      "BTN_GOOGLE_API": "Getting a key",
-      "BTN_GOOGLE_API_WARNING": "requires a Google account",
-      "GOOGLE_API_KEY_PLACEHOLDER": "eg: AIzaqyAgszvWm0tM81x1sMK_ipDHBI7EowLqR7I"
-    },
-    "HELP": {
-      "TIP": {
-        "WOT": "This map displays <b>profiles with a position</b>, whether they are member accounts or not.<br/><br/>Only profiles with the option &quot;appear on the map&quot; has been activated.",
-        "WOT_BTN_LAYERS": "<b>Filter the displayed data</b>: members, pending registrations, simple portfolios, etc.",
-        "WOT_BTN_SEARCH": "You can <b>search</b> by name, public key, or member pseudonym."
+      "SOCIAL": {
+        "TITLE": "Number of page or group",
+        "PAGE_COMMENT": "Comments",
+        "PAGE_RECORD": "Pages",
+        "GROUP_RECORD": "Groups"
+      },
+      "OTHER": {
+        "TITLE": "Other documents",
+        "HISTORY_DELETE": "Deletion of documents"
       }
     }
   }
 }
 );
 
-$translateProvider.translations("en", {
-  "MAP": {
+$translateProvider.translations("eo-EO", {
+  "NETWORK": {
+    "VIEW": {
+      "BTN_GRAPH": "Statistikoj"
+    }
+  },
+  "GRAPH": {
     "COMMON": {
-      "SEARCH_DOTS": "Search...",
-      "BTN_LOCALIZE_ME": "Localize me"
-    },
-    "NETWORK": {
-      "LOOKUP": {
-        "BTN_MAP": "Peers map",
-        "BTN_MAP_HELP": "Open peers map"
-      },
-      "VIEW": {
-        "TITLE": "Peers map",
-        "LAYER": {
-          "MEMBER": "Member peers",
-          "MIRROR": "Mirror peers",
-          "OFFLINE": "Offline peers"
-        }
-      }
-    },
-    "WOT": {
-      "LOOKUP": {
-        "BTN_MAP": "Map",
-        "BTN_MAP_HELP": "Open members map"
-      },
-      "VIEW": {
-        "TITLE": "Members map",
-        "LAYER": {
-          "MEMBER": "<i class=\"icon ion-person positive\"></i> Members",
-          "PENDING": "<i class=\"icon ion-clock energized\"></i> Pending registrations",
-          "WALLET": "<i class=\"icon ion-card gray\"></i> Simple wallets"
-        }
-      },
-      "ERROR": {
-        "LOAD_POSITION_FAILED": "Can not retrieve the positions to display."
-      }
-    },
-    "REGISTRY": {
-      "LOOKUP": {
-        "BTN_MAP": "Map",
-        "BTN_MAP_HELP": "Open the map of the pages"
-      },
-      "VIEW": {
-        "TITLE": "Map of pages",
-        "LAYER": {
-          "SHOP": "<i class=\"icon ion-page-shop positive\"></i> Local shops",
-          "COMPANY": "<i class=\"icon ion-page-company positive\"></i> Companies",
-          "ASSOCIATION": "<i class=\"icon ion-page-association energized\"></i> Associations",
-          "INSTITUTION": "<i class=\"icon ion-page-institution gray\"></i> Institutions"
-        }
+      "LINEAR_SCALE" : "Lineara skalo",
+      "LOGARITHMIC_SCALE" : "Logaritma skalo",
+      "BTN_SHOW_STATS": "Vidi la statistikojn",
+      "BTN_SHOW_DETAILED_STATS": "Detalaj statistikoj",
+      "RANGE_DURATION_DIVIDER": "Tempo-unuo:",
+      "RANGE_DURATION": {
+        "HOUR": "Horo",
+        "DAY": "Tago",
+        "MONTH": "Monato"
       }
     },
-    "PROFILE": {
-      "MARKER_HELP": "<b>Drag and drop</b> this marker to <b>update<br/>your position</b>, or use the buttons<br/>on top of the map."
-    },
-    "ERROR": {
-      "LOCALIZE_ME_FAILED": "Unable to retrieve your current position"
-    },
-    "SETTINGS": {
-      "MAP_DIVIDER": "Maps",
-      "ENABLE_GOOGLE_API": "Enable Google API services?",
-      "ENABLE_GOOGLE_API_HELP": "In the <b>members map</b>, allows you to display accounts with an address but without geolocation.",
-      "GOOGLE_API_KEY": "Google API key",
-      "BTN_GOOGLE_API": "Getting a key",
-      "BTN_GOOGLE_API_WARNING": "requires a Google account",
-      "GOOGLE_API_KEY_PLACEHOLDER": "eg: AIzaqyAgszvWm0tM81x1sMK_ipDHBI7EowLqR7I"
+    "ACCOUNT": {
+      "TITLE": "Statistikoj",
+      "BTN_SHOW_STATS": "Vidi la statistikojn de la konto",
+      "BALANCE_DIVIDER": "Stato de la konto",
+      "BALANCE_TITLE": "Evoluo de la konto {{pubkey|formatPubkey}}",
+      "TX_RECEIVED_LABEL": "Enspezoj",
+      "TX_SENT_LABEL": "Elspezoj",
+      "TX_ACCUMULATION_LABEL": "Bilanco de la spezoj",
+      "UD_LABEL": "UD",
+      "UD_ACCUMULATION_LABEL": "Bilanco de la UD",
+      "BALANCE_LABEL": "Saldo",
+      "WOT_DIVIDER": "Reto de fido",
+      "CERTIFICATION_TITLE": "Nombro de atestaĵoj - {{pubkey|formatPubkey}}",
+      "RECEIVED_CERT_LABEL": "Tuto pri la ricevitaj",
+      "RECEIVED_CERT_DELTA_LABEL": "Vario pri la ricevitaj",
+      "GIVEN_CERT_LABEL": "Tuto pri la senditaj",
+      "GIVEN_CERT_DELTA_LABEL": "Vario pri la senditaj",
+      "INPUT_CHART_TITLE": "Sumo de la enirantaj fluoj, por ĉiu sendinto:",
+      "OUTPUT_CHART_TITLE": "Sumo de la elirantaj fluoj, por ĉiu ricevinto:"
     },
-    "HELP": {
-      "TIP": {
-        "WOT": "This map displays <b>profiles with a position</b>, whether they are member accounts or not.<br/><br/>Only profiles with the option &quot;appear on the map&quot; has been activated.",
-        "WOT_BTN_LAYERS": "<b>Filter the displayed data</b>: members, pending registrations, simple portfolios, etc.",
-        "WOT_BTN_SEARCH": "You can <b>search</b> by name, public key, or member pseudonym."
-      }
-    }
-  }
-}
-);
+    "BLOCKCHAIN": {
+      "TITLE": "Statistikoj",
+      "BLOCKS_ISSUERS_DIVIDER": "Analizo de la kalkul-distribuo",
+      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} membroj</b> kalkulis <b>{{blockCount|formatInteger}} blokojn</b>",
+      "BLOCKS_ISSUERS_TITLE": "Nombro de blokoj kalkulitaj por membro",
+      "BLOCKS_ISSUERS_LABEL": "Nombro de blokoj",
+      "TX_DIVIDER": "Analizo de la spezoj",
+      "TX_AMOUNT_TITLE": "Kvanto de la spezoj",
+      "TX_AMOUNT_PUBKEY_TITLE": "Kvanto de spezoj kalkulitaj de {{issuer | formatPubkey}}",
+      "TX_AMOUNT_LABEL": "Kvanto interŝanĝita",
+      "TX_COUNT_TITLE": "Nombro de spezoj skribitaj",
+      "TX_COUNT_LABEL": "Nombro de spezoj",
+      "TX_AVG_BY_BLOCK": "Meza nombro de spezoj / bloko"
 
-$translateProvider.translations("eo-EO", {
-  "MAP": {
-    "COMMON": {
-      "SEARCH_DOTS": "Traserĉi...",
-      "BTN_LOCALIZE_ME": "Lokalizi min"
     },
-    "NETWORK": {
-      "LOOKUP": {
-        "BTN_MAP": "Mapo",
-        "BTN_MAP_HELP": "Malfermi la mapon pri nodoj"
-      },
+    "CURRENCY": {
+      "MONETARY_MASS_TITLE": "Evoluo de la mona maso",
+      "MONETARY_MASS_LABEL": "Mona maso",
+      "MONETARY_MASS_SHARE_LABEL": "Mezumo por membro",
+      "UD_TITLE": "Evoluo de la universala dividendo",
+      "MEMBERS_COUNT_TITLE": "Evoluo de la nombro de membroj",
+      "MEMBERS_COUNT_LABEL": "Nombro de membroj"
+    },
+    "PEER": {
       "VIEW": {
-        "TITLE": "Mapo pri nodoj",
-        "LAYER": {
-          "MEMBER": "Membro-nodoj",
-          "MIRROR": "Spegul-nodoj",
-          "OFFLINE": "Nekonektitaj nodoj"
-        }
+        "BLOCK_COUNT_LABEL": "Nombro de blokoj kalkulitaj",
+        "BLOCK_COUNT": "{{count}} blokoj",
+        "NO_BLOCK": "Neniu bloko"
       }
     },
-    "WOT": {
-      "LOOKUP": {
-        "BTN_MAP": "Mapo",
-        "BTN_MAP_HELP": "Malfermi la mapon pri membroj"
+    "DOC_STATS": {
+      "TITLE": "Statistikoj pri stokado",
+      "USER": {
+        "TITLE": "Nombro de dokumentoj ligitaj al konto",
+        "USER_PROFILE": "Uzanto-profiloj",
+        "USER_SETTINGS": "Parametroj konservitaj"
       },
-      "VIEW": {
-        "TITLE": "Mapo pri membroj",
-        "LAYER": {
-          "MEMBER": "<i class=\"icon ion-person positive\"></i> Membroj",
-          "PENDING": "<i class=\"icon ion-clock energized\"></i> Aliĝoj atendantaj",
-          "WALLET": "<i class=\"icon ion-card gray\"></i> Simplaj monujoj"
-        }
+      "USER_DELTA": {
+        "TITLE": "Variado de la nombro de dokumentoj ligitaj al konto",
+        "USER_PROFILE": "Uzanto-profiloj",
+        "USER_SETTINGS": "Parametroj konservitaj"
       },
-      "ERROR": {
-        "LOAD_POSITION_FAILED": "Neeblas ricevi la lokojn afiŝotajn."
+      "MESSAGE": {
+        "TITLE": "Nombro de dokumentoj ligitaj al komunikado",
+        "MESSAGE_INBOX": "Mesaĝoj en ricevujo",
+        "MESSAGE_OUTBOX": "Senditaj mesaĝoj konservitaj",
+        "INVITATION_CERTIFICATION": "Invitoj atestotaj"
+      },
+      "SOCIAL": {
+        "TITLE": "Nombro de paĝoj aŭ grupoj",
+        "PAGE_COMMENT": "Komentoj",
+        "PAGE_RECORD": "Paĝoj",
+        "GROUP_RECORD": "Grupoj"
+      },
+      "OTHER": {
+        "TITLE": "Aliaj dokumentoj",
+        "HISTORY_DELETE": "Forigoj de dokumentoj"
       }
     },
-    "REGISTRY": {
-      "LOOKUP": {
-        "BTN_MAP": "Mapo",
-        "BTN_MAP_HELP": "Malfermi la mapon pri paĝoj"
+    "SYNCHRO": {
+      "TITLE": "Statistikoj pri sinkronigoj",
+      "COUNT": {
+        "TITLE": "Kvanto sinkronigita",
+        "INSERTS": "Enmetoj",
+        "UPDATES": "Ĝisdatigoj",
+        "DELETES": "Forigoj"
       },
-      "VIEW": {
-        "TITLE": "Mapo pri paĝoj",
-        "LAYER": {
-          "SHOP": "<i class=\"icon ion-page-shop positive\"></i> Lokaj komercoj",
-          "COMPANY": "<i class=\"icon ion-page-company positive\"></i> Entreprenoj",
-          "ASSOCIATION": "<i class=\"icon ion-page-association energized\"></i> Asocioj",
-          "INSTITUTION": "<i class=\"icon ion-page-institution gray\"></i> Institucioj"
-        }
+      "PEER": {
+        "TITLE": "Nodoj informpetitaj",
+        "ES_USER_API": "Nodoj pri datenoj de uzantoj",
+        "ES_SUBSCRIPTION_API": "Nodoj pri retaj servoj"
+      },
+      "PERFORMANCE": {
+        "TITLE": "Efikecoj pri efektiviĝo",
+        "DURATION": "Tempo por efektiviĝo (ms)"
+      }
+    }
+  }
+}
+);
+
+$translateProvider.translations("es-ES", {
+  "NETWORK": {
+    "VIEW": {
+      "BTN_GRAPH": "Estadística"
+    }
+  },
+  "GRAPH": {
+    "COMMON": {
+      "LINEAR_SCALE" : "Escala lineal",
+      "LOGARITHMIC_SCALE" : "Escala logarítmica",
+      "BTN_SHOW_STATS": "Ver estadísticas",
+      "BTN_SHOW_DETAILED_STATS": "Estadísticas detalladas",
+      "RANGE_DURATION_DIVIDER": "Unidad de paso:",
+      "RANGE_DURATION": {
+        "HOUR": "Grupo por <b>hora</b>",
+        "DAY": "Grupo por <b>día</b>",
+        "MONTH": "Grupo por <b>mes</b>"
       }
     },
-    "PROFILE": {
-      "MARKER_HELP": "<b>Ŝovu-demetu</b> tiun ĉi markilon por <b>aktualigi<br/> vian lokon</b> sur la mapo, aŭ uzu la serĉo-butonon<br/>super la mapo."
+    "ACCOUNT": {
+      "INPUT_CHART_TITLE": "Suma del flujo entrante, por el transmisor:",
+      "OUTPUT_CHART_TITLE": "Suma de las salidas por destino:"
     },
-    "ERROR": {
-      "LOCALIZE_ME_FAILED": "Neeblas ricevi vian nunan lokon"
+    "BLOCKCHAIN": {
+      "TITLE": "Estadística",
+      "BLOCKS_ISSUERS_DIVIDER": "Bloques escritos por los miembros",
+      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} members</b> has computed <b>{{blockCount|formatInteger}} blocks</b>",
+      "BLOCKS_ISSUERS_TITLE": "Número de bloques miembro calculado",
+      "BLOCKS_ISSUERS_LABEL": "Número de bloques",
+      "TX_DIVIDER": "Análisis de transacciones",
+      "TX_AMOUNT_TITLE": "El volumen de operaciones",
+      "TX_AMOUNT_PUBKEY_TITLE": "El volumen de operaciones calculado por {{issuer | formatPubkey}}",
+      "TX_AMOUNT_LABEL": "Volumen negociado",
+      "TX_COUNT_TITLE": "Número de transacciones escritas",
+      "TX_COUNT_LABEL": "Número de transacciones",
+      "TX_AVG_BY_BLOCK": "Promedio por bloque"
     },
-    "SETTINGS": {
-      "MAP_DIVIDER": "Mapoj",
-      "ENABLE_GOOGLE_API": "Aktivigi la Google-API-servojn?",
-      "ENABLE_GOOGLE_API_HELP": "Ebligas afiŝi sur la <b>mapo pri membroj</b> kontojn kun adreso sed sen iu GPS-lokalizo.",
-      "GOOGLE_API_KEY": "Google-API-ŝlosilo",
-      "BTN_GOOGLE_API": "Ekhavi ŝlosilon",
-      "BTN_GOOGLE_API_WARNING": "Necesigas havi Google-konton",
-      "GOOGLE_API_KEY_PLACEHOLDER": "Ekzemple: AIzaqyAgszvWm0tM81x1sMK_ipDHBI7EowLqR7I"
+    "CURRENCY": {
+      "MONETARY_MASS_TITLE": "Evolución de la masa monetaria",
+      "MONETARY_MASS_LABEL": "Masa monetaria",
+      "MONETARY_MASS_SHARE_LABEL": "Promedio miembro",
+      "UD_TITLE": "Evolución del dividendo universales",
+      "MEMBERS_COUNT_TITLE": "Evolución del número de miembros",
+      "MEMBERS_COUNT_LABEL": "Número de miembros"
     },
-    "HELP": {
-      "TIP": {
-        "WOT": "Tiu ĉi mapo afiŝas <b>la profilojn kun loko</b>, ĉu ili rilatas al membro-kontoj aŭ ne.<br/><br/>Nur videblas la profiloj, kies kromaĵo &quot;aperi sur la mapo&quot; estis aktivigita.",
-        "WOT_BTN_LAYERS": "<b>Filtru ĉi tie la afiŝitajn datenojn</b>: membroj, aliĝoj atendantaj, simplaj monujoj, ktp.",
-        "WOT_BTN_SEARCH": "Vi povas <b>efektivigi serĉadon</b> laŭ nomo, publika ŝlosilo aŭ membro-pseŭdonimo."
+    "PEER": {
+      "VIEW": {
+        "BLOCK_COUNT_LABEL": "Número de bloques calculados",
+        "BLOCK_COUNT": "{{count}} bloques",
+        "NO_BLOCK": "Ningún bloque"
       }
     }
   }
@@ -31976,77 +31849,119 @@ $translateProvider.translations("eo-EO", {
 );
 
 $translateProvider.translations("fr-FR", {
-  "MAP": {
+  "NETWORK": {
+    "VIEW": {
+      "BTN_GRAPH": "Statistiques"
+    }
+  },
+  "GRAPH": {
     "COMMON": {
-      "SEARCH_DOTS": "Rechercher...",
-      "BTN_LOCALIZE_ME": "Me localiser"
+      "LINEAR_SCALE" : "Echelle linéaire",
+      "LOGARITHMIC_SCALE" : "Echelle logarithmique",
+      "BTN_SHOW_STATS": "Voir les statistiques",
+      "BTN_SHOW_DETAILED_STATS": "Statistiques détaillées",
+      "RANGE_DURATION_DIVIDER": "Unité de temps :",
+      "RANGE_DURATION": {
+        "HOUR": "Heure",
+        "DAY": "Jour",
+        "MONTH": "Mois"
+      }
     },
-    "NETWORK": {
-      "LOOKUP": {
-        "BTN_MAP": "Carte",
-        "BTN_MAP_HELP": "Ouvrir la carte des noeuds"
-      },
+    "ACCOUNT": {
+      "TITLE": "Statistiques",
+      "BTN_SHOW_STATS": "Voir les statistiques du compte",
+      "BALANCE_DIVIDER": "Situation du compte",
+      "BALANCE_TITLE": "Evolution du compte {{pubkey|formatPubkey}}",
+      "TX_RECEIVED_LABEL": "Recettes",
+      "TX_SENT_LABEL": "Dépenses",
+      "TX_ACCUMULATION_LABEL": "Bilan des transactions",
+      "UD_LABEL": "DU",
+      "UD_ACCUMULATION_LABEL": "Bilan des DU",
+      "BALANCE_LABEL": "Solde",
+      "WOT_DIVIDER": "Toile de confiance",
+      "CERTIFICATION_TITLE": "Nombre de certifications - {{pubkey|formatPubkey}}",
+      "RECEIVED_CERT_LABEL": "Total reçues",
+      "RECEIVED_CERT_DELTA_LABEL": "Variation reçues",
+      "GIVEN_CERT_LABEL": "Total envoyées",
+      "GIVEN_CERT_DELTA_LABEL": "Variation envoyées",
+      "INPUT_CHART_TITLE": "Somme des flux entrants, par émetteur :",
+      "OUTPUT_CHART_TITLE": "Somme des flux sortants, par destinaire :"
+    },
+    "BLOCKCHAIN": {
+      "TITLE": "Statistiques",
+      "BLOCKS_ISSUERS_DIVIDER": "Analyse de la répartition du calcul",
+      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} membres</b> ont calculé <b>{{blockCount|formatInteger}} blocs</b>",
+      "BLOCKS_ISSUERS_TITLE": "Nombre de blocs calculés par membre",
+      "BLOCKS_ISSUERS_LABEL": "Nombre de blocs",
+      "TX_DIVIDER": "Analyse des transactions",
+      "TX_AMOUNT_TITLE": "Volume des transactions",
+      "TX_AMOUNT_PUBKEY_TITLE": "Volume des transactions calculées par {{issuer | formatPubkey}}",
+      "TX_AMOUNT_LABEL": "Volume échangé",
+      "TX_COUNT_TITLE": "Nombre de transactions écrites",
+      "TX_COUNT_LABEL": "Nombre de transactions",
+      "TX_AVG_BY_BLOCK": "Nombre moyen de transactions / bloc"
+
+    },
+    "CURRENCY": {
+      "MONETARY_MASS_TITLE": "Evolution de la masse monétaire",
+      "MONETARY_MASS_LABEL": "Masse monétaire",
+      "MONETARY_MASS_SHARE_LABEL": "Moyenne par membre",
+      "UD_TITLE": "Evolution du dividende universel",
+      "MEMBERS_COUNT_TITLE": "Evolution du nombre de membres",
+      "MEMBERS_COUNT_LABEL": "Nombre de membres"
+    },
+    "PEER": {
       "VIEW": {
-        "TITLE": "Carte des noeuds",
-        "LAYER": {
-          "MEMBER": "Nœuds membre",
-          "MIRROR": "Nœuds miroir",
-          "OFFLINE": "Nœuds hors ligne"
-        }
+        "BLOCK_COUNT_LABEL": "Nombre de blocs calculés",
+        "BLOCK_COUNT": "{{count}} blocs",
+        "NO_BLOCK": "Aucun bloc"
       }
     },
-    "WOT": {
-      "LOOKUP": {
-        "BTN_MAP": "Carte",
-        "BTN_MAP_HELP": "Ouvrir la carte des membres"
+    "DOC_STATS": {
+      "TITLE": "Statistiques de stockage",
+      "USER": {
+        "TITLE": "Nombre de documents liés à un compte",
+        "USER_PROFILE": "Profils utilisateur",
+        "USER_SETTINGS": "Paramètres sauvegardés"
       },
-      "VIEW": {
-        "TITLE": "Carte des membres",
-        "LAYER": {
-          "MEMBER": "<i class=\"icon ion-person positive\"></i> Membres",
-          "PENDING": "<i class=\"icon ion-clock energized\"></i> Inscriptions en attente",
-          "WALLET": "<i class=\"icon ion-card gray\"></i> Simples portefeuilles"
-        }
+      "USER_DELTA": {
+        "TITLE": "Variation du nombre de documents liés à un compte",
+        "USER_PROFILE": "Profils utilisateur",
+        "USER_SETTINGS": "Paramètres sauvegardés"
       },
-      "ERROR": {
-        "LOAD_POSITION_FAILED": "Impossible de récupérer les positions à afficher."
-      }
-    },
-    "REGISTRY": {
-      "LOOKUP": {
-        "BTN_MAP": "Carte",
-        "BTN_MAP_HELP": "Ouvrir la carte des pages"
+      "MESSAGE": {
+        "TITLE": "Nombre de documents liés à la communication",
+        "MESSAGE_INBOX": "Messages en boîte de réception",
+        "MESSAGE_OUTBOX": "Messages envoyés sauvegardés",
+        "INVITATION_CERTIFICATION": "Invitations à certifier"
       },
-      "VIEW": {
-        "TITLE": "Carte des pages",
-        "LAYER": {
-          "SHOP": "<i class=\"icon ion-page-shop positive\"></i> Commerces locaux",
-          "COMPANY": "<i class=\"icon ion-page-company positive\"></i> Entreprises",
-          "ASSOCIATION": "<i class=\"icon ion-page-association energized\"></i> Associations",
-          "INSTITUTION": "<i class=\"icon ion-page-institution gray\"></i> Institutions"
-        }
+      "SOCIAL": {
+        "TITLE": "Nombre de pages ou groupes",
+        "PAGE_COMMENT": "Commentaires",
+        "PAGE_RECORD": "Pages",
+        "GROUP_RECORD": "Groupes"
+      },
+      "OTHER": {
+        "TITLE": "Autres documents",
+        "HISTORY_DELETE": "Suppressions de documents"
       }
     },
-    "PROFILE": {
-      "MARKER_HELP": "<b>Glissez-déposez</b> ce marqueur pour <b>mettre<br/>à jour votre position</b> sur la carte, ou utilisez le bouton<br/>de recherche au-dessus de la carte."
-    },
-    "ERROR": {
-      "LOCALIZE_ME_FAILED": "Impossible de récupérer votre position actuelle"
-    },
-    "SETTINGS": {
-      "MAP_DIVIDER": "Cartes",
-      "ENABLE_GOOGLE_API": "Activer les services Google API ?",
-      "ENABLE_GOOGLE_API_HELP": "Permet l'affichage dans la <b>carte des membres</b> des comptes ayant une adresse mais aucun positionnement GPS.",
-      "GOOGLE_API_KEY": "Clé d'API Google",
-      "BTN_GOOGLE_API": "Obtenir une clé",
-      "BTN_GOOGLE_API_WARNING": "Nécessite d'avoir un compte Google",
-      "GOOGLE_API_KEY_PLACEHOLDER": "Exemple : AIzaqyAgszvWm0tM81x1sMK_ipDHBI7EowLqR7I"
-    },
-    "HELP": {
-      "TIP": {
-        "WOT": "Cette carte affiche <b>les profils ayant une position</b>, qu'ils correspondent à des comptes membre ou non.<br/><br/>Seuls sont visibles les profils dont l'option &quot;apparaître sur la carte&quot; a été activée.",
-        "WOT_BTN_LAYERS": "<b>Filtrez ici les données affichées</b> : membres, inscriptions en attente, simples portefeuilles, etc.",
-        "WOT_BTN_SEARCH": "Vous pouvez <b>effectuer une recherche</b> par nom, clef publique ou pseudonyme de membre."
+    "SYNCHRO": {
+      "TITLE": "Statistiques de synchronisations",
+      "COUNT": {
+        "TITLE": "Volume synchronisé",
+        "INSERTS": "Insertions",
+        "UPDATES": "Mises à jour",
+        "DELETES": "Suppressions"
+      },
+      "PEER": {
+        "TITLE": "Noeuds requêtés",
+        "ES_USER_API": "Noeuds données utilisateurs",
+        "ES_SUBSCRIPTION_API": "Noeuds services en ligne"
+      },
+      "PERFORMANCE": {
+        "TITLE": "Performances d'exécution",
+        "DURATION": "Temps d'exécution (ms)"
       }
     }
   }
@@ -32054,82 +31969,167 @@ $translateProvider.translations("fr-FR", {
 );
 
 $translateProvider.translations("it-IT", {
-   "MAP": {
+   "NETWORK": {
+     "VIEW": {
+       "BTN_GRAPH": "Statistiche"
+     }
+   },
+   "GRAPH": {
      "COMMON": {
-       "SEARCH_DOTS": "Ricerca...",
-       "BTN_LOCALIZE_ME": "Trovami"
+       "LINEAR_SCALE" : "Scala lineare",
+       "LOGARITHMIC_SCALE" : "Scala logaritmica",
+       "BTN_SHOW_STATS": "Vedere le statistiche",
+       "BTN_SHOW_DETAILED_STATS": "Statistiche dettagliate",
+       "RANGE_DURATION_DIVIDER": "Unità di tempo :",
+       "RANGE_DURATION": {
+         "HOUR": "Ora",
+         "DAY": "Giorno",
+         "MONTH": "Mese"
+       }
+     },
+     "ACCOUNT": {
+       "TITLE": "Statistiche",
+       "BTN_SHOW_STATS": "Visualizzare le statistiche del conto",
+       "BALANCE_DIVIDER": "Situazione del conto",
+       "BALANCE_TITLE": "Evoluzione del conto {{pubkey|formatPubkey}}",
+       "TX_RECEIVED_LABEL": "Incassi",
+       "TX_SENT_LABEL": "Spese",
+       "TX_ACCUMULATION_LABEL": "Bilancio delle transazioni",
+       "UD_LABEL": "DU",
+       "UD_ACCUMULATION_LABEL": "Bilancio dei DU",
+       "BALANCE_LABEL": "Saldo",
+       "WOT_DIVIDER": "Tela di fiducia",
+       "CERTIFICATION_TITLE": "Numero di certificazioni - {{pubkey|formatPubkey}}",
+       "RECEIVED_CERT_LABEL": "Totale ricevute",
+       "RECEIVED_CERT_DELTA_LABEL": "Variazione ricevute",
+       "GIVEN_CERT_LABEL": "Totale inviate",
+       "GIVEN_CERT_DELTA_LABEL": "Variazione inviate",
+       "INPUT_CHART_TITLE": "Somma dei flussi in entrata, par emittente :",
+       "OUTPUT_CHART_TITLE": "Somma dei flussi in uscita, per destinatario :"
      },
-     "NETWORK": {
-       "LOOKUP": {
-         "BTN_MAP": "Mappa dei peers",
-         "BTN_MAP_HELP": "Aprire mappa dei peers"
-       },
+     "BLOCKCHAIN": {
+       "TITLE": "Statistiche",
+       "BLOCKS_ISSUERS_DIVIDER": "Analisi della ripartizione del calcolo",
+       "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} membri</b> hanno calcolato <b>{{blockCount|formatInteger}} blocchi</b>",
+       "BLOCKS_ISSUERS_TITLE": "Numero di blocchi calcolati a membro",
+       "BLOCKS_ISSUERS_LABEL": "Numero di blocchi",
+       "TX_DIVIDER": "Analisi delle transazioni",
+       "TX_AMOUNT_TITLE": "Volume delle transazioni",
+       "TX_AMOUNT_PUBKEY_TITLE": "Volume delle transazioni calcolato da {{issuer | formatPubkey}}",
+       "TX_AMOUNT_LABEL": "Volume scambiato",
+       "TX_COUNT_TITLE": "Numero di transazioni scritte",
+       "TX_COUNT_LABEL": "Numero di transazioni",
+       "TX_AVG_BY_BLOCK": "Numero medio di transazioni / blocco"
+     },
+     "CURRENCY": {
+       "MONETARY_MASS_TITLE": "Evoluzione della massa monetaria",
+       "MONETARY_MASS_LABEL": "Massa monetaria",
+       "MONETARY_MASS_SHARE_LABEL": "Media a membro",
+       "UD_TITLE": "Evoluzione del Dividendo Universale",
+       "MEMBERS_COUNT_TITLE": "Evoluzione del numero di membri",
+       "MEMBERS_COUNT_LABEL": "Numero di membri"
+     },
+     "PEER": {
        "VIEW": {
-         "TITLE": "Mappa dei peers",
-         "LAYER": {
-           "MEMBER": "Peers membri",
-           "MIRROR": "Peers specchi",
-           "OFFLINE": "Peers offline"
-         }
+         "BLOCK_COUNT_LABEL": "Numero di blocchi calcolati",
+         "BLOCK_COUNT": "{{count}} blocchi",
+         "NO_BLOCK": "Nessun blocco"
        }
      },
-     "WOT": {
-       "LOOKUP": {
-         "BTN_MAP": "Mappa dei membri",
-         "BTN_MAP_HELP": "Aprire mappa dei membri"
+     "DOC_STATS": {
+       "TITLE": "Statistiche di stoccaggio",
+       "USER": {
+         "TITLE": "Numero di documenti legati ad un conto",
+         "USER_PROFILE": "Profili dell'utente",
+         "USER_SETTINGS": "Impostazioni salvate",
        },
-       "VIEW": {
-         "TITLE": "Mappa membri",
-         "LAYER": {
-           "MEMBER": "<i class=\"icon ion-person positive\"></i> Membri",
-           "PENDING": "<i class=\"icon ion-clock energized\"></i> Registrazione pendenti",
-           "WALLET": "<i class=\"icon ion-card gray\"></i> Portafogli osservatori"
-         }
+       "MESSAGE": {
+         "TITLE": "Numero di documenti legati alla conversazione",
+         "MESSAGE_INBOX": "Messaggi in arrivo",
+         "MESSAGE_OUTBOX": "Messaggi inviati salvati",
+         "INVITATION_CERTIFICATION": "Invitazioni da certificare"
        },
-       "ERROR": {
-         "LOAD_POSITION_FAILED": "Errore nel caricamento delle posizioni."
-       }
-     },
-     "REGISTRY": {
-       "LOOKUP": {
-         "BTN_MAP": "Mappa",
-         "BTN_MAP_HELP": "Aprire la mappa delle pagine pro"
+       "SOCIAL": {
+         "TITLE": "Numero di pagine o gruppi",
+         "PAGE_COMMENT": "Commenti",
+         "PAGE_RECORD": "Pagine",
+         "GROUP_RECORD": "Gruppi",
        },
-       "VIEW": {
-         "TITLE": "Mappa delle pagine pro",
-         "LAYER": {
-           "SHOP": "<i class=\"icon ion-page-shop positive\"></i> Negozi locali",
-           "COMPANY": "<i class=\"icon ion-page-company positive\"></i> Aziende",
-           "ASSOCIATION": "<i class=\"icon ion-page-association energized\"></i> Associazioni",
-           "INSTITUTION": "<i class=\"icon ion-page-institution gray\"></i> Instituti"
-         }
+       "OTHER": {
+         "TITLE": "Altri documenti",
+         "HISTORY_DELETE": "Cronologia eliminazione documenti",
        }
      },
-     "PROFILE": {
-       "MARKER_HELP": "<b>Drag and drop</b> questo indicatore per <b>aggiornare<br/>tua posizione</b>, o usa i bottoni <br/>sopra la mappa."
-     },
-     "ERROR": {
-       "LOCALIZE_ME_FAILED": "Impossible trovare tua posizione attuale"
-     },
-     "SETTINGS": {
-       "MAP_DIVIDER": "Mappe",
-       "ENABLE_GOOGLE_API": "Abilitare i servizi Google API ?",
-       "ENABLE_GOOGLE_API_HELP": "Sulla <b>mappa dei membri</b>, ti permette di visualizzare i conti con un indirizzo ma senza geolocalizzazione.",
-       "GOOGLE_API_KEY": "Chiave Google API",
-       "BTN_GOOGLE_API": "Ottenere una chiave",
-       "BTN_GOOGLE_API_WARNING": "necessita un conto Google",
-       "GOOGLE_API_KEY_PLACEHOLDER": "per es. : AIzaqyAgszvWm0tM81x1sMK_ipDHBI7EowLqR7I"
-     },
-     "HELP": {
-       "TIP": {
-         "WOT": "Questa mappa mostra <b>profili che hanno fornito una posizione</b>, che siano conti membri o no.<br/><br/>Solo i profili che hanno attivato l'opzione &quot;apparire sulla mappa&quot; sono stati attivati.",
-         "WOT_BTN_LAYERS": "<b>Filtrare i dati visibili</b>: membri, registrazioni pendenti, portafogli osservatori, etc.",
-         "WOT_BTN_SEARCH": "Puoi <b>cercare</b> per nome, chiave pubblica, o pseudonimo del membro."
+     "SYNCHRO": {
+       "TITLE": "Statistiche di sincronizzazioni",
+       "COUNT": {
+         "TITLE": "Volume sincronizzato",
+         "INSERTS": "Inserimenti",
+         "UPDATES": "Aggiornamenti",
+         "DELETES": "Eliminazioni"
+       },
+       "PEER": {
+         "TITLE": "Nodi interrogati",
+         "ES_USER_API": "Nodi dati utenti",
+         "ES_SUBSCRIPTION_API": "Noeuds servizi online"
+       },
+       "PERFORMANCE": {
+         "TITLE": "Prestazioni (performance) di esecuzione",
+         "DURATION": "Tempo di esecuzione (ms)"
        }
      }
    }
  }
- );
+);
+
+$translateProvider.translations("nl-NL", {
+  "NETWORK": {
+    "VIEW": {
+      "BTN_GRAPH": "Statistieken"
+    }
+  },
+  "GRAPH": {
+    "COMMON": {
+      "LINEAR_SCALE" : "Lineaire schaal",
+      "LOGARITHMIC_SCALE" : "Logaritmische schaal",
+      "BTN_SHOW_STATS": "Zie statistieken",
+      "BTN_SHOW_DETAILED_STATS": "Gedetailleerde statistieken",
+      "RANGE_DURATION_DIVIDER": "Stap eenheid:",
+      "RANGE_DURATION": {
+        "HOUR": "Groep per <b>uur</b>",
+        "DAY": "Groep per <b>dag</b>",
+        "MONTH": "Groep per <b>maand</b>"
+      }
+    },
+    "ACCOUNT": {
+      "INPUT_CHART_TITLE": "Som van de binnenkomende stroom, door de zender:",
+      "OUTPUT_CHART_TITLE": "Som van de uitstroom per bestemming:"
+    },
+    "BLOCKCHAIN": {
+      "TITLE": "Statistieken",
+      "BLOCKS_ISSUERS_DIVIDER": "Schriftelijke blokken door leden",
+      "BLOCKS_ISSUERS_HELP": "<b>{{issuerCount|formatInteger}} leden</b> berekend <b>{{blockCount|formatInteger}} blokken</b>",
+      "BLOCKS_ISSUERS_TITLE": "Aantal blokken berekend per lid",
+      "BLOCKS_ISSUERS_LABEL": "Aantal blokken",
+      "TX_DIVIDER": "Analyse van transacties",
+      "TX_AMOUNT_TITLE": "Trading volume",
+      "TX_AMOUNT_PUBKEY_TITLE": "Trading volume dat wordt berekend door {{issuer | formatPubkey}}",
+      "TX_AMOUNT_LABEL": "Verhandeld volume",
+      "TX_COUNT_TITLE": "Aantal schriftelijke transacties",
+      "TX_COUNT_LABEL": "Aantal transacties",
+      "TX_AVG_BY_BLOCK": "Gemiddeld aantal transacties / blok"
+    },
+    "CURRENCY": {
+      "MONETARY_MASS_TITLE": "Evolutie van de monetaire massa",
+      "MONETARY_MASS_LABEL": "Monetaire massa",
+      "MONETARY_MASS_SHARE_LABEL": "Gemiddelde leden",
+      "UD_TITLE": "Ontwikkeling van de universele dividend",
+      "MEMBERS_COUNT_TITLE": "Evolutie van het aantal leden",
+      "MEMBERS_COUNT_LABEL": "Aantal leden"
+    }
+  }
+}
+);
 
 $translateProvider.translations("fr-FR", {
   "RML9": {
@@ -32171,34 +32171,6 @@ $templateCache.put('plugins/rml9/templates/07-button.html','<!-- Button: Open a
 $templateCache.put('plugins/rml9/templates/07-view.html','<leaflet id="map-geojson" center="map.center" geojson="map.geojson"></leaflet>\n');
 $templateCache.put('plugins/rml9/templates/final-button.html','<!-- Button: Open a view, using `ui-sref` attribute -->\n<button ng-if class="button button-balanced button-small-padding icon ion-android-archive"\n        ui-sref="app.rml9({pubkey: formData.pubkey})"\n        title="{{\'RML9.BTN_SWOW_TX\' | translate}}">\n</button>\n\n');
 $templateCache.put('plugins/rml9/templates/final-view.html','<ion-view left-buttons="leftButtons">\n  <ion-nav-title>\n    {{\'RML9.VIEW.TITLE\' | translate}}\n  </ion-nav-title>\n\n  <ion-content>\n    <div class="list">\n\n      <!-- buttons bar -->\n      <div class="center padding">\n        <div class="buttons">\n          <button class="button button-balanced icon-left icon ion-archive"\n                  ng-click="onExportButtonClick()">{{\'RML9.BTN_EXPORT\' | translate}}\n          </button>\n        </div>\n      </div>\n\n      <!-- the pubkey -->\n      <div class="item">\n        {{\'COMMON.PUBKEY\'|translate}}\n        <div class="badge">{{pubkey|formatPubkey}}</div>\n      </div>\n\n      <!-- the balance -->\n      <div class="item">\n        {{\'RML9.VIEW.BALANCE\'|translate}}\n        <div class="badge badge-calm">\n          {{balance|formatAmount}} <span ng-bind-html="$root.currency.name|currencySymbol"></span>\n        </div>\n      </div>\n\n      <!-- a text divider-->\n      <div class="item item-divider">{{\'RML9.VIEW.DIVIDER\'|translate:{pubkey: pubkey} }}</div>\n\n      <!-- iterate on each TX -->\n      <div class="row">\n        <div class="col col-75">\n          <div class="item item-text-wrap" ng-repeat="item in items">\n\n            <h3>\n              {{item.time|formatDate}}\n              <span ng-if="item.comment" class="gray"> | {{item.comment}}</span>\n            </h3>\n\n            <h4 ng-if="item.uid" class="positive"><i class="icon ion-person"></i> {{item.name||item.uid}}</h4>\n            <h4 ng-if="!item.uid" class="gray"><i class="icon ion-key"></i> {{item.pubkey|formatPubkey}}</h4>\n\n            <div class="badge"\n                 ng-class="{\'badge-balanced\': item.amount > 0}">\n              {{item.amount|formatAmount}} <span ng-bind-html="$root.currency.name|currencySymbol"></span>\n            </div>\n          </div>\n\n        </div>\n\n        <div class="col col-25">\n\n          <!-- [NEW] TX input chart -->\n          <p class="gray" translate>RML9.CHART.INPUT_CHART_TITLE</p>\n          <canvas id="chart-received-pie" class="chart-pie"\n                  chart-data="inputChart.data"\n                  chart-labels="inputChart.labels">\n          </canvas>\n\n          <!-- [NEW] TX input chart -->\n          <p class="gray" translate>RML9.CHART.OUTPUT_CHART_TITLE</p>\n          <canvas id="chart-sent-pie" class="chart-pie"\n                  chart-data="outputChart.data"\n                  chart-labels="outputChart.labels">\n          </canvas>\n        </div>\n      </div>\n    </div>\n  </ion-content>\n</ion-view>\n');
-$templateCache.put('plugins/graph/templates/account/graph_balance.html','\n    <!-- button bar -->\n    <div class="button-bar-inline "\n         style="top: 33px; margin-top:-33px; position: relative;">\n      <button\n        class="button button-stable button-clear no-padding-xs pull-right"\n        ng-click="showActionsPopover($event)">\n        <i class="icon ion-navicon-round"></i>\n      </button>\n    </div>\n\n    <div class="padding-left padding-right">\n      <canvas id="account-balance" class="chart-bar"\n              height="{{height}}" width="{{width}}"\n              chart-data="data"\n              chart-dataset-override="datasetOverride"\n              chart-colors="colors"\n              chart-options="options"\n              chart-labels="labels"\n              chart-click="onChartClick">\n      </canvas>\n    </div>\n\n    <ng-include src="::\'plugins/graph/templates/common/graph_range_bar.html\'"></ng-include>\n');
-$templateCache.put('plugins/graph/templates/account/graph_certifications.html','\n    <div class="padding-left padding-right">\n      <canvas id="account-certifications" class="chart-bar"\n              height="{{height}}" width="{{width}}"\n              chart-data="data"\n              chart-dataset-override="datasetOverride"\n              chart-colors="colors"\n              chart-options="options"\n              chart-labels="labels"\n              chart-click="onChartClick">\n      </canvas>\n    </div>\n');
-$templateCache.put('plugins/graph/templates/account/graph_sum_tx.html','<div class="row responsive-sm" ng-if="!loading">\n\n  <div class="col col-10 hidden-xs hidden-sm">&nbsp;</div>\n\n  <div class="col text-center">\n\n    <!-- TX input chart -->\n    <p class="gray padding text-wrap"\n       ng-if="inputChart.data.length"\n       translate>GRAPH.ACCOUNT.INPUT_CHART_TITLE</p>\n    <canvas id="chart-received-pie" class="chart-pie"\n            chart-data="inputChart.data"\n            chart-labels="inputChart.labels"\n            chart-colors="inputChart.colors"\n            chart-click="onInputChartClick">\n    </canvas>\n\n  </div>\n\n  <div class="col col-10 hidden-xs hidden-sm">&nbsp;</div>\n\n  <div class="col text-center">\n\n    <!-- TX output chart -->\n    <p class="gray padding text-wrap"\n       ng-if="outputChart.data.length"\n       translate>GRAPH.ACCOUNT.OUTPUT_CHART_TITLE</p>\n    <canvas id="chart-sent-pie" class="chart-pie"\n            chart-data="outputChart.data"\n            chart-labels="outputChart.labels"\n            chart-colors="outputChart.colors"\n            chart-click="onOutputChartClick">\n    </canvas>\n\n  </div>\n\n  <div class="col col-10 hidden-xs hidden-sm">&nbsp;</div>\n\n</div>\n');
-$templateCache.put('plugins/graph/templates/account/view_identity_tx_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'buttons\'">\n\n  <button class="button button-stable button-small-padding icon ion-stats-bars"\n          ui-sref="app.wot_identity_stats({pubkey: formData.pubkey})"\n          title="{{\'GRAPH.ACCOUNT.BTN_SHOW_STATS\' | translate}}">\n  </button>\n\n</ng-if>\n');
-$templateCache.put('plugins/graph/templates/account/view_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.ACCOUNT.TITLE\' | translate}}{{id}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="no-padding">\n\n\n\n    <div class="list" >\n\n      <!--  - - - - Balance - - - - -->\n      <ng-controller ng-controller="GpAccountBalanceCtrl">\n        <div class="center padding" ng-if="loading">\n          <ion-spinner icon="android"></ion-spinner>\n        </div>\n\n        <div class="item item-divider" ng-if="!loading" >\n          {{\'GRAPH.ACCOUNT.BALANCE_DIVIDER\'|translate}}\n          <ion-spinner ng-if="loadingRange" class="ion-spinner-small" icon="android"></ion-spinner>\n        </div>\n\n        <div class="item no-padding-xs"\n             ng-if="!loading"\n             ng-include="::\'plugins/graph/templates/account/graph_balance.html\'"\n             ng-init="setSize(350, 1000)">\n        </div>\n      </ng-controller>\n\n    </div>\n\n    <div class="item no-padding-xs"\n         ng-include="::\'plugins/graph/templates/account/graph_sum_tx.html\'"\n         ng-controller="GpAccountSumTxCtrl">\n    </div>\n\n    <!--  - - - - WOT - - - -\n    <div class="item item-divider" translate>\n      GRAPH.ACCOUNT.WOT_DIVIDER\n    </div>\n\n    <div class="item no-padding-xs"\n         ng-include="::\'plugins/graph/templates/account/graph_certifications.html\'"\n         ng-controller="GpAccountCertificationCtrl"\n         ng-init="setSize(350, 1000)">\n    </div>-->\n\n  </ion-content>\n\n</ion-view>\n');
-$templateCache.put('plugins/graph/templates/account/view_wallet_tx_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'buttons\'">\n\n  <button class="button button-stable button-small-padding icon ion-stats-bars"\n          ui-sref="app.wot_identity_stats({pubkey: formData.pubkey})"\n          title="{{\'GRAPH.ACCOUNT.BTN_SHOW_STATS\' | translate}}">\n  </button>\n\n</ng-if>\n');
-$templateCache.put('plugins/graph/templates/blockchain/graph_block_issuers.html','\n    <div class="row responsive-lg">\n\n      <!-- bar -->\n      <div class="col col-75">\n        <canvas id="bar" class="chart-bar"\n                height="{{height}}" width="{{width}}"\n                chart-data="data"\n                chart-labels="labels"\n                chart-colors="colors"\n                chart-options="barOptions"\n                chart-click="onChartClick">\n        </canvas>\n      </div>\n\n      <!-- pie -->\n      <div class="col col-25 padding-top">\n        <canvas id="blocksByIssuer-pie" class="chart-pie"\n                chart-data="data"\n                chart-labels="labels"\n                chart-colors="colors"\n                chart-click="onChartClick">\n        </canvas>\n\n        <div class="gray padding-top text-center">\n          <small ng-bind-html="\'GRAPH.BLOCKCHAIN.BLOCKS_ISSUERS_HELP\'| translate:{issuerCount: data.length, blockCount: blockCount }"></small>\n        </div>\n      </div>\n    </div>\n');
-$templateCache.put('plugins/graph/templates/blockchain/graph_tx_count.html','\n    <!-- button bar -->\n    <div class="button-bar-inline "\n         style="top: 33px; margin-top:-33px; position: relative;">\n      <button\n        class="button button-stable button-clear no-padding-xs pull-right"\n        ng-click="showActionsPopover($event)">\n        <i class="icon ion-navicon-round"></i>\n      </button>\n    </div>\n\n    <div class="padding-left padding-right">\n      <canvas id="tx-line" class="chart-bar"\n              height="{{height}}" width="{{width}}"\n              chart-data="data"\n              chart-dataset-override="datasetOverride"\n              chart-colors="colors"\n              chart-options="options"\n              chart-labels="labels"\n              chart-click="onChartClick">\n      </canvas>\n    </div>\n\n    <ng-include src="::\'plugins/graph/templates/common/graph_range_bar.html\'"></ng-include>\n');
-$templateCache.put('plugins/graph/templates/blockchain/view_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.BLOCKCHAIN.TITLE\' | translate}}{{id}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="no-padding">\n\n    <div class="center padding" ng-if="loading">\n      <ion-spinner icon="android"></ion-spinner>\n    </div>\n\n    <div class="list" ng-if="!loading">\n\n\n      <!-- TX count -->\n      <ng-controller ng-controller="GpBlockchainTxCountCtrl">\n        <div class="center padding" ng-if="loading">\n          <ion-spinner icon="android"></ion-spinner>\n        </div>\n\n        <div class="item item-divider" ng-if="!loading" >\n          {{\'GRAPH.BLOCKCHAIN.TX_DIVIDER\'|translate}}\n          <ion-spinner ng-if="loadingRange" class="ion-spinner-small" icon="android"></ion-spinner>\n        </div>\n\n        <div class="item no-padding-xs no-padding-sm"\n             ng-if="!loading"\n             ng-include="::\'plugins/graph/templates/blockchain/graph_tx_count.html\'"\n             ng-init="setSize(350, 1000)">\n        </div>\n      </ng-controller>\n\n\n      <!-- Blocks issuer -->\n      <ng-controller ng-controller="GpBlockchainIssuersCtrl">\n\n        <div class="item item-divider" ng-if="!loading" translate>GRAPH.BLOCKCHAIN.BLOCKS_ISSUERS_DIVIDER</div>\n\n        <div class="item no-padding-xs no-padding-sm"\n             ng-if="!loading"\n             ng-include="::\'plugins/graph/templates/blockchain/graph_block_issuers.html\'"\n             ng-init="setSize(300, 750)">\n        </div>\n\n      </ng-controller>\n\n  </ion-content>\n\n</ion-view>\n');
-$templateCache.put('plugins/graph/templates/common/graph_range_bar.html','\n  <div class="range range-positive no-padding-left no-padding-right">\n    <a\n      class="button button-stable button-clear no-padding pull-left"\n      ng-click="goPreviousRange($event)">\n      <i class="icon ion-chevron-left"></i>\n    </a>\n    <input type="range"\n           ng-model="formData.timePct"\n           name="timePct"\n           min="0" max="100"\n           value="{{formData.timePct}}"\n           ng-change="onRangeChanged();"\n           ng-model-options="{ debounce: 250 }">\n    <a\n      class="button button-stable button-clear no-padding pull-right"\n      ng-click="goNextRange($event)">\n      <i class="icon ion-chevron-right"></i>\n    </a>\n  </div>\n');
-$templateCache.put('plugins/graph/templates/common/popover_range_actions.html','<ion-popover-view class="has-header popover-graph-currency">\n  <ion-header-bar>\n    <h1 class="title" translate>COMMON.POPOVER_ACTIONS_TITLE</h1>\n  </ion-header-bar>\n  <ion-content scroll="false">\n    <div class="list item-text-wrap">\n\n      <!-- scale -->\n      <a class="item item-icon-left ink"\n         ng-click="toggleScale()">\n        <i class="icon ion-ios-checkmark-empty" ng-show="formData.scale==\'logarithmic\'"></i>\n        <span ng-bind-html="\'GRAPH.COMMON.LOGARITHMIC_SCALE\' | translate"></span>\n      </a>\n\n      <!-- duration divider -->\n      <div class="item item-divider">\n        {{\'GRAPH.COMMON.RANGE_DURATION_DIVIDER\'|translate}}\n      </div>\n\n      <!-- duration: hour -->\n      <a class="item item-icon-left ink"\n         ng-click="setRangeDuration(\'hour\')">\n        <i class="icon ion-ios-checkmark-empty" ng-show="formData.rangeDuration==\'hour\'"></i>\n        <span ng-bind-html="\'GRAPH.COMMON.RANGE_DURATION.HOUR\' | translate"></span>\n      </a>\n\n      <!-- duration: day -->\n      <a class="item item-icon-left ink"\n         ng-click="setRangeDuration(\'day\')">\n        <i class="icon ion-ios-checkmark-empty" ng-show="formData.rangeDuration==\'day\'"></i>\n        <span ng-bind-html="\'GRAPH.COMMON.RANGE_DURATION.DAY\' | translate"></span>\n      </a>\n\n      <!-- duration: month -->\n      <a class="item item-icon-left ink"\n         ng-click="setRangeDuration(\'month\')">\n        <i class="icon ion-ios-checkmark-empty" ng-show="formData.rangeDuration==\'month\'"></i>\n        <span ng-bind-html="\'GRAPH.COMMON.RANGE_DURATION.MONTH\' | translate"></span>\n      </a>\n\n    </div>\n  </ion-content>\n</ion-popover-view>\n');
-$templateCache.put('plugins/graph/templates/currency/graph_du.html','\n  <!-- graphs button bar -->\n  <div class="button-bar-inline "\n       style="top: 33px; margin-top:-33px; position: relative;">\n    <button\n      class="button button-stable button-clear no-padding-xs no-padding-sm pull-right"\n      ng-click="showActionsPopover($event)">\n      <i class="icon ion-navicon-round"></i>\n    </button>\n  </div>\n\n  <canvas id="monetaryMass-bar" class="chart-bar"\n          height="{{height}}"\n          width="{{width}}"\n          chart-data="data"\n          chart-labels="labels"\n          chart-colors="colors"\n          chart-dataset-override="datasetOverride"\n          chart-options="options"\n          chart-click="showBlock">\n  </canvas>\n');
-$templateCache.put('plugins/graph/templates/currency/graph_members_count.html','  <canvas id="membersCount-bar" class="chart-line"\n          height="{{height}}"\n          width="{{width}}"\n          chart-data="data"\n          chart-labels="labels"\n          chart-colors="colors"\n          chart-options="options"\n          chart-dataset-override="datasetOverride"\n          chart-click="onChartClick">\n  </canvas>\n');
-$templateCache.put('plugins/graph/templates/currency/graph_monetary_mass.html','\n  <!-- graphs button bar -->\n  <div class="button-bar-inline "\n       style="top: 33px; margin-top:-33px; position: relative;">\n    <button\n      class="button button-stable button-clear no-padding-xs pull-right"\n      ng-click="showActionsPopover($event)">\n      <i class="icon ion-navicon-round"></i>\n    </button>\n  </div>\n\n  <canvas id="monetaryMass-bar"\n          class="chart-bar"\n          height="{{height}}"\n          width="{{width}}"\n          chart-data="data"\n          chart-labels="labels"\n          chart-colors="colors"\n          chart-dataset-override="datasetOverride"\n          chart-options="options"\n          chart-click="onChartClick">\n  </canvas>\n');
-$templateCache.put('plugins/graph/templates/currency/popover_monetary_mass_actions.html','<ion-popover-view class="fit has-header">\n  <ion-header-bar>\n    <h1 class="title" translate>COMMON.POPOVER_ACTIONS_TITLE</h1>\n  </ion-header-bar>\n  <ion-content scroll="false">\n    <div class="list item-text-wrap">\n\n      <a class="item item-icon-left ink"\n         ng-click="toggleScale()">\n        <i class="icon ion-ios-checkmark-empty" ng-show="formData.scale==\'logarithmic\'"></i>\n        <span ng-bind-html="\'GRAPH.COMMON.LOGARITHMIC_SCALE\' | translate"></span>\n      </a>\n\n    </div>\n  </ion-content>\n</ion-popover-view>\n');
-$templateCache.put('plugins/graph/templates/currency/tab_blocks_extend.html','<!-- buttons -->\n<ng-if ng-if=":state:enable && extensionPoint === \'buttons\'">\n  <div class="item item-divider">\n    <a class="badge button button-text button-small button-small-padding ink" ui-sref="app.currency.tab_blocks_stats">\n      <i class="icon ion-stats-bars"></i>\n      <span translate>GRAPH.COMMON.BTN_SHOW_STATS</span>\n    </a>\n  </div>\n</ng-if>\n');
-$templateCache.put('plugins/graph/templates/currency/view_currency_extend.html','\n<!-- section actual parameters -->\n<ng-if ng-if=":state:enable && extensionPoint === \'parameters-actual\'" >\n\n  <ng-if ng-if="!smallscreen">\n    <div class="item padding-left padding-right no-padding-xs no-padding-sm"\n         ng-include="::\'plugins/graph/templates/currency/graph_monetary_mass.html\'"\n         ng-controller="GpCurrencyMonetaryMassCtrl"\n         ng-init="displayShareAxis=false;">\n    </div>\n    <div class="item buttons no-padding-top ">\n      <a class="pull-right button button-text button-small button-small-padding ink" ui-sref="app.currency_stats_lg">\n        <i class="icon ion-stats-bars"></i>\n        <span translate>GRAPH.COMMON.BTN_SHOW_DETAILED_STATS</span>\n      </a>\n    </div>\n  </ng-if>\n\n  <div class="item item-divider"\n       ng-if="smallscreen">\n    <a class="badge button button-text button-small button-small-padding ink" ui-sref="app.currency.tab_parameters_stats">\n      <i class="icon ion-stats-bars"></i>\n      <span translate>GRAPH.COMMON.BTN_SHOW_STATS</span>\n    </a>\n  </div>\n</ng-if>\n\n<!-- section Wot -->\n<ng-if ng-if=":state:enable && extensionPoint === \'wot-actual\'" >\n\n  <ng-if ng-if="!smallscreen">\n    <div class="item padding-left padding-right no-padding-xs no-padding-sm"\n         ng-include="::\'plugins/graph/templates/currency/graph_members_count.html\'"\n         ng-controller="GpCurrencyMembersCountCtrl">\n    </div>\n    <div class="item buttons no-padding-top ">\n      <a class="pull-right button button-text button-small button-small-padding ink" ui-sref="app.currency_stats_lg">\n        <i class="icon ion-stats-bars"></i>\n        <span translate>GRAPH.COMMON.BTN_SHOW_DETAILED_STATS</span>\n      </a>\n    </div>\n  </ng-if>\n\n  <div class="item item-divider"\n       ng-if="smallscreen">\n    <a class="badge button button-text button-small button-small-padding ink" ui-sref="app.currency.tab_wot_stats">\n      <i class="icon ion-stats-bars"></i>\n      <span translate>GRAPH.COMMON.BTN_SHOW_STATS</span>\n    </a>\n  </div>\n</ng-if>\n\n<!-- section Wot -->\n<ng-if ng-if=":state:enable && extensionPoint === \'network-actual\'" >\n\n  <div class="item padding-left padding-right no-padding-xs no-padding-sm"\n       ng-if="!smallscreen"\n       ng-include="::\'plugins/graph/templates/blockchain/graph_block_issuers.html\'"\n       ng-controller="GpBlockchainIssuersCtrl">\n  </div>\n\n  <div class="item item-divider"\n       ng-if="smallscreen">\n    <a class="badge button button-text button-small button-small-padding ink" ui-sref="app.currency.tab_network_stats">\n      <i class="icon ion-stats-bars"></i>\n      <span translate>GRAPH.COMMON.BTN_SHOW_STATS</span>\n    </a>\n  </div>\n</ng-if>\n\n');
-$templateCache.put('plugins/graph/templates/currency/view_stats_lg.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.BLOCKCHAIN.TITLE\' | translate}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="padding" >\n\n\n\n    <div class="list" >\n\n      <!-- Monetary mass -->\n      <ng-controller ng-controller="GpCurrencyMonetaryMassCtrl" >\n\n        <div class="center padding" ng-if="loading">\n          <ion-spinner icon="android"></ion-spinner>\n        </div>\n\n        <div class="item no-padding-xs" ng-if="!loading"\n             ng-include="::\'plugins/graph/templates/currency/graph_monetary_mass.html\'"\n             ng-init="setSize(250, 1000)">\n        </div>\n\n        <div ng-if="!loading"\n             class="item item-toggle dark no-border text-right">\n          <span class="" translate>COMMON.BTN_RELATIVE_UNIT</span>\n          <label class="toggle toggle-royal" id="helptip-currency-change-unit">\n            <input type="checkbox" ng-model="formData.useRelative">\n            <div class="track">\n              <div class="handle"></div>\n            </div>\n          </label>\n        </div>\n      </ng-controller>\n\n      <!-- DU -->\n      <ng-controller ng-controller="GpCurrencyDUCtrl" >\n        <div class="item no-padding-xs"\n             ng-if="!loading"\n             ng-include="::\'plugins/graph/templates/currency/graph_du.html\'"\n             ng-init="setSize(250, 1000)">\n        </div>\n      </ng-controller>\n\n      <!-- Member count  -->\n      <ng-controller ng-controller="GpCurrencyMembersCountCtrl" >\n      <div class="item no-padding-xs"\n           ng-if="!loading"\n           ng-include="::\'plugins/graph/templates/currency/graph_members_count.html\'"\n           ng-init="setSize(250, 1000)">\n      </div>\n\n\n    </div>\n\n  </ion-content>\n\n</ion-view>\n');
-$templateCache.put('plugins/graph/templates/currency/view_wot_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n\n  <ion-content scroll="true" >\n\n    <div class="center padding" ng-if="loading">\n      <ion-spinner icon="android"></ion-spinner>\n    </div>\n\n    <ng-include\n      ng-if="!loading"\n      src="\'plugins/graph/templates/currency/graph_members_count.html\'" ></ng-include>\n  </ion-content>\n  </ion-view>\n');
-$templateCache.put('plugins/graph/templates/docstats/graph.html','\n  <!-- graphs button bar -->\n  <div class="button-bar-inline "\n       style="top: 33px; margin-top:-33px; position: relative;">\n    <button\n      class="button button-stable button-clear no-padding-xs no-padding-sm pull-right"\n      ng-click="showActionsPopover($event)">\n      <i class="icon ion-navicon-round"></i>\n    </button>\n  </div>\n\n  <canvas id="{{::chartIdPrefix}}{{chart.id}}"\n          class="chart-line"\n          height="{{height}}"\n          width="{{width}}"\n          chart-data="chart.data"\n          chart-labels="labels"\n          chart-dataset-override="chart.datasetOverride"\n          chart-options="chart.options"\n          chart-click="onChartClick">\n  </canvas>\n\n  <ng-include src="::\'plugins/graph/templates/common/graph_range_bar.html\'"></ng-include>\n');
-$templateCache.put('plugins/graph/templates/docstats/view_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.DOC_STATS.TITLE\' | translate}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="padding" >\n\n    <div class="list" >\n\n      <!-- Doc stat -->\n      <div class="center padding" ng-if="loading">\n        <ion-spinner icon="android"></ion-spinner>\n      </div>\n\n      <div class="item no-padding-xs no-padding-sm" ng-if="!loading"\n           ng-repeat="chart in charts"\n           ng-include="::\'plugins/graph/templates/docstats/graph.html\'"\n           ng-init="setSize(250, 1000)">\n      </div>\n\n    </div>\n\n  </ion-content>\n\n</ion-view>\n');
-$templateCache.put('plugins/graph/templates/network/view_es_network_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'documents-buttons\'">\n  <a class="button button-text button-small ink"\n     ui-sref="app.doc_stats_lg" >\n    <i class="icon ion-stats-bars"></i>\n    <span>{{\'NETWORK.VIEW.BTN_GRAPH\'|translate}}</span>\n  </a>\n</ng-if>\n');
-$templateCache.put('plugins/graph/templates/network/view_es_peer_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'general\'">\n\n  <a class="item item-icon-left item-icon-right item-text-wrap ink"\n     ng-if="isReachable"\n     ui-sref="app.doc_stats_lg(node)">\n    <i class="icon ion-stats-bars"></i>\n    <span translate>GRAPH.DOC_STATS.TITLE</span>\n    <i class="gray icon ion-ios-arrow-right"></i>\n  </a>\n\n  <a class="item item-icon-left item-icon-right item-text-wrap ink"\n     ng-if="isReachable"\n     ui-sref="app.doc_synchro_lg(node)">\n    <i class="icon ion-stats-bars"></i>\n    <span translate>GRAPH.SYNCHRO.TITLE</span>\n    <i class="gray icon ion-ios-arrow-right"></i>\n  </a>\n</ng-if>\n\n');
-$templateCache.put('plugins/graph/templates/network/view_network_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'blockchain-buttons\'">\n  <a class="button button-text button-small ink"\n     ui-sref="app.blockchain_stats" >\n    <i class="icon ion-stats-bars"></i>\n    <span>{{\'NETWORK.VIEW.BTN_GRAPH\'|translate}}</span>\n  </a>\n</ng-if>\n');
-$templateCache.put('plugins/graph/templates/network/view_peer_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'general\'">\n\n  <a class="item item-icon-left item-icon-right item-text-wrap ink"\n    ui-sref="app.view_peer_stats({pubkey: node.pubkey})">\n    <i class="icon ion-stats-bars"></i>\n    <span translate>GRAPH.PEER.VIEW.BLOCK_COUNT_LABEL</span>\n    <span class="badge"\n          ng-if="!loading"\n          ng-class="{\'badge-stable\': blockCount > 0, \'badge-assertive\': !blockCount}">\n      {{!blockCount ? \'GRAPH.PEER.VIEW.NO_BLOCK\' : \'GRAPH.PEER.VIEW.BLOCK_COUNT\' | translate:{count: blockCount} }}\n    </span>\n    <ion-spinner class="badge" icon="android" ng-if="loading"></ion-spinner>\n    <i class="gray icon ion-ios-arrow-right"></i>\n  </a>\n</ng-if>\n\n');
-$templateCache.put('plugins/graph/templates/network/view_peer_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.BLOCKCHAIN.TITLE\' | translate}}{{id}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="no-padding">\n\n    <div class="center padding" ng-if="loading">\n      <ion-spinner icon="android"></ion-spinner>\n    </div>\n\n    <div class="list" ng-if="!loading">\n\n      <!--  - - - - TX divider - - - - -->\n      <div class="item item-divider hidden-xs hidden-sm" translate>\n        GRAPH.BLOCKCHAIN.TX_DIVIDER\n      </div>\n\n      <div class="item no-padding-xs"\n           ng-include="::\'plugins/graph/templates/blockchain/graph_tx_count.html\'"\n           ng-init="setSize(350, 1000)">\n      </div>\n\n  </ion-content>\n\n</ion-view>\n');
-$templateCache.put('plugins/graph/templates/synchro/graph.html','\n  <!-- graphs button bar -->\n  <div class="button-bar-inline "\n       style="top: 33px; margin-top:-33px; position: relative;">\n    <button\n      class="button button-stable button-clear no-padding-xs pull-right"\n      ng-click="showActionsPopover($event)">\n      <i class="icon ion-navicon-round"></i>\n    </button>\n  </div>\n\n  <canvas id="synchro-chart-{{chart.id}}"\n          class="chart-bar"\n          height="{{height}}"\n          width="{{width}}"\n          chart-data="chart.data"\n          chart-labels="labels"\n          chart-dataset-override="chart.datasetOverride"\n          chart-options="chart.options">\n  </canvas>\n\n  <ng-include src="::\'plugins/graph/templates/common/graph_range_bar.html\'"></ng-include>\n');
-$templateCache.put('plugins/graph/templates/synchro/view_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.SYNCHRO.TITLE\' | translate}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="padding" >\n\n    <div class="list" >\n\n      <div class="center padding" ng-if="loading">\n        <ion-spinner icon="android"></ion-spinner>\n      </div>\n\n      <div class="item no-padding-xs" ng-if="!loading"\n           ng-repeat="chart in charts"\n           ng-include="::\'plugins/graph/templates/synchro/graph.html\'"\n           ng-init="setSize(250, 1000)">\n      </div>\n\n    </div>\n\n  </ion-content>\n\n</ion-view>\n');
 $templateCache.put('plugins/es/templates/blockchain/items_blocks.html','<div class="padding gray" ng-if=":rebind:!search.loading && !search.results.length" translate="">COMMON.SEARCH_NO_RESULT</div><ng-if ng-if=":rebind:!smallscreen"><ng-repeat ng-repeat="block in :rebind:search.results track by block.number" ng-include="!block.empty ? \'templates/blockchain/item_block_lg.html\' : \'templates/blockchain/item_block_empty_lg.html\'"></ng-repeat></ng-if><ng-if ng-if=":rebind:smallscreen"><ng-repeat ng-repeat="block in :rebind:search.results track by block.number" ng-include="::\'templates/blockchain/item_block.html\'"></ng-repeat></ng-if>');
 $templateCache.put('plugins/es/templates/blockchain/lookup.html','<ion-view><ion-nav-title><span translate>BLOCKCHAIN.LOOKUP.TITLE</span></ion-nav-title><ion-nav-buttons side="secondary"><button class="button button-icon button-clear icon ion-navicon visible-xs visible-sm" ng-click="toggleCompactMode()"><b class="icon-secondary" ng-class="{\'ion-arrow-down-b\': !compactMode, \'ion-arrow-up-b\': compactMode}" style="top: -12px; left: 11px; font-size: 10px"></b> <b class="icon-secondary" ng-class="{\'ion-arrow-up-b\': !compactMode,\'ion-arrow-down-b\': compactMode}" style="top: 12px; left: 11px; font-size: 10px"></b></button> <button class="button button-icon button-clear icon ion-android-more-vertical visible-xs visible-sm" ng-click="showActionsPopover($event)"></button></ion-nav-buttons><ion-content class="padding no-padding-xs no-padding-sm" scroll="true"><ng-include src="::\'plugins/es/templates/blockchain/lookup_form.html\'"></ng-include></ion-content></ion-view>');
 $templateCache.put('plugins/es/templates/blockchain/lookup_form.html','<div class="lookupForm"><div class="item no-padding"><div class="button button-small button-text button-stable button-icon-event padding no-padding-right ink" ng-repeat="filter in search.filters" ng-if="filter"><span ng-bind-html="\'BLOCKCHAIN.LOOKUP.TX_SEARCH_FILTER.\'+filter.type|translate:filter"></span> <i class="icon ion-close" ng-click="itemRemove($index)"></i></div><label class="item-input"><i class="icon ion-search placeholder-icon"></i> <input type="text" class="visible-xs visible-sm" placeholder="{{\'BLOCKCHAIN.LOOKUP.SEARCH_HELP\'|translate}}" ng-model="search.text" ng-model-options="{ debounce: 650 }" ng-change="doSearchText()"><div class="helptip-anchor-center"><a id="helptip-blockchain-search-text"></a></div></label></div><div class="padding-top padding-xs" style="display: block; height: 60px"><div class="pull-left"><h4 ng-if="search.type==\'last\'" translate="">BLOCKCHAIN.LOOKUP.LAST_BLOCKS</h4><h4 ng-if="search.type==\'text\'">{{\'COMMON.RESULTS_LIST\'|translate}}</h4><h5 class="dark" ng-if="!search.loading && search.total"><span translate="COMMON.RESULTS_COUNT" translate-values="{count: search.total}"></span> <small class="gray" ng-if=":rebind:search.took && expertMode">- {{:rebind:\'COMMON.EXECUTION_TIME\'|translate: {duration: search.took} }} </small><small class="gray" ng-if=":rebind:expertMode && search.filters && search.filters.length">- <a ng-click="toggleShowQuery()" ng-if="!showQuery">{{\'DOCUMENT.LOOKUP.SHOW_QUERY\'|translate }} <i class="icon ion-arrow-down-b gray"></i> </a><a ng-click="toggleShowQuery()" ng-if="showQuery">{{\'DOCUMENT.LOOKUP.HIDE_QUERY\'|translate }} <i class="icon ion-arrow-up-b gray"></i></a></small></h5><h5 class="gray" ng-if="search.loading"><ion-spinner class="icon ion-spinner-small" icon="android"></ion-spinner><span translate="">COMMON.SEARCHING</span><br></h5></div></div><div class="item no-border no-padding" ng-if=":rebind:search.filters && search.filters.length && expertMode"><small class="no-padding no-margin" ng-if="showQuery"><span class="gray text-wrap dark">{{:rebind:search.query}}</span></small></div><ion-list class="list list-blocks" ng-class="::motion.ionListClass"><ng-include src="::\'plugins/es/templates/blockchain/items_blocks.html\'"></ng-include></ion-list><ion-infinite-scroll ng-if="search.hasMore" spinner="android" on-infinite="showMore()" distance="1%"></ion-infinite-scroll></div>');
@@ -32237,13 +32209,13 @@ $templateCache.put('plugins/es/templates/group/lookup_item.html','<i class="item
 $templateCache.put('plugins/es/templates/group/modal_record_type.html','<ion-modal-view><ion-header-bar class="bar-positive"><button class="button button-clear" ng-click="closeModal()" translate>COMMON.BTN_CANCEL</button><h1 class="title" translate>GROUP.TYPE.TITLE</h1></ion-header-bar><ion-content class="lookupForm padding"><h3 translate>GROUP.TYPE.SELECT_TYPE</h3><div class="list"><div class="item item-complex card stable-bg item-icon-left ink" ng-click="closeModal(\'open\')"><div class="item-content item-text-wrap"><i class="item-image icon ion-android-people dark"></i><h2 translate>GROUP.TYPE.OPEN_GROUP</h2><h4 class="gray" translate>GROUP.TYPE.OPEN_GROUP_HELP</h4></div></div><div class="item item-complex card stable-bg item-icon-left ink" ng-click="closeModal(\'managed\')"><div class="item-content item-text-wrap"><i class="item-image icon ion-android-people dark"></i> <i class="icon-secondary ion-android-lock dark" style="left: 10px; top: -8px"></i><h2 translate>GROUP.TYPE.MANAGED_GROUP</h2><h4 class="gray" translate>GROUP.TYPE.MANAGED_GROUP_HELP</h4></div></div></div></ion-content></ion-modal-view>');
 $templateCache.put('plugins/es/templates/group/view_popover_actions.html','<ion-popover-view class="fit has-header"><ion-header-bar><h1 class="title" translate>GROUP.VIEW.MENU_TITLE</h1></ion-header-bar><ion-content scroll="false"><div class="list item-text-wrap"><a class="item item-icon-left ink" ng-click="showSharePopover($event)"><i class="icon ion-android-share-alt"></i> {{\'COMMON.BTN_SHARE\' | translate}}</a></div></ion-content></ion-popover-view>');
 $templateCache.put('plugins/es/templates/group/view_record.html','<ion-view left-buttons="leftButtons"><ion-nav-title></ion-nav-title><ion-nav-buttons side="secondary"><button class="button button-bar button-icon button-clear visible-xs visible-sm" ng-click="edit()" ng-if="canEdit"><i class="icon ion-android-create"></i></button> <button class="button button-bar button-icon button-clear icon ion-android-more-vertical visible-xs visible-sm" ng-click="showActionsPopover($event)"></button></ion-nav-buttons><ion-content scroll="true"><div class="positive-900-bg hero"><div class="content" ng-if="!loading"><i class="avatar cion-registry-{{formData.type}}" ng-if="!formData.avatar"></i> <i class="avatar" style="background-image: url({{::formData.avatar.src}})" ng-if="formData.avatar"></i><h3 ng-bind-html="formData.title"></h3><h4>&nbsp;</h4></div><h4 class="content light" ng-if="loading"><ion-spinner icon="android"></ion-spinner></h4></div><div class="row no-padding-xs no-padding-sm"><div class="col list item-text-wrap no-padding-xs no-padding-sm" ng-class="::motion.ionListClass"><div class="item"><h2 class="gray"><a ng-if="formData.city" ui-sref="app.groups({location:formData.city})"><i class="icon ion-location"></i> <span ng-bind-html="formData.city"></span> </a><span ng-if="formData.city && formData.type">&nbsp;|&nbsp;</span> <a ng-if="formData.type" ui-sref="app.groups({type:formData.type})"><i class="icon ion-flag"></i> {{\'GROUP.TYPE.ENUM.\'+formData.type|upper|translate}}</a></h2><h4><i class="icon ion-clock" ng-if="formData.time"></i> <span translate="">COMMON.SUBMIT_BY</span> <a ng-class="{\'positive\': issuer.uid, \'gray\': !issuer.uid}" ui-sref="app.wot_identity({pubkey:issuer.pubkey, uid: issuer.name||issuer.uid})"><ng-if ng-if="issuer.uid"><i class="icon ion-person"></i> {{::issuer.name||issuer.uid}}</ng-if><span ng-if="!issuer.uid"><i class="icon ion-key"></i> {{issuer.pubkey|formatPubkey}} </span></a><span>{{formData.time|formatFromNow}}<h4 class="gray hidden-xs">| {{formData.time | formatDate}}</h4></span></h4></div><a id="group-share-anchor-{{id}}"></a><ion-item><h2><span trust-as-html="formData.description"></span></h2></ion-item><ion-item><h4 ng-if="formData.address"><span class="gray" translate="">REGISTRY.VIEW.LOCATION</span> <a class="positive" target="_blank" href="https://www.google.fr/maps/?q={{formData.address}},%20{{formData.city}}"><span ng-bind-html="formData.address"></span> <span ng-if="formData.city">- </span><span ng-bind-html="formData.city"></span></a></h4></ion-item><ng-if ng-if="formData.socials && formData.socials.length>0"><ion-item class="item-icon-left" type="no-padding item-text-wrap" ng-repeat="social in formData.socials track by social.url" id="social-{{social.url|formatSlug}}"><i class="icon ion-social-{{social.type}}" ng-class="{\'ion-bookmark\': social.type == \'other\', \'ion-link\': social.type == \'web\', \'ion-email\': social.type == \'email\'}"></i><p ng-if="social.type && social.type != \'web\'">{{social.type}}</p><h2><a href="{{social.url}}" ng-if="social.type != \'email\'" target="_blank">{{social.url}}</a> <a href="mailto:{{social.url}}" ng-if="social.type == \'email\'">{{social.url}}</a></h2></ion-item></ng-if><div class="lazy-load"><ng-include src="::\'plugins/es/templates/common/view_pictures.html\'"></ng-include><span class="item item-divider" ng-if="formData.pubkey"><span translate="">REGISTRY.TECHNICAL_DIVIDER</span></span><div class="item item-icon-left item-text-wrap ink" ng-if="formData.pubkey" copy-on-click="{{::formData.pubkey}}"><i class="icon ion-key"></i> <span translate="">REGISTRY.EDIT.RECORD_PUBKEY</span><h4 class="dark">{{::formData.pubkey}}</h4></div><ng-include src="::\'plugins/es/templates/common/view_comments.html\'"></ng-include></div></div></div></ion-content><button class="button button-fab button-fab-bottom-right button-assertive icon ion-android-send visible-xs visible-sm" ng-if="formData.pubkey && !isUserPubkey(formData.pubkey)" ng-click="showTransferModal({pubkey: formData.pubkey, uid: formData.title})"></button></ion-view>');
+$templateCache.put('plugins/es/templates/join/modal_join_extend.html','<ng-if ng-if=":state:enable && extensionPoint === \'select-account-type\'"><div class="item item-complex card stable-bg item-icon-left item-icon-right ink" ng-class="{ activated: accountTypeMember != null && !accountTypeMember }" ng-click="selectAccountType(\'organization\')"><div class="item-content item-text-wrap"><i class="item-image icon dark cion-registry-association"></i><h2 translate>ACCOUNT.NEW.ORGANIZATION_ACCOUNT</h2><h4 class="gray" translate>ACCOUNT.NEW.ORGANIZATION_ACCOUNT_HELP</h4><i class="icon dark ion-ios-arrow-right"></i></div></div></ng-if><ng-if ng-if=":state:enable && extensionPoint === \'last-slide\'"><ion-slide-page><ion-content class="has-header" scroll="false"><p>TOTO</p></ion-content></ion-slide-page></ng-if>');
 $templateCache.put('plugins/es/templates/invitation/list_invitation.html','<ion-list class="{{::motion.ionListClass}}"><ion-item ng-repeat="invitation in search.results" class="item-border-large item-text-wrap item-avatar"><i ng-if="::!invitation.avatar" class="item-image icon {{::invitation.avatarIcon}}"></i> <i ng-if="::invitation.avatar" class="item-image avatar" style="background-image: url({{::invitation.avatar.src}})"></i><h3 trust-as-html="invitation.message | translate:invitation"></h3><h3 class="dark text-italic" ng-if="invitation.comment"><i class="icon ion-quote"></i> <span ng-bind-html="invitation.comment"></span></h3><h4><i class="icon {{::invitation.icon}}"></i> <span class="dark" ng-if="::invitation.issuer" trust-as-html="\'INVITATION.SUGGESTED_BY\' | translate:invitation"></span> <span class="dark">{{::invitation.time|formatFromNow}}</span> <span class="gray">| {{::invitation.time|formatDate}}</span></h4><div class="block text-right"><button class="button button-positive button-small button-small-padding" ng-click="accept(invitation)" ng-if="::invitation.state" translate>{{::(invitation.okText||\'COMMON.BTN_SHOW\') |translate}}</button> <button class="button button-stable button-small button-small-padding" ng-click="delete($index)" translate>INVITATION.BTN_DELETE</button></div></ion-item></ion-list><ion-infinite-scroll ng-if="!search.loading && search.hasMore" spinner="android" on-infinite="showMore()" distance="1%"></ion-infinite-scroll>');
 $templateCache.put('plugins/es/templates/invitation/modal_new_invitation.html','<ion-modal-view id="transfer" class="modal-invitation modal-full-height"><ion-header-bar class="bar-positive"><button class="button button-clear visible-xs" ng-click="closeModal()" translate>COMMON.BTN_CANCEL</button><h1 class="title" translate>INVITATION.NEW.TITLE</h1><button class="button button-icon button-clear icon ion-android-send visible-xs" ng-click="doSend()"></button></ion-header-bar><ion-content scroll="true"><ng-include src="::\'plugins/es/templates/invitation/new_invitation_form.html\'"></ng-include></ion-content></ion-modal-view>');
 $templateCache.put('plugins/es/templates/invitation/new_invitation_form.html','<form name="invitationForm" novalidate="" ng-submit="doSend()"><div class="list" ng-init="setForm(invitationForm)"><a class="item item-icon-right gray ink" ng-class="{\'disable-pointer-events\': recipients.length, \'item-input-error\': form.$submitted && !recipients.length}" ng-click="showSelectRecipientModal($event)"><span class="gray" translate="">INVITATION.NEW.RECIPIENTS</span> <span class="item-note"><span class="hidden-xs" ng-if="!recipients.length" translate="">INVITATION.NEW.RECIPIENTS_HELP</span><ng-repeat ng-repeat="identity in recipients track by identity.id" class="button button-small button-text button-stable button-icon-event ink" ng-class="{\'button-text-positive\': identity.selected}"><ng-bind-html ng-bind-html="identity.name||identity.uid||(identity.pubkey|formatPubkey)"></ng-bind-html><b class="enable-pointer-events ion-close" ng-click="removeRecipient($index, $event)">&nbsp;&nbsp;</b></ng-repeat></span><i class="gray icon enable-pointer-events ion-ios-arrow-right"></i></a><div class="form-errors" ng-if="form.$submitted && !recipients.length"><div class="form-error"><span translate="ERROR.FIELD_REQUIRED"></span></div></div><a class="item item-icon-right gray ink" ng-class="{\'disable-pointer-events\': suggestions.length, \'item-input-error\': form.$submitted && !suggestions.length}" ng-click="showSelectSuggestionModal($event)"><span class="gray enable-pointer-events" translate="">INVITATION.NEW.SUGGESTION_IDENTITIES</span> <span class="item-note"><span class="hidden-xs" ng-if="!suggestions.length" translate="">INVITATION.NEW.SUGGESTION_IDENTITIES_HELP</span><ng-repeat ng-repeat="identity in suggestions track by identity.id" class="button button-small button-text button-stable button-icon-event ink" ng-class="{\'button-text-positive\': identity.selected}"><ng-bind-html ng-bind-html="identity.name||identity.uid||(identity.pubkey|formatPubkey)"></ng-bind-html><b class="enable-pointer-events ion-close" ng-click="removeSuggestion($index, $event)">&nbsp;&nbsp;</b></ng-repeat></span><i class="gray icon enable-pointer-events ion-ios-arrow-right"></i></a><div class="form-errors" ng-if="form.$submitted && !suggestions.length"><div class="form-error"><span translate="ERROR.FIELD_REQUIRED"></span></div></div><div class="item item-content item-toggle dark visible-xs visible-sm"><span class="input-label gray">{{\'TRANSFER.BTN_ADD_COMMENT\' | translate}}</span><label class="toggle toggle-royal"><input type="checkbox" ng-model="formData.useComment"><div class="track"><div class="handle"></div></div></label></div><label class="item item-input item-floating-label visible-xs visible-sm" ng-if="formData.useComment" ng-class="{\'item-input-error\': form.$submitted && form.comment.$invalid}"><span class="input-label">{{\'TRANSFER.COMMENT\' | translate}}</span><textarea placeholder="{{\'TRANSFER.COMMENT_HELP\' | translate}}" name="comment" ng-model="formData.comment" ng-maxlength="255">\n        </textarea></label><div class="form-errors" ng-show="form.$submitted && form.comment.$error" ng-messages="form.comment.$error"><div class="form-error" ng-message="maxlength"><span translate="ERROR.FIELD_TOO_LONG"></span></div><div class="form-error" ng-message="pattern"><span translate="ERROR.FIELD_ACCENT"></span></div></div></div><div class="padding hidden-xs text-right"><button class="button button-clear button-dark ink" tabindex="-1" ng-click="cancel()" type="button" translate="">COMMON.BTN_CANCEL</button> <button class="button button-positive ink" tabindex="8" type="submit" translate="">TRANSFER.BTN_SEND</button></div></form>');
 $templateCache.put('plugins/es/templates/invitation/popover_actions.html','<ion-popover-view class="fit has-header"><ion-header-bar><h1 class="title" translate>COMMON.POPOVER_ACTIONS_TITLE</h1></ion-header-bar><ion-content scroll="false"><div class="list item-text-wrap"><a class="item item-icon-left ink" ng-class="{\'gray\': !search.results.length, \'assertive\': search.results.length}" ng-click="deleteAll()"><i class="icon ion-trash-a"></i> <span translate>INVITATION.BTN_DELETE_ALL</span></a></div></ion-content></ion-popover-view>');
 $templateCache.put('plugins/es/templates/invitation/popover_invitation.html','');
 $templateCache.put('plugins/es/templates/invitation/view_invitations.html','<ion-view left-buttons="leftButtons" class="view-invitation"><ion-nav-title>{{\'INVITATION.LIST.TITLE\' | translate}}</ion-nav-title><ion-content class="padding no-padding-xs no-padding-sm" scroll="true"><div class="row no-padding"><div class="col no-padding-xs no-padding-sm"><div class="center padding" ng-if="search.loading"><ion-spinner icon="android"></ion-spinner></div><div class="padding gray" ng-if="!search.loading && !search.results.length" translate="">INVITATION.NO_RESULT</div><ng-include src="::\'plugins/es/templates/invitation/list_invitation.html\'"></ng-include></div></div></ion-content><button id="fab-new-invitation" class="button button-fab button-fab-bottom-right button-assertive icon ion-android-send visible-xs visible-sm spin" ng-click="showNewInvitationModal()"></button></ion-view>');
-$templateCache.put('plugins/es/templates/join/modal_join_extend.html','<ng-if ng-if=":state:enable && extensionPoint === \'select-account-type\'"><div class="item item-complex card stable-bg item-icon-left item-icon-right ink" ng-class="{ activated: accountTypeMember != null && !accountTypeMember }" ng-click="selectAccountType(\'organization\')"><div class="item-content item-text-wrap"><i class="item-image icon dark cion-registry-association"></i><h2 translate>ACCOUNT.NEW.ORGANIZATION_ACCOUNT</h2><h4 class="gray" translate>ACCOUNT.NEW.ORGANIZATION_ACCOUNT_HELP</h4><i class="icon dark ion-ios-arrow-right"></i></div></div></ng-if><ng-if ng-if=":state:enable && extensionPoint === \'last-slide\'"><ion-slide-page><ion-content class="has-header" scroll="false"><p>TOTO</p></ion-content></ion-slide-page></ng-if>');
 $templateCache.put('plugins/es/templates/message/compose.html','<ion-view left-buttons="leftButtons" id="composeMessage"><ion-nav-title><span class="visible-xs visible-sm" nf-if="!isReply" translate="">MESSAGE.COMPOSE.TITLE</span> <span class="visible-xs visible-sm" nf-if="isReply" translate="">MESSAGE.COMPOSE.TITLE_REPLY</span></ion-nav-title><ion-nav-buttons side="secondary"><button class="button button-icon button-clear icon ion-android-send visible-xs" ng-click="doSend()"></button></ion-nav-buttons><ion-content scroll="true"><div class="row"><div class="col"><ng-include src="::\'plugins/es/templates/message/compose_form.html\'"></ng-include></div></div></ion-content></ion-view>');
 $templateCache.put('plugins/es/templates/message/compose_form.html','<form name="messageForm" novalidate="" ng-submit="doSend()"><div class="list no-margin" ng-init="setForm(messageForm)"><a class="item item-icon-right gray ink" ng-class="{\'item-input-error\': form.$submitted && !formData.destPub}" ng-click="showWotLookupModal()"><span class="gray" translate>MESSAGE.COMPOSE.TO</span> <span class="badge badge-royal" ng-if="destUid"><i class="ion-person"></i> {{destName||destUid}}</span>&nbsp; <span class="badge badge-stable" ng-if="!destUid && destPub">{{destName}} <span ng-if="!destName"><i class="ion-key"></i>{{destPub | formatPubkey}}</span> </span>&nbsp; <i class="gray icon ion-ios-arrow-right"></i></a><div class="form-errors" ng-if="form.$submitted && !formData.destPub"><div class="form-error"><span translate="ERROR.FIELD_REQUIRED"></span></div></div><ion-item class="item-text-wrap ink" ng-class="{\'item-icon-right\': enableSelectWallet}" ng-click="showSelectWalletModal()"><span class="gray" translate>TRANSFER.FROM</span> <span class="badge badge-balanced animate-fade-in animate-show-hide" ng-show="!loading"><ion-spinner icon="android" ng-if="!walletData.pubkey"></ion-spinner><span ng-if="walletData.pubkey && !walletData.isMember"><i class="ion-key"></i> {{walletData.pubkey| formatPubkey}}&nbsp;&nbsp; </span><span ng-if="walletData.isMember"><i class="ion-person"></i> {{walletData.name||walletData.uid}} </span></span><i class="gray icon ion-ios-arrow-right" ng-if="enableSelectWallet"></i></ion-item><div class="item item-input" ng-class="{\'item-input-error\': form.$submitted && form.title.$invalid}"><input type="text" autocomplete="off" placeholder="{{\'MESSAGE.COMPOSE.OBJECT_HELP\' | translate}}" name="title" ng-model="formData.title" ng-maxlength="256" required> <span class="badge item-note" ng-if="isReply">({{\'MESSAGE.COMPOSE.OBJECT\' | translate}})</span></div><div class="form-errors" ng-show="form.$submitted && form.title.$error" ng-messages="form.title.$error"><div class="form-error" ng-message="maxlength"><span translate="MESSAGE.ERROR.MESSAGE_CONTENT_TOO_LONG" translate-values="{maxLength: 256}"></span></div><div class="form-error" ng-message="required"><span translate="ERROR.FIELD_REQUIRED"></span></div></div><div class="item item-input item-floating-label" ng-class="{\'item-input-error\': form.$submitted && form.content.$invalid}"><span class="input-label">{{\'MESSAGE.COMPOSE.MESSAGE\' | translate}}</span><textarea placeholder="{{\'MESSAGE.COMPOSE.MESSAGE_HELP\' | translate}}" autocomplete="off" name="content" ng-model="formData.content" rows="8" ng-maxlength="5000">\n        </textarea></div><div class="form-errors" ng-show="form.$submitted && form.content.$error" ng-messages="form.content.$error"><div class="form-error" ng-message="maxlength"><span translate="MESSAGE.ERROR.MESSAGE_CONTENT_TOO_LONG" translate-values="{maxLength: 5000}"></span></div></div></div><div class="padding hidden-xs text-right"><button class="button button-clear button-dark ink" ng-click="cancel()" type="button" translate>COMMON.BTN_CANCEL</button> <button class="button button-positive ink" type="submit" ng-disabled="sending" translate>TRANSFER.BTN_SEND</button></div><div class="list no-margin"><div class="item item-icon-left item-text-wrap"><i class="icon ion-ios-information-outline positive"></i><h4 class="positive" translate>MESSAGE.COMPOSE.ENCRYPTED_HELP</h4></div></div></form>');
 $templateCache.put('plugins/es/templates/message/list.html','<div class="padding gray" ng-if="!search.loading && !search.results.length"><span ng-if="search.type==\'last\'">{{ (\'MESSAGE.NO_MESSAGE_\' + type) | upper | translate }}</span> <span ng-if="search.type==\'text\'" translate="">COMMON.SEARCH_NO_RESULT</span></div><ion-list class="{{::motion.ionListClass}}" can-swipe="$root.device.enable"><ion-item class="item item-border-large item-avatar item-icon-right ink" ng-repeat="msg in :rebind:search.results track by msg.id" ng-click="select(msg, $event)"><i ng-if="::!msg.avatar" class="item-image icon" ng-class="{\'ion-person\': msg.uid, \'ion-email\': !msg.uid}"></i> <i ng-if="::msg.avatar" class="item-image avatar" style="background-image: url({{::msg.avatar.src}})"></i><h4 class="pull-right visible-xs visible-sm dark"><i class="ion-clock"></i> {{::msg.time|formatFromNow}}</h4><h3><a class="positive" ng-if="::msg.name||msg.uid" ui-sref="app.wot_identity({pubkey:msg.issuer, uid:msg.name||msg.uid})"><i class="ion-person"></i> {{::msg.name||msg.uid}} </a><a class="gray" ng-if="::!msg.name && !msg.uid" ui-sref="app.wot_identity({pubkey:msg.issuer})"><i class="ion-key"></i> {{::msg.issuer|formatPubkey}}</a></h3><h2 ng-class="{\'unread\': !msg.read}" ng-bind-html="::msg.title"></h2><p ng-bind-html="::msg.summary||msg.content"></p><i class="icon ion-ios-arrow-right"></i><ion-option-button class="button-stable" ng-click="showReplyModal($index)" translate="">MESSAGE.BTN_REPLY</ion-option-button><ion-option-button class="button-assertive" ng-click="delete($index)" translate="">COMMON.BTN_DELETE</ion-option-button></ion-item></ion-list><ion-infinite-scroll ng-if="!search.loading && search.hasMore" icon="ion-loading-c" on-infinite="showMore()" distance="10%"></ion-infinite-scroll>');
@@ -32255,6 +32227,10 @@ $templateCache.put('plugins/es/templates/message/modal_compose.html','<ion-modal
 $templateCache.put('plugins/es/templates/message/popover_message.html','');
 $templateCache.put('plugins/es/templates/message/view_message.html','<ion-view left-buttons="leftButtons" class="view-message"><ion-nav-title><span translate="">MESSAGE.VIEW.TITLE</span></ion-nav-title><ion-nav-buttons side="secondary"><button class="button button-icon button-clear icon ion-android-more-vertical visible-xs visible-sm" ng-click="showActionsPopover($event)"></button></ion-nav-buttons><ion-content scroll="true"><div class="row no-padding"><div class="col no-padding"><div class="center padding" ng-if="loading"><ion-spinner icon="android"></ion-spinner></div><div class="list animate-fade-slide-in item-text-wrap"><div class="item item-avatar" ng-class="{\'item-avatar\': formData.avatar}"><i ng-if="!formData.avatar" class="item-image" ng-class="{\'ion-person\': formData.uid, \'ion-email\': !formData.uid}"></i> <i ng-if="formData.avatar" class="item-image avatar" style="background-image: url({{::formData.avatar.src}})"></i><h4>{{type == \'inbox\' ? \'MESSAGE.VIEW.SENDER\': \'MESSAGE.VIEW.RECIPIENT\'|translate}} <a class="positive" ui-sref="app.wot_identity({pubkey: (type == \'inbox\') ? formData.issuer : formData.recipient, uid: formData.name||formData.uid})"><span ng-if="formData.uid"><i class="ion-person"></i> {{formData.name||formData.uid}} </span><span ng-if="!formData.uid" class="gray"><i class="ion-key gray"></i> {{formData.name||(formData.issuer|formatPubkey)}}</span></a></h4><h5 class="gray visible-xs visible-sm"><i class="ion-clock"></i> {{formData.time | formatDate}}</h5></div><ion-item class="visible-xs visible-sm"><h1 class="title" ng-bind-html="formData.title"></h1></ion-item><ion-item><p ng-bind-html="formData.html"></p><div class="padding gray" ng-if="!formData.content" translate="">MESSAGE.VIEW.NO_CONTENT</div></ion-item></div></div></div></ion-content><button id="fab-view-message-reply" class="button button-fab button-fab-bottom-right button-calm icon ion-reply visible-xs visible-sm spin" ng-click="showReplyModal()"></button></ion-view>');
 $templateCache.put('plugins/es/templates/message/view_popover_actions.html','<ion-popover-view class="fit has-header"><ion-header-bar><h1 class="title" translate>COMMON.POPOVER_ACTIONS_TITLE</h1></ion-header-bar><ion-content scroll="false"><div class="list item-text-wrap"><a class="item item-icon-left assertive ink" ng-click="delete()"><i class="icon ion-trash-a"></i> {{\'MESSAGE.VIEW.DELETE\' | translate}}</a></div></ion-content></ion-popover-view>');
+$templateCache.put('plugins/es/templates/notification/list_notification.html','<ion-list class="{{::motion.ionListClass}}"><ion-item ng-repeat="notification in search.results track by notification.id" class="item-border-large item-text-wrap ink item-avatar" ng-class="{\'unread\': !notification.read}" ng-click="select($event, notification)"><i ng-if="!notification.avatar" class="item-image icon {{::notification.avatarIcon}}"></i> <i ng-if="notification.avatar" class="item-image avatar" style="background-image: url({{::notification.avatar.src}})"></i><h3 trust-as-html="notification.message | translate:(notification.messageParams||notification)"></h3><h4 ng-if="!notification.medianTime"><i class="icon {{notification.icon}}"></i>&thinsp;<span class="dark">{{notification.time|formatFromNow}}</span> <span class="gray">| {{notification.time|formatDate}}</span></h4><h4 ng-if="notification.medianTime"><i class="icon {{notification.icon}}"></i>&thinsp;<span class="dark">{{notification.medianTime|medianFromNow}}</span> <span class="gray">| {{notification.medianTime|medianDate}}</span></h4></ion-item></ion-list><ion-infinite-scroll ng-if="!search.loading && search.hasMore" spinner="android" on-infinite="showMore()" distance="1%"></ion-infinite-scroll>');
+$templateCache.put('plugins/es/templates/notification/popover_actions.html','<ion-popover-view class="fit has-header"><ion-header-bar><h1 class="title" translate>COMMON.POPOVER_ACTIONS_TITLE</h1></ion-header-bar><ion-content scroll="false"><div class="list item-text-wrap"><a class="item item-icon-left ink" ng-disabled="!search.results.length" ng-click="markAllAsRead()"><i class="icon ion-android-checkmark-circle"></i> {{\'COMMON.NOTIFICATIONS.MARK_ALL_AS_READ\' | translate}}</a></div></ion-content></ion-popover-view>');
+$templateCache.put('plugins/es/templates/notification/popover_notification.html','');
+$templateCache.put('plugins/es/templates/notification/view_notifications.html','<ion-view left-buttons="leftButtons" class="view-notification"><ion-nav-title>{{\'COMMON.NOTIFICATIONS.TITLE\' | translate}}</ion-nav-title><ion-nav-buttons side="secondary"><button class="button button-icon button-clear icon ion-android-more-vertical visible-xs visible-sm" ng-click="showActionsPopover($event)"></button></ion-nav-buttons><ion-content scroll="true"><ion-refresher pulling-text="{{\'COMMON.BTN_REFRESH\' | translate}}" on-refresh="refresh(true)"></ion-refresher><div class="row no-padding"><div class="col no-padding-xs no-padding-sm"><div class="center padding" ng-if="search.loading"><ion-spinner icon="android"></ion-spinner></div><div class="padding gray" ng-if="!search.loading && !search.results.length" translate="">COMMON.NOTIFICATIONS.NO_RESULT</div><ng-include src="::\'plugins/es/templates/notification/list_notification.html\'"></ng-include></div></div></ion-content></ion-view>');
 $templateCache.put('plugins/es/templates/network/item_content_peer.html','<i class="icon ion-android-desktop" ng-class=":rebind:{\'balanced\': peer.online && peer.hasMainConsensusBlock, \'energized\': peer.online && peer.hasConsensusBlock, \'gray\': peer.online && !peer.hasConsensusBlock && !peer.hasMainConsensusBlock, \'stable\': !peer.online}" ng-if=":rebind:!peer.avatar"></i> <b class="icon-secondary ion-person" ng-if=":rebind:!peer.avatar" ng-class=":rebind:{\'balanced\': peer.online && peer.hasMainConsensusBlock, \'energized\': peer.online && peer.hasConsensusBlock, \'gray\': peer.online && !peer.hasConsensusBlock && !peer.hasMainConsensusBlock, \'stable\': !peer.online}" style="left: 26px; top: -3px"></b> <i class="avatar" ng-if=":rebind:peer.avatar" style="background-image: url(\'{{:rebind:peer.avatar.src}}\')"></i> <b class="icon-secondary assertive ion-close-circled" ng-if=":rebind:!peer.online" style="left: 37px; top: -10px"></b><div class="row no-padding"><div class="col no-padding"><h3 class="dark">{{:rebind:peer.dns || peer.server}}</h3><h4><span class="gray" ng-if=":rebind:!peer.name"><i class="ion-key"></i> {{:rebind:peer.pubkey|formatPubkey}} </span><span class="positive" ng-if=":rebind:peer.name"><i class="ion-person"></i> {{:rebind:peer.name}} </span><span class="gray">{{:rebind:peer.dns && (\' | \' + peer.server) + (peer.ep.path||\'\') }}</span></h4></div><div class="col col-20 no-padding text-center" ng-if="::!expertMode && search.type != \'offline\'"><div style="min-width: 50px; padding-top: 5px" ng-if=":rebind:peer.docCount.emailSubscription!==undefined"><span ng-if=":rebind:peer.hasEndpoint(\'ES_SUBSCRIPTION_API\')" title="{{\'ES_PEER.EMAIL_SUBSCRIPTION_COUNT\'|translate: peer.docCount }}"><i class="ion-email"></i> {{:rebind:peer.docCount.emailSubscription || \'?\'}}</span></div></div><div class="col col-20 no-padding text-center" ng-if="::expertMode && search.type != \'offline\'"></div><div class="col col-20 no-padding text-center" id="{{$index === 0 ? helptipPrefix + \'-peer-0-block\' : \'\'}}"><span class="badge badge-stable">{{:rebind:peer.docCount.record !== undefined ? (peer.docCount.record|formatInteger) : \'?\'}} <span ng-if=":rebind:!expertMode && peer.docCount.record!==undefined">{{::\'ES_PEER.DOCUMENTS\'|translate|lowercase }} </span></span><span class="badge badge-secondary" ng-class=":rebind:{\'balanced\': peer.hasMainConsensusBlock, \'energized\': peer.hasConsensusBlock, \'ng-hide\': !peer.currentNumber }" ng-if="::expertMode">{{:rebind:\'BLOCKCHAIN.VIEW.TITLE\'|translate: {number:peer.currentNumber} }}</span></div></div>');
 $templateCache.put('plugins/es/templates/network/items_peers.html','<div ng-class="::motion.ionListClass" class="no-padding"><div class="item item-text-wrap no-border done in gray no-padding-top no-padding-bottom inline text-italic" ng-if="::isHttps && expertMode"><small><i class="icon ion-alert-circled"></i> {{::\'NETWORK.INFO.ONLY_SSL_PEERS\'|translate}}</small></div><div ng-repeat="peer in :rebind:search.results track by peer.id" class="item item-peer item-icon-left ink" ng-class="::ionItemClass" id="{{helptipPrefix}}-peer-{{$index}}" ng-click="selectPeer(peer)" ng-include="::\'plugins/es/templates/network/item_content_peer.html\'"></div></div>');
 $templateCache.put('plugins/es/templates/network/lookup_popover_actions.html','<ion-popover-view class="fit has-header"><ion-header-bar><h1 class="title" translate>PEER.POPOVER_FILTER_TITLE</h1></ion-header-bar><ion-content scroll="false"><div class="list item-text-wrap"><a class="item item-icon-left item-icon-right ink" ng-click="toggleSearchType(\'member\')"><i class="icon ion-person"></i> {{\'PEER.MEMBERS\' | translate}} <i class="icon ion-ios-checkmark-empty" ng-show="search.type==\'member\'"></i> </a><a class="item item-icon-left item-icon-right ink" ng-click="toggleSearchType(\'mirror\')"><i class="icon ion-radio-waves"></i> {{\'PEER.MIRRORS\' | translate}} <i class="icon ion-ios-checkmark-empty" ng-show="search.type==\'mirror\'"></i> </a><a class="item item-icon-left item-icon-right ink" ng-click="toggleSearchType(\'offline\')"><i class="icon ion-eye-disabled"></i> {{\'PEER.OFFLINE\' | translate}} <i class="icon ion-ios-checkmark-empty" ng-show="search.type==\'offline\'"></i></a></div></ion-content></ion-popover-view>');
@@ -32265,10 +32241,6 @@ $templateCache.put('plugins/es/templates/network/popover_peer_info.html','');
 $templateCache.put('plugins/es/templates/network/view_es_network.html','<ion-view><ion-nav-title><span translate="">MENU.NETWORK</span>&nbsp; <span translate="">ES_SETTINGS.PLUGIN_NAME</span></ion-nav-title><ion-nav-buttons side="secondary"><button class="button button-icon button-clear icon ion-loop visible-xs visible-sm" ng-click="refresh()"></button></ion-nav-buttons><ion-content scroll="true" ng-init="enableFilter=true; ionItemClass=\'item-border-large\';"><div class="row responsive-sm responsive-md responsive-lg"><div class="col list col-border-right"><div class="padding padding-xs" style="display: block; height: 60px"><div class="pull-left"><h4><span ng-if="enableFilter && !search.online" translate="">PEER.OFFLINE_PEERS</span> <span ng-if="!enableFilter || search.online" translate="">PEER.ALL_PEERS</span> <span ng-if="search.results.length">({{search.results.length}})</span><ion-spinner ng-if="search.loading" class="icon ion-spinner-small" icon="android"></ion-spinner></h4></div><div class="pull-right"><div class="pull-right" ng-if="enableFilter"><cs-extension-point name="filter-buttons"></cs-extension-point></div></div></div><div id="helptip-network-peers" style="display: block"></div><ng-include src="::\'plugins/es/templates/network/items_peers.html\'"></ng-include></div><div class="col col-33" ng-controller="ESLastDocumentsCtrl"><div class="padding padding-xs" style="display: block"><h4 translate="">DOCUMENT.LOOKUP.LAST_DOCUMENTS_DOTS</h4></div><ng-include src="::\'plugins/es/templates/document/list_documents.html\'"></ng-include></div></div></ion-content></ion-view>');
 $templateCache.put('plugins/es/templates/network/view_es_peer.html','<ion-view><ion-nav-title><span translate="">PEER.VIEW.TITLE</span>&nbsp; <span translate="">ES_SETTINGS.PLUGIN_NAME</span></ion-nav-title><ion-content><div class="row no-padding"><div class="col list"><ion-item><h1><span translate="">PEER.VIEW.TITLE</span> <span class="gray">{{node.host}}</span></h1><h2 class="gray"><i class="gray icon ion-android-globe"></i> {{node.ep.dns || node.server}} <span class="gray" ng-if="!loading && node.useSsl"><i class="gray ion-locked"></i> <small>SSL</small> </span><span class="gray" ng-if="!loading && node.useTor"><i class="gray ion-bma-tor-api"></i></span></h2><h3><span class="dark"><i class="icon ion-android-desktop"></i> {{\'PEER.VIEW.OWNER\'|translate}} </span><a class="positive" ng-if="node.name" ui-sref="app.wot_identity({pubkey: node.pubkey, uid: node.name})"><i class="ion-person"></i> {{node.name}} </a><span ng-if="!loading && !node.name"><a class="gray" ui-sref="app.wot_identity({pubkey: node.pubkey})"><i class="ion-key"></i> {{node.pubkey|formatPubkey}}</a></span></h3><h3><a ng-click="openRawPeering($event)"><i class="icon ion-share"></i> {{\'PEER.VIEW.SHOW_RAW_PEERING\'|translate}} </a><span class="gray" ng-if="!isReachable">| </span><a ng-if="!isReachable" ng-click="openRawCurrentBlock($event)"><i class="icon ion-share"></i> <span translate="">PEER.VIEW.SHOW_RAW_CURRENT_BLOCK</span></a></h3></ion-item><div class="item item-divider" translate="">PEER.VIEW.GENERAL_DIVIDER</div><ion-item class="item-icon-left item-text-wrap ink" copy-on-click="{{node.pubkey}}"><i class="icon ion-key"></i> <span translate="">COMMON.PUBKEY</span><h4 class="dark text-left">{{node.pubkey}}</h4></ion-item><ion-item class="item item-icon-left item-text-wrap ink" ng-if="isReachable"><i class="icon ion-cube"></i> <span translate="">BLOCKCHAIN.VIEW.TITLE_CURRENT</span><div class="badge badge-calm" ng-if="!loading">{{current.number|formatInteger}}</div></ion-item><ion-item class="item item-icon-left item-text-wrap" ng-if="isReachable"><i class="icon ion-document"></i> <span translate="">ES_PEER.DOCUMENT_COUNT</span><div class="badge badge-stable" ng-if="!loading">{{node.docCount|formatInteger}}</div></ion-item><a class="item item-icon-left item-icon-right item-text-wrap ink" ng-if="isReachable" ui-sref="app.document_search(options.document)"><i class="icon ion-document" style="font-size: 25px"></i> <i class="icon-secondary ion-clock" style="font-size: 18px; left: 33px; top: -12px"></i> <span translate="">DOCUMENT.LOOKUP.LAST_DOCUMENTS</span> <i class="gray icon ion-ios-arrow-right"></i></a><cs-extension-point name="general"></cs-extension-point><div class="item item-divider" ng-hide="loading || !isReachable" translate="">PEER.VIEW.KNOWN_PEERS</div><ion-item class="item item-text-wrap no-border done in gray no-padding-top no-padding-bottom inline text-italic" ng-show="!loading && !isReachable"><small><i class="icon ion-alert-circled"></i> {{\'NETWORK.INFO.ONLY_SSL_PEERS\'|translate}}</small></ion-item><div class="item center" ng-if="loading"><ion-spinner class="icon" icon="android"></ion-spinner></div><div class="list no-padding {{::motion.ionListClass}}" ng-if="isReachable"><div ng-repeat="peer in :rebind:peers track by peer.id" class="item item-peer item-icon-left ink" ng-class="::ionItemClass" ng-click="selectPeer(peer)" ng-include="::\'plugins/es/templates/network/item_content_peer.html\'"></div></div></div></div></ion-content></ion-view>');
 $templateCache.put('plugins/es/templates/network/view_network_extend.html','<ng-if ng-if=":state:enable && extensionPoint === \'network-buttons\'"></ng-if><ng-if ng-if=":state:enable && extensionPoint === \'blockchain-buttons\'"><a class="button button-text button-small ink" ui-sref="app.blockchain_search"><i class="icon ion-android-search"></i> <span>{{\'COMMON.BTN_SEARCH\'|translate}}</span></a></ng-if>');
-$templateCache.put('plugins/es/templates/notification/list_notification.html','<ion-list class="{{::motion.ionListClass}}"><ion-item ng-repeat="notification in search.results track by notification.id" class="item-border-large item-text-wrap ink item-avatar" ng-class="{\'unread\': !notification.read}" ng-click="select($event, notification)"><i ng-if="!notification.avatar" class="item-image icon {{::notification.avatarIcon}}"></i> <i ng-if="notification.avatar" class="item-image avatar" style="background-image: url({{::notification.avatar.src}})"></i><h3 trust-as-html="notification.message | translate:(notification.messageParams||notification)"></h3><h4 ng-if="!notification.medianTime"><i class="icon {{notification.icon}}"></i>&thinsp;<span class="dark">{{notification.time|formatFromNow}}</span> <span class="gray">| {{notification.time|formatDate}}</span></h4><h4 ng-if="notification.medianTime"><i class="icon {{notification.icon}}"></i>&thinsp;<span class="dark">{{notification.medianTime|medianFromNow}}</span> <span class="gray">| {{notification.medianTime|medianDate}}</span></h4></ion-item></ion-list><ion-infinite-scroll ng-if="!search.loading && search.hasMore" spinner="android" on-infinite="showMore()" distance="1%"></ion-infinite-scroll>');
-$templateCache.put('plugins/es/templates/notification/popover_actions.html','<ion-popover-view class="fit has-header"><ion-header-bar><h1 class="title" translate>COMMON.POPOVER_ACTIONS_TITLE</h1></ion-header-bar><ion-content scroll="false"><div class="list item-text-wrap"><a class="item item-icon-left ink" ng-disabled="!search.results.length" ng-click="markAllAsRead()"><i class="icon ion-android-checkmark-circle"></i> {{\'COMMON.NOTIFICATIONS.MARK_ALL_AS_READ\' | translate}}</a></div></ion-content></ion-popover-view>');
-$templateCache.put('plugins/es/templates/notification/popover_notification.html','');
-$templateCache.put('plugins/es/templates/notification/view_notifications.html','<ion-view left-buttons="leftButtons" class="view-notification"><ion-nav-title>{{\'COMMON.NOTIFICATIONS.TITLE\' | translate}}</ion-nav-title><ion-nav-buttons side="secondary"><button class="button button-icon button-clear icon ion-android-more-vertical visible-xs visible-sm" ng-click="showActionsPopover($event)"></button></ion-nav-buttons><ion-content scroll="true"><ion-refresher pulling-text="{{\'COMMON.BTN_REFRESH\' | translate}}" on-refresh="refresh(true)"></ion-refresher><div class="row no-padding"><div class="col no-padding-xs no-padding-sm"><div class="center padding" ng-if="search.loading"><ion-spinner icon="android"></ion-spinner></div><div class="padding gray" ng-if="!search.loading && !search.results.length" translate="">COMMON.NOTIFICATIONS.NO_RESULT</div><ng-include src="::\'plugins/es/templates/notification/list_notification.html\'"></ng-include></div></div></ion-content></ion-view>');
 $templateCache.put('plugins/es/templates/registry/edit_record.html','<ion-view left-buttons="leftButtons" class="view-page"><ion-nav-title><span class="visible-xs" ng-if="id" ng-bind-html="formData.title"></span> <span class="visible-xs" ng-if="!loading && !id" translate="">REGISTRY.EDIT.TITLE_NEW</span></ion-nav-title><ion-nav-buttons side="secondary"><button class="button button-icon button-clear visible-xs visible-sm" ng-class="{\'ion-android-send\':!id, \'ion-android-done\': id}" ng-click="save()"></button></ion-nav-buttons><ion-content scroll="true"><div class="hero"><div class="content"><i class="avatar" ng-class="avatarClass" ng-style="avatarStyle"><button class="button button-positive button-large button-clear flat icon ion-camera visible-xs visible-sm" style="display: inline-block" ng-click="showAvatarModal()"></button> <button ng-if="avatar.src" class="button button-positive button-large button-clear flat visible-xs visible-sm" style="display: inline-block; left: 85px; bottom:15px" ng-click="rotateAvatar()"><i class="icon-secondary ion-image" style="left: 24px; top: 3px; font-size: 24px"></i> <i class="icon-secondary ion-forward" style="left: 26px; top: -13px"></i></button></i><h3 class="dark"><span ng-if="!loading && formData.title">{{formData.title}}</span> <span ng-if="!loading && !id && !formData.title" translate="">REGISTRY.EDIT.TITLE_NEW</span></h3><h4 class="dark"><ion-spinner ng-if="loading" icon="android"></ion-spinner></h4></div></div><div class="row no-padding"><div class="col no-padding-xs no-padding-sm"><form name="recordForm" novalidate="" ng-submit="save()"><div class="list {{::motion.ionListClass}}" ng-init="setForm(recordForm)"><div class="item" ng-if="id"><h4 class="gray"><i class="icon ion-calendar"></i> {{\'COMMON.LAST_MODIFICATION_DATE\'|translate}}&nbsp;{{formData.time | formatDate}}</h4><div class="badge badge-balanced badge-editable" ng-click="showRecordTypeModal()">{{\'REGISTRY.TYPE.ENUM.\'+formData.type|upper|translate}}</div></div><ng-include src="::\'plugins/es/templates/common/edit_pictures.html\'"></ng-include><div class="item item-divider" translate="">REGISTRY.GENERAL_DIVIDER</div><div class="item item-input item-floating-label" ng-class="{\'item-input-error\': form.$submitted && form.title.$invalid}"><span class="input-label" translate="">REGISTRY.EDIT.RECORD_TITLE</span> <input type="text" placeholder="{{\'REGISTRY.EDIT.RECORD_TITLE_HELP\'|translate}}" name="title" id="registry-record-title" ng-model="formData.title" ng-minlength="3" ng-required="true"></div><div class="form-errors" ng-if="form.$submitted && form.title.$error" ng-messages="form.title.$error"><div class="form-error" ng-message="required"><span translate="ERROR.FIELD_REQUIRED"></span></div><div class="form-error" ng-message="minlength"><span translate="ERROR.FIELD_TOO_SHORT"></span></div></div><div class="item item-input item-floating-label"><span class="input-label" translate="">REGISTRY.EDIT.RECORD_DESCRIPTION</span><textarea placeholder="{{\'REGISTRY.EDIT.RECORD_DESCRIPTION_HELP\'|translate}}" ng-model="formData.description" rows="8" cols="10">\n                </textarea></div><div class="item item-icon-right ink" ng-if="loading || formData.type===\'company\' || formData.type===\'shop\'" ng-class="{\'item-input-error\': form.$submitted && !formData.category.id, \'done in\': !loading}" ng-click="showCategoryModal()"><span translate="">REGISTRY.CATEGORY</span> <span class="badge badge-royal">{{formData.category.name | formatCategory}}</span>&nbsp; <i class="gray icon ion-ios-arrow-right"></i></div><input type="hidden" name="category" ng-model="formData.category.id" required-if="formData.type==\'company\' || formData.type==\'shop\'"><div class="form-errors" ng-if="form.$submitted && form.category.$error" ng-messages="form.category.$error"><div class="form-error" ng-message="required"><span translate="ERROR.FIELD_REQUIRED"></span></div></div><ng-include src="::\'plugins/es/templates/common/edit_position.html\'" ng-controller="ESPositionEditCtrl as ctrl"></ng-include><ng-include src="::\'plugins/es/templates/common/edit_socials.html\'" ng-controller="ESSocialsEditCtrl"></ng-include><div class="item item-divider" translate="">REGISTRY.TECHNICAL_DIVIDER</div><div class="item item-input item-floating-label"><span class="input-label" translate="">REGISTRY.EDIT.RECORD_PUBKEY</span> <input type="text" placeholder="{{\'REGISTRY.EDIT.RECORD_PUBKEY_HELP\'|translate}}" ng-model="formData.pubkey"></div></div></form></div></div></ion-content></ion-view>');
 $templateCache.put('plugins/es/templates/registry/lookup_form.html','<form ng-submit="doSearch()"><div class="item no-padding"><div class="item-input"><i class="icon ion-search placeholder-icon"></i> <input type="text" class="visible-xs visible-sm" placeholder="{{\'REGISTRY.SEARCH.SEARCH_HELP\'|translate}}" ng-model="search.text" ng-model-options="{ debounce: 650 }" ng-change="doSearch()" on-return="doSearchText()" select-on-click=""></div></div><ng-include src="::\'plugins/es/templates/common/item_location_search.html\'" ng-if="entered && options.location.show && (!search.geoPoint || smallscreen)" ng-controller="ESSearchPositionItemCtrl"></ng-include><ng-include src="::\'plugins/es/templates/registry/lookup_form_options.html\'"></ng-include></form><div class="padding-top padding-xs padding-sm" style="display: block; height: 60px"><div class="pull-left ng-hide" ng-show="!search.loading && search.results"><ng-if ng-if="search.lastRecords"><h4 translate="">REGISTRY.SEARCH.LAST_RECORDS</h4><small class="gray no-padding" ng-if="search.total"><span ng-if="search.geoPoint && search.total">{{\'REGISTRY.SEARCH.LAST_RECORD_COUNT_LOCATION\'|translate:{count: search.total, location: search.location} }}</span> <span ng-if="!search.geoPoint && search.total">{{\'REGISTRY.SEARCH.LAST_RECORD_COUNT\'|translate:{count: search.total} }}</span></small></ng-if><ng-if ng-if="!search.lastRecords"><h4 translate="">COMMON.RESULTS_LIST</h4><small class="gray no-padding" ng-if="search.total"><span ng-if="search.geoPoint && search.total">{{\'REGISTRY.SEARCH.RESULT_COUNT_LOCATION\'|translate:{count: search.total, location: search.location} }}</span> <span ng-if="!search.geoPoint && search.total">{{\'REGISTRY.SEARCH.RESULT_COUNT\'|translate:{count: search.total} }}</span></small></ng-if></div></div><div class="center" ng-if="search.loading"><ion-spinner icon="android"></ion-spinner></div><div class="padding assertive" ng-if="!search.loading && search.results.length===0" translate="">COMMON.SEARCH_NO_RESULT</div>');
 $templateCache.put('plugins/es/templates/registry/lookup_form_options.html','<div class="item item-icon-left item-input item-select stable-bg" ng-if="search.advanced && options.location.show"><i class="icon ion-arrow-resize gray"></i> <span class="input-label item-icon-left-padding" translate="">LOCATION.DISTANCE</span><label><select ng-model="search.geoDistance" class="col-border-left" ng-options="i as (geoDistanceLabels[i].labelKey | translate:geoDistanceLabels[i].labelParams ) for i in geoDistances track by i"></select></label></div>');
@@ -32299,6 +32271,34 @@ $templateCache.put('plugins/es/templates/wot/popover_certification_actions.html'
 $templateCache.put('plugins/es/templates/wot/view_certifications_extend.html','<ng-if ng-if=":state:enable && extensionPoint === \'nav-buttons\'"><button class="button button-icon button-clear icon ion-android-more-vertical visible-xs visible-sm" ng-click="showCertificationActionsPopover($event)"></button></ng-if><ng-if ng-if=":state:enable && extensionPoint === \'buttons\'"><button class="button button-stable button-small-padding icon ion-android-more-vertical" ng-click="showCertificationActionsPopover($event)" title="{{\'COMMON.POPOVER_ACTIONS_TITLE\' | translate}}"></button></ng-if>');
 $templateCache.put('plugins/es/templates/wot/view_identity_extend.html','<ng-if ng-if=":state:enable && extensionPoint === \'hero\'"><small class="light" style="display: inline-block" ng-include="::\'plugins/es/templates/common/view_likes.html\'"></small></ng-if><ng-if ng-if=":state:enable && extensionPoint === \'buttons-top-fab\'"><button id="fab-compose-{{:rebind:formData.pubkey}}" class="button button-fab button-fab-top-left button-fab-hero mini button-stable spin" style="left: 88px" ng-click="showNewMessageModal()"><i class="icon ion-email"></i></button></ng-if><ng-if ng-if=":state:enable && extensionPoint === \'buttons\'"><button class="button button-stable button-small-padding icon ion-email" ng-disabled="loading" ng-click="showNewMessageModal()" title="{{\'MESSAGE.BTN_WRITE\' | translate}}"></button></ng-if><ng-if ng-if=":state:enable && extensionPoint === \'after-buttons\'"><button class="button button-stable button-small-padding icon ion-android-more-vertical" ng-click="showActionsPopover($event)"></button></ng-if><ng-if ng-if=":state:enable && extensionPoint === \'after-general\'"><span class="item item-divider item-divider-top-border"><span>{{\'PROFILE.PROFILE_DIVIDER\' | translate}} <a style="font-size: 12pt; cursor: pointer" ng-click="showProfileHelp=!showProfileHelp" class="icon positive ion-ios-help-outline ink" title="{{\'PROFILE.PROFILE_DIVIDER_HELP\' | translate}}"></a></span></span><div class="item item-text-wrap positive item-small-height" ng-show="showProfileHelp"><small translate>PROFILE.PROFILE_DIVIDER_HELP</small></div><ng-include src="::\'plugins/es/templates/user/items_profile.html\'" ng-init="showName=false;"></ng-include></ng-if>');
 $templateCache.put('plugins/es/templates/wot/view_popover_actions.html','<ion-popover-view class="fit has-header"><ion-header-bar><h1 class="title" translate>COMMON.POPOVER_ACTIONS_TITLE</h1></ion-header-bar><ion-content scroll="false"><div class="list item-text-wrap"><a class="item item-icon-left ink visible-xs visible-sm" ng-click="showSharePopover($event)"><i class="icon ion-android-share-alt"></i> {{\'COMMON.BTN_SHARE\' | translate}} </a><a class="item item-icon-left assertive ink" ng-if="canDelete" ng-click="delete()"><i class="icon ion-trash-a"></i> {{\'COMMON.BTN_DELETE\' | translate}} </a><a class="item item-icon-left ink" ng-if="!canEdit && likeData.likes" ng-click="hideActionsPopover() && toggleLike($event)"><i class="icon" ng-class="{\'ion-heart-broken\': likeData.likes.wasHit, \'ion-heart\': !likeData.likes.wasHit}"></i> {{(likeData.likes.wasHit ? \'COMMON.BTN_LIKE_REMOVE\' : \'COMMON.BTN_LIKE\' )| translate}} </a><a class="item item-icon-left ink" ng-if="!canEdit && likeData.abuses" ng-disabled="!!likeData.abuses.wasHitCount" ng-class="{\'gray\': !!likeData.abuses.wasHitCount}" ng-click="hideActionsPopover() && reportAbuse($event)"><i class="icon ion-android-warning"></i> {{\'COMMON.BTN_REPORT_ABUSE_DOTS\' | translate}}</a></div></ion-content></ion-popover-view>');
+$templateCache.put('plugins/graph/templates/account/graph_balance.html','\n    <!-- button bar -->\n    <div class="button-bar-inline "\n         style="top: 33px; margin-top:-33px; position: relative;">\n      <button\n        class="button button-stable button-clear no-padding-xs pull-right"\n        ng-click="showActionsPopover($event)">\n        <i class="icon ion-navicon-round"></i>\n      </button>\n    </div>\n\n    <div class="padding-left padding-right">\n      <canvas id="account-balance" class="chart-bar"\n              height="{{height}}" width="{{width}}"\n              chart-data="data"\n              chart-dataset-override="datasetOverride"\n              chart-colors="colors"\n              chart-options="options"\n              chart-labels="labels"\n              chart-click="onChartClick">\n      </canvas>\n    </div>\n\n    <ng-include src="::\'plugins/graph/templates/common/graph_range_bar.html\'"></ng-include>\n');
+$templateCache.put('plugins/graph/templates/account/graph_certifications.html','\n    <div class="padding-left padding-right">\n      <canvas id="account-certifications" class="chart-bar"\n              height="{{height}}" width="{{width}}"\n              chart-data="data"\n              chart-dataset-override="datasetOverride"\n              chart-colors="colors"\n              chart-options="options"\n              chart-labels="labels"\n              chart-click="onChartClick">\n      </canvas>\n    </div>\n');
+$templateCache.put('plugins/graph/templates/account/graph_sum_tx.html','<div class="row responsive-sm" ng-if="!loading">\n\n  <div class="col col-10 hidden-xs hidden-sm">&nbsp;</div>\n\n  <div class="col text-center">\n\n    <!-- TX input chart -->\n    <p class="gray padding text-wrap"\n       ng-if="inputChart.data.length"\n       translate>GRAPH.ACCOUNT.INPUT_CHART_TITLE</p>\n    <canvas id="chart-received-pie" class="chart-pie"\n            chart-data="inputChart.data"\n            chart-labels="inputChart.labels"\n            chart-colors="inputChart.colors"\n            chart-click="onInputChartClick">\n    </canvas>\n\n  </div>\n\n  <div class="col col-10 hidden-xs hidden-sm">&nbsp;</div>\n\n  <div class="col text-center">\n\n    <!-- TX output chart -->\n    <p class="gray padding text-wrap"\n       ng-if="outputChart.data.length"\n       translate>GRAPH.ACCOUNT.OUTPUT_CHART_TITLE</p>\n    <canvas id="chart-sent-pie" class="chart-pie"\n            chart-data="outputChart.data"\n            chart-labels="outputChart.labels"\n            chart-colors="outputChart.colors"\n            chart-click="onOutputChartClick">\n    </canvas>\n\n  </div>\n\n  <div class="col col-10 hidden-xs hidden-sm">&nbsp;</div>\n\n</div>\n');
+$templateCache.put('plugins/graph/templates/account/view_identity_tx_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'buttons\'">\n\n  <button class="button button-stable button-small-padding icon ion-stats-bars"\n          ui-sref="app.wot_identity_stats({pubkey: formData.pubkey})"\n          title="{{\'GRAPH.ACCOUNT.BTN_SHOW_STATS\' | translate}}">\n  </button>\n\n</ng-if>\n');
+$templateCache.put('plugins/graph/templates/account/view_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.ACCOUNT.TITLE\' | translate}}{{id}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="no-padding">\n\n\n\n    <div class="list" >\n\n      <!--  - - - - Balance - - - - -->\n      <ng-controller ng-controller="GpAccountBalanceCtrl">\n        <div class="center padding" ng-if="loading">\n          <ion-spinner icon="android"></ion-spinner>\n        </div>\n\n        <div class="item item-divider" ng-if="!loading" >\n          {{\'GRAPH.ACCOUNT.BALANCE_DIVIDER\'|translate}}\n          <ion-spinner ng-if="loadingRange" class="ion-spinner-small" icon="android"></ion-spinner>\n        </div>\n\n        <div class="item no-padding-xs"\n             ng-if="!loading"\n             ng-include="::\'plugins/graph/templates/account/graph_balance.html\'"\n             ng-init="setSize(350, 1000)">\n        </div>\n      </ng-controller>\n\n    </div>\n\n    <div class="item no-padding-xs"\n         ng-include="::\'plugins/graph/templates/account/graph_sum_tx.html\'"\n         ng-controller="GpAccountSumTxCtrl">\n    </div>\n\n    <!--  - - - - WOT - - - -\n    <div class="item item-divider" translate>\n      GRAPH.ACCOUNT.WOT_DIVIDER\n    </div>\n\n    <div class="item no-padding-xs"\n         ng-include="::\'plugins/graph/templates/account/graph_certifications.html\'"\n         ng-controller="GpAccountCertificationCtrl"\n         ng-init="setSize(350, 1000)">\n    </div>-->\n\n  </ion-content>\n\n</ion-view>\n');
+$templateCache.put('plugins/graph/templates/account/view_wallet_tx_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'buttons\'">\n\n  <button class="button button-stable button-small-padding icon ion-stats-bars"\n          ui-sref="app.wot_identity_stats({pubkey: formData.pubkey})"\n          title="{{\'GRAPH.ACCOUNT.BTN_SHOW_STATS\' | translate}}">\n  </button>\n\n</ng-if>\n');
+$templateCache.put('plugins/graph/templates/blockchain/graph_block_issuers.html','\n    <div class="row responsive-lg">\n\n      <!-- bar -->\n      <div class="col col-75">\n        <canvas id="bar" class="chart-bar"\n                height="{{height}}" width="{{width}}"\n                chart-data="data"\n                chart-labels="labels"\n                chart-colors="colors"\n                chart-options="barOptions"\n                chart-click="onChartClick">\n        </canvas>\n      </div>\n\n      <!-- pie -->\n      <div class="col col-25 padding-top">\n        <canvas id="blocksByIssuer-pie" class="chart-pie"\n                chart-data="data"\n                chart-labels="labels"\n                chart-colors="colors"\n                chart-click="onChartClick">\n        </canvas>\n\n        <div class="gray padding-top text-center">\n          <small ng-bind-html="\'GRAPH.BLOCKCHAIN.BLOCKS_ISSUERS_HELP\'| translate:{issuerCount: data.length, blockCount: blockCount }"></small>\n        </div>\n      </div>\n    </div>\n');
+$templateCache.put('plugins/graph/templates/blockchain/graph_tx_count.html','\n    <!-- button bar -->\n    <div class="button-bar-inline "\n         style="top: 33px; margin-top:-33px; position: relative;">\n      <button\n        class="button button-stable button-clear no-padding-xs pull-right"\n        ng-click="showActionsPopover($event)">\n        <i class="icon ion-navicon-round"></i>\n      </button>\n    </div>\n\n    <div class="padding-left padding-right">\n      <canvas id="tx-line" class="chart-bar"\n              height="{{height}}" width="{{width}}"\n              chart-data="data"\n              chart-dataset-override="datasetOverride"\n              chart-colors="colors"\n              chart-options="options"\n              chart-labels="labels"\n              chart-click="onChartClick">\n      </canvas>\n    </div>\n\n    <ng-include src="::\'plugins/graph/templates/common/graph_range_bar.html\'"></ng-include>\n');
+$templateCache.put('plugins/graph/templates/blockchain/view_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.BLOCKCHAIN.TITLE\' | translate}}{{id}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="no-padding">\n\n    <div class="center padding" ng-if="loading">\n      <ion-spinner icon="android"></ion-spinner>\n    </div>\n\n    <div class="list" ng-if="!loading">\n\n\n      <!-- TX count -->\n      <ng-controller ng-controller="GpBlockchainTxCountCtrl">\n        <div class="center padding" ng-if="loading">\n          <ion-spinner icon="android"></ion-spinner>\n        </div>\n\n        <div class="item item-divider" ng-if="!loading" >\n          {{\'GRAPH.BLOCKCHAIN.TX_DIVIDER\'|translate}}\n          <ion-spinner ng-if="loadingRange" class="ion-spinner-small" icon="android"></ion-spinner>\n        </div>\n\n        <div class="item no-padding-xs no-padding-sm"\n             ng-if="!loading"\n             ng-include="::\'plugins/graph/templates/blockchain/graph_tx_count.html\'"\n             ng-init="setSize(350, 1000)">\n        </div>\n      </ng-controller>\n\n\n      <!-- Blocks issuer -->\n      <ng-controller ng-controller="GpBlockchainIssuersCtrl">\n\n        <div class="item item-divider" ng-if="!loading" translate>GRAPH.BLOCKCHAIN.BLOCKS_ISSUERS_DIVIDER</div>\n\n        <div class="item no-padding-xs no-padding-sm"\n             ng-if="!loading"\n             ng-include="::\'plugins/graph/templates/blockchain/graph_block_issuers.html\'"\n             ng-init="setSize(300, 750)">\n        </div>\n\n      </ng-controller>\n\n  </ion-content>\n\n</ion-view>\n');
+$templateCache.put('plugins/graph/templates/common/graph_range_bar.html','\n  <div class="range range-positive no-padding-left no-padding-right">\n    <a\n      class="button button-stable button-clear no-padding pull-left"\n      ng-click="goPreviousRange($event)">\n      <i class="icon ion-chevron-left"></i>\n    </a>\n    <input type="range"\n           ng-model="formData.timePct"\n           name="timePct"\n           min="0" max="100"\n           value="{{formData.timePct}}"\n           ng-change="onRangeChanged();"\n           ng-model-options="{ debounce: 250 }">\n    <a\n      class="button button-stable button-clear no-padding pull-right"\n      ng-click="goNextRange($event)">\n      <i class="icon ion-chevron-right"></i>\n    </a>\n  </div>\n');
+$templateCache.put('plugins/graph/templates/common/popover_range_actions.html','<ion-popover-view class="has-header popover-graph-currency">\n  <ion-header-bar>\n    <h1 class="title" translate>COMMON.POPOVER_ACTIONS_TITLE</h1>\n  </ion-header-bar>\n  <ion-content scroll="false">\n    <div class="list item-text-wrap">\n\n      <!-- scale -->\n      <a class="item item-icon-left ink"\n         ng-click="toggleScale()">\n        <i class="icon ion-ios-checkmark-empty" ng-show="formData.scale==\'logarithmic\'"></i>\n        <span ng-bind-html="\'GRAPH.COMMON.LOGARITHMIC_SCALE\' | translate"></span>\n      </a>\n\n      <!-- duration divider -->\n      <div class="item item-divider">\n        {{\'GRAPH.COMMON.RANGE_DURATION_DIVIDER\'|translate}}\n      </div>\n\n      <!-- duration: hour -->\n      <a class="item item-icon-left ink"\n         ng-click="setRangeDuration(\'hour\')">\n        <i class="icon ion-ios-checkmark-empty" ng-show="formData.rangeDuration==\'hour\'"></i>\n        <span ng-bind-html="\'GRAPH.COMMON.RANGE_DURATION.HOUR\' | translate"></span>\n      </a>\n\n      <!-- duration: day -->\n      <a class="item item-icon-left ink"\n         ng-click="setRangeDuration(\'day\')">\n        <i class="icon ion-ios-checkmark-empty" ng-show="formData.rangeDuration==\'day\'"></i>\n        <span ng-bind-html="\'GRAPH.COMMON.RANGE_DURATION.DAY\' | translate"></span>\n      </a>\n\n      <!-- duration: month -->\n      <a class="item item-icon-left ink"\n         ng-click="setRangeDuration(\'month\')">\n        <i class="icon ion-ios-checkmark-empty" ng-show="formData.rangeDuration==\'month\'"></i>\n        <span ng-bind-html="\'GRAPH.COMMON.RANGE_DURATION.MONTH\' | translate"></span>\n      </a>\n\n    </div>\n  </ion-content>\n</ion-popover-view>\n');
+$templateCache.put('plugins/graph/templates/currency/graph_du.html','\n  <!-- graphs button bar -->\n  <div class="button-bar-inline "\n       style="top: 33px; margin-top:-33px; position: relative;">\n    <button\n      class="button button-stable button-clear no-padding-xs no-padding-sm pull-right"\n      ng-click="showActionsPopover($event)">\n      <i class="icon ion-navicon-round"></i>\n    </button>\n  </div>\n\n  <canvas id="monetaryMass-bar" class="chart-bar"\n          height="{{height}}"\n          width="{{width}}"\n          chart-data="data"\n          chart-labels="labels"\n          chart-colors="colors"\n          chart-dataset-override="datasetOverride"\n          chart-options="options"\n          chart-click="showBlock">\n  </canvas>\n');
+$templateCache.put('plugins/graph/templates/currency/graph_members_count.html','  <canvas id="membersCount-bar" class="chart-line"\n          height="{{height}}"\n          width="{{width}}"\n          chart-data="data"\n          chart-labels="labels"\n          chart-colors="colors"\n          chart-options="options"\n          chart-dataset-override="datasetOverride"\n          chart-click="onChartClick">\n  </canvas>\n');
+$templateCache.put('plugins/graph/templates/currency/graph_monetary_mass.html','\n  <!-- graphs button bar -->\n  <div class="button-bar-inline "\n       style="top: 33px; margin-top:-33px; position: relative;">\n    <button\n      class="button button-stable button-clear no-padding-xs pull-right"\n      ng-click="showActionsPopover($event)">\n      <i class="icon ion-navicon-round"></i>\n    </button>\n  </div>\n\n  <canvas id="monetaryMass-bar"\n          class="chart-bar"\n          height="{{height}}"\n          width="{{width}}"\n          chart-data="data"\n          chart-labels="labels"\n          chart-colors="colors"\n          chart-dataset-override="datasetOverride"\n          chart-options="options"\n          chart-click="onChartClick">\n  </canvas>\n');
+$templateCache.put('plugins/graph/templates/currency/popover_monetary_mass_actions.html','<ion-popover-view class="fit has-header">\n  <ion-header-bar>\n    <h1 class="title" translate>COMMON.POPOVER_ACTIONS_TITLE</h1>\n  </ion-header-bar>\n  <ion-content scroll="false">\n    <div class="list item-text-wrap">\n\n      <a class="item item-icon-left ink"\n         ng-click="toggleScale()">\n        <i class="icon ion-ios-checkmark-empty" ng-show="formData.scale==\'logarithmic\'"></i>\n        <span ng-bind-html="\'GRAPH.COMMON.LOGARITHMIC_SCALE\' | translate"></span>\n      </a>\n\n    </div>\n  </ion-content>\n</ion-popover-view>\n');
+$templateCache.put('plugins/graph/templates/currency/tab_blocks_extend.html','<!-- buttons -->\n<ng-if ng-if=":state:enable && extensionPoint === \'buttons\'">\n  <div class="item item-divider">\n    <a class="badge button button-text button-small button-small-padding ink" ui-sref="app.currency.tab_blocks_stats">\n      <i class="icon ion-stats-bars"></i>\n      <span translate>GRAPH.COMMON.BTN_SHOW_STATS</span>\n    </a>\n  </div>\n</ng-if>\n');
+$templateCache.put('plugins/graph/templates/currency/view_currency_extend.html','\n<!-- section actual parameters -->\n<ng-if ng-if=":state:enable && extensionPoint === \'parameters-actual\'" >\n\n  <ng-if ng-if="!smallscreen">\n    <div class="item padding-left padding-right no-padding-xs no-padding-sm"\n         ng-include="::\'plugins/graph/templates/currency/graph_monetary_mass.html\'"\n         ng-controller="GpCurrencyMonetaryMassCtrl"\n         ng-init="displayShareAxis=false;">\n    </div>\n    <div class="item buttons no-padding-top ">\n      <a class="pull-right button button-text button-small button-small-padding ink" ui-sref="app.currency_stats_lg">\n        <i class="icon ion-stats-bars"></i>\n        <span translate>GRAPH.COMMON.BTN_SHOW_DETAILED_STATS</span>\n      </a>\n    </div>\n  </ng-if>\n\n  <div class="item item-divider"\n       ng-if="smallscreen">\n    <a class="badge button button-text button-small button-small-padding ink" ui-sref="app.currency.tab_parameters_stats">\n      <i class="icon ion-stats-bars"></i>\n      <span translate>GRAPH.COMMON.BTN_SHOW_STATS</span>\n    </a>\n  </div>\n</ng-if>\n\n<!-- section Wot -->\n<ng-if ng-if=":state:enable && extensionPoint === \'wot-actual\'" >\n\n  <ng-if ng-if="!smallscreen">\n    <div class="item padding-left padding-right no-padding-xs no-padding-sm"\n         ng-include="::\'plugins/graph/templates/currency/graph_members_count.html\'"\n         ng-controller="GpCurrencyMembersCountCtrl">\n    </div>\n    <div class="item buttons no-padding-top ">\n      <a class="pull-right button button-text button-small button-small-padding ink" ui-sref="app.currency_stats_lg">\n        <i class="icon ion-stats-bars"></i>\n        <span translate>GRAPH.COMMON.BTN_SHOW_DETAILED_STATS</span>\n      </a>\n    </div>\n  </ng-if>\n\n  <div class="item item-divider"\n       ng-if="smallscreen">\n    <a class="badge button button-text button-small button-small-padding ink" ui-sref="app.currency.tab_wot_stats">\n      <i class="icon ion-stats-bars"></i>\n      <span translate>GRAPH.COMMON.BTN_SHOW_STATS</span>\n    </a>\n  </div>\n</ng-if>\n\n<!-- section Wot -->\n<ng-if ng-if=":state:enable && extensionPoint === \'network-actual\'" >\n\n  <div class="item padding-left padding-right no-padding-xs no-padding-sm"\n       ng-if="!smallscreen"\n       ng-include="::\'plugins/graph/templates/blockchain/graph_block_issuers.html\'"\n       ng-controller="GpBlockchainIssuersCtrl">\n  </div>\n\n  <div class="item item-divider"\n       ng-if="smallscreen">\n    <a class="badge button button-text button-small button-small-padding ink" ui-sref="app.currency.tab_network_stats">\n      <i class="icon ion-stats-bars"></i>\n      <span translate>GRAPH.COMMON.BTN_SHOW_STATS</span>\n    </a>\n  </div>\n</ng-if>\n\n');
+$templateCache.put('plugins/graph/templates/currency/view_stats_lg.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.BLOCKCHAIN.TITLE\' | translate}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="padding" >\n\n\n\n    <div class="list" >\n\n      <!-- Monetary mass -->\n      <ng-controller ng-controller="GpCurrencyMonetaryMassCtrl" >\n\n        <div class="center padding" ng-if="loading">\n          <ion-spinner icon="android"></ion-spinner>\n        </div>\n\n        <div class="item no-padding-xs" ng-if="!loading"\n             ng-include="::\'plugins/graph/templates/currency/graph_monetary_mass.html\'"\n             ng-init="setSize(250, 1000)">\n        </div>\n\n        <div ng-if="!loading"\n             class="item item-toggle dark no-border text-right">\n          <span class="" translate>COMMON.BTN_RELATIVE_UNIT</span>\n          <label class="toggle toggle-royal" id="helptip-currency-change-unit">\n            <input type="checkbox" ng-model="formData.useRelative">\n            <div class="track">\n              <div class="handle"></div>\n            </div>\n          </label>\n        </div>\n      </ng-controller>\n\n      <!-- DU -->\n      <ng-controller ng-controller="GpCurrencyDUCtrl" >\n        <div class="item no-padding-xs"\n             ng-if="!loading"\n             ng-include="::\'plugins/graph/templates/currency/graph_du.html\'"\n             ng-init="setSize(250, 1000)">\n        </div>\n      </ng-controller>\n\n      <!-- Member count  -->\n      <ng-controller ng-controller="GpCurrencyMembersCountCtrl" >\n      <div class="item no-padding-xs"\n           ng-if="!loading"\n           ng-include="::\'plugins/graph/templates/currency/graph_members_count.html\'"\n           ng-init="setSize(250, 1000)">\n      </div>\n\n\n    </div>\n\n  </ion-content>\n\n</ion-view>\n');
+$templateCache.put('plugins/graph/templates/currency/view_wot_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n\n  <ion-content scroll="true" >\n\n    <div class="center padding" ng-if="loading">\n      <ion-spinner icon="android"></ion-spinner>\n    </div>\n\n    <ng-include\n      ng-if="!loading"\n      src="\'plugins/graph/templates/currency/graph_members_count.html\'" ></ng-include>\n  </ion-content>\n  </ion-view>\n');
+$templateCache.put('plugins/graph/templates/docstats/graph.html','\n  <!-- graphs button bar -->\n  <div class="button-bar-inline "\n       style="top: 33px; margin-top:-33px; position: relative;">\n    <button\n      class="button button-stable button-clear no-padding-xs no-padding-sm pull-right"\n      ng-click="showActionsPopover($event)">\n      <i class="icon ion-navicon-round"></i>\n    </button>\n  </div>\n\n  <canvas id="{{::chartIdPrefix}}{{chart.id}}"\n          class="chart-line"\n          height="{{height}}"\n          width="{{width}}"\n          chart-data="chart.data"\n          chart-labels="labels"\n          chart-dataset-override="chart.datasetOverride"\n          chart-options="chart.options"\n          chart-click="onChartClick">\n  </canvas>\n\n  <ng-include src="::\'plugins/graph/templates/common/graph_range_bar.html\'"></ng-include>\n');
+$templateCache.put('plugins/graph/templates/docstats/view_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.DOC_STATS.TITLE\' | translate}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="padding" >\n\n    <div class="list" >\n\n      <!-- Doc stat -->\n      <div class="center padding" ng-if="loading">\n        <ion-spinner icon="android"></ion-spinner>\n      </div>\n\n      <div class="item no-padding-xs no-padding-sm" ng-if="!loading"\n           ng-repeat="chart in charts"\n           ng-include="::\'plugins/graph/templates/docstats/graph.html\'"\n           ng-init="setSize(250, 1000)">\n      </div>\n\n    </div>\n\n  </ion-content>\n\n</ion-view>\n');
+$templateCache.put('plugins/graph/templates/network/view_es_network_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'documents-buttons\'">\n  <a class="button button-text button-small ink"\n     ui-sref="app.doc_stats_lg" >\n    <i class="icon ion-stats-bars"></i>\n    <span>{{\'NETWORK.VIEW.BTN_GRAPH\'|translate}}</span>\n  </a>\n</ng-if>\n');
+$templateCache.put('plugins/graph/templates/network/view_es_peer_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'general\'">\n\n  <a class="item item-icon-left item-icon-right item-text-wrap ink"\n     ng-if="isReachable"\n     ui-sref="app.doc_stats_lg(node)">\n    <i class="icon ion-stats-bars"></i>\n    <span translate>GRAPH.DOC_STATS.TITLE</span>\n    <i class="gray icon ion-ios-arrow-right"></i>\n  </a>\n\n  <a class="item item-icon-left item-icon-right item-text-wrap ink"\n     ng-if="isReachable"\n     ui-sref="app.doc_synchro_lg(node)">\n    <i class="icon ion-stats-bars"></i>\n    <span translate>GRAPH.SYNCHRO.TITLE</span>\n    <i class="gray icon ion-ios-arrow-right"></i>\n  </a>\n</ng-if>\n\n');
+$templateCache.put('plugins/graph/templates/network/view_network_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'blockchain-buttons\'">\n  <a class="button button-text button-small ink"\n     ui-sref="app.blockchain_stats" >\n    <i class="icon ion-stats-bars"></i>\n    <span>{{\'NETWORK.VIEW.BTN_GRAPH\'|translate}}</span>\n  </a>\n</ng-if>\n');
+$templateCache.put('plugins/graph/templates/network/view_peer_extend.html','<!-- Buttons section -->\n<ng-if ng-if=":state:enable && extensionPoint === \'general\'">\n\n  <a class="item item-icon-left item-icon-right item-text-wrap ink"\n    ui-sref="app.view_peer_stats({pubkey: node.pubkey})">\n    <i class="icon ion-stats-bars"></i>\n    <span translate>GRAPH.PEER.VIEW.BLOCK_COUNT_LABEL</span>\n    <span class="badge"\n          ng-if="!loading"\n          ng-class="{\'badge-stable\': blockCount > 0, \'badge-assertive\': !blockCount}">\n      {{!blockCount ? \'GRAPH.PEER.VIEW.NO_BLOCK\' : \'GRAPH.PEER.VIEW.BLOCK_COUNT\' | translate:{count: blockCount} }}\n    </span>\n    <ion-spinner class="badge" icon="android" ng-if="loading"></ion-spinner>\n    <i class="gray icon ion-ios-arrow-right"></i>\n  </a>\n</ng-if>\n\n');
+$templateCache.put('plugins/graph/templates/network/view_peer_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.BLOCKCHAIN.TITLE\' | translate}}{{id}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="no-padding">\n\n    <div class="center padding" ng-if="loading">\n      <ion-spinner icon="android"></ion-spinner>\n    </div>\n\n    <div class="list" ng-if="!loading">\n\n      <!--  - - - - TX divider - - - - -->\n      <div class="item item-divider hidden-xs hidden-sm" translate>\n        GRAPH.BLOCKCHAIN.TX_DIVIDER\n      </div>\n\n      <div class="item no-padding-xs"\n           ng-include="::\'plugins/graph/templates/blockchain/graph_tx_count.html\'"\n           ng-init="setSize(350, 1000)">\n      </div>\n\n  </ion-content>\n\n</ion-view>\n');
+$templateCache.put('plugins/graph/templates/synchro/graph.html','\n  <!-- graphs button bar -->\n  <div class="button-bar-inline "\n       style="top: 33px; margin-top:-33px; position: relative;">\n    <button\n      class="button button-stable button-clear no-padding-xs pull-right"\n      ng-click="showActionsPopover($event)">\n      <i class="icon ion-navicon-round"></i>\n    </button>\n  </div>\n\n  <canvas id="synchro-chart-{{chart.id}}"\n          class="chart-bar"\n          height="{{height}}"\n          width="{{width}}"\n          chart-data="chart.data"\n          chart-labels="labels"\n          chart-dataset-override="chart.datasetOverride"\n          chart-options="chart.options">\n  </canvas>\n\n  <ng-include src="::\'plugins/graph/templates/common/graph_range_bar.html\'"></ng-include>\n');
+$templateCache.put('plugins/graph/templates/synchro/view_stats.html','<ion-view left-buttons="leftButtons"\n          cache-view="false">\n  <ion-nav-title>\n    {{\'GRAPH.SYNCHRO.TITLE\' | translate}}\n  </ion-nav-title>\n\n  <ion-content scroll="true" class="padding" >\n\n    <div class="list" >\n\n      <div class="center padding" ng-if="loading">\n        <ion-spinner icon="android"></ion-spinner>\n      </div>\n\n      <div class="item no-padding-xs" ng-if="!loading"\n           ng-repeat="chart in charts"\n           ng-include="::\'plugins/graph/templates/synchro/graph.html\'"\n           ng-init="setSize(250, 1000)">\n      </div>\n\n    </div>\n\n  </ion-content>\n\n</ion-view>\n');
 $templateCache.put('plugins/map/templates/common/edit_position_extend.html','<div class="item no-padding hidden-xs hidden-sm {{ionItemClass}}" ng-if="formData.geoPoint && formData.geoPoint.lat && formData.geoPoint.lon">\n  <leaflet id="{{::mapId}}"\n           height="250px"\n           center="map.center"\n           markers="map.markers"\n           defaults="map.defaults">\n  </leaflet>\n</div>\n');
 $templateCache.put('plugins/map/templates/network/item_search_tooltip.html','<a href="#">\n  {{peer.dns || peer.server}}\n  <span class="{{peer.uid ? \'positive\' : \'gray\'}}">\n    <i class="icon {{peer.uid ? \'ion-person\' : \'ion-key\'}}"></i>\n    {{peer.uid ? (peer.name||peer.uid) : (peer.pubkey|formatPubkey) }}\n  </span>\n  <span class="gray">{{peer.ipv4 ? (peer.ipv4 + \':\' + peer.port) : \'\'}}</span>\n  <span class="{{peer.bma.useSsl  ? \'\' : \'ng-hide\'}}"><i class="ion-locked"></i> <small>SSL</small></span>\n</a>\n');
 $templateCache.put('plugins/map/templates/network/lookup_extend.html','<!-- FIXME issue #755 - https://git.duniter.org/clients/cesium-grp/cesium/issues/755\n<a ng-if="enable"\n   class="button button-text button-small ink hidden-sm hidden-xs"\n   title="{{\'MAP.NETWORK.LOOKUP.BTN_MAP_HELP\' | translate}}"\n        ui-sref="app.view_network_map">\n  <i class="icon ion-ios-location"></i>\n  {{\'MAP.NETWORK.LOOKUP.BTN_MAP\' | translate}}\n</a>\n -->\n');
@@ -32312,12 +32312,12 @@ $templateCache.put('plugins/map/templates/wot/item_search_tooltip.html','<a href
 $templateCache.put('plugins/map/templates/wot/lookup_lg_extend.html','<a ng-if="enable"\n   class="button button-text button-small ink hidden-sm hidden-xs"\n   title="{{\'MAP.WOT.LOOKUP.BTN_MAP_HELP\' | translate}}"\n   ui-sref="app.view_wot_map">\n  <i class="icon ion-ios-location"></i>\n  {{\'MAP.WOT.LOOKUP.BTN_MAP\' | translate}}\n</a>\n');
 $templateCache.put('plugins/map/templates/wot/popup_marker.html','\n<div class="item no-border no-padding item-avatar "\n     ng-if="loadingMarker">\n\n  <i class="item-image icon ion-person"></i>\n\n  <div class="item-content item-avatar-left-padding padding-top" >\n    <h2 class="stable-bg">\n      &nbsp;\n    </h2>\n    <h4 class="stable-bg col-75">\n      &nbsp;\n    </h4>\n    <h4 class="stable-bg col-50">\n      &nbsp;\n    </h4>\n  </div>\n</div>\n\n<a class="item no-border no-padding item-avatar ink animate-fade-in animate-show-hide ng-hide"\n   ng-show="!loadingMarker"\n   ui-sref="app.wot_identity({pubkey: formData.pubkey, uid: formData.uid})">\n\n  <i ng-if="formData.avatar" class="item-image avatar" style="background-image: url({{::formData.avatar.src}})"></i>\n  <i ng-if="!formData.avatar && formData.uid" class="item-image icon ion-person"></i>\n  <i ng-if="!formData.avatar && !formData.uid" class="item-image icon ion-card"></i>\n\n  <div class="item-content item-avatar-left-padding padding-top">\n    <h2 class="dark">\n      {{formData.name}}\n    </h2>\n    <h4>\n      <span ng-if="formData.uid" class="positive">\n        <b class="ion-person"></b>\n        {{formData.uid}}\n      </span>\n      <span class="gray" title="{{formData.pubkey}}"><b class="ion-key"></b> {{formData.pubkey|formatPubkey}}</span>\n      <span class="assertive" ng-if="!formData.isMember">\n        {{::\'WOT.NOT_MEMBER_PARENTHESIS\'|translate}}\n      </span>\n    </h4>\n    <h4 ng-if="formData.profile.city" class="gray" title="{{formData.profile.city}}">\n      <b class="ion-location"></b> {{formData.profile.city}}\n    </h4>\n  </div>\n</a>\n<!-- buttons -->\n<div class="item no-border no-padding">\n  <div class="pull-left gray">\n    <!-- show description -->\n    <a class="animate-fade-in animate-show-hide gray ng-hide"\n       ng-class="{\'ion-arrow-down-b\': !showDescription, \'ion-arrow-up-b\': showDescription}"\n       ng-click="showDescription=!showDescription;"\n       title="{{\'PROFILE.DESCRIPTION\'|translate}}"\n       ng-show="!loadingMarker && formData.profile.description">\n      &nbsp;\n    </a>\n  </div>\n  <div style="font-size: 18px;" class="pull-right gray">\n    <!-- share -->\n    <a class="icon ion-android-share-alt "\n       ng-click="showSharePopover($event)"\n       title="{{\'COMMON.BTN_SHARE\' | translate}}">&nbsp;</a>\n    <!-- certify -->\n    <a class="icon ion-ribbon-b"\n       ng-click="certify()"\n       title="{{\'WOT.BTN_CERTIFY\' | translate}}"\n       ng-hide="!canCertify">&nbsp;</a>\n    <!-- compose message -->\n    <a class="icon ion-compose"\n       ng-click="showNewMessageModal()"\n       title="{{\'MESSAGE.BTN_WRITE\' | translate}}">&nbsp;</a>\n    <!-- transfer -->\n    <a class="icon ion-card"\n       ng-click="showTransferModal({pubkey:formData.pubkey, uid: formData.name||formData.uid})"\n       title="{{\'COMMON.BTN_SEND_MONEY\' | translate}}">&nbsp;</a>\n\n  </div>\n</div>\n<div class="item no-border no-padding item-text-wrap hidden-xs ng-hide" ng-show="showDescription">\n  <small trust-as-html="formData.profile.description|truncText:500"></small>\n</div>\n');
 $templateCache.put('plugins/map/templates/wot/view_map.html','<ion-view left-buttons="leftButtons" class="view-map-wot">\n  <ion-nav-title>\n    <span class="hidden-xs" translate>MAP.WOT.VIEW.TITLE</span>\n  </ion-nav-title>\n\n  <ion-nav-buttons side="secondary">\n    <button class="button button-icon button-clear icon ion-loop visible-xs visible-sm" ng-click="load()">\n    </button>\n  </ion-nav-buttons>\n\n  <ion-content data-tap-disabled="true">\n    <a id="helptip-map-wot" style="left: 150px; top: 50px; position: relative;"></a>\n    <leaflet id="{{::mapId}}"\n             height="100%"\n             layers="map.layers"\n             markers="map.markers"\n             lf-center="map.center"\n             bounds="map.bounds">\n    </leaflet>\n  </ion-content>\n</ion-view>\n');
+$templateCache.put('plugins/es/templates/message/tabs/tab_list.html','<ion-view><ion-nav-buttons side="secondary"><cs-extension-point name="nav-buttons"></cs-extension-point><button class="button button-icon button-clear icon ion-android-more-vertical" ng-click="showActionsPopover($event)"></button></ion-nav-buttons><ion-content><ion-refresher pulling-text="{{\'COMMON.BTN_REFRESH\' | translate}}" on-refresh="refresh()"></ion-refresher><cs-extension-point name="buttons"></cs-extension-point><ng-include src="::\'plugins/es/templates/message/list.html\'"></ng-include></ion-content><div class="visible-xs visible-sm"><button ng-if="fabButtonNewMessageId" id="{{::fabButtonNewMessageId}}" class="button button-fab button-fab-bottom-right button-assertive spin has-footer" ng-click="showNewMessageModal()"><i class="icon ion-compose"></i></button></div></ion-view>');
+$templateCache.put('plugins/es/templates/registry/tabs/tab_registry.html','<ion-view><ion-nav-buttons side="secondary"><cs-extension-point name="nav-buttons"></cs-extension-point><button class="button button-icon button-clear" ng-click="showFiltersPopover($event)"><i class="icon ion-android-funnel"></i></button> <button class="button button-icon button-clear icon ion-android-more-vertical" ng-click="showActionsPopover($event)"></button></ion-nav-buttons><ion-content><ion-refresher pulling-text="{{\'COMMON.BTN_REFRESH\' | translate}}" on-refresh="doSearch()"></ion-refresher><cs-extension-point name="buttons"></cs-extension-point><ng-include src="::\'plugins/es/templates/registry/lookup_form.html\'"></ng-include><ng-include src="::\'plugins/es/templates/registry/lookup_list.html\'"></ng-include></ion-content></ion-view>');
 $templateCache.put('plugins/graph/templates/currency/tabs/tab_blocks_stats.html','<ion-view>\n  <ion-content>\n    <div\n       ng-include="::\'plugins/graph/templates/blockchain/graph_tx_count.html\'"\n       ng-controller="GpBlockchainTxCountCtrl"\n       ng-init="setSize(500,700,false)">\n      </div>\n  </ion-content>\n</ion-view>\n');
 $templateCache.put('plugins/graph/templates/currency/tabs/tab_network_stats.html','<ion-view>\n  <ion-content>\n\n    <div class="list">\n      <div class="item"\n         ng-include="::\'plugins/graph/templates/blockchain/graph_block_issuers.html\'"\n         ng-controller="GpBlockchainIssuersCtrl"\n           ng-init="setSize(500,700,true)">\n      </div>\n    </div>\n  </ion-content>\n</ion-view>\n');
 $templateCache.put('plugins/graph/templates/currency/tabs/tab_parameters_stats.html','<ion-view>\n  <ion-content>\n    <div class="list no-padding-xs no-padding-sm">\n\n      <ng-container ng-controller="GpCurrencyMonetaryMassCtrl">\n\n        <div class="center padding" ng-if="loading">\n          <ion-spinner icon="android"></ion-spinner>\n        </div>\n\n        <!-- Monetary mass -->\n        <div class="item"\n             ng-include="::\'plugins/graph/templates/currency/graph_monetary_mass.html\'"\n             ng-init="setSize(500,700,true)">\n        </div>\n      </ng-container>\n\n      <!-- DU -->\n      <ng-container ng-controller="GpCurrencyDUCtrl">\n        <div class="item"\n             ng-include="::\'plugins/graph/templates/currency/graph_du.html\'"\n             ng-init="setSize(500,700,true)">\n        </div>\n      </ng-container>\n    </div>\n  </ion-content>\n</ion-view>\n');
-$templateCache.put('plugins/graph/templates/currency/tabs/tab_wot_stats.html','<ion-view>\n  <ion-content>\n    <div class="center padding" ng-if="loading">\n      <ion-spinner icon="android"></ion-spinner>\n    </div>\n\n    <div class="list no-padding">\n      <div class="item no-padding-top"\n           ng-include="::\'plugins/graph/templates/currency/graph_members_count.html\'"\n           ng-init="setSize(600,700,false)">\n      </div>\n    </div>\n  </ion-content>\n</ion-view>\n');
-$templateCache.put('plugins/es/templates/message/tabs/tab_list.html','<ion-view><ion-nav-buttons side="secondary"><cs-extension-point name="nav-buttons"></cs-extension-point><button class="button button-icon button-clear icon ion-android-more-vertical" ng-click="showActionsPopover($event)"></button></ion-nav-buttons><ion-content><ion-refresher pulling-text="{{\'COMMON.BTN_REFRESH\' | translate}}" on-refresh="refresh()"></ion-refresher><cs-extension-point name="buttons"></cs-extension-point><ng-include src="::\'plugins/es/templates/message/list.html\'"></ng-include></ion-content><div class="visible-xs visible-sm"><button ng-if="fabButtonNewMessageId" id="{{::fabButtonNewMessageId}}" class="button button-fab button-fab-bottom-right button-assertive spin has-footer" ng-click="showNewMessageModal()"><i class="icon ion-compose"></i></button></div></ion-view>');
-$templateCache.put('plugins/es/templates/registry/tabs/tab_registry.html','<ion-view><ion-nav-buttons side="secondary"><cs-extension-point name="nav-buttons"></cs-extension-point><button class="button button-icon button-clear" ng-click="showFiltersPopover($event)"><i class="icon ion-android-funnel"></i></button> <button class="button button-icon button-clear icon ion-android-more-vertical" ng-click="showActionsPopover($event)"></button></ion-nav-buttons><ion-content><ion-refresher pulling-text="{{\'COMMON.BTN_REFRESH\' | translate}}" on-refresh="doSearch()"></ion-refresher><cs-extension-point name="buttons"></cs-extension-point><ng-include src="::\'plugins/es/templates/registry/lookup_form.html\'"></ng-include><ng-include src="::\'plugins/es/templates/registry/lookup_list.html\'"></ng-include></ion-content></ion-view>');}]);
+$templateCache.put('plugins/graph/templates/currency/tabs/tab_wot_stats.html','<ion-view>\n  <ion-content>\n    <div class="center padding" ng-if="loading">\n      <ion-spinner icon="android"></ion-spinner>\n    </div>\n\n    <div class="list no-padding">\n      <div class="item no-padding-top"\n           ng-include="::\'plugins/graph/templates/currency/graph_members_count.html\'"\n           ng-init="setSize(600,700,false)">\n      </div>\n    </div>\n  </ion-content>\n</ion-view>\n');}]);
 
 angular.module('cesium.es.plugin', [
     // Services
diff --git a/assets/www/manifest.json b/assets/www/manifest.json
index 7151a961d7901ad48d0c3336233d3cf12dce45a5..f7b9f733e59610895b0c2099bef012203c3c890b 100644
--- a/assets/www/manifest.json
+++ b/assets/www/manifest.json
@@ -2,9 +2,9 @@
   "short_name": "Cesium",
   "name": "Cesium",
   "manifest_version": 1,
-  "version": "1.6.2-alpha",
+  "version": "1.6.4",
   "default_locale": "fr",
-  "description": "Manage your Duniter Wallet on a libre currency, like Ğ1",
+  "description": "Cesium Wallet for Ğ1 libre currency",
   "icons": [
     {
       "src": "img/logo_32px.png",
diff --git a/libs/barcodescanner.aar b/libs/barcodescanner.aar
deleted file mode 100644
index 6312ccab948387f970089d0aeabf5afc1b834d9b..0000000000000000000000000000000000000000
Binary files a/libs/barcodescanner.aar and /dev/null differ
diff --git a/phonegap-plugin-barcodescanner/cesium-barcodescanner.gradle b/phonegap-plugin-barcodescanner/cesium-barcodescanner.gradle
index 4e096bc6e37ba002453e12e88a8b59287565f69a..13a609b39b2c701f85a5c330edc033cf7b8011fb 100644
--- a/phonegap-plugin-barcodescanner/cesium-barcodescanner.gradle
+++ b/phonegap-plugin-barcodescanner/cesium-barcodescanner.gradle
@@ -6,8 +6,7 @@ repositories{
 }
 
 dependencies {
-    compile 'com.android.support:support-v4:+'
-    compile(name:'barcodescanner', ext:'aar')
+  compile(name:'barcodescanner-release-2.1.5', ext:'aar')
 }
 
 android {
diff --git a/res/xml/config.xml b/res/xml/config.xml
index a359ac09c8647c4c55073472c01f606498571417..e4f220ffff05a8225da6456441cdc467ec2c494f 100644
--- a/res/xml/config.xml
+++ b/res/xml/config.xml
@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='utf-8'?>
-<widget android-versionCode="106030" id="fr.duniter.cesium" ios-CFBundleIdentifier="org.duniter.cesium" version="1.6.3" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
+<widget android-versionCode="106040" id="fr.duniter.cesium" ios-CFBundleIdentifier="org.duniter.cesium" version="1.6.4" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
     <feature name="Clipboard">
         <param name="android-package" value="com.verso.cordova.clipboard.Clipboard" />
     </feature>