diff --git a/frontend/delta/css/clipperz.css b/frontend/delta/css/clipperz.css
index eb8b934..a7cea2f 100644
--- a/frontend/delta/css/clipperz.css
+++ b/frontend/delta/css/clipperz.css
@@ -58,7 +58,7 @@ table {
font-family: "clipperz-icons";
font-style: normal;
font-weight: normal;
- src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABRIAAwAAAAAE/gAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABHAAAAs4AAALO7TLxLU9TLzIAAAPsAAAAYAAAAGAIYwCFY21hcAAABEwAAACEAAAAhNFx0aZnYXNwAAAE0AAAAAgAAAAIAAAAEGdseWYAAATYAAAMLAAADCwzNy3OaGVhZAAAEQQAAAA2AAAANgO5wZ9oaGVhAAARPAAAACQAAAAkA/kCMWhtdHgAABFgAAAAwAAAAMApygKpbG9jYQAAEiAAAABiAAAAYi/cLURtYXhwAAAShAAAACAAAAAgADkAfG5hbWUAABKkAAABhAAAAYSH7XEQcG9zdAAAFCgAAAAgAAAAIAADAAAAAQAAAAoAHgAsAAFsYXRuAAgABAAAAAAAAAABAAAAAWxpZ2EACAAAAAEAAAABAAQABAAAAAEACgAAAAEAJgAQAEoAfgCMAOIBHAEsAVABeAGcAaoBtAH6AjICSgJqAooAAQAQAAQABQAGAAcACAAJAAoADgAPABEAEwAUABUAFgAXAC8AAgAGACIAKAANAAcABwADABAACAAYAAMACQAMAAgADgAHACIACAAHAAcAAwAGAAQAEwAHAAEABAAlAAQABAAGAA0ABQAMAB4AKgA8AEgALAAIABEADwAPAAQAEAAHABQAHAAFAA4AEQAUAAgAHgAIAA4ADAASABIACAATABkAHAAFAA4ACAAEABMAHAAGAAQAEAAGAAgADgADAAgAEgAsAB0ABAARABAACAAjAAwADAATAAgABgAVAAMADgARAAoADAAQABwABgAIAA4ACAAVAAgAAQAEACcABQAPAAQADAAOAAIABgAWABwABwAEAAwADgAWABMACAAcAAYABAAMAA4ACAAHAAEABAAtABEACAAQAAgAEwAEABUACAADABIABAAUABQAGAARABMABwACAAYAFAApAAYAEQAGAA0ACAAHACQABwARAAQABwAMABAACgABAAQAGwAEAAgAEAAWAAEABAAdAAIADQADAAgAHgA4ACsACgAIAA8AEQAXAAgAAwAVAAQACgArAAwACAAPABEAFwAIAAMACQAMAAgADgAHACEABgAIAAYACAAQABUAAwAIACAALgAmAAsACwARABgAAwAHAAgAFQAEAAwADgAgAAYACAAEABMABgALAB0ABAAEABcACAACAAYAEAAaAAQABAAKABQAHwADAAQACgACAAYADgAjAAMAEwAOACoACAAQAA4AEQAGAA0ACAAHAAEABAAuAA0ADAAIABgAAwASAAQAFAAUABgAEQATAAcAAQAEAC4AAgAvAAAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpzwHg/+AAIAHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEAHAAAAAYABAAAwAIAAEAIABpAHAAdwB65gjmE+mN6c///f//AAAAAAAgAGEAawByAHrmAOYK6Y3pzv/9//8AAf/j/6P/ov+h/58aGhoZFqAWYAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAMAAAAJAg4BwAAUACEAMgAAEzMyFh8BFhQPAQYiLwEuAT0BNDYzFzI2NTQmIyIGFRQWMwUHFjY/ATY0LwEuASMXFhQHMHAUMA68Dg6MDigOvA4UHBRAFBwcFBQcHBQBhawOIAuMDg68DjAU9QQEAcAUDrwOKA6MDg68DjAUcBQcoBwUFBwcFBQca6wHBQuMDigOvA4U9QQOBAAAAAMAIAAgAeABgAADAAcACwAAEyEVIRUhFSEVIRUhIAHA/kABwP5AAcD+QAGAYCBgIGAAAAABAAH/4QH/Ad8AVAAAJTgBMSc3OAExPgE3NiYvAS4BBw4BBzgBMQcnOAExLgEnJgYPAQ4BFx4BFzgBMRcHOAExDgEHBhYfAR4BNz4BNzgBMTcXOAExHgEXFjY/AT4BJy4BJwH7m5sCAQECAgRJAwoEAgICm5sCAgIECgNJBAICAQECm5sCAQECAgRJAwoEAgICm5sCAgIECgNJBAICAQECRZubAgICBAoDSQQCAgEBApubAgEBAgIESQMKBAICApubAgICBAoDSQQCAgEBApubAgEBAgIESQMKBAICAgAAAAEAAAAQAgABoAAFAAABBycHFwEBsPBwUMABQAGg8HBQwAFAAAEABf/lAhcB3AAOAAABNSMVJwcXBxc3FzcnNycBToaWLZtkcVxmbmWfLQEzqak9gTSEUoyMUoQ1gQAAAAIAAP/uAfIB4AAUACEAABMzMhYfARYUDwEGIi8BLgE9ATQ2MxcyNjU0JiMiBhUUFjMwkBQwDuAODqwPJw7gDhQcFEAUHBwUFBwcFAHgFA7gDicPrA4O4A4wFJAUHKAcFBQcHBQUHAAAAgAA/+wB9AHgAB0AKgAAJScuAQc+ATU0JiMiBhUUFjMyNjcGFh8BHgE3NiYnJSImNTQ2MzIWFRQGIwHweQoTCBYYcFBQcHBQJD8aAQgJZw0mDQ0CD/7QNUtLNTVLSzUsZwkIARo/JFBwcFBQcBgWCBMKeQ8CDQ0mDXRLNTVLSzU1SwAAAwAA/+ACAAHgAAUAGgAnAAAlJzUzFRcDIg4CFRQeAjMyPgI1NC4CIxEiJjU0NjMyFhUUBiMBSWlAV3c1XUYoKEZdNTVdRigoRl01UHBwUFBwcFBpao1zVgFJKEZdNTVdRigoRl01NV1GKP5AcFBQcHBQUHAAAAAAAQBsAFIBlAF7ACAAAAEjNTQmIyIGHQEjIgYVFBY7ARUUFjMyNj0BMzI2NTQmIwGFaw8LCw9rCwQEC2sPCwsPawsEBAsBAGwKBQUKbA8LCg9sCgUFCmwPCgsPAAADADMAGgHNAbMAEAAVAB8AAAEjIgYdARQWOwEyNj0BNCYjESM1MxUlIxUUFjsBNSM1AZrOFR0eFc0VHh4Vzc3+zDMeFZqaAbMdFc4VHh4VzRUe/wDNzTOZFR4zmQAAAAAIABwAAAHgAeAADAAZACYAMwBGAFkAbAB5AAATNDYzMhYVFAYjIiY1FzQ2MzIWFRQGIyImNRc0NjMyFhUUBiMiJjUHNDYzMhYVFAYjIiY1BzgBMTQ2MzIWFTgBMRQGIyImNSc4ATE0NjMyFhU4ATEUBiMiJjUDOAExNDYzMhYVOAExFAYjIiY1BzQ2MzIWFRQGIyImNcAlGxslJRsbJYglGxomJhobJVgTDQ0TEw0NEzgTDQ0TEw0NE4gTDQ0TEw0NE4gTDQ0TEw0NExAcFBQcHBQUHCwVDw8VFQ8PFQGgGyUlGxslJRs4GiYmGhslJRuIDRMTDQ0TEw2IDRMTDQ0TEw04DRMTDQ0TEw04DRMTDQ0TEw0BEBQcHBQUHBwUiA8VFQ8PFRUPAAEAqQBaAU4BcwAaAAABDgExDgEVFBYXMBYXFjI3NjQvATc2NCcmIgcBJQhrBQQEBWsICBkICQlgYAkJCBkIAXMIcAUKBgULBHAICAgIFgpkZAsVCQgIAAABALIAWgFXAXMAGgAAEx4BMR4BFRQGBzAGBwYiJyY0PwEnJjQ3NjIX2whrBQQEBWsICBkICQlgYAkJCBkIAXMIcAUKBgULBHAICAgIFgpkZAsVCQgIAAAAAgAaAFIB5gF7ABcAPwAAEx4DFx4BMzI2Nz4DNz4BIyEiFhcFDgMHDgEjIiYnLgMnJgYVHAMxFBYzITI2NTA8AjU0JgcpBDxEOQMFDAYGDAUDOUQ8BAoJEf5OEQkKAbMFPEY7AwYLBgYLBgM7RjwFCAIRCAGaCBECCAFfAiAlHwEDAgIDAR8lIAIFFxcFMwMgJB8BBAEBBAEfJCADBAYEATxFOggQEAg6RTsCBAYEAAACACkADwHXAb0AFAAhAAABIg4CFRQeAjMyPgI1NC4CIxcVIzUjNTM1MxUzFSMBAC1OOiIiOk4tLU46IiI6Ti0aNGdnNGdnAb0hO04tLE47IiI7TiwtTjsh8WdnNWdnNQADAAD/4AFAAcAAGgAqADUAAAEjNTQmKwEiBh0BIyIGHQEUFjMhMjY9ATQmIwcjNy4BNTQ2MzIWFRQGBxc3IzU0NjsBMhYdAQEoCDgoQCg4CAoODgoBEAoODgpoQA4GCBMNDRMIBg4ggBMNQA0TAQBgKDg4KGAOCvAKDg4K8AoO4EYEDggNExMNCA4ERuBgDRMTDWAAAgAA/+AB4AHAACQANAAAASMiBh0BIyIGHQEUFjMhMjY9ATQmKwE1NDY7ATIWHQEzNTQmIwMjNy4BNTQ2MzIWFRQGBxcBgEAoOMgKDg4KARAKDg4KCBMNQA0TQDgowEAOBggTDQ0TCAYOAcA4KGAOCvAKDg4K8AoOYA0TEw1gYCg4/mBGBA4IDRMTDQgOBEYAAgApAA8B1wG9ABQAIQAAASIOAhUUHgIzMj4CNTQuAiMfAQcnByc3JzcXNxcHAQAtTjoiIjpOLS1OOiIiOk4tLE8tTk4tT08tTk4tTwG9ITtOLSxOOyIiO04sLU47IddOLE5OLE5PLE5OLE8AAwAB/+EAjQHfAAQACQAOAAA3MxUjNREzFSM1FTMVIzUBjIyMjIyMcZCQAW6QkLeQkAAAAAIAAP/gAgAB4AAcACkAAAEiBhUUFhcHFRQWOwE1MzUzNTM3HgEzMjY1NCYjFyImNTQ2MzIWFRQGIwFgQl4BAsMTDSBAQEAqDBwOQl5eQjAUHBwUFBwcFAHgXkIIDgfDYA0TIEBAKgUFXkJCXqAcFBQcHBQUHAAAAAMAAABAAgABgAAUADoARwAAASIOAgceAzMyPgI3LgMjFx4BFw4BBw4BIyImJy4BJz4BNz4BNw4BFRQWMzI2NTQmJx4BFzEHFAYjIiY1NDYzMhYVAQAqTUI1EhI1Qk0qKk1CNRISNUJNKn4XJg4OJhccQCIiQBwXJg4OJhcBAwIEBEs1NUsEBAIDAX4cFBQcHBQUHAGAFyo7JCQ7KhcXKjskJDsqF1UOJhcXJg4SExMSDiYXFyYOAQIBChYMNUtLNQwWCgECARsUHBwUFBwcFAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAABAAAvXpXpXw889QALAgAAAAAA0UHAcQAAAADRQcBxAAD/4AIXAeAAAAAIAAIAAAAAAAAAAQAAAeD/4AAAAiAAAAAAAhcAAQAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAACAAAgAgAAAQIAAAACHAAFAgAAAAIAAAACAAAAAgAAbAIAADMCAAAcAgAAqQIAALICAAAaAgAAKQIAAAACAAAAAgAAKQCOAAECAAAAAgAAAAAAAAAAAAAAAAoAFAAeACgAMgA8AEYAUABaAGQAbgB4AIIAjACWAKAAqgC0AL4AyADSANwA5gDwAPoBSAFiAdIB5AICAjYCeAK0AuIDEgOmA9ID/gRWBIYE0AUYBU4FaAWkBgwGFgAAAAEAAAAwAHoACAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAcAAAAAQAAAAAAAgAOAHgAAQAAAAAAAwAcADIAAQAAAAAABAAcAIYAAQAAAAAABQAWABwAAQAAAAAABgAOAE4AAQAAAAAACgA0AKIAAwABBAkAAQAcAAAAAwABBAkAAgAOAHgAAwABBAkAAwAcADIAAwABBAkABAAcAIYAAwABBAkABQAWABwAAwABBAkABgAcAFwAAwABBAkACgA0AKIAYwBsAGkAcABwAGUAcgB6AC0AaQBjAG8AbgBzAFYAZQByAHMAaQBvAG4AIAAxAC4AMABjAGwAaQBwAHAAZQByAHoALQBpAGMAbwBuAHNjbGlwcGVyei1pY29ucwBjAGwAaQBwAHAAZQByAHoALQBpAGMAbwBuAHMAUgBlAGcAdQBsAGEAcgBjAGwAaQBwAHAAZQByAHoALQBpAGMAbwBuAHMARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format("woff"); }
+ src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABU8AAwAAAAAFOwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABHAAAAwYAAAMG8Kr0309TLzIAAAQkAAAAYAAAAGAIYwBrY21hcAAABIQAAACcAAAAnNHb0kxnYXNwAAAFIAAAAAgAAAAIAAAAEGdseWYAAAUoAAAMaAAADGg2OtN/aGVhZAAAEZAAAAA2AAAANgSXPhtoaGVhAAARyAAAACQAAAAkA/kCNGhtdHgAABHsAAAAzAAAAMwrygKpbG9jYQAAErgAAABoAAAAaDAeMsBtYXhwAAATIAAAACAAAAAgADwAfG5hbWUAABNAAAAB2gAAAdo7wz5qcG9zdAAAFRwAAAAgAAAAIAADAAAAAQAAAAoAHgAsAAFsYXRuAAgABAAAAAAAAAABAAAAAWxpZ2EACAAAAAEAAAABAAQABAAAAAEACgAAAAEAJgAQAEoAfgCMAQIBPAFMAXABmAG8AcoB1AIyAmoCggKiAsIAAQAQAAcACAAJAAoACwAMAA0AEQASABQAFgAXABgAGQAaADIAAgAGACIAKwANAAoACgADABMACwAbAAMADAAPAAsAEQAKACUACAAKAAoAAwAJAAcAFgAKAAEABAAoAAQABwAJABAABgAOACwAPgBKAFwAaAArAA4AFgALAAcAGAALAAMAEwALABsAAwAEAAYABQAvAAgAFAASABIABwATAAoAFwAfAAUAEQAUABcACwAhAAgAEQAPABUAFQALABYAHAAfAAUAEQALAAcAFgAfAAYABwATAAkACwARAAMACAASACwAIAAEABQAEwALACYADAAPABYACwAJABgAAwARABQADQAPABMAHwAGAAsAEQALABgACwABAAQAKgAFABIABwAPABEAAgAGABYAHwAHAAcADwARABkAFgALAB8ABgAHAA8AEQALAAoAAQAEADAAEQALABMACwAWAAcAGAALAAMAFQAHABcAFwAbABQAFgAKAAIABgAUACwABgAUAAkAEAALAAoAJwAHABQABwAKAA8AEwANAAEABAAeAAQACwATABkAAQAEACAAAgAQAAQACgAgADoAUAAuAAoACwASABQAGgALAAMAGAAHAA0ALgAMAAsAEgAUABoACwADAAwADwALABEACgAuAAoACwASABQAGgALAAMABAAGAAUAJAAGAAsACQAL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) format("woff"); }
/*
@font-face {
font-family: "clipperz-password";
@@ -469,6 +469,21 @@ div.overlay {
-ms-animation-delay: -0.0833s;
-o-animation-delay: -0.0833s;
animation-delay: -0.0833s; }
+ div.overlay .progressBar {
+ width: 100%;
+ background-color: #222;
+ height: 4px;
+ margin-top: 86px;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px; }
+ div.overlay .progressBar .progress {
+ background-color: #999;
+ height: 4px;
+ display: block;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px; }
@-webkit-keyframes overlay-spin {
from {
@@ -619,7 +634,7 @@ html {
visibility: visible;
display: block; }
-input {
+input[type=text] {
-webkit-appearance: none; }
.mainPage > #selectionPanel {
@@ -866,6 +881,37 @@ input {
width: 100%;
height: 100%;
background-color: black; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -moz-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ height: 100%; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature .header {
+ -webkit-box-flex: none;
+ -webkit-flex: none;
+ -moz-box-flex: none;
+ -moz-flex: none;
+ -ms-flex: none;
+ flex: none;
+ padding: 20px; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature .content {
+ -webkit-box-flex: auto;
+ -webkit-flex: auto;
+ -moz-box-flex: auto;
+ -moz-flex: auto;
+ -ms-flex: auto;
+ flex: auto;
+ padding: 0px 20px 20px 20px;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch; }
.container {
height: 100%;
@@ -2031,6 +2077,8 @@ span.count {
background-color: #333; }
#extraFeaturesPanel .extraFeatureIndex > div ul li > ul > li > div {
padding: 4px; }
+ #extraFeaturesPanel .extraFeatureIndex > div ul li > ul > li.offlineCopy {
+ cursor: default; }
#extraFeaturesPanel .extraFeatureIndex > div ul li h2 {
font-weight: 300;
font-size: 14pt; }
@@ -2102,14 +2150,13 @@ span.count {
*/ }
#extraFeaturesPanel .extraFeatureContent header {
display: none; }
- #extraFeaturesPanel .extraFeatureContent .extraFeature {
- padding: 20px; }
- #extraFeaturesPanel .extraFeatureContent .extraFeature h1 {
- font-size: 20pt;
- padding-bottom: 20px; }
- #extraFeaturesPanel .extraFeatureContent form label {
+ #extraFeaturesPanel .extraFeatureContent .extraFeature .header h1 {
+ font-size: 20pt; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature .header p {
+ padding: 10px 0px; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature form label {
display: none; }
- #extraFeaturesPanel .extraFeatureContent form input {
+ #extraFeaturesPanel .extraFeatureContent .extraFeature form input {
display: block;
font-size: 18pt;
margin-bottom: 8px;
@@ -2117,10 +2164,10 @@ span.count {
border: 0px solid white;
width: 350px;
color: black; }
- #extraFeaturesPanel .extraFeatureContent form input.invalid {
+ #extraFeaturesPanel .extraFeatureContent .extraFeature form input.invalid {
border: 0px solid #ff9900;
color: gray; }
- #extraFeaturesPanel .extraFeatureContent form p {
+ #extraFeaturesPanel .extraFeatureContent .extraFeature form p {
display: -webkit-box;
display: -webkit-flex;
display: -moz-flex;
@@ -2131,8 +2178,9 @@ span.count {
-webkit-flex-direction: row;
-moz-flex-direction: row;
-ms-flex-direction: row;
- flex-direction: row; }
- #extraFeaturesPanel .extraFeatureContent form p input {
+ flex-direction: row;
+ padding-top: 8px; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature form p input {
width: 30px;
-webkit-box-flex: auto;
-webkit-flex: auto;
@@ -2140,15 +2188,18 @@ span.count {
-moz-flex: auto;
-ms-flex: auto;
flex: auto; }
- #extraFeaturesPanel .extraFeatureContent form p span {
+ #extraFeaturesPanel .extraFeatureContent .extraFeature form p label {
-webkit-box-flex: auto;
-webkit-flex: auto;
-moz-box-flex: auto;
-moz-flex: auto;
-ms-flex: auto;
flex: auto;
- font-size: 12pt; }
- #extraFeaturesPanel .extraFeatureContent form button {
+ font-size: 12pt;
+ display: block;
+ cursor: pointer;
+ line-height: 1.5em; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature form button {
font-family: "clipperz-font";
color: white;
font-size: 14pt;
@@ -2162,10 +2213,383 @@ span.count {
-o-transition: background-color font-weight 0.2s linear;
-ms-transition: background-color font-weight 0.2s linear;
transition: background-color font-weight 0.2s linear; }
- #extraFeaturesPanel .extraFeatureContent form button:disabled {
+ #extraFeaturesPanel .extraFeatureContent .extraFeature form button:disabled {
font-weight: 100;
background-color: #c0c0c0;
cursor: default; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature ul {
+ color: white; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature ul li {
+ padding-bottom: 30px; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature h3 {
+ font-size: 18pt; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature .description {
+ padding: 10px 0px 20px 0px; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature .description p {
+ font-size: 10pt;
+ margin-bottom: 7px;
+ line-height: 1.4em;
+ color: #bbb; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature .description p em {
+ text-decoration: underline; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature .description p.warning {
+ font-weight: bold;
+ color: white; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature .button {
+ display: inline-block;
+ color: white;
+ background-color: #ff9900;
+ font-size: 14pt;
+ border: 1px solid white;
+ padding: 10px 14px; }
+ #extraFeaturesPanel .extraFeatureContent .extraFeature .button.disabled {
+ background-color: #c0c0c0;
+ cursor: default; }
+ #extraFeaturesPanel .extraFeatureContent .OTP {
+ height: 100%; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .header .description {
+ padding-bottom: 0px; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .header .description p {
+ margin-bottom: 0px;
+ padding-bottom: 0px; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .actions {
+ padding-left: 9px;
+ padding-top: 6px; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .actions a {
+ font-family: 'clipperz-icons';
+ -webkit-font-feature-settings: "liga" 1, "dlig" 1;
+ -moz-font-feature-settings: "liga" 1, "dlig" 1;
+ -ms-font-feature-settings: "liga" 1, "dlig" 1;
+ -o-font-feature-settings: "liga" 1, "dlig" 1;
+ font-feature-settings: "liga" 1, "dlig" 1;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ cursor: pointer;
+ font-size: 18pt;
+ line-height: 1.1em; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .actions a:hover {
+ color: green; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .selectMenu {
+ margin-top: 1em; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .selectMenu li {
+ display: inline-block;
+ margin-right: 1em;
+ padding: 1em 0; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-direction: normal;
+ -webkit-box-orient: horizontal;
+ -webkit-flex-direction: row;
+ -moz-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ border: 1px solid #222;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ padding: 5px 0;
+ margin: 4px 0; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpAction {
+ width: 40px;
+ text-align: center; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpAction a {
+ font-family: 'clipperz-icons';
+ -webkit-font-feature-settings: "liga" 1, "dlig" 1;
+ -moz-font-feature-settings: "liga" 1, "dlig" 1;
+ -ms-font-feature-settings: "liga" 1, "dlig" 1;
+ -o-font-feature-settings: "liga" 1, "dlig" 1;
+ font-feature-settings: "liga" 1, "dlig" 1;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ cursor: pointer;
+ font-size: 16pt;
+ line-height: 1.1em; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpAction a:hover {
+ color: red; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpInfo .otpPassword {
+ font-size: 14pt;
+ line-height: 1.3em;
+ -webkit-user-select: text;
+ /* Chrome all / Safari all */
+ -moz-user-select: text;
+ /* Firefox all */
+ -ms-user-select: text;
+ /* IE 10+ */
+ /* No support for these yet, use at own risk */
+ -o-user-select: text;
+ user-select: text; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpInfo .otpLabel span {
+ font-size: 12pt;
+ color: gray;
+ padding: 4px 0px 4px 0px;
+ line-height: 1.3em;
+ cursor: pointer;
+ display: block; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpInfo .otpLabel input {
+ font-size: 12pt;
+ color: gray;
+ width: 100%;
+ border: 0px;
+ padding: 2px;
+ padding-left: 0px;
+ margin: 0px;
+ margin-bottom: 1px;
+ background-color: #333; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpInfo .otpStatusInfo {
+ font-size: 8pt;
+ color: gray; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail .otpInfo .otpStatusInfo span {
+ padding-right: 10px; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail.REQUESTED, #extraFeaturesPanel .extraFeatureContent .OTP .otpList .otpDetail.USED {
+ background-color: #222; }
+ #extraFeaturesPanel .extraFeatureContent .OTP .button {
+ margin: 1em 1em 0 0; }
+ #extraFeaturesPanel .extraFeatureContent .OTP table tr td a {
+ font-size: small;
+ padding: 0 1em;
+ text-decoration: underline;
+ cursor: pointer; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content {
+ display: block;
+ height: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -moz-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ /*
+ .csvTable {
+ background: white;
+ margin: 1em 0;
+ }
+
+
+ .button {
+ margin-right:1em;
+ }
+
+ .jsonPreview {
+ width: 100%;
+ height:80%;
+ overflow: auto;
+ margin-top:1em;
+
+ h3 {
+ font-weight:bold;
+ }
+
+ ul {
+ margin-bottom:1em;
+ padding-left:1em;
+
+ li {
+ .label {
+ font-weight:bold;
+ }
+ }
+ }
+ }
+ */ }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content ul.stepNavbar {
+ -webkit-box-flex: none;
+ -webkit-flex: none;
+ -moz-box-flex: none;
+ -moz-flex: none;
+ -ms-flex: none;
+ flex: none;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ text-align: center;
+ font-size: 24pt; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content ul.stepNavbar.Input {
+ display: none; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content ul.stepNavbar li {
+ display: inline-block;
+ padding: 0px;
+ padding-right: 10px; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content ul.stepNavbar li.disabled {
+ color: gray; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step {
+ -webkit-box-flex: auto;
+ -webkit-flex: auto;
+ -moz-box-flex: auto;
+ -moz-flex: auto;
+ -ms-flex: auto;
+ flex: auto;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Input .description p {
+ width: 100%; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Input form .dropArea {
+ width: calc(100% - 6px);
+ text-align: center;
+ height: inherit;
+ line-height: 2em;
+ border: 3px dashed white;
+ background: black; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Input form p {
+ margin: 10px 50%; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Input form p.error {
+ color: red;
+ font-size: 10pt;
+ font-style: italic;
+ margin: 0px 0px 10px 0px; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Input form textarea {
+ width: 100%;
+ min-height: 100px;
+ display: block;
+ margin: 1em 0;
+ border: 0; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-direction: normal;
+ -webkit-box-orient: horizontal;
+ -webkit-flex-direction: row;
+ -moz-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ padding-top: 15px;
+ padding-bottom: 0px;
+ border-bottom: 1px solid #333; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card.archived {
+ background-color: #333; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card input {
+ width: 30px;
+ margin-top: 6px;
+ -webkit-box-flex: none;
+ -webkit-flex: none;
+ -moz-box-flex: none;
+ -moz-flex: none;
+ -ms-flex: none;
+ flex: none; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent {
+ -webkit-box-flex: auto;
+ -webkit-flex: auto;
+ -moz-box-flex: auto;
+ -moz-flex: auto;
+ -ms-flex: auto;
+ flex: auto;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-direction: normal;
+ -webkit-box-orient: vertical;
+ -webkit-flex-direction: column;
+ -moz-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ height: auto; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent h3 {
+ font-size: 24pt;
+ padding-bottom: 6px; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent ul.tagList li {
+ display: inline-block;
+ padding-right: 10px;
+ padding-bottom: 5px; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent ul.tagList li:before {
+ content: 'tag';
+ font-family: 'clipperz-icons';
+ -webkit-font-feature-settings: "liga" 1, "dlig" 1;
+ -moz-font-feature-settings: "liga" 1, "dlig" 1;
+ -ms-font-feature-settings: "liga" 1, "dlig" 1;
+ -o-font-feature-settings: "liga" 1, "dlig" 1;
+ font-feature-settings: "liga" 1, "dlig" 1;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ font-size: 10pt;
+ padding-right: 5px;
+ line-height: 28px;
+ color: #ccc; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent dl dt {
+ font-size: 12pt;
+ color: gray;
+ line-height: 16pt; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent dl dd {
+ font-size: 16pt;
+ color: white;
+ line-height: 24pt;
+ padding-bottom: 6pt; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent dl dd.PASSWORD {
+ font-family: clipperz-password; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Preview li.card div.cardContent p {
+ font-size: 10pt;
+ padding-top: 10px;
+ padding-bottom: 10px; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step.Import h5 {
+ padding-bottom: 15px; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable {
+ width: 100%;
+ color: white;
+ border-collapse: collapse; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable thead {
+ background-color: gray; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable thead th {
+ align: left; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable tbody td {
+ align: right; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable td, #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th {
+ border: 1px solid #999;
+ padding: 0.5rem; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable td.PASSWORD, #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th.PASSWORD {
+ font-family: clipperz-password;
+ font-size: 14.9pt;
+ line-height: 10pt; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th {
+ background-color: #666; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th.title {
+ background-color: #888; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th.notes {
+ background-color: #aaa; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .step table.csvTable th input {
+ color: white;
+ border: 0px;
+ padding: 0px;
+ font-size: 12pt;
+ font-weight: bold;
+ background-color: inherit; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons {
+ -webkit-box-flex: none;
+ -webkit-flex: none;
+ -moz-box-flex: none;
+ -moz-flex: none;
+ -ms-flex: none;
+ flex: none;
+ text-align: center;
+ padding-top: 10px; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons.Input .button.back {
+ visibility: hidden; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons.Import .button.next {
+ visibility: hidden; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button {
+ margin: 0px 5px; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button span {
+ display: none; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button.back {
+ background-color: #c0c0c0; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button.back:before {
+ content: '<<'; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button.next.DISABLED {
+ background-color: #d3d3d3; }
+ #extraFeaturesPanel .extraFeatureContent .dataImport .content .buttons .button.next:after {
+ content: '>>'; }
+ #extraFeaturesPanel .extraFeatureContent form input.valid + .invalidMsg, #extraFeaturesPanel .extraFeatureContent form input.empty + .invalidMsg, #extraFeaturesPanel .extraFeatureContent form input:focus + .invalidMsg, #extraFeaturesPanel .extraFeatureContent form input.invalid:focus + .invalidMsg {
+ visibility: hidden; }
.mainPage.narrow #extraFeaturesPanel .extraFeatureContent header {
display: block;
diff --git a/frontend/delta/css/clipperz.css.map b/frontend/delta/css/clipperz.css.map
index 4fe7ec0..1140b66 100644
--- a/frontend/delta/css/clipperz.css.map
+++ b/frontend/delta/css/clipperz.css.map
@@ -1,6 +1,6 @@
{
"version": 3,
-"mappings": ";;;;;AAOA,0eAA2e;EAC1e,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,SAAS,EAAE,IAAI;EACf,IAAI,EAAE,OAAO;EACb,cAAc,EAAE,QAAQ;;;AAKzB,uFAAwF;EACvF,OAAO,EAAE,KAAK;;AAGf,IAAK;EACJ,WAAW,EAAE,CAAC;;AAGf,MAAO;EACN,UAAU,EAAE,IAAI;;AAGjB,aAAc;EACb,MAAM,EAAE,IAAI;EAEZ,sDAAmB;IAClB,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,IAAI;;AAIf,KAAM;EACL,eAAe,EAAE,QAAQ;EACzB,cAAc,EAAE,CAAC;;AClClB,UAOC;EANA,WAAW,EAAE,gBAAgB;EAE7B,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;EACnB,GAAG,EAAE,g1NAAg1N;;;;;;;;;;AAiBt1N,UAMC;EALA,WAAW,EAAE,mBAAmB;EAEhC,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;EACnB,GAAG,EAAE,y71JAAy71J;AClC/71J,UAMC;EALA,WAAW,EAAE,eAAe;EAE5B,GAAG,EAAE,wzgXAAwzgX;EAC7zgX,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;AAGnB,UAMC;EALA,WAAW,EAAE,eAAe;EAE5B,GAAG,EAAE,gqtQAAgqtQ;EACrqtQ,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;AAInB,UAMC;EALA,WAAW,EAAE,eAAe;EAE5B,GAAG,EAAE,g8/WAAg8/W;EACr8/W,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;AAGnB,UAMC;EALA,WAAW,EAAE,eAAe;EAE5B,GAAG,EAAE,o3lQAAo3lQ;EACz3lQ,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACmFlB,uBAEC;EAyBD,EAAG;IA9DH,iBAAiB,EAAE,4BAA0D;IAC1E,cAAc,EAAE,4BAA0D;IACzE,aAAa,EAAE,4BAA0D;IACxE,YAAY,EAAE,4BAA0D;IACrE,SAAS,EAAE,4BAA0D;;EA2D7E,IAAK;IA/DL,iBAAiB,EAAE,8BAA0D;IAC1E,cAAc,EAAE,8BAA0D;IACzE,aAAa,EAAE,8BAA0D;IACxE,YAAY,EAAE,8BAA0D;IACrE,SAAS,EAAE,8BAA0D;AAkC7E,oBAEC;EAsBD,EAAG;IA9DH,iBAAiB,EAAE,4BAA0D;IAC1E,cAAc,EAAE,4BAA0D;IACzE,aAAa,EAAE,4BAA0D;IACxE,YAAY,EAAE,4BAA0D;IACrE,SAAS,EAAE,4BAA0D;;EA2D7E,IAAK;IA/DL,iBAAiB,EAAE,8BAA0D;IAC1E,cAAc,EAAE,8BAA0D;IACzE,aAAa,EAAE,8BAA0D;IACxE,YAAY,EAAE,8BAA0D;IACrE,SAAS,EAAE,8BAA0D;AAqC7E,mBAEC;EAmBD,EAAG;IA9DH,iBAAiB,EAAE,4BAA0D;IAC1E,cAAc,EAAE,4BAA0D;IACzE,aAAa,EAAE,4BAA0D;IACxE,YAAY,EAAE,4BAA0D;IACrE,SAAS,EAAE,4BAA0D;;EA2D7E,IAAK;IA/DL,iBAAiB,EAAE,8BAA0D;IAC1E,cAAc,EAAE,8BAA0D;IACzE,aAAa,EAAE,8BAA0D;IACxE,YAAY,EAAE,8BAA0D;IACrE,SAAS,EAAE,8BAA0D;AAwC7E,eAEC;EAgBD,EAAG;IA9DH,iBAAiB,EAAE,4BAA0D;IAC1E,cAAc,EAAE,4BAA0D;IACzE,aAAa,EAAE,4BAA0D;IACxE,YAAY,EAAE,4BAA0D;IACrE,SAAS,EAAE,4BAA0D;;EA2D7E,IAAK;IA/DL,iBAAiB,EAAE,8BAA0D;IAC1E,cAAc,EAAE,8BAA0D;IACzE,aAAa,EAAE,8BAA0D;IACxE,YAAY,EAAE,8BAA0D;IACrE,SAAS,EAAE,8BAA0D;AChF9E,WAAY;EAWX,OAAO,EAAE,KAAK;EACd,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;EACb,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,kBAAe;EDpB3B,qBAAqB,ECqBE,IAAI;EDpBxB,kBAAkB,ECoBE,IAAI;EDnBnB,aAAa,ECmBE,IAAI;ED0G3B,iBAAM;IACL,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;IACX,gBAAgB,EAAE,kBAAkB;EClIrC,iBAAM;IACL,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,EAAE;IAEX,wBAAS;MACR,OAAO,EAAE,IAAI;EAcf,kBAAO;IACN,KAAK,EAAE,IAAI;IAEX,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,IAAI;EAGZ,iBAAM;IACL,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IAEjB,UAAU,EAAE,MAAM;IAClB,cAAc,EAAE,MAAM;IDvBvB,WAAW,EAAE,gBAAgB;IAT7B,6BAA6B,EAAC,kBAAM;IAEpC,0BAA0B,EAAC,kBAAM;IACjC,yBAAyB,EAAC,kBAAM;IAChC,wBAAwB,EAAC,kBAAM;IAC/B,qBAAqB,EAAC,kBAAM;IAM5B,sBAAsB,EAAE,WAAW;IACnC,cAAc,EAAC,kBAAkB;ICuBhC,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,IAAI;EAGlB,4BAAmB;IDlBnB,sBAAsB,ECmBF,gBAAgB;IDlBpC,0BAA0B,ECkBY,KAAK;IDjB3C,iCAAiC,EAHwB,MAAM;IAI/D,iCAAiC,EAJiD,CAAC;IAKnF,2BAA2B,EALqE,IAAI;IAOpG,mBAAmB,ECaC,gBAAgB;IDZpC,uBAAuB,ECYe,KAAK;IDX3C,8BAA8B,EAT2B,MAAM;IAU/D,8BAA8B,EAVoD,CAAC;IAWnF,wBAAwB,EAXwE,IAAI;IAapG,kBAAkB,ECOE,gBAAgB;IDNpC,sBAAsB,ECMgB,KAAK;IDL3C,6BAA6B,EAf4B,MAAM;IAgB/D,6BAA6B,EAhBqD,CAAC;IAiBnF,uBAAuB,EAjByE,IAAI;IAmBpG,iBAAiB,ECCG,gBAAgB;IDApC,qBAAqB,ECAiB,KAAK;IDC3C,4BAA4B,EArB6B,MAAM;IAsB/D,4BAA4B,EAtBsD,CAAC;IAuBnF,sBAAsB,EAvB0E,IAAI;IAyBpG,cAAc,ECLM,gBAAgB;IDMpC,kBAAkB,ECNoB,KAAK;IDO3C,yBAAyB,EA3BgC,MAAM;IA4B/D,yBAAyB,EA5ByD,CAAC;IA6BnF,mBAAmB,EA7B6E,IAAI;ECwBpG,4BAAmB;IDvBnB,sBAAsB,ECwBF,gBAAgB;IDvBpC,0BAA0B,ECuBY,KAAK;IDtB3C,iCAAiC,ECsBY,MAAM;IDrBnD,iCAAiC,ECqBoB,CAAC;IDpBtD,2BAA2B,ECoB6B,QAAQ;IDlBhE,mBAAmB,ECkBC,gBAAgB;IDjBpC,uBAAuB,ECiBe,KAAK;IDhB3C,8BAA8B,ECgBe,MAAM;IDfnD,8BAA8B,ECeuB,CAAC;IDdtD,wBAAwB,ECcgC,QAAQ;IDZhE,kBAAkB,ECYE,gBAAgB;IDXpC,sBAAsB,ECWgB,KAAK;IDV3C,6BAA6B,ECUgB,MAAM;IDTnD,6BAA6B,ECSwB,CAAC;IDRtD,uBAAuB,ECQiC,QAAQ;IDNhE,iBAAiB,ECMG,gBAAgB;IDLpC,qBAAqB,ECKiB,KAAK;IDJ3C,4BAA4B,ECIiB,MAAM;IDHnD,4BAA4B,ECGyB,CAAC;IDFtD,sBAAsB,ECEkC,QAAQ;IDAhE,cAAc,ECAM,gBAAgB;IDCpC,kBAAkB,ECDoB,KAAK;IDE3C,yBAAyB,ECFoB,MAAM;IDGnD,yBAAyB,ECH4B,CAAC;IDItD,mBAAmB,ECJqC,QAAQ;EAIhE,uBAAY;IACX,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,cAAc;IACpB,GAAG,EAAE,cAAc;IAEnB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IAGjB,OAAO,EAAE,KAAK;IAEd,2BAAI;MACH,KAAK,EAAE,GAAG;MACV,MAAM,EAAE,GAAG;MACX,UAAU,EAAE,OAAO;MACnB,QAAQ,EAAE,QAAQ;MAClB,IAAI,EAAE,KAAK;MACX,GAAG,EAAE,GAAG;MACR,OAAO,EAAE,CAAC;MDhDZ,sBAAsB,ECiDD,YAAY;MDhDjC,0BAA0B,ECgDS,EAAE;MD/CrC,iCAAiC,EC+CM,MAAM;MD9C7C,iCAAiC,EC8Cc,QAAQ;MD7CvD,2BAA2B,EALqE,IAAI;MAOpG,mBAAmB,EC2CE,YAAY;MD1CjC,uBAAuB,EC0CY,EAAE;MDzCrC,8BAA8B,ECyCS,MAAM;MDxC7C,8BAA8B,ECwCiB,QAAQ;MDvCvD,wBAAwB,EAXwE,IAAI;MAapG,kBAAkB,ECqCG,YAAY;MDpCjC,sBAAsB,ECoCa,EAAE;MDnCrC,6BAA6B,ECmCU,MAAM;MDlC7C,6BAA6B,ECkCkB,QAAQ;MDjCvD,uBAAuB,EAjByE,IAAI;MAmBpG,iBAAiB,EC+BI,YAAY;MD9BjC,qBAAqB,EC8Bc,EAAE;MD7BrC,4BAA4B,EC6BW,MAAM;MD5B7C,4BAA4B,EC4BmB,QAAQ;MD3BvD,sBAAsB,EAvB0E,IAAI;MAyBpG,cAAc,ECyBO,YAAY;MDxBjC,kBAAkB,ECwBiB,EAAE;MDvBrC,yBAAyB,ECuBc,MAAM;MDtB7C,yBAAyB,ECsBsB,QAAQ;MDrBvD,mBAAmB,EA7B6E,IAAI;MApCpG,qBAAqB,ECuFI,IAAI;MDtF1B,kBAAkB,ECsFI,IAAI;MDrFrB,aAAa,ECqFI,IAAI;MDiB7B,kBAAkB,EAAE,0BAA8B;MAC/C,eAAe,EAAE,0BAA8B;MAC9C,cAAc,EAAE,0BAA8B;MAC7C,aAAa,EAAE,0BAA8B;MAC1C,UAAU,EAAE,0BAA8B;ICjBjD,iCAAU;MDdX,iBAAiB,EAAE,gCAA0D;MAC1E,cAAc,EAAE,gCAA0D;MACzE,aAAa,EAAE,gCAA0D;MACxE,YAAY,EAAE,gCAA0D;MACrE,SAAS,EAAE,gCAA0D;MAe7E,uBAAuB,EAAE,EAAM;MAC5B,oBAAoB,EAAE,EAAM;MAC3B,mBAAmB,EAAE,EAAM;MAC1B,kBAAkB,EAAE,EAAM;MACvB,eAAe,EAAE,EAAM;ICR9B,iCAAU;MDfX,iBAAiB,EAAE,iCAA0D;MAC1E,cAAc,EAAE,iCAA0D;MACzE,aAAa,EAAE,iCAA0D;MACxE,YAAY,EAAE,iCAA0D;MACrE,SAAS,EAAE,iCAA0D;MAe7E,uBAAuB,EAAE,QAAM;MAC5B,oBAAoB,EAAE,QAAM;MAC3B,mBAAmB,EAAE,QAAM;MAC1B,kBAAkB,EAAE,QAAM;MACvB,eAAe,EAAE,QAAM;ICP9B,iCAAU;MDhBX,iBAAiB,EAAE,iCAA0D;MAC1E,cAAc,EAAE,iCAA0D;MACzE,aAAa,EAAE,iCAA0D;MACxE,YAAY,EAAE,iCAA0D;MACrE,SAAS,EAAE,iCAA0D;MAe7E,uBAAuB,EAAE,OAAM;MAC5B,oBAAoB,EAAE,OAAM;MAC3B,mBAAmB,EAAE,OAAM;MAC1B,kBAAkB,EAAE,OAAM;MACvB,eAAe,EAAE,OAAM;ICN9B,iCAAU;MDjBX,iBAAiB,EAAE,iCAA0D;MAC1E,cAAc,EAAE,iCAA0D;MACzE,aAAa,EAAE,iCAA0D;MACxE,YAAY,EAAE,iCAA0D;MACrE,SAAS,EAAE,iCAA0D;MAe7E,uBAAuB,EAAE,MAAM;MAC5B,oBAAoB,EAAE,MAAM;MAC3B,mBAAmB,EAAE,MAAM;MAC1B,kBAAkB,EAAE,MAAM;MACvB,eAAe,EAAE,MAAM;ICL9B,iCAAU;MDlBX,iBAAiB,EAAE,kCAA0D;MAC1E,cAAc,EAAE,kCAA0D;MACzE,aAAa,EAAE,kCAA0D;MACxE,YAAY,EAAE,kCAA0D;MACrE,SAAS,EAAE,kCAA0D;MAe7E,uBAAuB,EAAE,OAAM;MAC5B,oBAAoB,EAAE,OAAM;MAC3B,mBAAmB,EAAE,OAAM;MAC1B,kBAAkB,EAAE,OAAM;MACvB,eAAe,EAAE,OAAM;ICJ9B,iCAAU;MDnBX,iBAAiB,EAAE,kCAA0D;MAC1E,cAAc,EAAE,kCAA0D;MACzE,aAAa,EAAE,kCAA0D;MACxE,YAAY,EAAE,kCAA0D;MACrE,SAAS,EAAE,kCAA0D;MAe7E,uBAAuB,EAAE,QAAM;MAC5B,oBAAoB,EAAE,QAAM;MAC3B,mBAAmB,EAAE,QAAM;MAC1B,kBAAkB,EAAE,QAAM;MACvB,eAAe,EAAE,QAAM;ICH9B,iCAAU;MDpBX,iBAAiB,EAAE,kCAA0D;MAC1E,cAAc,EAAE,kCAA0D;MACzE,aAAa,EAAE,kCAA0D;MACxE,YAAY,EAAE,kCAA0D;MACrE,SAAS,EAAE,kCAA0D;MAe7E,uBAAuB,EAAE,KAAM;MAC5B,oBAAoB,EAAE,KAAM;MAC3B,mBAAmB,EAAE,KAAM;MAC1B,kBAAkB,EAAE,KAAM;MACvB,eAAe,EAAE,KAAM;ICF9B,iCAAU;MDrBX,iBAAiB,EAAE,kCAA0D;MAC1E,cAAc,EAAE,kCAA0D;MACzE,aAAa,EAAE,kCAA0D;MACxE,YAAY,EAAE,kCAA0D;MACrE,SAAS,EAAE,kCAA0D;MAe7E,uBAAuB,EAAE,SAAM;MAC5B,oBAAoB,EAAE,SAAM;MAC3B,mBAAmB,EAAE,SAAM;MAC1B,kBAAkB,EAAE,SAAM;MACvB,eAAe,EAAE,SAAM;ICD9B,iCAAU;MDtBX,iBAAiB,EAAE,kCAA0D;MAC1E,cAAc,EAAE,kCAA0D;MACzE,aAAa,EAAE,kCAA0D;MACxE,YAAY,EAAE,kCAA0D;MACrE,SAAS,EAAE,kCAA0D;MAe7E,uBAAuB,EAAE,OAAM;MAC5B,oBAAoB,EAAE,OAAM;MAC3B,mBAAmB,EAAE,OAAM;MAC1B,kBAAkB,EAAE,OAAM;MACvB,eAAe,EAAE,OAAM;ICA9B,iCAAU;MDvBX,iBAAiB,EAAE,kCAA0D;MAC1E,cAAc,EAAE,kCAA0D;MACzE,aAAa,EAAE,kCAA0D;MACxE,YAAY,EAAE,kCAA0D;MACrE,SAAS,EAAE,kCAA0D;MAe7E,uBAAuB,EAAE,MAAM;MAC5B,oBAAoB,EAAE,MAAM;MAC3B,mBAAmB,EAAE,MAAM;MAC1B,kBAAkB,EAAE,MAAM;MACvB,eAAe,EAAE,MAAM;ICC9B,iCAAU;MDxBX,iBAAiB,EAAE,kCAA0D;MAC1E,cAAc,EAAE,kCAA0D;MACzE,aAAa,EAAE,kCAA0D;MACxE,YAAY,EAAE,kCAA0D;MACrE,SAAS,EAAE,kCAA0D;MAe7E,uBAAuB,EAAE,QAAM;MAC5B,oBAAoB,EAAE,QAAM;MAC3B,mBAAmB,EAAE,QAAM;MAC1B,kBAAkB,EAAE,QAAM;MACvB,eAAe,EAAE,QAAM;ICE9B,iCAAU;MDzBX,iBAAiB,EAAE,kCAA0D;MAC1E,cAAc,EAAE,kCAA0D;MACzE,aAAa,EAAE,kCAA0D;MACxE,YAAY,EAAE,kCAA0D;MACrE,SAAS,EAAE,kCAA0D;MAe7E,uBAAuB,EAAE,QAAM;MAC5B,oBAAoB,EAAE,QAAM;MAC3B,mBAAmB,EAAE,QAAM;MAC1B,kBAAkB,EAAE,QAAM;MACvB,eAAe,EAAE,QAAM;;AAY/B,+BAEC;ECLD,IAAK;IAAC,OAAO,EAAE,CAAC;;EAChB,EAAG;IAAC,OAAO,EAAE,IAAI;ADKjB,4BAEC;ECRD,IAAK;IAAC,OAAO,EAAE,CAAC;;EAChB,EAAG;IAAC,OAAO,EAAE,IAAI;ADQjB,2BAEC;ECXD,IAAK;IAAC,OAAO,EAAE,CAAC;;EAChB,EAAG;IAAC,OAAO,EAAE,IAAI;ADWjB,uBAEC;ECdD,IAAK;IAAC,OAAO,EAAE,CAAC;;EAChB,EAAG;IAAC,OAAO,EAAE,IAAI;ADEjB,mCAEC;ECAD,EAAG;IAAE,OAAO,EAAE,CAAC;;EACf,IAAK;IAAE,OAAO,EAAE,CAAC;ADAjB,gCAEC;ECHD,EAAG;IAAE,OAAO,EAAE,CAAC;;EACf,IAAK;IAAE,OAAO,EAAE,CAAC;ADGjB,+BAEC;ECND,EAAG;IAAE,OAAO,EAAE,CAAC;;EACf,IAAK;IAAE,OAAO,EAAE,CAAC;ADMjB,2BAEC;ECTD,EAAG;IAAE,OAAO,EAAE,CAAC;;EACf,IAAK;IAAE,OAAO,EAAE,CAAC;ADHjB,mCAEC;ECKD,EAAG;IAAE,OAAO,EAAE,CAAC;;EACf,IAAK;IAAE,OAAO,EAAE,CAAC;ADLjB,gCAEC;ECED,EAAG;IAAE,OAAO,EAAE,CAAC;;EACf,IAAK;IAAE,OAAO,EAAE,CAAC;ADFjB,+BAEC;ECDD,EAAG;IAAE,OAAO,EAAE,CAAC;;EACf,IAAK;IAAE,OAAO,EAAE,CAAC;ADCjB,2BAEC;ECJD,EAAG;IAAE,OAAO,EAAE,CAAC;;EACf,IAAK;IAAE,OAAO,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvHlB,IAAK;EACJ,QAAQ,EAAE,KAAK;EACf,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;;AAGZ,KAAM;ECFL,QAAQ,EAAE,QAAQ;EAElB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,MAAM;EH0EhB,iBAAiB,EAAE,oBAA0B;EACrC,SAAS,EAAE,oBAA0B;EAI7C,2BAA2B,EGxFN,IAAI;EHyFjB,mBAAmB,EGzFN,IAAI;EAczB,UAAO;IHqEP,iBAAiB,EAAE,wBAA0B;IACrC,SAAS,EAAE,wBAA0B;EGlE7C,WAAQ;IHiER,iBAAiB,EAAE,uBAA0B;IACrC,SAAS,EAAE,uBAA0B;IGhE5C,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,IAAI;IAEb,sBAAa;MACZ,UAAU,EAAE,OAAO;MACnB,OAAO,EAAE,KAAK;;ADfjB,KAAM;EACL,kBAAkB,EAAE,IAAI;;AAOzB,2BAA4B;ECqC3B,QAAQ,EAAE,KAAK;EACf,OAAO,EAAE,EAAE;EArBX,KAAK,EC3BgB,KAAK;ED4B1B,MAAM,EAAE,IAAI;EAEZ,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,MAAM;EACZ,UAAU,EAAE,qBAAqB;EHkHjC,QAAQ,EAAE,IAAI;EACd,0BAA0B,EAAE,KAAK;EEpIjC,gCAAO;ICiDN,IAAI,EAAE,GAAG;;AD5CX,WAAY;EG+DX,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,SAAS;EAClB,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,IAAI;EAmCZ,qBAAqB,EAAE,MAAM;EAC7B,kBAAkB,EAAE,QAAQ;EAQ7B,sBAAsB,EH7GE,MAAM;EG8G9B,mBAAmB,EH9GK,MAAM;EG+G9B,kBAAkB,EH/GM,MAAM;EGgH9B,cAAc,EHhHU,MAAM;EAE9B,MAAM,EAAE,IAAI;EAEZ,yBAAc;IGmQd,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;EHpQjB,mBAAQ;IG+PR,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;EHhQjB,sBAAW;IG2PX,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;IH9PhB,WAAW,EAAE,GAAG;IF8GjB,QAAQ,EAAE,IAAI;IACd,0BAA0B,EAAE,KAAK;EE7FjC,8BAAmB;IGuOnB,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;IHzOhB,MAAM,EAAE,OAAO;;AAIjB,UAAW;EAEV,IAAI,EAAE,GAAG;EAET,qBAAa;IC8Cb,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,MAAM;ID7Cb,gCAAW;MGeZ,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,SAAS;MAClB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,IAAI;IHbX,yCAAY;MGmNd,gBAAgB,EARH,CAAG;MAShB,YAAY,EAAE,GAAW;MACzB,aAAa,EAVA,CAAG;MAWhB,SAAS,EAAE,GAAW;MACtB,QAAQ,EAAE,GAAW;MACrB,IAAI,EAAE,GAAW;IHlNf,2CAAc;MG6MhB,gBAAgB,EARH,CAAG;MAShB,YAAY,EAAE,CAAW;MACzB,aAAa,EAVA,CAAG;MAWhB,SAAS,EAAE,CAAW;MACtB,QAAQ,EAAE,CAAW;MACrB,IAAI,EAAE,CAAW;MA/MjB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,SAAS;MAClB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,IAAI;MAmCZ,qBAAqB,EAAE,MAAM;MAC7B,kBAAkB,EAAE,QAAQ;MAQ7B,sBAAsB,EHhDK,MAAM;MGiDjC,mBAAmB,EHjDQ,MAAM;MGkDjC,kBAAkB,EHlDS,MAAM;MGmDjC,cAAc,EHnDa,MAAM;IAK/B,8CAAQ;MACP,OAAO,EAAE,IAAI;MACb,UAAU,EAAE,MAAM;IAIpB,uCAAkB;MACjB,WAAW,EAAE,GAAG;EAIlB,eAAO;IACN,UAAU,EAAE,qBAAqB;IACjC,0BAAW;MCUZ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,MAAM;EDPd,iBAAS;IACR,UAAU,EAAE,qBAAqB;IACjC,4BAAW;MCGZ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,MAAM;IDDb,yBAAQ;MCrHT,QAAQ,EAAE,QAAQ;MAElB,GAAG,EAAE,CAAC;MACN,IAAI,EAAE,CAAC;MACP,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,QAAQ,EAAE,MAAM;MH0EhB,iBAAiB,EAAE,oBAA0B;MACrC,SAAS,EAAE,oBAA0B;MAI7C,2BAA2B,EGxFN,IAAI;MHyFjB,mBAAmB,EGzFN,IAAI;MAczB,8BAAO;QHqEP,iBAAiB,EAAE,wBAA0B;QACrC,SAAS,EAAE,wBAA0B;MGlE7C,+BAAQ;QHiER,iBAAiB,EAAE,uBAA0B;QACrC,SAAS,EAAE,uBAA0B;QGhE5C,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,IAAI;QAEb,0CAAa;UACZ,UAAU,EAAE,OAAO;UACnB,OAAO,EAAE,KAAK;IDmGf,mCAAkB;MACjB,WAAW,EAAE,GAAG;EAIlB,oBAAY;ICpBZ,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,EAAE;IA7BX,GAAG,EAAE,CAAC;IACN,IAAI,EC5EiB,KAAK;IJqH1B,0BAAM;MACL,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,IAAI,EAAE,CAAC;MACP,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,EAAE;MACX,gBAAgB,EAAE,kBAAkB;EAPrC,2BAAM;IACL,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;IACX,gBAAgB,EAAE,kBAAkB;;AEanC,gEAAmB;EAClB,KAAK,EAAE,GAAG;;AAOd,mBAAoB;EClGnB,QAAQ,EAAE,KAAK;EACf,OAAO,EAAE,EAAE;EAVX,KAAK,ECrCe,KAAK;EDsCzB,MAAM,EAAE,IAAI;EAEZ,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,MAAM;EACb,UAAU,EAAE,sBAAsB;EEwClC,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,SAAS;EAClB,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,IAAI;EAgCZ,qBAAqB,EAAE,OAAO;EAC9B,kBAAkB,EAAE,UAAU;EAW/B,sBAAsB,EHoCE,WAAW;EGnCnC,mBAAmB,EHmCK,WAAW;EGlCnC,kBAAkB,EHkCM,WAAW;EGjCnC,cAAc,EHiCU,WAAW;EAjBnC,wBAAO;IClFN,KAAK,EAAE,GAAG;EDsFX,wCAAqB;IACpB,OAAO,EAAE,IAAI;EAGd,4BAAW;IAEV,KAAK,EAAE,IAAI;IACX,iDAAqB;MACpB,OAAO,EAAE,KAAK;EAOhB,sCAAmB;IGoHnB,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;IHtHhB,KAAK,EE3Kc,KAAK;IF4KxB,MAAM,EAAE,IAAI;IG1Fb,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IAmCZ,qBAAqB,EAAE,MAAM;IAC7B,kBAAkB,EAAE,QAAQ;IAQ7B,sBAAsB,EH4CG,MAAM;IG3C/B,mBAAmB,EH2CM,MAAM;IG1C/B,kBAAkB,EH0CO,MAAM;IGzC/B,cAAc,EHyCW,MAAM;IAE9B,6CAAO;MG4GR,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;IH7GhB,4CAAQ;MGwGT,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MLhJjB,QAAQ,EAAE,IAAI;MACd,0BAA0B,EAAE,KAAK;IE0ChC,6CAAO;MGgGR,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;EHhGjB,wCAAqB;IG2FrB,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;IH7FhB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IAEZ,gBAAgB,EAAE,KAAK;;AAIzB,UAAW;EACV,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;;AAGZ,iBAAkB;EACjB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EGhIZ,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,SAAS;EAClB,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,IAAI;EAmCZ,qBAAqB,EAAE,MAAM;EAC7B,kBAAkB,EAAE,QAAQ;EAQ7B,sBAAsB,EHmFE,MAAM;EGlF9B,mBAAmB,EHkFK,MAAM;EGjF9B,kBAAkB,EHiFM,MAAM;EGhF9B,cAAc,EHgFU,MAAM;EAE9B,8BAAa;IGqEb,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;;AH9DjB,sBAAO;EGjJP,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,SAAS;EAClB,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,IAAI;EH+IZ,MAAM,EE3OgB,IAAI;EF4O1B,WAAW,EE5OW,IAAI;EF8O1B,gBAAgB,EI/KL,OAAgB;EJgL3B,KAAK,EAAE,KAAK;EACZ,SAAS,EAAE,IAAI;EAMb,6CAAU;IFnOb,WAAW,EAAE,gBAAgB;IAT7B,6BAA6B,EAAC,kBAAM;IAEpC,0BAA0B,EAAC,kBAAM;IACjC,yBAAyB,EAAC,kBAAM;IAChC,wBAAwB,EAAC,kBAAM;IAC/B,qBAAqB,EAAC,kBAAM;IAM5B,sBAAsB,EAAE,WAAW;IACnC,cAAc,EAAC,kBAAkB;IKqWjC,kBAAkB,EHlIM,MAAM;IGmI9B,eAAe,EHnIS,MAAM;IGyI7B,mBAAmB,EHzII,MAAM;IG2I9B,UAAU,EH3Ic,MAAM;IGyC9B,gBAAgB,EARH,CAAG;IAShB,YAAY,EAAE,CAAW;IACzB,aAAa,EAVA,CAAG;IAWhB,SAAS,EAAE,CAAW;IACtB,QAAQ,EAAE,CAAW;IACrB,IAAI,EAAE,CAAW;IH5Cb,UAAU,EAAE,MAAM;IAElB,uGAAgB;MACf,SAAS,EAAE,IAAI;EAIjB,8CAAW;IACV,OAAO,EAAE,YAAY;IACrB,YAAY,EAAE,GAAG;IACjB,SAAS,EAAE,IAAI;EAIjB,0CAAkB;IGyBpB,gBAAgB,EARH,CAAG;IAShB,YAAY,EAAE,CAAW;IACzB,aAAa,EAVA,CAAG;IAWhB,SAAS,EAAE,CAAW;IACtB,QAAQ,EAAE,CAAW;IACrB,IAAI,EAAE,CAAW;IH3Bd,kDAAQ;MACP,UAAU,EAAE,IAAI;MAEhB,yDAAO;QACN,YAAY,EAAE,GAAG;EAWpB,yCAAiB;IGOnB,gBAAgB,EARH,CAAG;IAShB,YAAY,EAAE,CAAW;IACzB,aAAa,EAVA,CAAG;IAWhB,SAAS,EAAE,CAAW;IACtB,QAAQ,EAAE,CAAW;IACrB,IAAI,EAAE,CAAW;IHTd,iDAAQ;MACP,UAAU,EAAE,KAAK;MAEjB,wDAAO;QACN,aAAa,EAAE,GAAG;EAKrB,kCAAQ;IACP,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,IAAI;IFtRlB,WAAW,EAAE,gBAAgB;IAT7B,6BAA6B,EAAC,kBAAM;IAEpC,0BAA0B,EAAC,kBAAM;IACjC,yBAAyB,EAAC,kBAAM;IAChC,wBAAwB,EAAC,kBAAM;IAC/B,qBAAqB,EAAC,kBAAM;IAM5B,sBAAsB,EAAE,WAAW;IACnC,cAAc,EAAC,kBAAkB;IEqR9B,cAAc,EAAE,MAAM;;AAO1B,eAAgB;EG1Nf,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,SAAS;EAClB,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,IAAI;EAyCZ,qBAAqB,EAAE,MAAM;EAC7B,kBAAkB,EAAE,UAAU;EAE/B,sBAAsB,EH8KE,GAAG;EG7K3B,mBAAmB,EH6KK,GAAG;EG5K3B,kBAAkB,EH4KM,GAAG;EG3K3B,cAAc,EH2KU,GAAG;EAC3B,MAAM,EAAE,IAAI;EAEZ,yCAA0B;IGvB1B,gBAAgB,EARH,CAAG;IAShB,YAAY,EAAE,GAAW;IACzB,aAAa,EAVA,CAAG;IAWhB,SAAS,EAAE,GAAW;IACtB,QAAQ,EAAE,GAAW;IACrB,IAAI,EAAE,GAAW;IA/MjB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IHmOZ,QAAQ,EAAE,MAAM;IAGhB,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,8BAA4B;IAMvC,8DAAa;MACZ,cAAc,EAAE,KAAK;IAIvB,sDAAa;MFvLd,QAAQ,EAAE,IAAI;MACd,0BAA0B,EAAE,KAAK;MEwL/B,KAAK,EAAE,IAAI;IAIZ,2DAAkB;MFjUnB,WAAW,EAAE,gBAAgB;MAT7B,6BAA6B,EAAC,kBAAM;MAEpC,0BAA0B,EAAC,kBAAM;MACjC,yBAAyB,EAAC,kBAAM;MAChC,wBAAwB,EAAC,kBAAM;MAC/B,qBAAqB,EAAC,kBAAM;MAM5B,sBAAsB,EAAE,WAAW;MACnC,cAAc,EAAC,kBAAkB;MA3BjC,qBAAqB,EAAE,IAAO;MAC3B,kBAAkB,EAAE,IAAO;MACtB,aAAa,EAAE,IAAO;ME0V5B,OAAO,EAAE,CAAC;MAGV,QAAQ,EAAE,QAAQ;MAClB,MAAM,EAAE,GAAG;MACX,SAAS,EAAE,IAAI;MAIf,KAAK,EAAE,KAAK;MACZ,gBAAgB,EIvSF,OAAO;MJwSrB,UAAU,EAAE,gCAA8B;MAE1C,KAAK,EAjBU,IAAI;MAkBnB,MAAM,EAlBS,IAAI;MAqBnB,QAAQ,EAAE,QAAQ;MAElB,WAAW,EAAE,GAAG;MAChB,aAAa,EAAE,IAAI;MAEnB,MAAM,EAAE,OAAO;MAEf,iEAAQ;QACP,gBAAgB,EAAE,OAA2B;EAKhD,qCAAsB;IGnFtB,gBAAgB,EARH,CAAG;IAShB,YAAY,EAAE,CAAW;IACzB,aAAa,EAVA,CAAG;IAWhB,SAAS,EAAE,CAAW;IACtB,QAAQ,EAAE,CAAW;IACrB,IAAI,EAAE,CAAW;IA/MjB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IH8RZ,qDAAgB;MGxFjB,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MA/MjB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,SAAS;MAClB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,IAAI;ML8Bb,2DAAM;QACL,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,EAAE;QACX,gBAAgB,EAAE,kBAAkB;ME8PnC,gEAAa;QG7Ff,gBAAgB,EARH,IAAG;QAShB,YAAY,EAAE,IAAW;QACzB,aAAa,EAVA,IAAG;QAWhB,SAAS,EAAE,IAAW;QACtB,QAAQ,EAAE,IAAW;QACrB,IAAI,EAAE,IAAW;QA/MjB,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,IAAI;QAmCZ,qBAAqB,EAAE,MAAM;QAC7B,kBAAkB,EAAE,QAAQ;QAQ7B,sBAAsB,EH0PK,MAAM;QGzPjC,mBAAmB,EHyPQ,MAAM;QGxPjC,kBAAkB,EHwPS,MAAM;QGvPjC,cAAc,EHuPa,MAAM;QAE9B,UAAU,EAAE,oCAAiC;QAE7C,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,EAAI;QAEb,yEAAS;UAER,gBAAgB,EAAE,KAAK;MAIzB,2DAAM;QAGL,gBAAgB,EAAE,kBAAkB;IAItC,gDAAmD;MGpHpD,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MA/MjB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,SAAS;MAClB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,IAAI;MAmCZ,qBAAqB,EAAE,MAAM;MAC7B,kBAAkB,EAAE,QAAQ;MAQ7B,sBAAsB,EHkRI,MAAM;MGjRhC,mBAAmB,EHiRO,MAAM;MGhRhC,kBAAkB,EHgRQ,MAAM;MG/QhC,cAAc,EH+QY,MAAM;IAG/B,8CAAS;MG3HV,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MLhJjB,QAAQ,EAAE,IAAI;MACd,0BAA0B,EAAE,KAAK;;AEgRjC,+DAAoC;EGhVpC,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,SAAS;EAClB,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,IAAI;EAmCZ,qBAAqB,EAAE,MAAM;EAC7B,kBAAkB,EAAE,QAAQ;EAQ7B,sBAAsB,EHkSG,MAAM;EGjS/B,mBAAmB,EHiSM,MAAM;EGhS/B,kBAAkB,EHgSO,MAAM;EG/R/B,cAAc,EH+RW,MAAM;EAC9B,MAAM,EAAE,IAAI;EAEZ,iFAAS;IG3IV,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;IHwIf,UAAU,EAAE,MAAM;;AAKrB,kBAAmB;EGlJlB,gBAAgB,EARH,IAAG;EAShB,YAAY,EAAE,IAAW;EACzB,aAAa,EAVA,IAAG;EAWhB,SAAS,EAAE,IAAW;EACtB,QAAQ,EAAE,IAAW;EACrB,IAAI,EAAE,IAAW;EH+IjB,MAAM,EEtbiB,IAAI;EFub3B,WAAW,EEvbY,IAAI;EF0b1B,+BAAQ;IACP,MAAM,EAAE,OAAO;EAIf,iDAAQ;IACP,MAAM,EAAE,OAAO;EAKlB,iCAAiB;IG7WjB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IAyCZ,qBAAqB,EAAE,MAAM;IAC7B,kBAAkB,EAAE,UAAU;IAE/B,sBAAsB,EH+TG,GAAG;IG9T5B,mBAAmB,EH8TM,GAAG;IG7T5B,kBAAkB,EH6TO,GAAG;IG5T5B,cAAc,EH4TW,GAAG;IAG3B,uCAAM;MGxKP,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MHqKf,MAAM,EAAE,OAAO;IAGhB,kDAAiB;MG7KlB,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MH0Kf,MAAM,EAAE,OAAO;EAgBjB,qBAAG;IGzYH,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IAgCZ,qBAAqB,EAAE,OAAO;IAC9B,kBAAkB,EAAE,UAAU;IAW/B,sBAAsB,EH4VG,WAAW;IG3VpC,mBAAmB,EH2VM,WAAW;IG1VpC,kBAAkB,EH0VO,WAAW;IGzVpC,cAAc,EHyVW,WAAW;IAEnC,wBAAG;MGpMJ,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MHiMf,MAAM,EAAE,OAAO;;AASlB,OAAQ;EACP,MAAM,EAAE,OAAO;EAEf,gBAAW;IACV,MAAM,EAAE,OAAO;;AAKjB,aAAc;EGlab,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,SAAS;EAClB,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,IAAI;EA8QZ,iBAAiB,EHoJG,MAAM;EGnJ1B,cAAc,EHmJM,MAAM;EGjJ3B,mBAAmB,EHiJE,MAAM;EGhJ3B,gBAAgB,EHgJK,MAAM;EG/I3B,WAAW,EH+IU,MAAM;EGvL1B,gBAAgB,EHwLQ,MAAM;EGvL9B,aAAa,EHuLW,MAAM;EGrL/B,uBAAuB,EHqLE,MAAM;EGpL/B,oBAAoB,EHoLK,MAAM;EGnL/B,eAAe,EHmLU,MAAM;EAE/B,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,GAAG;EACT,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EF3YZ,mBAAM;IACL,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;IACX,gBAAgB,EAAE,kBAAkB;EEsYrC,mBAAM;IACL,OAAO,EAAE,EAAE;EAEZ,wBAAW;IGxOX,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;IHqOhB,OAAO,EAAE,KAAK;IAKd,oCAAY;MGzbb,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,SAAS;MAClB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,IAAI;MAyCZ,qBAAqB,EAAE,MAAM;MAC7B,kBAAkB,EAAE,UAAU;MAE/B,sBAAsB,EH2YI,GAAG;MG1Y7B,mBAAmB,EH0YO,GAAG;MGzY7B,kBAAkB,EHyYQ,GAAG;MGxY7B,cAAc,EHwYY,GAAG;MGlN5B,gBAAgB,EAAE,GAAG;MACrB,aAAa,EAAE,GAAG;MAQnB,uBAAuB,EH0MI,QAAQ;MGzMnC,oBAAoB,EHyMO,QAAQ;MGxMnC,eAAe,EHwMY,QAAQ;MAEjC,+CAAW;QGpPb,gBAAgB,EARH,IAAG;QAShB,YAAY,EAAE,IAAW;QACzB,aAAa,EAVA,IAAG;QAWhB,SAAS,EAAE,IAAW;QACtB,QAAQ,EAAE,IAAW;QACrB,IAAI,EAAE,IAAW;QHiPd,MAAM,EAAE,OAAO;;AK7hBnB,UAAW;EF6FV,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,SAAS;EAClB,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,IAAI;EAyCZ,qBAAqB,EAAE,MAAM;EAC7B,kBAAkB,EAAE,UAAU;EAE/B,sBAAsB,EE3IE,GAAG;EF4I3B,mBAAmB,EE5IK,GAAG;EF6I3B,kBAAkB,EE7IM,GAAG;EF8I3B,cAAc,EE9IU,GAAG;EAO3B,aAAG;IF8RH,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;IA/MjB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IAyCZ,qBAAqB,EAAE,MAAM;IAC7B,kBAAkB,EAAE,UAAU;IAE/B,sBAAsB,EEhIG,GAAG;IFiI5B,mBAAmB,EEjIM,GAAG;IFkI5B,kBAAkB,EElIO,GAAG;IFmI5B,cAAc,EEnIW,GAAG;IF4V3B,iBAAiB,EAAE,KAAK;IACxB,cAAc,EAAE,KAAK;IAQtB,mBAAmB,EEpWG,UAAU;IFqWhC,gBAAgB,EErWM,UAAU;IFsWhC,WAAW,EEtWW,UAAU;IAE/B,oBAAS;MACR,OAAO,EAAE,KAAK;MPOhB,WAAW,EAAE,gBAAgB;MAT7B,6BAA6B,EAAC,kBAAM;MAEpC,0BAA0B,EAAC,kBAAM;MACjC,yBAAyB,EAAC,kBAAM;MAChC,wBAAwB,EAAC,kBAAM;MAC/B,qBAAqB,EAAC,kBAAM;MAM5B,sBAAsB,EAAE,WAAW;MACnC,cAAc,EAAC,kBAAkB;MOR/B,SAAS,EAAE,IAAI;MACf,aAAa,EAAE,IAAI;MACnB,WAAW,EAtBS,IAAI;MAuBxB,KAAK,EAAE,IAAI;IAGZ,oBAAO;MF8QR,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MEjRf,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,GAAG;MAEhB,aAAa,EAAE,IAAI;MACnB,YAAY,EAAE,GAAG;MACjB,WAAW,EAjCS,IAAI;MA6CxB,yCAAqB;QPpBvB,WAAW,EAAE,gBAAgB;QAT7B,6BAA6B,EAAC,kBAAM;QAEpC,0BAA0B,EAAC,kBAAM;QACjC,yBAAyB,EAAC,kBAAM;QAChC,wBAAwB,EAAC,kBAAM;QAC/B,qBAAqB,EAAC,kBAAM;QAM5B,sBAAsB,EAAE,WAAW;QACnC,cAAc,EAAC,kBAAkB;QOmB9B,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,IAAI;QAEX,+CAAQ;UACP,KAAK,EAAE,OAAc;EAOzB,gBAAM;IF6ON,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;IEhPhB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;IAEhB,WAAW,EAAE,IAAI;IACjB,MAAM,EAAE,GAAG;;AC3Db,YAAa;EAEZ,gBAAgB,EF6DJ,OAAgB;EE3D5B,gBAAI;IACH,cAAc,EAAE,MAAM;IACtB,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,MAAM;IAElB,mBAAG;MACF,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;MAEjB,KAAK,EFsDoB,KAAK;MErD9B,UAAU,EAAE,GAAG;MACf,aAAa,EAAE,GAAG;IAGnB,mBAAG;MACF,SAAS,EAAE,IAAI;MAEf,KAAK,EF2CU,KAAK;ME1CpB,MAAM,EAAE,GAAG;;AC5Bd,UAAW;ET6JV,QAAQ,EAAE,IAAI;EACd,0BAA0B,EAAE,KAAK;ES3JjC,wBAAc;IJ2Fd,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IAmCZ,qBAAqB,EAAE,MAAM;IAC7B,kBAAkB,EAAE,QAAQ;IAQ7B,sBAAsB,EIzIG,MAAM;IJ0I/B,mBAAmB,EI1IM,MAAM;IJ2I/B,kBAAkB,EI3IO,MAAM;IJ4I/B,cAAc,EI5IW,MAAM;IJ2W9B,iBAAiB,EI1WI,OAAO;IJ2W5B,cAAc,EI3WO,OAAO;IJ6W7B,mBAAmB,EI7WG,OAAO;IJ8W7B,gBAAgB,EI9WM,OAAO;IJ+W7B,WAAW,EI/WW,OAAO;IAE5B,MAAM,EAAE,IAAI;IAEZ,UAAU,EAAE,MAAM;IAClB,gBAAgB,EH0DL,OAAgB;IGxD3B,+BAAO;MJ2RR,gBAAgB,EARH,CAAG;MAShB,YAAY,EAAE,CAAW;MACzB,aAAa,EAVA,CAAG;MAWhB,SAAS,EAAE,CAAW;MACtB,QAAQ,EAAE,CAAW;MACrB,IAAI,EAAE,CAAW;MLpRjB,WAAW,EAAE,gBAAgB;MAT7B,6BAA6B,EAAC,kBAAM;MAEpC,0BAA0B,EAAC,kBAAM;MACjC,yBAAyB,EAAC,kBAAM;MAChC,wBAAwB,EAAC,kBAAM;MAC/B,qBAAqB,EAAC,kBAAM;MAM5B,sBAAsB,EAAE,WAAW;MACnC,cAAc,EAAC,kBAAkB;MSX/B,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;MACjB,KAAK,EHsDoB,KAAK;IGnD/B,iCAAS;MJkRV,gBAAgB,EARH,CAAG;MAShB,YAAY,EAAE,CAAW;MACzB,aAAa,EAVA,CAAG;MAWhB,SAAS,EAAE,CAAW;MACtB,QAAQ,EAAE,CAAW;MACrB,IAAI,EAAE,CAAW;MIpRf,sCAAK;QACJ,QAAQ,EAAE,QAAQ;QAClB,UAAU,EH8Cc,KAAK;QG3C7B,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,KAAK;QAEhB,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;;;;;;;;;;;;;;;;QAgBlB,4CAAM;UACL,OAAO,EAAE,IAAI;QAGd,4CAAM;UACL,WAAW,EAAE,eAAe;UAC5B,OAAO,EAAE,KAAK;UAEd,OAAO,EAAE,GAAG;UACZ,UAAU,EAAE,GAAG;UACf,aAAa,EAAE,IAAI;UACnB,SAAS,EAAE,IAAI;UAEf,SAAS,EAAE,IAAI;UACf,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,cAAc;UACtB,aAAa,EAAE,GAAG;QAGnB,6CAAO;UACN,WAAW,EAAE,eAAe;UAC5B,UAAU,EAAE,IAAI;UAChB,SAAS,EAAE,IAAI;UAEf,KAAK,EAAE,KAAK;UACZ,SAAS,EAAE,IAAI;UACf,WAAW,EAAE,GAAG;UAChB,MAAM,EAAE,GAAG;UAEX,OAAO,EAAE,SAAS;UAElB,MAAM,EAAE,eAAe;UACvB,gBAAgB,EHdR,OAAgB;UNC5B,kBAAkB,EAAE,wCAAqB;UACtC,eAAe,EAAE,wCAAqB;UACpC,aAAa,EAAE,wCAAqB;UACrC,cAAc,EAAE,wCAAqB;UACjC,UAAU,EAAE,wCAAqB;USerC,sDAAW;YACV,WAAW,EAAE,GAAG;YAChB,gBAAgB,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO;IAUnB,+BAAO;MJkMR,gBAAgB,EARH,CAAG;MAShB,YAAY,EAAE,CAAW;MACzB,aAAa,EAVA,CAAG;MAWhB,SAAS,EAAE,CAAW;MACtB,QAAQ,EAAE,CAAW;MACrB,IAAI,EAAE,CAAW;MA/MjB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,SAAS;MAClB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,IAAI;MAmCZ,qBAAqB,EAAE,MAAM;MAC7B,kBAAkB,EAAE,QAAQ;MAQ7B,sBAAsB,EIpCI,MAAM;MJqChC,mBAAmB,EIrCO,MAAM;MJsChC,kBAAkB,EItCQ,MAAM;MJuChC,cAAc,EIvCY,MAAM;MJsQ/B,iBAAiB,EIrQK,OAAO;MJsQ7B,cAAc,EItQQ,OAAO;MJwQ9B,mBAAmB,EIxQI,OAAO;MJyQ9B,gBAAgB,EIzQO,OAAO;MJ0Q9B,WAAW,EI1QY,OAAO;MAE5B,KAAK,EHpCoB,KAAK;MGqC9B,gBAAgB,EHtCI,KAAK;MGuCzB,SAAS,EAAE,IAAI;MACf,MAAM,EAAE,OAAO;MAEf,kDAAmB;QAClB,MAAM,EAAE,OAAO;QJqLlB,gBAAgB,EARH,IAAG;QAShB,YAAY,EAAE,IAAW;QACzB,aAAa,EAVA,IAAG;QAWhB,SAAS,EAAE,IAAW;QACtB,QAAQ,EAAE,IAAW;QACrB,IAAI,EAAE,IAAW;QIxLd,WAAW,EAAE,IAAI;QAEjB,yDAAS;UACR,OAAO,EAAE,IAAI;MAIf,mDAAoB;QJ4KtB,gBAAgB,EARH,CAAG;QAShB,YAAY,EAAE,CAAW;QACzB,aAAa,EAVA,CAAG;QAWhB,SAAS,EAAE,CAAW;QACtB,QAAQ,EAAE,CAAW;QACrB,IAAI,EAAE,CAAW;QI/Kd,SAAS,EAAE,GAAG;QAId,wDAAK;UACJ,KAAK,EAHoB,OAAI;UAI7B,8DAAQ;YACP,OAAO,EAAE,GAAG;QAGd,qDAAE;UACD,KAAK,EAToB,OAAI;UAU7B,eAAe,EAAE,IAAI;UACrB,YAAY,EAAE,GAAG;UACjB,WAAW,EAAE,IAAI;EAOpB,sCAAO;IACN,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;EAGlB,sCAAO;IACN,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;EAKlB,2CAAO;IAEN,SAAS,EAAE,IAAI;EAKf,kDAAK;IACJ,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,IAAI;IAEnB,wDAAM;MACL,OAAO,EAAE,GAAG;MACZ,UAAU,EAAE,GAAG;MACf,aAAa,EAAE,GAAG;MAClB,SAAS,EAAE,IAAI;IAGhB,yDAAO;MACN,UAAU,EAAE,IAAI;MAEhB,SAAS,EAAE,IAAI;MACf,OAAO,EAAE,QAAQ;MACjB,MAAM,EAAE,eAAe;EAK1B,2CAAO;IACN,SAAS,EAAE,IAAI;;AC5LlB,iBAAkB;EACjB,gBAAgB,EJuEM,KAAK;EItE3B,KAAK,EJuEsB,KAAK;EIrEhC,mCAAkB;IL0FlB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IAmCZ,qBAAqB,EAAE,MAAM;IAC7B,kBAAkB,EAAE,QAAQ;IAQ7B,sBAAsB,EKxIG,MAAM;ILyI/B,mBAAmB,EKzIM,MAAM;IL0I/B,kBAAkB,EK1IO,MAAM;IL2I/B,cAAc,EK3IW,MAAM;IL0W9B,iBAAiB,EKzWI,OAAO;IL0W5B,cAAc,EK1WO,OAAO;IL4W7B,mBAAmB,EK5WG,OAAO;IL6W7B,gBAAgB,EK7WM,OAAO;IL8W7B,WAAW,EK9WW,OAAO;IAE5B,MAAM,EAAE,IAAI;IAEZ,UAAU,EAAE,MAAM;IAClB,gBAAgB,EJ4DK,KAAK;II1D1B,0CAAO;ML0RR,gBAAgB,EARH,CAAG;MAShB,YAAY,EAAE,CAAW;MACzB,aAAa,EAVA,CAAG;MAWhB,SAAS,EAAE,CAAW;MACtB,QAAQ,EAAE,CAAW;MACrB,IAAI,EAAE,CAAW;MLpRjB,WAAW,EAAE,gBAAgB;MAT7B,6BAA6B,EAAC,kBAAM;MAEpC,0BAA0B,EAAC,kBAAM;MACjC,yBAAyB,EAAC,kBAAM;MAChC,wBAAwB,EAAC,kBAAM;MAC/B,qBAAqB,EAAC,kBAAM;MAM5B,sBAAsB,EAAE,WAAW;MACnC,cAAc,EAAC,kBAAkB;MUV/B,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;MACjB,KAAK,EAAE,KAAK;IAIb,4CAAS;MLgRV,gBAAgB,EARH,CAAG;MAShB,YAAY,EAAE,CAAW;MACzB,aAAa,EAVA,CAAG;MAWhB,SAAS,EAAE,CAAW;MACtB,QAAQ,EAAE,CAAW;MACrB,IAAI,EAAE,CAAW;MKlRf,iDAAK;QACJ,UAAU,EJ6Cc,KAAK;QI3C7B,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,KAAK;QAEhB,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;QAElB,wDAAO;UACN,UAAU,EAAE,MAAM;UAClB,WAAW,EAAE,IAAI;UACjB,YAAY,EAAE,IAAI;UAClB,KAAK,EAAE,KAAK;UAEZ,8DAAM;YACL,OAAO,EAAE,IAAI;YAEb,qEAAS;cACR,OAAO,EAAE,KAAK;YAGf,iEAAG;cACF,KAAK,EJ/BY,OAAO;cIgCxB,SAAS,EAAE,IAAI;cACf,WAAW,EAAE,GAAG;cAChB,MAAM,EAAE,GAAG;cACX,WAAW,EAAE,IAAI;YAElB,gEAAE;cACD,KAAK,EJlDU,OAAO;cImDtB,SAAS,EAAE,IAAI;cACf,WAAW,EAAE,GAAG;cAChB,MAAM,EAAE,GAAG;cACX,OAAO,EAAE,OAAO;YAGjB,oEAAM;cACL,OAAO,EAAE,IAAI;YAGd,oEAAM;cACL,WAAW,EAAE,eAAe;cAC5B,OAAO,EAAE,KAAK;cACd,OAAO,EAAE,GAAG;cAEZ,aAAa,EAAE,IAAI;cACnB,SAAS,EAAE,IAAI;cACf,SAAS,EAAE,IAAI;cACf,KAAK,EAAE,IAAI;YASV,oGAAM;cACL,OAAO,EAAE,KAAK;cACd,KAAK,EAAE,IAAI;cAEX,UAAU,EAAE,IAAI;cAChB,KAAK,EAAE,IAAI;YAGZ,gGAAE;cACD,SAAS,EAAE,IAAI;cACf,WAAW,EAAE,GAAG;cAChB,OAAO,EAAE,KAAK;cACd,UAAU,EAAE,IAAI;cAChB,WAAW,EAAE,IAAI;cACjB,WAAW,EAAE,KAAK;cAElB,kGAAE;gBACD,KAAK,EJtFQ,OAAO;YI2FvB,0FAAW;cACV,UAAU,EAAE,IAAI;YAIlB,wEAAU;cACT,UAAU,EAAE,KAAK;YAGlB,yEAAW;cAEV,UAAU,EAAE,MAAM;cAClB,wFAAe;gBACd,WAAW,EAAE,GAAG;gBAChB,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE,SAAS;gBAEhB,+FAAS;kBACR,KAAK,EAAE,IAAI;YAKd,uEAAS;cACR,UAAU,EAAE,MAAM;cAClB,UAAU,EAAE,IAAI;cAEhB,+EAAQ;gBACP,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,MAAM;gBAClB,cAAc,EAAE,MAAM;gBACtB,OAAO,EAAE,YAAY;gBACrB,KAAK,EAAE,IAAI;gBAEX,WAAW,EAAE,GAAG;gBAChB,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,IAAI;gBAEf,oFAAO;kBACN,gBAAgB,EAAE,SAAS;kBAE3B,4FAAU;oBACT,UAAU,EAAE,MAAM;gBAIpB,wFAAW;kBACV,gBAAgB,EAAE,OAAO;kBACzB,MAAM,EAAE,OAAO;gBAGhB,uFAAU;kBACT,gBAAgB,EJ5FZ,OAAgB;IIyG3B,0CAAO;ML0HR,gBAAgB,EARH,CAAG;MAShB,YAAY,EAAE,CAAW;MACzB,aAAa,EAVA,CAAG;MAWhB,SAAS,EAAE,CAAW;MACtB,QAAQ,EAAE,CAAW;MACrB,IAAI,EAAE,CAAW;MK3Hf,KAAK,EJ5GU,KAAK;MI6GpB,gBAAgB,EJ9GN,OAAgB;MI+G1B,MAAM,EAAE,OAAO;MACf,SAAS,EAAE,IAAI;MAEf,iDAAS;QACR,OAAO,EAAE,IAAI;MAGd,4CAAE;QACD,WAAW,EAAE,IAAI;;AC5LrB,WAAY;EACX,gBAAgB,ELuEM,KAAK;EKtE3B,KAAK,ELuEsB,KAAK;EKtEhC,SAAS,EAAE,IAAI;EAOf,yBAAc;IAEb,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,IAAI;IAEpB,4BAAG;MN+EJ,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,SAAS;MAClB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,IAAI;MAyCZ,qBAAqB,EAAE,MAAM;MAC7B,kBAAkB,EAAE,UAAU;MAE/B,sBAAsB,EM7HI,GAAG;MN8H7B,mBAAmB,EM9HO,GAAG;MN+H7B,kBAAkB,EM/HQ,GAAG;MNgI7B,cAAc,EMhIY,GAAG;MAE3B,uCAAW;QNqRb,gBAAgB,EARH,IAAG;QAShB,YAAY,EAAE,IAAW;QACzB,aAAa,EAVA,IAAG;QAWhB,SAAS,EAAE,IAAW;QACtB,QAAQ,EAAE,IAAW;QACrB,IAAI,EAAE,IAAW;MMtRf,uCAAW;QNiRb,gBAAgB,EARH,IAAG;QAShB,YAAY,EAAE,IAAW;QACzB,aAAa,EAVA,IAAG;QAWhB,SAAS,EAAE,IAAW;QACtB,QAAQ,EAAE,IAAW;QACrB,IAAI,EAAE,IAAW;QAoFjB,kBAAkB,EMxWK,QAAQ;QNyW/B,eAAe,EMzWQ,QAAQ;QN6W9B,mBAAmB,EAAE,GAAG;QAIzB,UAAU,EMjXa,QAAQ;MAG7B,4CAAkB;QACjB,OAAO,EAAE,UAAU;MAGpB,+CAAqB;QACpB,OAAO,EAAE,QAAQ;MAGlB,0CAAgB;QACf,YAAY,EAAE,IAAI;EAYnB,4BAAI;IN6CN,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IAyCZ,qBAAqB,EAAE,MAAM;IAC7B,kBAAkB,EAAE,UAAU;IAE/B,sBAAsB,EM3FK,GAAG;IN4F9B,mBAAmB,EM5FQ,GAAG;IN6F9B,kBAAkB,EM7FS,GAAG;IN8F9B,cAAc,EM9Fa,GAAG;IAE3B,kCAAM;MNmPT,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MA7FjB,yBAAyB,EAAE,CAAQ;MACnC,aAAa,EM1JM,CAAC;MN2JpB,UAAU,EM3JS,CAAC;MN4JpB,cAAc,EM5JK,CAAC;MN6JpB,KAAK,EM7Jc,CAAC;MAEhB,WAAW,EAAE,eAAe;MAC5B,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,KAAK;MACZ,gBAAgB,EAAE,KAAK;MACvB,MAAM,EAAE,GAAG;MACX,aAAa,EAAE,cAAc;MAC7B,OAAO,EAAE,IAAI;MACb,YAAY,EAAE,IAAI;MAQlB,KAAK,EAAE,KAAuC;MX0FlD,6DAA6B;QWvFxB,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,IAAI;MXuFhB,mDAA6B;QWxFxB,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,IAAI;MXwFhB,oDAA6B;QWzFxB,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,IAAI;MXyFhB,wDAA6B;QW1FxB,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,IAAI;IAIb,kCAAM;MNwNT,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MA7FjB,yBAAyB,EAAE,CAAQ;MACnC,aAAa,EM/HM,CAAC;MNgIpB,UAAU,EMhIS,CAAC;MNiIpB,cAAc,EMjIK,CAAC;MNkIpB,KAAK,EMlIc,CAAC;MXzDpB,WAAW,EAAE,gBAAgB;MAT7B,6BAA6B,EAAC,kBAAM;MAEpC,0BAA0B,EAAC,kBAAM;MACjC,yBAAyB,EAAC,kBAAM;MAChC,wBAAwB,EAAC,kBAAM;MAC/B,qBAAqB,EAAC,kBAAM;MAM5B,sBAAsB,EAAE,WAAW;MACnC,cAAc,EAAC,kBAAkB;MWyD7B,WAAW,EAAE,MAAM;MACnB,YAAY,EAAE,GAAG;MACjB,aAAa,EAAE,GAAG;MAClB,SAAS,EAAE,IAAI;MACf,cAAc,EAAE,QAAQ;MAExB,UAAU,EAAE,IAAI;IAWjB,yCAAa;MNkMhB,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MA7FjB,yBAAyB,EAAE,CAAQ;MACnC,aAAa,EMzGM,CAAC;MN0GpB,UAAU,EM1GS,CAAC;MN2GpB,cAAc,EM3GK,CAAC;MN4GpB,KAAK,EM5Gc,CAAC;MNyRpB,kBAAkB,EMxRM,QAAQ;MNyRhC,eAAe,EMzRS,QAAQ;MN6R/B,mBAAmB,EAAE,GAAG;MAIzB,UAAU,EMjSc,QAAQ;MAC5B,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,iBAAiB;MAEzB,gDAAO;QACN,YAAY,EAAE,GAAG;QACjB,OAAO,EAAE,IAAI;MAEd,gDAAO;QXxFX,WAAW,EAAE,gBAAgB;QAT7B,6BAA6B,EAAC,kBAAM;QAEpC,0BAA0B,EAAC,kBAAM;QACjC,yBAAyB,EAAC,kBAAM;QAChC,wBAAwB,EAAC,kBAAM;QAC/B,qBAAqB,EAAC,kBAAM;QAM5B,sBAAsB,EAAE,WAAW;QACnC,cAAc,EAAC,kBAAkB;QWuF5B,OAAO,EAAE,IAAI;QXlHlB,qBAAqB,EWqHO,GAAG;QXpH5B,kBAAkB,EWoHO,GAAG;QXnHvB,aAAa,EWmHO,GAAG;QAC1B,KAAK,EAAE,KAAK;QACZ,gBAAgB,EAAE,IAAI;QAItB,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,IAAI;MAIf,sDAAO;QACN,OAAO,EAAE,IAAI;MAEd,sDAAO;QACN,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE,KAAK;EAOnB,qCAAkB;IAEjB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,IAAI;IAEb,2CAAM;MACL,aAAa,EAAE,GAAG;EAKrB,sBAAW;IACV,WAAW,EAAE,IAAI;IAEjB,yBAAG;MN9DJ,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,SAAS;MAClB,OAAO,EAAE,WAAW;MACpB,OAAO,EAAE,IAAI;MAyCZ,qBAAqB,EAAE,MAAM;MAC7B,kBAAkB,EAAE,UAAU;MAE/B,sBAAsB,EMgBI,GAAG;MNf7B,mBAAmB,EMeO,GAAG;MNd7B,kBAAkB,EMcQ,GAAG;MNb7B,cAAc,EMaY,GAAG;MAE3B,gCAAS;QACR,OAAO,EAAE,KAAK;MAGf,oCAAW;QACV,SAAS,EAAE,IAAI;QNmIlB,gBAAgB,EARH,IAAG;QAShB,YAAY,EAAE,IAAW;QACzB,aAAa,EAVA,IAAG;QAWhB,SAAS,EAAE,IAAW;QACtB,QAAQ,EAAE,IAAW;QACrB,IAAI,EAAE,IAAW;MMpIf,oCAAW;QN+Hb,gBAAgB,EARH,IAAG;QAShB,YAAY,EAAE,IAAW;QACzB,aAAa,EAVA,IAAG;QAWhB,SAAS,EAAE,IAAW;QACtB,QAAQ,EAAE,IAAW;QACrB,IAAI,EAAE,IAAW;QAoFjB,kBAAkB,EMtNK,QAAQ;QNuN/B,eAAe,EMvNQ,QAAQ;QN2N9B,mBAAmB,EAAE,GAAG;QAIzB,UAAU,EM/Na,QAAQ;EAW/B,cAAG;IAIF,WAAW,EAAE,GAAG;IAChB,cAAc,EAAE,GAAG;IAEnB,MAAM,EAAE,OAAO;IAEf,qBAAS;MXtKV,WAAW,EAAE,gBAAgB;MAT7B,6BAA6B,EAAC,kBAAM;MAEpC,0BAA0B,EAAC,kBAAM;MACjC,yBAAyB,EAAC,kBAAM;MAChC,wBAAwB,EAAC,kBAAM;MAC/B,qBAAqB,EAAC,kBAAM;MAM5B,sBAAsB,EAAE,WAAW;MACnC,cAAc,EAAC,kBAAkB;MWqK/B,WAAW,EAAE,MAAM;MACnB,YAAY,EAAE,GAAG;MACjB,aAAa,EAAE,GAAG;MAClB,SAAS,EAAE,IAAI;MACf,cAAc,EAAE,QAAQ;EAI1B,8BAAmB;IN3GnB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IAyCZ,qBAAqB,EAAE,MAAM;IAC7B,kBAAkB,EAAE,UAAU;IAE/B,sBAAsB,EM6DG,GAAG;IN5D5B,mBAAmB,EM4DM,GAAG;IN3D5B,kBAAkB,EM2DO,GAAG;IN1D5B,cAAc,EM0DW,GAAG;IAE3B,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IAEf,oCAAM;MNwFP,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;IMzFhB,qCAAO;MNoFR,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MMvFf,YAAY,EAAE,GAAG;MAGjB,WAAW,EAAE,OAAO;IAGrB,qCAAO;MN4ER,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MAoFjB,kBAAkB,EMnKI,QAAQ;MNoK9B,eAAe,EMpKO,QAAQ;MNwK7B,mBAAmB,EAAE,GAAG;MAIzB,UAAU,EM5KY,QAAQ;MAC5B,YAAY,EAAE,GAAG;;AAKpB,UAAW;EACV,gBAAgB,EAAE,IAAI;EACtB,SAAS,EAAE,IAAI;EACf,YAAY,EAAE,IAAI;EAClB,OAAO,EAAE,OAAO;EXvOhB,qBAAqB,EWwOE,GAAG;EXvOvB,kBAAkB,EWuOE,GAAG;EXtOlB,aAAa,EWsOE,GAAG;EAE1B,KAAK,EAAE,KAAK;EACZ,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,MAAM;;AAQtB,2BAAY;EACX,KAAK,EAJU,OAAgB;;AAShC,iCAAe;EACd,KAAK,EAVU,OAAgB;;AAehC,qCAAiB;EAChB,KAAK,EAhBU,OAAgB;;AA4B9B,wCAAM;EACL,KAAK,EA7BQ,OAAgB;AAgC7B,sDAAO;EACN,OAAO,EAAE,KAAK;AAId,4DAAO;EACN,OAAO,EAAE,IAAI;;AAUjB,sCAAY;EACX,KAAK,EAjDS,OAAgB;;ACjPhC,sCAAmB;EAClB,gBAAgB,ENsEK,KAAK;EMrE1B,KAAK,ENsEqB,KAAK;EMpE/B,6CAAO;IACN,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IAEf,qDAAQ;MZeV,WAAW,EAAE,gBAAgB;MAT7B,6BAA6B,EAAC,kBAAM;MAEpC,0BAA0B,EAAC,kBAAM;MACjC,yBAAyB,EAAC,kBAAM;MAChC,wBAAwB,EAAC,kBAAM;MAC/B,qBAAqB,EAAC,kBAAM;MAM5B,sBAAsB,EAAE,WAAW;MACnC,cAAc,EAAC,kBAAkB;MYf9B,4DAAO;QACN,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,GAAG;EAKrB,4CAAQ;IACP,UAAU,EAAE,eAAe;IAE3B,sDAAY;MAGX,aAAa,EAAE,eAAe;MAE9B,2DAAO;QACN,MAAM,EAAE,OAAO;QACf,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;MAWd,kEAAc;QACb,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,MAAM;IAOlB,4DAAY;MACX,OAAO,EAAE,IAAI;MACb,YAAY,EAAE,IAAI;MAClB,aAAa,EAAE,GAAG;MAClB,MAAM,EAAE,OAAO;MAEf,qEAAW;QACV,gBAAgB,EAAE,IAAI;MAIvB,kEAAQ;QACP,OAAO,EAAE,GAAG;IAkBd,qDAAG;MAEF,WAAW,EAAE,GAAG;MAChB,SAAS,EAAE,IAAI;IAGhB,qDAAG;MACF,SAAS,EAAE,IAAI;IAGhB,oDAAE;MACD,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,GAAG;MAChB,cAAc,EAAE,GAAG;MACnB,WAAW,EAAE,KAAK;IAGnB,2DAAS;MZjGb,qBAAqB,EYkGO,CAAC;MZjG1B,kBAAkB,EYiGO,CAAC;MZhGrB,aAAa,EYgGO,CAAC;MACxB,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,SAAS;MAClB,gBAAgB,EAAE,KAAK;MACvB,KAAK,EAAE,SAAS;MAEhB,iEAAQ;QACP,KAAK,EAAE,KAAK;MAGb,oEAAW;QACV,gBAAgB,EAAE,IAAI;QAEtB,0EAAQ;UACP,KAAK,EAAE,KAAK;EAQlB,6CAAO;IAEN,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,eAAe;IACxB,UAAU,EAAE,iBAAkC;IAE9C,kDAAK;MACJ,KAAK,EANoB,OAAI;MAO7B,wDAAQ;QACP,OAAO,EAAE,GAAG;IAGd,+CAAE;MACD,KAAK,EAZoB,OAAI;MAa7B,eAAe,EAAE,IAAI;MACrB,YAAY,EAAE,GAAG;MACjB,WAAW,EAAE,IAAI;AAKpB,wCAAqB;EACpB,YAAY,EAAE,cAAc;EAC5B,KAAK,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEZ,+CAAO;IACN,OAAO,EAAE,IAAI;EAGd,sDAAc;IACb,OAAO,EAAE,IAAI;IAEb,yDAAG;MACF,SAAS,EAAE,IAAI;MACf,cAAc,EAAE,IAAI;EAqCrB,mDAAM;IACL,OAAO,EAAE,IAAI;EAGd,mDAAM;IAGL,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,aAAa,EAAE,GAAG;IAClB,OAAO,EAAE,QAA0C;IACnD,MAAM,EAAE,eAAwB;IAChC,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IAEZ,2DAAU;MACT,MAAM,EAAE,iBAAmC;MAC3C,KAAK,EAAE,IAAI;EAIb,+CAAE;IPvHJ,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IAyCZ,qBAAqB,EAAE,MAAM;IAC7B,kBAAkB,EAAE,UAAU;IAE/B,sBAAsB,EOyEK,GAAG;IPxE9B,mBAAmB,EOwEQ,GAAG;IPvE9B,kBAAkB,EOuES,GAAG;IPtE9B,cAAc,EOsEa,GAAG;IAE3B,qDAAM;MACL,KAAK,EAAE,IAAI;MP8Ef,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;IO/Ed,oDAAK;MP0ER,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MO7Eb,SAAS,EAAE,IAAI;EAIjB,oDAAO;IACN,WAAW,EAAE,eAAe;IAI5B,KAAK,EAAE,KAAK;IAEZ,SAAS,EAAE,IAAI;IAEf,MAAM,EAAE,GAAG;IAEX,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,QAAQ;IAEjB,MAAM,EAAE,eAAe;IACvB,gBAAgB,EDDH,OAAgB;IX5KhC,kBAAkB,EAAE,wCAAqB;IACtC,eAAe,EAAE,wCAAqB;IACpC,aAAa,EAAE,wCAAqB;IACrC,cAAc,EAAE,wCAAqB;IACjC,UAAU,EAAE,wCAAqB;IY+KtC,6DAAW;MACV,WAAW,EAAE,GAAG;MAChB,gBAAgB,EAAE,OAAO;MACzB,MAAM,EAAE,OAAO;;AAkBjB,gEAAO;EACN,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,IAAI;EACZ,aAAa,EAAG,eAAe;EAE/B,wEAAQ;IZ1PX,WAAW,EAAE,gBAAgB;IAT7B,6BAA6B,EAAC,kBAAM;IAEpC,0BAA0B,EAAC,kBAAM;IACjC,yBAAyB,EAAC,kBAAM;IAChC,wBAAwB,EAAC,kBAAM;IAC/B,qBAAqB,EAAC,kBAAM;IAM5B,sBAAsB,EAAE,WAAW;IACnC,cAAc,EAAC,kBAAkB;IYyP7B,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,KAAK;IAEZ,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;;ACzRtB,oBAAW;EACV,aAAa,EAAE,eAAe;EAC9B,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,MAAM;EAElB,iCAAe;IACd,OAAO,EAAC,KAAK;IACb,UAAU,EAAE,OAAO;IAEnB,gBAAgB,EPsDF,OAAO;IOrDrB,KAAK,EAAE,KAAK;IAEZ,OAAO,EAAE,iBAAiB;IAC1B,SAAS,EAAE,GAAG;IAEd,yDAAwB;MACvB,OAAO,EAAE,GAAG;IAGb,gDAAe;MACd,YAAY,EAAE,IAAI;AAKrB,wBAAe;EACd,aAAa,EAAE,eAAe;EAC9B,gBAAgB,EAAE,KAAK;EACvB,OAAO,EAAE,GAAG;EACZ,SAAS,EAAE,IAAI;EAEf,6BAAO;IACN,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,MAAM;IAElB,wCAAa;MACZ,OAAO,EAAE,KAAK;MACd,UAAU,EAAE,OAAO;MAEnB,gBAAgB,EAAE,MAAM;EAI1B,8BAAQ;IACP,gBAAgB,EAAE,MAAM;IAExB,yCAAa;MACZ,gBAAgB,EAAE,GAAG;EAIvB,gCAAU;IACT,gBAAgB,EAAE,GAAG;;ACjCtB,oCAAY;EACX,gBAAgB,EAAE,IAAI;AAIxB,eAAG;EACF,gBAAgB,EAdW,OAAc;EAgBzC,kBAAG;IACF,MAAM,EAAE,OAAO;IAEf,aAAa,EAAE,cAAc;IAC7B,gBAAgB,EAAE,KAAK;IACvB,UAAU,EAAE,4DAA4D;IAGxE,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,UAAU;ITyDvB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,IAAI;IAyCZ,qBAAqB,EAAE,MAAM;IAC7B,kBAAkB,EAAE,UAAU;IAE/B,sBAAsB,EStGI,GAAG;ITuG7B,mBAAmB,ESvGO,GAAG;ITwG7B,kBAAkB,ESxGQ,GAAG;ITyG7B,cAAc,ESzGY,GAAG;IAE3B,2BAAW;MAKV,WAAW,EAAE,IAAI;MACjB,aAAa,EAAE,GAAG;MAClB,UAAU,EAAE,oCAAoC;IAGjD,2BAAW;MAEV,gBAAgB,EA5CA,OAAI;MA6CpB,KAAK,EAAE,IAAI;IAIZ,2BAAS;MACR,KAAK,EArDQ,IAAI;MTiSpB,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MS9Od,+BAAI;QACH,KAAK,EAxDI,IAAI;QAyDb,MAAM,EAzDG,IAAI;QA0Db,OAAO,EAzDD,GAAmC;IA6D3C,yBAAO;MTkOT,gBAAgB,EARH,IAAG;MAShB,YAAY,EAAE,IAAW;MACzB,aAAa,EAVA,IAAG;MAWhB,SAAS,EAAE,IAAW;MACtB,QAAQ,EAAE,IAAW;MACrB,IAAI,EAAE,IAAW;MSpOd,SAAS,EAAE,IAAI;MAEf,WAAW,EAAE,KAAK;MAClB,cAAc,EAAE,KAAK;MACrB,YAAY,EApEL,GAAmC;MAqE1C,aAAa,EArEN,GAAmC;;AA6E9C,mBAAoB;EduEnB,QAAQ,EAAE,IAAI;EACd,0BAA0B,EAAE,KAAK;EcjE/B,iDAAQ;IACP,KAAK,EAAE,KAAK;IACZ,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,SAAS;Id1DrB,sBAAsB,Ec2DA,IAAI;Id1D1B,0BAA0B,Ec0DE,EAAE;IdzD9B,iCAAiC,EcyDD,MAAM;IdxDtC,iCAAiC,EcwDO,QAAQ;IdvDhD,2BAA2B,EALqE,IAAI;IAOpG,mBAAmB,EcqDG,IAAI;IdpD1B,uBAAuB,EcoDK,EAAE;IdnD9B,8BAA8B,EcmDE,MAAM;IdlDtC,8BAA8B,EckDU,QAAQ;IdjDhD,wBAAwB,EAXwE,IAAI;IAapG,kBAAkB,Ec+CI,IAAI;Id9C1B,sBAAsB,Ec8CM,EAAE;Id7C9B,6BAA6B,Ec6CG,MAAM;Id5CtC,6BAA6B,Ec4CW,QAAQ;Id3ChD,uBAAuB,EAjByE,IAAI;IAmBpG,iBAAiB,EcyCK,IAAI;IdxC1B,qBAAqB,EcwCO,EAAE;IdvC9B,4BAA4B,EcuCI,MAAM;IdtCtC,4BAA4B,EcsCY,QAAQ;IdrChD,sBAAsB,EAvB0E,IAAI;IAyBpG,cAAc,EcmCQ,IAAI;IdlC1B,kBAAkB,EckCU,EAAE;IdjC9B,yBAAyB,EciCO,MAAM;IdhCtC,yBAAyB,EcgCe,QAAQ;Id/BhD,mBAAmB,EA7B6E,IAAI;EcqElG,+BAAQ;IACP,OAAO,EAAE,aAAa;IT6LzB,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;ILpRjB,WAAW,EAAE,gBAAgB;IAT7B,6BAA6B,EAAC,kBAAM;IAEpC,0BAA0B,EAAC,kBAAM;IACjC,yBAAyB,EAAC,kBAAM;IAChC,wBAAwB,EAAC,kBAAM;IAC/B,qBAAqB,EAAC,kBAAM;IAM5B,sBAAsB,EAAE,WAAW;IACnC,cAAc,EAAC,kBAAkB;IckF9B,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;IAClB,KAAK,EAAE,IAAI;EAKX,qCAAQ;IACP,KAAK,EA5GmB,OAAc;EAqHvC,uCAAQ;IACP,OAAO,EAAE,EAAE;;AAkBd,0DAAW;EAEV,gBAAgB,EA5IC,OAAI;AA+ItB,8EAAmB;EAClB,gBAAgB,EA9IU,OAAc;EA+IxC,KAAK,EAAE,KAAK;EAEZ,4FAAS;IACR,SAAS,EAAE,IAAI;IAEf,wGAAM;MdvIT,WAAW,EAAE,gBAAgB;MAT7B,6BAA6B,EAAC,kBAAM;MAEpC,0BAA0B,EAAC,kBAAM;MACjC,yBAAyB,EAAC,kBAAM;MAChC,wBAAwB,EAAC,kBAAM;MAC/B,qBAAqB,EAAC,kBAAM;MAM5B,sBAAsB,EAAE,WAAW;MACnC,cAAc,EAAC,kBAAkB;IcwI9B,8HAAiB;Md3IpB,WAAW,EAAE,gBAAgB;MAT7B,6BAA6B,EAAC,kBAAM;MAEpC,0BAA0B,EAAC,kBAAM;MACjC,yBAAyB,EAAC,kBAAM;MAChC,wBAAwB,EAAC,kBAAM;MAC/B,qBAAqB,EAAC,kBAAM;MAM5B,sBAAsB,EAAE,WAAW;MACnC,cAAc,EAAC,kBAAkB;Mc0I7B,UAAU,EAAE,KAAK;MACjB,SAAS,EAAE,IAAI;MACf,aAAa,EAAE,IAAI;IAMnB,wJAAiB;MAChB,OAAO,EAAE,IAAI;IAGd,gJAAa;MACZ,OAAO,EAAE,IAAI;IAKb,kKAAiB;MAChB,OAAO,EAAE,KAAK;MACd,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,IAAI,EAAE,CAAC;MACP,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,gBAAgB,EAAE,WAAgB;IAGnC,0JAAa;MACZ,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,KAAK;MACZ,QAAQ,EAAE,QAAQ;MAClB,SAAS,EAAE,KAAK;MAChB,GAAG,EAAE,IAAI;MACT,KAAK,EAAE,GAAG;MACV,KAAK,EAAE,KAAK;MACZ,gBAAgB,EAAE,KAAK;MdjG7B,kBAAkB,EAAE,kCAA8B;MAC/C,eAAe,EAAE,kCAA8B;MAC9C,cAAc,EAAE,kCAA8B;MAC7C,aAAa,EAAE,kCAA8B;MAC1C,UAAU,EAAE,kCAA8B;McgG5C,gKAAG;QTxER,qBAAqB,EAAE,MAAM;QAC7B,kBAAkB,EAAE,QAAQ;QAQ7B,sBAAsB,ESgES,MAAM;QT/DrC,mBAAmB,ES+DY,MAAM;QT9DrC,kBAAkB,ES8Da,MAAM;QT7DrC,cAAc,ES6DiB,MAAM;QAE9B,sKAAG;UACF,UAAU,EAAE,IAAI;UAChB,SAAS,EAAE,IAAI;UACf,OAAO,EAAE,QAAQ;UACjB,aAAa,EAAE,eAAe;UAE9B,wLAAW;YACV,KAAK,EAAE,IAAI;AAenB,8EAAmB;EAClB,gBAAgB,EA3NU,OAAc;EA4NxC,KAAK,EAAE,KAAK;AAKb,8DAAW;EACV,UAAU,EAAE,cAAc;EAE1B,oFAAa;IACZ,aAAa,EAAE,cAAc;EAG9B,0EAAQ;IACP,gBAAgB,EAAE,IAAI;AdnFzB,4NAA6B;EcyF1B,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,IAAI;AdzFd,oLAA6B;EcwF1B,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,IAAI;AdxFd,wLAA6B;EcuF1B,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,IAAI;AdvFd,wMAA6B;EcsF1B,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,IAAI;;AAab,0BAAG;EACF,WAAW,EAAE,GAAG;EAGhB,gCAAQ;IACP,KAAK,EAAE,KAAK;AAQb,4CAAG;EAEF,WAAW,EAAE,GAAG;AASlB,wBAAG;EACF,UAAU,EAAE,MAAM;EAElB,iCAAW;IACV,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,OAAO;AAMjB,0CAAiB;EAChB,YAAY,EAAE,GAAG;;AAQnB,mBAAW;EdlKX,mBAAmB,EcmKG,IAAI;;EdlK1B,gBAAgB,EckKM,IAAI;;EdjK1B,eAAe,EciKO,IAAI;;;Ed9J1B,cAAc,Ec8JQ,IAAI;Ed7J1B,WAAW,Ec6JW,IAAI;EAEzB,SAAS,EAAE,IAAI;EAGf,OAAO,EAAE,mBAAmB;EAG5B,MAAM,EAAE,GAAG;AAGZ,wBAAgB;EACf,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,mBAAmB;AAI7B,mBAAW;EACV,OAAO,EA/La,IAAI;AAmMzB,mBAAW;EAEV,MAAM,EAAE,GAAG;EAEX,SAAS,EAAE,IAAI;EAGf,OAAO,EAAE,mBAAmB;EAG5B,uBAAI;IdnML,mBAAmB,EcoMI,IAAI;;IdnM3B,gBAAgB,EcmMO,IAAI;;IdlM3B,eAAe,EckMQ,IAAI;;;Id/L3B,cAAc,Ec+LS,IAAI;Id9L3B,WAAW,Ec8LY,IAAI;IACzB,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,QAAQ;EAItB,4BAAS;IACR,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,UAAU;IACrB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,GAAG;AAIb,kBAAU;EAET,gBAAgB,EAAE,IAAI;EACtB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;AAGb,mBAAW;ET9QX,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,SAAS;EAClB,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,IAAI;EAyCZ,qBAAqB,EAAE,MAAM;EAC7B,kBAAkB,EAAE,UAAU;EAE/B,sBAAsB,ESgOG,GAAG;ET/N5B,mBAAmB,ES+NM,GAAG;ET9N5B,kBAAkB,ES8NO,GAAG;ET7N5B,cAAc,ES6NW,GAAG;EAO3B,2BAAU;IAET,OAAO,EAAE,IAAI;EAGd,oCAAiB;IdvOlB,mBAAmB,EcwOI,IAAI;;IdvO3B,gBAAgB,EcuOO,IAAI;;IdtO3B,eAAe,EcsOQ,IAAI;;;IdnO3B,cAAc,EcmOS,IAAI;IdlO3B,WAAW,EckOY,IAAI;ITnF3B,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;ISgFf,KAAK,EAAE,IAAI;IAMX,iDAAa;MTFf,kBAAkB,ESGK,UAAU;MTFjC,eAAe,ESEQ,UAAU;MTAhC,mBAAmB,EAAE,KAAK;MAM3B,UAAU,ESNa,UAAU;Md3WjC,WAAW,EAAE,gBAAgB;MAT7B,6BAA6B,EAAC,kBAAM;MAEpC,0BAA0B,EAAC,kBAAM;MACjC,yBAAyB,EAAC,kBAAM;MAChC,wBAAwB,EAAC,kBAAM;MAC/B,qBAAqB,EAAC,kBAAM;MAM5B,sBAAsB,EAAE,WAAW;MACnC,cAAc,EAAC,kBAAkB;Mc2W9B,OAAO,EAAE,KAAK;MACd,MAAM,EA3XG,GAAG;MA4XZ,UAAU,EAAE,IAAI;MAChB,MAAM,EAAE,OAAO;MACf,KAAK,EAAE,IAAI;MACX,KAAK,EAAE,IAAI;MACX,SAAS,EAAE,IAAI;MAEf,uDAAQ;QACP,KAAK,EAAE,OAAc;IAIvB,iDAAa;Md3Of,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,SAAS;MACjB,MAAM,EAAE,YAAY;Mc6OjB,UAAU,EAAE,2EAMX;MAED,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,WAAW,EAAE,GAAG;MAChB,OAAO,EAAE,KAAK;;;;;;;;;MASd,wDAAS;Qd7PZ,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,gBAAgB;EckQvB,gCAAa;IT3Id,gBAAgB,EARH,CAAG;IAShB,YAAY,EAAE,CAAW;IACzB,aAAa,EAVA,CAAG;IAWhB,SAAS,EAAE,CAAW;IACtB,QAAQ,EAAE,CAAW;IACrB,IAAI,EAAE,CAAW;ISwIf,OAAO,EA5SY,IAAI;IA8SvB,4CAAY;MdpSd,mBAAmB,EcqSK,IAAI;;MdpS5B,gBAAgB,EcoSQ,IAAI;;MdnS5B,eAAe,EcmSS,IAAI;;;MdhS5B,cAAc,EcgSU,IAAI;Md/R5B,WAAW,Ec+Ra,IAAI;MACzB,KAAK,EA3aI,IAAI;MA6ab,cAAc,EAAE,GAAG;MACnB,aAAa,EAAE,GAAG;MdzSrB,mBAAmB,Ec0SK,IAAI;;MdzS5B,gBAAgB,EcySQ,IAAI;;MdxS5B,eAAe,EcwSS,IAAI;;;MdrS5B,cAAc,EcqSU,IAAI;MdpS5B,WAAW,EcoSa,IAAI;MAEzB,kDAAM;QACL,SAAS,EAAE,IAAI;QACf,KAAK,EAnbG,IAAI;QAobZ,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,IAAI;IAIb,4CAAY;MACX,SAAS,EAAE,IAAI;MAEf,WAAW,EAAE,KAAK;MdvTrB,mBAAmB,EcwTK,IAAI;;MdvT5B,gBAAgB,EcuTQ,IAAI;;MdtT5B,eAAe,EcsTS,IAAI;;;MdnT5B,cAAc,EcmTU,IAAI;MdlT5B,WAAW,EckTa,IAAI;MAEzB,WAAW,EAAE,QAAQ;MACrB,SAAS,EAAE,UAAU;MAErB,MAAM,EAAE,GAAG;MACX,KAAK,EAAE,IAAI;MAEX,mDAAS;QACR,WAAW,EAAE,iBAAiB;QAC9B,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QAEjB,2DAAU;UACT,WAAW,EAAE,eAAe;UAC5B,SAAS,EAAE,IAAI;EAOnB,gCAAa;ITzLd,gBAAgB,EARH,IAAG;IAShB,YAAY,EAAE,IAAW;IACzB,aAAa,EAVA,IAAG;IAWhB,SAAS,EAAE,IAAW;IACtB,QAAQ,EAAE,IAAW;IACrB,IAAI,EAAE,IAAW;IAoFjB,kBAAkB,ESmGI,UAAU;ITlGhC,eAAe,ESkGO,UAAU;IThG/B,mBAAmB,EAAE,KAAK;IAM3B,UAAU,ES0FY,UAAU;IdjVhC,mBAAmB,EckVI,IAAI;;IdjV3B,gBAAgB,EciVO,IAAI;;IdhV3B,eAAe,EcgVQ,IAAI;;;Id7U3B,cAAc,Ec6US,IAAI;Id5U3B,WAAW,Ec4UY,IAAI;IAEzB,qCAAK;MACJ,OAAO,EAAE,KAAK;MAEd,4CAAS;QdjdZ,WAAW,EAAE,gBAAgB;QAT7B,6BAA6B,EAAC,kBAAM;QAEpC,0BAA0B,EAAC,kBAAM;QACjC,yBAAyB,EAAC,kBAAM;QAChC,wBAAwB,EAAC,kBAAM;QAC/B,qBAAqB,EAAC,kBAAM;QAM5B,sBAAsB,EAAE,WAAW;QACnC,cAAc,EAAC,kBAAkB;Qcgd7B,KAAK,EAAE,IAAI;QAEX,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI;QACf,MAAM,EApeE,GAAG;QAseX,MAAM,EAAE,OAAO;QAEf,gDAAM;UACL,MAAM,EAAE,OAAO;QAGhB,qDAAW;UACV,MAAM,EAAE,OAAO;UAEf,4DAAS;YACR,KAAK,EAAE,IAAI;MAKd,gDAAa;QTjIhB,kBAAkB,ESkIM,QAAQ;QTjIhC,eAAe,ESiIS,QAAQ;QT7H/B,mBAAmB,EAAE,GAAG;QAIzB,UAAU,ESyHc,QAAQ;Qd1ehC,WAAW,EAAE,gBAAgB;QAT7B,6BAA6B,EAAC,kBAAM;QAEpC,0BAA0B,EAAC,kBAAM;QACjC,yBAAyB,EAAC,kBAAM;QAChC,wBAAwB,EAAC,kBAAM;QAC/B,qBAAqB,EAAC,kBAAM;QAM5B,sBAAsB,EAAE,WAAW;QACnC,cAAc,EAAC,kBAAkB;Qc0e7B,OAAO,EAAE,KAAK;QACd,MAAM,EA1fE,GAAG;QA2fX,WAAW,EAAE,GAAG;QAChB,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QAEf,sDAAQ;UACP,KAAK,EAAE,IAAI;AAUhB,sBAAc;EdhgBd,WAAW,EAAE,gBAAgB;EAT7B,6BAA6B,EAAC,kBAAM;EAEpC,0BAA0B,EAAC,kBAAM;EACjC,yBAAyB,EAAC,kBAAM;EAChC,wBAAwB,EAAC,kBAAM;EAC/B,qBAAqB,EAAC,kBAAM;EAM5B,sBAAsB,EAAE,WAAW;EACnC,cAAc,EAAC,kBAAkB;Ec+fhC,MAAM,EA9gBK,GAAG;EA+gBd,MAAM,EAAE,OAAO;EACf,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EAEf,4BAAQ;IACP,KAAK,EAAE,KAAK;AAId,yBAAiB;EAChB,SAAS,EAAE,IAAI;EACf,OAAO,EA9Za,IAAI;EAgaxB,gBAAgB,EHvTD,OAAgB;EGwT/B,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,OAAO;EAEf,2CAAkB;IACjB,YAAY,EAAE,IAAkB;;AC9iBnC,UAAW;EfyGV,kBAAkB,EAAE,kCAA8B;EAC/C,eAAe,EAAE,kCAA8B;EAC9C,cAAc,EAAE,kCAA8B;EAC7C,aAAa,EAAE,kCAA8B;EAC1C,UAAU,EAAE,kCAA8B;EA5GlD,qBAAqB,EeCE,GAAG;EfAvB,kBAAkB,EeAE,GAAG;EfClB,aAAa,EeDE,GAAG;EAE1B,SAAS,EAAE,GAAG;EACd,gBAAgB,EAAE,KAAK;EACvB,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,kCAAgC;EAE5C,qBAAW;IACV,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,UAAU;EAKrB,iCAAW;IflBZ,qBAAqB,EemBI,CAAC;IflBvB,kBAAkB,EekBI,CAAC;IfjBlB,aAAa,EeiBI,CAAC;IAExB,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,SAAS;IAClB,gBAAgB,EAAE,IAAI;IAEtB,2CAAY;MACX,WAAW,EAAE,IAAI;MACjB,KAAK,EAAE,KAAK;MACZ,gBAAgB,EAAE,IAAI;;ACP1B,IAAK;EACJ,WAAW,EAAE,eAAe;EAC5B,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;;AAGX,UAAW;EACV,OAAO,EAAE,IAAI;;AAGd,KAAM;EACL,WAAW,EAAE,eAAe;;AAG7B,QAAS;EACR,WAAW,EAAE,eAAe;;;;;;;;;;;;;;;;;ACtB7B,yCAA0C;EACzC,IAAK;IACJ,WAAW,EAAE,QAAQ;;EAEtB,UAAW;IACV,OAAO,EAAE,QAAQ;AAInB,yCAA0C;EACzC,IAAK;IACJ,WAAW,EAAE,MAAM;;EAEpB,UAAW;IACV,OAAO,EAAE,MAAM;AAIjB,0CAA2C;EAC1C,IAAK;IACJ,WAAW,EAAE,YAAY;;EAE1B,UAAW;IACV,OAAO,EAAE,YAAY",
+"mappings": "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",
"sources": ["../scss/core/reset.scss","../scss/core/fonts.scss","../scss/core/clipperz-font/dejavu.scss","../scss/core/mixin.scss","../scss/core/overlay.scss","../scss/core/layout.scss","../scss/core/behavior.scss","../scss/core/parameters.scss","../scss/core/flex.scss","../scss/core/palette.scss","../scss/core/tagEditor.scss","../scss/style/loadingPage.scss","../scss/style/loginPage.scss","../scss/style/registrationPage.scss","../scss/style/selectionPanel.scss","../scss/style/settingsPanel.scss","../scss/style/accountStatus.scss","../scss/style/card.scss","../scss/style/dialogBox.scss","../scss/clipperz.scss","../scss/core/sizes.scss"],
"names": [],
"file": "clipperz.css"
diff --git a/frontend/delta/fonts/IcoMoon/Clipperz Icon font.json b/frontend/delta/fonts/IcoMoon/Clipperz Icon font.json
index 42edcb8..20b7e4c 100755
--- a/frontend/delta/fonts/IcoMoon/Clipperz Icon font.json
+++ b/frontend/delta/fonts/IcoMoon/Clipperz Icon font.json
@@ -26,7 +26,7 @@
"ligatures": "generate password",
"name": "key"
},
- "setIdx": 1,
+ "setIdx": 2,
"setId": 7,
"iconIdx": 141
},
@@ -55,7 +55,7 @@
"ligatures": "view password",
"name": "eye"
},
- "setIdx": 1,
+ "setIdx": 2,
"setId": 7,
"iconIdx": 206
},
@@ -81,7 +81,7 @@
"name": "tag",
"ligatures": "tag"
},
- "setIdx": 2,
+ "setIdx": 3,
"setId": 6,
"iconIdx": 0
},
@@ -108,7 +108,7 @@
"name": "tags",
"ligatures": "tags"
},
- "setIdx": 2,
+ "setIdx": 3,
"setId": 6,
"iconIdx": 1
},
@@ -135,7 +135,7 @@
"name": "clock",
"ligatures": "recent"
},
- "setIdx": 2,
+ "setIdx": 3,
"setId": 6,
"iconIdx": 2
},
@@ -164,7 +164,7 @@
"name": "spinner",
"ligatures": "loading"
},
- "setIdx": 2,
+ "setIdx": 3,
"setId": 6,
"iconIdx": 3
},
@@ -192,7 +192,7 @@
"name": "search",
"ligatures": "search"
},
- "setIdx": 2,
+ "setIdx": 3,
"setId": 6,
"iconIdx": 4
},
@@ -220,7 +220,7 @@
"name": "locked",
"ligatures": "locked"
},
- "setIdx": 2,
+ "setIdx": 3,
"setId": 6,
"iconIdx": 6
},
@@ -246,7 +246,7 @@
"name": "unlocked",
"ligatures": "unlocked"
},
- "setIdx": 2,
+ "setIdx": 3,
"setId": 6,
"iconIdx": 7
},
@@ -275,7 +275,7 @@
"name": "menu",
"ligatures": "menu"
},
- "setIdx": 2,
+ "setIdx": 3,
"setId": 6,
"iconIdx": 8
},
@@ -304,7 +304,7 @@
"name": "close",
"ligatures": "failure, failed, delete, clear, cancel, close"
},
- "setIdx": 2,
+ "setIdx": 3,
"setId": 6,
"iconIdx": 9
},
@@ -333,7 +333,7 @@
"name": "checkmark",
"ligatures": "done, ok, save"
},
- "setIdx": 2,
+ "setIdx": 3,
"setId": 6,
"iconIdx": 10
},
@@ -348,8 +348,10 @@
"grid": 0,
"tags": [
"commands"
- ]
+ ],
+ "attrs": []
},
+ "attrs": [],
"properties": {
"order": 18,
"id": 1,
@@ -358,7 +360,7 @@
"name": "commands",
"ligatures": "commands"
},
- "setIdx": 3,
+ "setIdx": 4,
"setId": 4,
"iconIdx": 0
},
@@ -371,8 +373,10 @@
"grid": 0,
"tags": [
"logo"
- ]
+ ],
+ "attrs": []
},
+ "attrs": [],
"properties": {
"order": 4,
"id": 0,
@@ -381,7 +385,7 @@
"name": "logo",
"ligatures": "clipperz"
},
- "setIdx": 3,
+ "setIdx": 4,
"setId": 4,
"iconIdx": 1
},
@@ -398,8 +402,10 @@
"envelope",
"contact"
],
- "grid": 20
+ "grid": 20,
+ "attrs": []
},
+ "attrs": [],
"properties": {
"id": 4,
"order": 19,
@@ -408,7 +414,7 @@
"name": "mail",
"ligatures": "email"
},
- "setIdx": 6,
+ "setIdx": 7,
"setId": 0,
"iconIdx": 4
},
@@ -422,8 +428,10 @@
"popout",
"new window"
],
- "grid": 20
+ "grid": 20,
+ "attrs": []
},
+ "attrs": [],
"properties": {
"id": 35,
"order": 9,
@@ -432,7 +440,7 @@
"name": "popup",
"ligatures": "url, direct login"
},
- "setIdx": 6,
+ "setIdx": 7,
"setId": 0,
"iconIdx": 35
},
@@ -446,17 +454,19 @@
"add",
"sum"
],
- "grid": 20
+ "grid": 20,
+ "attrs": []
},
+ "attrs": [],
"properties": {
"id": 125,
"order": 14,
"prevSize": 32,
"code": 58895,
"name": "plus",
- "ligatures": "add new field"
+ "ligatures": "add new field, create new OTP"
},
- "setIdx": 6,
+ "setIdx": 7,
"setId": 0,
"iconIdx": 125
},
@@ -472,17 +482,19 @@
"remove",
"delete"
],
- "grid": 20
+ "grid": 20,
+ "attrs": []
},
+ "attrs": [],
"properties": {
"id": 126,
"order": 17,
"prevSize": 32,
"code": 58898,
"name": "cross",
- "ligatures": "remove field, remove tag"
+ "ligatures": "remove field, remove tag, remove OTP"
},
- "setIdx": 6,
+ "setIdx": 7,
"setId": 0,
"iconIdx": 126
},
@@ -496,8 +508,10 @@
"add",
"sum"
],
- "grid": 20
+ "grid": 20,
+ "attrs": []
},
+ "attrs": [],
"properties": {
"id": 128,
"order": 20,
@@ -506,7 +520,7 @@
"name": "plus3",
"ligatures": "add card"
},
- "setIdx": 6,
+ "setIdx": 7,
"setId": 0,
"iconIdx": 128
},
@@ -520,8 +534,10 @@
"left",
"previous"
],
- "grid": 20
+ "grid": 20,
+ "attrs": []
},
+ "attrs": [],
"properties": {
"id": 205,
"order": 11,
@@ -530,7 +546,7 @@
"name": "arrow-left",
"ligatures": "back"
},
- "setIdx": 6,
+ "setIdx": 7,
"setId": 0,
"iconIdx": 205
},
@@ -544,8 +560,10 @@
"right",
"next"
],
- "grid": 20
+ "grid": 20,
+ "attrs": []
},
+ "attrs": [],
"properties": {
"id": 208,
"order": 12,
@@ -554,7 +572,7 @@
"name": "arrow-right",
"ligatures": "show detail"
},
- "setIdx": 6,
+ "setIdx": 7,
"setId": 0,
"iconIdx": 208
}
@@ -584,7 +602,8 @@
"showMetadata": false,
"autoHost": false,
"embed": true,
- "showVersion": true
+ "showVersion": true,
+ "ligaReset": "tags"
},
"imagePref": {
"color": 0,
diff --git a/frontend/delta/html/index_template.html b/frontend/delta/html/index_template.html
index 4514f08..109f841 100644
--- a/frontend/delta/html/index_template.html
+++ b/frontend/delta/html/index_template.html
@@ -110,7 +110,8 @@ Clipperz_normalizedNewLine = '\x0d\x0a';
// Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.Offline({ 'dataStore':dataStore, 'type':'OFFLINE_COPY', 'typeDescription':'Offline copy'});
Clipperz.PM.Proxy.defaultProxy = new Clipperz.PM.Proxy.Offline({ 'dataStore':dataStore, 'type':'ONLINE', 'typeDescription':'Offline copy'});
Clipperz.PM.Proxy.defaultProxy.dataStore().setupWithEncryptedData(testData);
-
+
+
diff --git a/frontend/delta/js/Clipperz/Base.js b/frontend/delta/js/Clipperz/Base.js
index d6d9f6f..cac32e9 100644
--- a/frontend/delta/js/Clipperz/Base.js
+++ b/frontend/delta/js/Clipperz/Base.js
@@ -82,6 +82,7 @@ MochiKit.Base.update(Clipperz.Base, {
return MochiKit.Base.compare(a[aKey].toLowerCase(), b[aKey].toLowerCase());
}
},
+
//-------------------------------------------------------------------------
/*
'dependsOn': function(module, deps) {
@@ -111,6 +112,10 @@ MochiKit.Base.update(Clipperz.Base, {
return aValue.replace(/^\s+|\s+$/g, "");
},
+ 'zipWithRange': function (anArray) {
+ return MochiKit.Base.zip(MochiKit.Iter.range(anArray.length), anArray);
+ },
+
//-------------------------------------------------------------------------
'stringToByteArray': function (aValue) {
diff --git a/frontend/delta/js/Clipperz/PM/Connection.js b/frontend/delta/js/Clipperz/PM/Connection.js
index bb9df22..9dade4a 100644
--- a/frontend/delta/js/Clipperz/PM/Connection.js
+++ b/frontend/delta/js/Clipperz/PM/Connection.js
@@ -240,13 +240,13 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.
//-------------------------------------------------------------------------
- 'updateCredentials': function (aUsername, aPassphrase, someUserData) {
+ 'updateCredentials': function (someData) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("Connection.updateCredentials", {trace:false});
deferredResult.collectResults({
'credentials': [
- MochiKit.Base.method(this, 'normalizedCredentials', {username:aUsername, password:aPassphrase}),
+ MochiKit.Base.method(this, 'normalizedCredentials', {username:someData['newUsername'], password:someData['newPassphrase']}),
MochiKit.Base.bind(function(someCredentials) {
var srpConnection;
var result;
@@ -258,15 +258,13 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.
return result;
}, this)
],
- 'user': MochiKit.Base.partial(MochiKit.Async.succeed, someUserData)
+ 'user': MochiKit.Base.partial(MochiKit.Async.succeed, someData['user']),
+ 'oneTimePasswords': MochiKit.Base.partial(MochiKit.Async.succeed, someData['oneTimePasswords'])
});
-// deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress');
deferredResult.addMethod(this, 'message', 'upgradeUserCredentials');
-// deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress');
deferredResult.callback();
return deferredResult;
-
},
//=========================================================================
@@ -309,12 +307,12 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.
'message': 'oneTimePassword',
'version': Clipperz.PM.Connection.communicationProtocol.currentVersion,
'parameters': {
- 'oneTimePasswordKey': Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(someParameters['username'], normalizedOTP),
+ 'oneTimePasswordKey': Clipperz.PM.DataModel.OneTimePassword.computeKeyWithPassword(normalizedOTP),
'oneTimePasswordKeyChecksum': Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(someParameters['username'], normalizedOTP)
}
}
- return Clipperz.Async.callbacks("Connction.redeemOTP", [
+ return Clipperz.Async.callbacks("Connction.redeemOneTimePassword", [
MochiKit.Base.method(this.proxy(), 'handshake', args),
function(aResult) {
return Clipperz.PM.Crypto.deferredDecrypt({
@@ -364,8 +362,6 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.
return result;
});
deferredResult.addMethod(this.proxy(), 'handshake');
-// deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_credentialVerification');
-// deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress');
deferredResult.addCallback(function(someParameters) {
var result;
@@ -415,10 +411,6 @@ Clipperz.PM.Connection.SRP['1.0'].prototype = MochiKit.Base.update(new Clipperz.
return someParameters;
}, this));
-// deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'updatedProgressState', 'connection_loggedIn');
-// deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'advanceProgress');
-// deferredResult.addCallback(MochiKit.Async.succeed, {result:"done"});
-
deferredResult.callback();
return deferredResult;
diff --git a/frontend/delta/js/Clipperz/PM/DataModel/DirectLogin.js b/frontend/delta/js/Clipperz/PM/DataModel/DirectLogin.js
index 482c13d..17a1c3d 100644
--- a/frontend/delta/js/Clipperz/PM/DataModel/DirectLogin.js
+++ b/frontend/delta/js/Clipperz/PM/DataModel/DirectLogin.js
@@ -120,7 +120,8 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, {
'setLabelKeepingBackwardCompatibilityWithBeta': function (aValue) {
return Clipperz.Async.callbacks("DirectLogin.setLabelKeepingBackwardCompatibilityWithBeta", [
MochiKit.Base.method(this, 'setIndexDataForKey', 'label', aValue),
- MochiKit.Base.method(this, 'setValue', 'label', aValue)
+ MochiKit.Base.method(this, 'setValue', 'label', aValue),
+ MochiKit.Base.partial(MochiKit.Async.succeed, this),
], {trace:false});
},
@@ -497,7 +498,8 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, {
MochiKit.Base.method(this, 'updateFormValuesAfterChangingBookmarkletConfiguration'),
MochiKit.Base.method(this, 'updateBindingsAfterChangingBookmarkletConfiguration'),
- MochiKit.Base.noop
+// MochiKit.Base.noop
+ MochiKit.Base.partial(MochiKit.Async.succeed, this),
], {trace:false});
},
@@ -607,6 +609,20 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, {
], {trace:false});
},
+ 'setBindings': function (someBindings, originalFields) {
+ var self = this;
+
+ return Clipperz.Async.callbacks("DirectLogin.setBindings", [
+ function () {
+ return MochiKit.Base.map(function (aBindingInfo) {
+ return self.bindFormFieldWithLabelToRecordFieldWithLabel(aBindingInfo[0], originalFields[aBindingInfo[1]]['label']);
+ }, MochiKit.Base.zip(MochiKit.Base.keys(someBindings), MochiKit.Base.values(someBindings)));
+ },
+ Clipperz.Async.collectAll,
+ MochiKit.Base.partial(MochiKit.Async.succeed, this),
+ ], {trace:false});
+ },
+
//-------------------------------------------------------------------------
/*
'bindingValues': function () {
diff --git a/frontend/delta/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js b/frontend/delta/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js
index 8e325d7..2b52000 100644
--- a/frontend/delta/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js
+++ b/frontend/delta/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js
@@ -72,7 +72,7 @@ Clipperz.PM.DataModel.EncryptedRemoteObject = function(args) {
//
// getRemoteData
// unpackRemoteData
-// getDecryptData [encryptedDataKeypath, encryptedVersionKeypath]
+// getDecryptedData [encryptedDataKeypath, encryptedVersionKeypath]
// unpackData
//
//
diff --git a/frontend/delta/js/Clipperz/PM/DataModel/OneTimePassword.js b/frontend/delta/js/Clipperz/PM/DataModel/OneTimePassword.js
index c774bff..157807b 100644
--- a/frontend/delta/js/Clipperz/PM/DataModel/OneTimePassword.js
+++ b/frontend/delta/js/Clipperz/PM/DataModel/OneTimePassword.js
@@ -31,18 +31,13 @@ if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {};
Clipperz.PM.DataModel.OneTimePassword = function(args) {
args = args || {};
-// this._user = args['user'];
+ this._username = args['username'];
+ this._passphraseCallback = args['passphraseCallback'];
this._reference = args['reference'] || Clipperz.PM.Crypto.randomKey();
this._password = args['password'];
this._passwordValue = Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(args['password']);
- this._creationDate = args['created'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['created']) : new Date();
- this._usageDate = args['used'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['used']) : null;
-
- this._status = args['status'] || 'ACTIVE'; // 'REQUESTED', 'USED', 'DISABLED'
- this._connectionInfo= null;
-
- this._key = null;
- this._keyChecksum = null;
+ this._label = args['label'] || "";
+ this._usageDate = args['usageDate'] || null; // Usage date is stored when the client is sure that the otp was used
return this;
}
@@ -52,19 +47,35 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, {
'toString': function() {
return "Clipperz.PM.DataModel.OneTimePassword";
},
-/*
- //-------------------------------------------------------------------------
- 'user': function() {
- return this._user;
+ 'username': function() {
+ return this._username;
},
- //-------------------------------------------------------------------------
+ 'passphraseCallback': function () {
+ return this._passphraseCallback;
+ },
+
+ 'setPassphraseCallback': function(aPassphraseCallback) {
+ this._passphraseCallback = aPassphraseCallback;
+ },
'password': function() {
return this._password;
},
+ 'label': function() {
+ return this._label;
+ },
+
+ 'usageDate': function() {
+ return this._usageDate;
+ },
+
+ 'setUsageDate': function(aDate) {
+ this._usageDate = aDate;
+ },
+
//-------------------------------------------------------------------------
'passwordValue': function() {
@@ -73,12 +84,6 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, {
//-------------------------------------------------------------------------
- 'creationDate': function() {
- return this._creationDate;
- },
-
- //-------------------------------------------------------------------------
-
'reference': function() {
return this._reference;
},
@@ -86,51 +91,18 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, {
//-------------------------------------------------------------------------
'key': function() {
- if (this._key == null) {
- this._key = Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(this.user().username(), this.passwordValue());
- }
-
- return this._key;
+ return Clipperz.PM.DataModel.OneTimePassword.computeKeyWithPassword(this.passwordValue());
},
-
+
//-------------------------------------------------------------------------
'keyChecksum': function() {
- if (this._keyChecksum == null) {
- this._keyChecksum = Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(this.user().username(), this.passwordValue());
- }
-
- return this._keyChecksum;
- },
-*/
- //-------------------------------------------------------------------------
-
- 'status': function() {
- return this._status;
- },
-
- 'setStatus': function(aValue) {
- this._status = aValue;
- },
-
- //-------------------------------------------------------------------------
-/*
- 'serializedData': function() {
- var result;
-
- result = {
- 'password': this.password(),
- 'created': this.creationDate() ? Clipperz.PM.Date.formatDateWithUTCFormat(this.creationDate()) : null,
- 'used': this.usageDate() ? Clipperz.PM.Date.formatDateWithUTCFormat(this.usageDate()) : null,
- 'status': this.status()
- };
-
- return result;
+ return Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(this.username(), this.passwordValue());
},
//-------------------------------------------------------------------------
- 'packedPassphrase': function() {
+ 'packedPassphrase': function(aPassphrase) {
var result;
var packedPassphrase;
var encodedPassphrase;
@@ -140,32 +112,29 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, {
getRandomBytes = MochiKit.Base.method(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'getRandomBytes');
- encodedPassphrase = new Clipperz.ByteArray(this.user().passphrase()).toBase64String();
-//Clipperz.logDebug("--- encodedPassphrase.length: " + encodedPassphrase.length);
+ encodedPassphrase = new Clipperz.ByteArray(aPassphrase).toBase64String();
prefixPadding = getRandomBytes(getRandomBytes(1).byteAtIndex(0)).toBase64String();
-//Clipperz.logDebug("--- prefixPadding.length: " + prefixPadding.length);
suffixPadding = getRandomBytes((500 - prefixPadding.length - encodedPassphrase.length) * 6 / 8).toBase64String();
-//Clipperz.logDebug("--- suffixPadding.length: " + suffixPadding.length);
-//Clipperz.logDebug("--- total.length: " + (prefixPadding.length + encodedPassphrase.length + suffixPadding.length));
-
+
packedPassphrase = {
'prefix': prefixPadding,
'passphrase': encodedPassphrase,
'suffix': suffixPadding
};
-// result = Clipperz.Base.serializeJSON(packedPassphrase);
result = packedPassphrase;
-//Clipperz.logDebug("===== OTP packedPassprase: [" + result.length + "]" + result);
-//Clipperz.logDebug("<<< OneTimePassword.packedPassphrase");
return result;
},
//-------------------------------------------------------------------------
- 'encryptedPackedPassphrase': function() {
- return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(this.passwordValue(), this.packedPassphrase())
+ 'encryptedPackedPassphrase': function(aPassphrase) {
+ return Clipperz.PM.Crypto.deferredEncrypt({
+ 'key': this.passwordValue(),
+ 'value': this.packedPassphrase(aPassphrase),
+ 'version': Clipperz.PM.Crypto.encryptingFunctions.currentVersion
+ })
},
//-------------------------------------------------------------------------
@@ -174,8 +143,6 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, {
var deferredResult;
var result;
-//Clipperz.logDebug(">>> OneTimePassword.encryptedData");
-//Clipperz.logDebug("--- OneTimePassword.encryptedData - id: " + this.reference());
result = {
'reference': this.reference(),
'key': this.key(),
@@ -183,116 +150,26 @@ Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, {
'data': "",
'version': Clipperz.PM.Crypto.encryptingFunctions.currentVersion
}
-//Clipperz.logDebug("--- OneTimePassword.encryptedData - 2: " + Clipperz.Base.serializeJSON(result));
- deferredResult = new MochiKit.Async.Deferred();
-//Clipperz.logDebug("--- OneTimePassword.encryptedData - 3");
-//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.encryptedData - 1: " + res); return res;});
-//# deferredResult.addCallback(Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion, this.passwordValue(), this.packedPassphrase());
+ deferredResult = new Clipperz.Async.Deferred("OneTimePassword.encryptedData", {trace: false});
+ deferredResult.addCallback(this.passphraseCallback());
deferredResult.addCallback(MochiKit.Base.method(this, 'encryptedPackedPassphrase'));
-//Clipperz.logDebug("--- OneTimePassword.encryptedData - 4");
-//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.encryptedData - 2: [" + res.length + "]" + res); return res;});
deferredResult.addCallback(function(aResult, res) {
aResult['data'] = res;
return aResult;
}, result);
-//Clipperz.logDebug("--- OneTimePassword.encryptedData - 5");
-//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.encryptedData - 3: " + Clipperz.Base.serializeJSON(res)); return res;});
+
deferredResult.callback();
-//Clipperz.logDebug("--- OneTimePassword.encryptedData - 6");
return deferredResult;
},
- //-------------------------------------------------------------------------
-
- 'saveChanges': function() {
- var deferredResult;
- var result;
-
-//Clipperz.logDebug(">>> OneTimePassword.saveChanges");
- result = {};
- deferredResult = new MochiKit.Async.Deferred();
-
- deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveOTP_encryptUserData');
- deferredResult.addCallback(MochiKit.Base.method(this.user(), 'encryptedData'));
- deferredResult.addCallback(function(aResult, res) {
- aResult['user'] = res;
- return aResult;
- }, result);
-
- deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveOTP_encryptOTPData');
- deferredResult.addCallback(MochiKit.Base.method(this, 'encryptedData'));
- deferredResult.addCallback(function(aResult, res) {
- aResult['oneTimePassword'] = res;
- return aResult;
- }, result);
-
- deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveOTP_sendingData');
-//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.saveChanges - 1: " + Clipperz.Base.serializeJSON(res)); return res;});
- deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'addNewOneTimePassword');
-
- deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'saveOTP_updatingInterface');
-//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.saveChanges - 2: " + res); return res;});
- deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'OTPUpdated');
- deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'oneTimePassword_saveChanges_done', null);
-//deferredResult.addBoth(function(res) {Clipperz.logDebug("OneTimePassword.saveChanges - 2: " + res); return res;});
- deferredResult.callback();
-//Clipperz.logDebug("<<< OneTimePassword.saveChanges");
-
- return deferredResult;
- },
-
- //-------------------------------------------------------------------------
-
- 'usageDate': function() {
- return this._usageDate;
- },
-
- 'setUsageDate': function(aValue) {
- this._usageDate = aValue;
- },
-
- //-------------------------------------------------------------------------
-
- 'connectionInfo': function() {
- return this._connectionInfo;
- },
-
- 'setConnectionInfo': function(aValue) {
- this._connectionInfo = aValue;
- },
-
- //-------------------------------------------------------------------------
-
- 'isExpired': function() {
- return (this.usageDate() != null);
- },
-
- //-------------------------------------------------------------------------
-
- 'updateStatusWithValues': function(someValues) {
- var result;
-
- result = false;
-
- if (someValues['status'] != this.status()) {
- result = true;
- }
-
- this.setStatus(someValues['status']);
- this.setUsageDate(Clipperz.PM.Date.parseDateWithUTCFormat(someValues['requestDate']));
- this.setConnectionInfo(someValues['connection']);
-
- return result;
- },
-*/
//-------------------------------------------------------------------------
__syntaxFix__: "syntax fix"
});
//#############################################################################
-Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword = function(anUsername, aPassword) {
+Clipperz.PM.DataModel.OneTimePassword.computeKeyWithPassword = function(aPassword) {
return Clipperz.Crypto.SHA.sha_d256(new Clipperz.ByteArray(aPassword)).toHexString().substring(2);
}
@@ -348,3 +225,32 @@ Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword = function(aPass
};
//#############################################################################
+
+Clipperz.PM.DataModel.OneTimePassword.generateRandomBase32OTPValue = function() {
+ var randomValue;
+ var result;
+
+ randomValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(160/8);
+ result = randomValue.toBase32String();
+ result = result.replace(/.{4}\B/g, '$&' + ' ');
+ result = result.replace(/(.{4} ){2}/g, '$&' + '- ');
+
+ return result;
+ },
+
+//#############################################################################
+
+Clipperz.PM.DataModel.OneTimePassword.createNewOneTimePassword = function(aUsername, aPassphraseCallback) {
+ var result;
+ var password;
+
+ password = Clipperz.PM.DataModel.OneTimePassword.generateRandomBase32OTPValue();
+ result = new Clipperz.PM.DataModel.OneTimePassword({
+ 'username': aUsername,
+ 'passphraseCallback': aPassphraseCallback,
+ 'password': password,
+ 'label': ""
+ });
+
+ return result;
+}
\ No newline at end of file
diff --git a/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js b/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js
index e97970d..998e00d 100644
--- a/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js
+++ b/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.Field.js
@@ -175,7 +175,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record.Version.Field, Object, {
deferredResult.addMethod(this, 'actionType');
deferredResult.addCallback(function (aValue) { fieldValues['actionType'] = aValue; });
deferredResult.addMethod(this, 'isHidden');
- deferredResult.addCallback(function (aValue) { fieldValues['isHidden'] = aValue; });
+ deferredResult.addCallback(function (aValue) { fieldValues['hidden'] = aValue; });
deferredResult.addCallback(function () { return fieldValues; });
deferredResult.callback();
diff --git a/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.js b/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.js
index db91fad..7b2bf93 100644
--- a/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.js
+++ b/frontend/delta/js/Clipperz/PM/DataModel/Record.Version.js
@@ -327,16 +327,15 @@ console.log("Record.Version.hasPendingChanges");
deferredResult = new Clipperz.Async.Deferred('Record.Version.export', {trace:false});
deferredResult.addMethod(this,'fields');
deferredResult.addCallback(MochiKit.Base.values);
- deferredResult.addCallback(MochiKit.Base.map, function(fieldIn) {
+ deferredResult.addCallback(MochiKit.Base.map, function (fieldIn) {
return fieldIn.content();
});
deferredResult.addCallback(Clipperz.Async.collectAll);
deferredResult.addCallback(function(listIn) {
-// return listIn.reduce(function(result, field) {
return MochiKit.Iter.reduce(function(result, field) {
- var ref = field.reference;
+ var ref = field['reference'];
result[ref] = field;
- delete result[ref].reference;
+ delete result[ref]['reference'];
return result;
}, listIn, {});
});
diff --git a/frontend/delta/js/Clipperz/PM/DataModel/Record.js b/frontend/delta/js/Clipperz/PM/DataModel/Record.js
index 7feacd4..43e2980 100644
--- a/frontend/delta/js/Clipperz/PM/DataModel/Record.js
+++ b/frontend/delta/js/Clipperz/PM/DataModel/Record.js
@@ -170,7 +170,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
},
//............................................................................
-
+
'label': function () {
return Clipperz.Async.callbacks("Record.label", [
MochiKit.Base.method(this, 'fullLabel'),
@@ -1128,7 +1128,8 @@ console.log("Record.hasPendingChanges RESULT", result);
Clipperz.Async.collectAll,
MochiKit.Base.method(aRecord, 'directLogins'), MochiKit.Base.values,
-//function (aValue) { console.log("-> DirectLogin Values", aValue); return aValue; },
+//function (aValue) { console.log("-> SETUP WITH RECORD: DirectLogin Values", aValue); return aValue; },
+ // TODO: possibly broken implementation of direct login cloning
MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, 'addDirectLogin')),
//function (aValue) { console.log("-> DirectLogin Values", aValue); return aValue; },
// Clipperz.Async.collectAll,
@@ -1136,16 +1137,25 @@ console.log("Record.hasPendingChanges RESULT", result);
MochiKit.Base.bind(function () { return this; }, this)
], {trace:false});
},
+
+ 'directLoginWithJsonData': function (someData) {
+ var result;
- 'setUpWithJSON': function(data) {
+ result = new Clipperz.PM.DataModel.DirectLogin({'record': this});
+
+ return result;
+ },
+
+ 'setUpWithJSON': function(data, labelPostfix) {
return Clipperz.Async.callbacks("Record.setUpWithJSON", [
// TODO: proper tag handling
- MochiKit.Base.method(this,'setLabel',data.label),
- MochiKit.Base.method(this,'setNotes',data.data.notes),
+ MochiKit.Base.method(this,'setLabel', data['label'] + ((labelPostfix) ? labelPostfix : '')),
+ MochiKit.Base.method(this,'setNotes', data['data']['notes']),
// TODO: check whether fields' order is kept or not
- function(){ return MochiKit.Base.values(data.currentVersion.fields); },
- MochiKit.Base.partial(MochiKit.Base.map,MochiKit.Base.method(this, 'addField')),
- Clipperz.Async.collectAll
+ MochiKit.Base.partial(MochiKit.Base.values, data['currentVersion']['fields']),
+ MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, 'addField')),
+ Clipperz.Async.collectAll,
+ MochiKit.Base.partial(MochiKit.Async.succeed, this),
], {trace:false});
},
@@ -1174,12 +1184,12 @@ console.log("Record.hasPendingChanges RESULT", result);
var label;
var data;
var currentVersion;
- var directLogins;
+// var directLogins;
var currentVersionObject;
data = {};
currentVersion = {};
- directLogins = {};
+// directLogins = {};
deferredResult = new Clipperz.Async.Deferred('Record.export', {trace:false});
deferredResult.addMethod(this, 'getCurrentRecordVersion');
deferredResult.addCallback(function(recordVersionIn) { currentVersionObject = recordVersionIn; })
@@ -1211,7 +1221,6 @@ console.log("Record.hasPendingChanges RESULT", result);
__syntaxFix__: "syntax fix"
});
-
Clipperz.PM.DataModel.Record.defaultCardInfo = {
'_rowObject': MochiKit.Async.succeed,
'_reference': MochiKit.Base.methodcaller('reference'),
@@ -1277,3 +1286,14 @@ Clipperz.PM.DataModel.Record.extractTagsFromFullLabel = function (aLabel) {
return result;
};
+
+Clipperz.PM.DataModel.Record.labelContainsTag = function (aLabel, aTag) {
+ return MochiKit.Iter.some(
+ MochiKit.Base.keys(Clipperz.PM.DataModel.Record.extractTagsFromFullLabel(aLabel)),
+ MochiKit.Base.partial(MochiKit.Base.operator.eq, aTag)
+ );
+}
+
+Clipperz.PM.DataModel.Record.labelContainsArchiveTag = function (aLabel) {
+ return Clipperz.PM.DataModel.Record.labelContainsTag(aLabel, Clipperz.PM.DataModel.Record.archivedTag);
+}
\ No newline at end of file
diff --git a/frontend/delta/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js b/frontend/delta/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js
index 189a7f8..cbd2e6c 100644
--- a/frontend/delta/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js
+++ b/frontend/delta/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js
@@ -31,7 +31,13 @@ if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.Data
Clipperz.PM.DataModel.User.Header.OneTimePasswords = function(args) {
Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.constructor.apply(this, arguments);
+ // TODO: there are still method calls around passing these values: should be cleared...
+ this._connection = args['connection'];
+ this._username = args['username'];
+ this._passphraseCallback = args['retrieveKeyFunction'];
+
this._oneTimePasswords = null;
+ this._oneTimePasswordsDetails = null;
return this;
}
@@ -45,55 +51,45 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.OneTimePasswords, Clipper
},
//-------------------------------------------------------------------------
-/*
- 'packData': function (someData) { // ++
- var result;
- result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.packData.apply(this, arguments);
-
- return result;
+ 'connection': function() {
+ return this._connection;
},
-*/
- //-------------------------------------------------------------------------
-/*
- 'packRemoteData': function (someData) {
- var result;
- result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.packRemoteData.apply(this, arguments);
-
- return result;
+ 'username': function() {
+ return this._username;
},
-*/
- //-------------------------------------------------------------------------
-/*
- 'prepareRemoteDataWithKey': function (aKey) {
- var result;
- result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.prepareRemoteDataWithKey.apply(this, arguments);
-
- return result;
+ 'passphraseCallback': function() {
+ return this._passphraseCallback;
},
-*/
+
//=========================================================================
'oneTimePasswords': function () {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("User.Header.OneTimePasswords.oneTimePasswords", {trace:false});
+
+ // TODO: change with transient state
+ // Also, OTPs created here don't store username, making it impossible to generate the key checksum (shouldn't be used anywhere, but probably the design should be changed)
if (this._oneTimePasswords == null) {
- deferredResult.addMethod(this, 'values')
+ deferredResult.addMethod(this, 'values');
deferredResult.addCallback(MochiKit.Base.bind(function (someData) {
var otpKey;
this._oneTimePasswords = {};
-
+
for (otpKey in someData) {
var otp;
var otpParameters;
otpParameters = Clipperz.Base.deepClone(someData[otpKey]);
otpParameters['reference'] = otpKey;
-
+ otpParameters['username'] = this.username();
+ otpParameters['passphraseCallback'] = this.passphraseCallback();
+ otpParameters['usageDate'] = someData[otpKey]['usageDate'] || null;
+
otp = new Clipperz.PM.DataModel.OneTimePassword(otpParameters);
this._oneTimePasswords[otpKey] = otp;
}
@@ -109,6 +105,182 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.OneTimePasswords, Clipper
return deferredResult;
},
+ 'oneTimePasswordsDetails': function() {
+ if (this._oneTimePasswordsDetails) {
+ return MochiKit.Async.succeed(this._oneTimePasswordsDetails);
+ } else {
+ return Clipperz.Async.callbacks("User.oneTimePasswordsDetails", [
+ MochiKit.Base.method(this.connection(), 'message', 'getOneTimePasswordsDetails'),
+ MochiKit.Base.bind(function(someData) {
+ this._oneTimePasswordsDetails = someData;
+
+ return someData;
+ }, this)
+ ], {trace:false});
+ }
+ },
+
+ //=========================================================================
+
+ 'getReferenceFromKey': function(aKey) {
+ return Clipperz.Async.callbacks("User.Header.OneTimePasswords.getReferenceFromKey", [
+ MochiKit.Base.method(this, 'values'),
+ function(someValues) {
+ var result;
+ var normalizedOTP;
+ var i;
+
+ result = null;
+ for (i in someValues) {
+ normalizedOTP = Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(someValues[i]['password']);
+
+ if (Clipperz.PM.DataModel.OneTimePassword.computeKeyWithPassword(normalizedOTP) == aKey) {
+ result = i;
+ }
+ }
+
+ return result;
+ }
+ ], {trace:false});
+ },
+
+ //=========================================================================
+
+ 'createNewOTP': function (aUsername, aPassphraseCallback) {
+ var newOneTimePassword;
+
+ newOneTimePassword = Clipperz.PM.DataModel.OneTimePassword.createNewOneTimePassword(aUsername, aPassphraseCallback);
+
+ // TODO: this is deferred --> change everything to deferred
+ // TestData include 'created' and 'status'
+ this.setValue(newOneTimePassword.reference(), {
+ // 'created': newOneTimePassword.creationDate().toString(), // won't work: creation date is no more stored in OTP
+ 'password': newOneTimePassword.password(),
+ 'label': newOneTimePassword.label()
+ // 'status': newOneTimePassword.status()
+ });
+
+ this._oneTimePasswords = null;
+ this._oneTimePasswordsDetails = null;
+
+ return newOneTimePassword;
+ },
+
+ //.........................................................................
+
+ 'deleteOTPs': function (aList) {
+ this._oneTimePasswords = null;
+ this._oneTimePasswordsDetails = null;
+
+ return Clipperz.Async.callbacks("User.Header.OneTimePasswords.deleteOTPs", [
+ MochiKit.Base.method(this, 'values'),
+ MochiKit.Base.keys,
+ MochiKit.Base.bind(function(someKeys) {
+ var result;
+
+ result = [];
+ MochiKit.Base.map(MochiKit.Base.bind(function(aList, aKey) {
+ if (aList.indexOf(aKey) >= 0) {
+ this.removeValue(aKey);
+ } else {
+ result.push(aKey);
+ }
+ }, this, aList), someKeys);
+
+ return result; // Return a list of references of the remaining OTPs, needed for the 'updateOneTimePasswords' message
+ // Maybe this logic should be moved to another method
+ }, this),
+ ], {trace:false});
+ },
+
+ //.........................................................................
+
+ 'changeOTPLabel': function (aReference, aLabel) {
+ this._oneTimePasswords = null;
+
+ return Clipperz.Async.callbacks("User.Header.OneTimePasswords.changeOTPLabel", [
+ MochiKit.Base.method(this, 'getValue', aReference),
+ function(aValue) {
+ aValue['label'] = aLabel;
+ return aValue;
+ },
+ MochiKit.Base.method(this, 'setValue', aReference)
+ ], {trace:false});
+ },
+
+ //.........................................................................
+
+ 'markOTPAsUsed': function(aKey) {
+ var reference;
+
+ this._oneTimePasswords = null;
+
+ return Clipperz.Async.callbacks("User.Header.OneTimePasswords.markOTPAsUsed", [
+ MochiKit.Base.method(this, 'getReferenceFromKey', aKey),
+ function(aReference) {
+ reference = aReference;
+ return aReference;
+ },
+ MochiKit.Base.method(this, 'getValue'),
+ MochiKit.Base.bind(function(aValue) {
+ if (aValue) {
+ aValue['usageDate'] = new Date().toString();
+ this.setValue(reference, aValue);
+ }
+ }, this)
+ ], {trace:false});
+ },
+
+ //=========================================================================
+
+ 'getEncryptedOTPData': function(aPassphraseCallback) {
+ var deferredResult;
+
+ deferredResult = new Clipperz.Async.Deferred("User.Header.OneTimePasswords.getEncryptedOTPData", {trace:false});
+
+ deferredResult.collectResults({
+ 'oneTimePasswords': MochiKit.Base.method(this, 'oneTimePasswords'),
+ 'oneTimePasswordsDetails': MochiKit.Base.method(this, 'oneTimePasswordsDetails')
+ });
+ deferredResult.addCallback(function (someData) {
+ var result;
+ var otpFilteredList;
+ var i;
+
+ var otpList = MochiKit.Base.values(someData['oneTimePasswords']);
+
+ otpFilteredList = MochiKit.Base.filter(function (aOTP) {
+ return (someData['oneTimePasswordsDetails'][aOTP.reference()]
+ && someData['oneTimePasswordsDetails'][aOTP.reference()]['status'] == 'ACTIVE'
+ && ! someData['oneTimePasswords'][aOTP.reference()].usageDate()
+ );
+ }, otpList);
+
+ result = MochiKit.Base.map(function (aOTP) {
+ aOTP.setPassphraseCallback(aPassphraseCallback);
+ return aOTP.encryptedData();
+ }, otpFilteredList);
+
+ return result;
+ });
+ deferredResult.addCallback(Clipperz.Async.collectAll);
+ deferredResult.addCallback(function (someData) {
+ var result;
+ var i;
+
+ result = {};
+ for (i in someData) {
+ result[someData[i].reference] = someData[i];
+ }
+
+ return result;
+ });
+
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
//=========================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/delta/js/Clipperz/PM/DataModel/User.js b/frontend/delta/js/Clipperz/PM/DataModel/User.js
index 7b10a2e..3277de2 100644
--- a/frontend/delta/js/Clipperz/PM/DataModel/User.js
+++ b/frontend/delta/js/Clipperz/PM/DataModel/User.js
@@ -59,6 +59,8 @@ Clipperz.PM.DataModel.User = function (args) {
'__syntaxFix__': 'syntax fix'
};
+ this._usedOTP = null;
+
return this;
}
@@ -80,6 +82,40 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
//-------------------------------------------------------------------------
+ 'setUsedOTP': function(aOTP) {
+ this._usedOTP = aOTP;
+
+ return aOTP;
+ },
+
+ 'resetUsedOTP': function(aOTP) {
+ this._usedOTP = null;
+ },
+
+ 'markUsedOTP': function(aOTP) {
+ var result;
+ var oneTimePasswordKey;
+
+ if (this._usedOTP) {
+ oneTimePasswordKey = Clipperz.PM.DataModel.OneTimePassword.computeKeyWithPassword(
+ Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(this._usedOTP)
+ );
+
+ result = Clipperz.Async.callbacks("User.markUsedOTP", [ // NOTE: fired also when passphrase looks exactly like OTP
+ MochiKit.Base.method(this, 'getHeaderIndex', 'oneTimePasswords'),
+ MochiKit.Base.methodcaller('markOTPAsUsed', oneTimePasswordKey),
+ MochiKit.Base.method(this,'saveChanges'), // Too 'heavy'?
+ MochiKit.Base.method(this, 'resetUsedOTP')
+ ], {'trace': false});
+ } else {
+ result = MochiKit.Async.succeed();
+ }
+
+ return result;
+ },
+
+ //-------------------------------------------------------------------------
+
// this.setSubscription(new Clipperz.PM.DataModel.User.Subscription(someServerData['subscription']));
'accountInfo': function () {
return this._accountInfo;
@@ -138,21 +174,17 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
//-------------------------------------------------------------------------
'getPassphrase': function() {
- var deferredResult;
-
- deferredResult = new Clipperz.Async.Deferred("User.getPassphrase", {trace:false});
- deferredResult.acquireLock(this.deferredLockForSection('passphrase'));
- deferredResult.addMethod(this.data(), 'deferredGetOrSet', 'passphrase', this.getPassphraseFunction());
- deferredResult.releaseLock(this.deferredLockForSection('passphrase'));
- deferredResult.callback();
-
- return deferredResult;
+ return this._getPassphraseFunction();
},
'getPassphraseFunction': function () {
return this._getPassphraseFunction;
},
+ 'setPassphraseFunction': function(aFunction) {
+ this._getPassphraseFunction = aFunction;
+ },
+
//-------------------------------------------------------------------------
'getCredentials': function () {
@@ -164,26 +196,44 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
//-------------------------------------------------------------------------
- 'changePassphrase': function (aNewValue) {
- return this.updateCredentials(this.username(), aNewValue);
+ 'changePassphrase': function (aNewValueCallback) {
+ return this.updateCredentials(this.username(), aNewValueCallback);
},
//.........................................................................
- 'updateCredentials': function (aUsername, aPassphrase) {
+ 'updateCredentials': function (aUsername, aPassphraseCallback) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("User.updateCredentials", {trace:false});
-// deferredResult.addMethod(this, 'getPassphrase');
-// deferredResult.setValue('currentPassphrase');
deferredResult.addMethod(this.connection(), 'ping');
- deferredResult.addMethod(this, 'setUsername', aUsername)
- deferredResult.acquireLock(this.deferredLockForSection('passphrase'));
- deferredResult.addMethod(this.data(), 'deferredGetOrSet', 'passphrase', aPassphrase);
- deferredResult.releaseLock(this.deferredLockForSection('passphrase'));
-// deferredResult.getValue('currentPassphrase');
- deferredResult.addMethod(this, 'prepareRemoteDataWithKey', aPassphrase);
- deferredResult.addMethod(this.connection(), 'updateCredentials', aUsername, aPassphrase);
+ deferredResult.collectResults({
+ 'newUsername': MochiKit.Base.partial(MochiKit.Async.succeed, aUsername),
+ 'newPassphrase': aPassphraseCallback,
+ 'user': MochiKit.Base.method(this, 'prepareRemoteDataWithKeyFunction', aPassphraseCallback),
+ 'oneTimePasswords': [
+ MochiKit.Base.method(this, 'getHeaderIndex', 'oneTimePasswords'),
+ MochiKit.Base.methodcaller('getEncryptedOTPData', aPassphraseCallback),
+ function (otps) {
+ var result;
+ var otpRefs;
+ var i, c;
+
+ result = {};
+ otpRefs = MochiKit.Base.keys(otps);
+ c = otpRefs.length;
+ for (i=0; i= 0);
- }
- },
-
- //--------------------------------------------------------------------------
-
- goToStep: function(aStep) {
- this.setState({
- 'currentStep': aStep,
- 'nextStepCallback': null,
- 'error': null
- });
- },
-
- handleNextStepOnClick: function() {
- if (this.state.nextStepCallback) {
- var newImportContext = this.state.nextStepCallback();
-
- if (newImportContext) {
- MochiKit.Base.update(this.state.importContext, newImportContext);
-
- if (this.state.currentStep == 'Input' && this.state.importContext.format == 'json') {
- this.goToStep('Preview');
- } else if (this.state.currentStep == 'Preview') {
- this.state.importContext.resetContext();
- this.goToStep('Input');
- } else {
- this.goToStep(this.getStepAfter());
- }
- } else {
- if (this.state.currentStep == "Input") {
- this.setState({'error': "unrecognized input format."});
- } else {
- this.setState({'error': "unknown error."});
- }
- }
- }
- },
-
- handleBackOnClick: function() {
- if (this.state.importContext.format == 'json' && this.state.currentStep == 'Preview') {
- delete this.state.importContext.format;
- this.goToStep('Input');
- } else if (this.state.currentStep != this._steps[0]) {
- this.goToStep(this.getStepBefore());
- }
- },
+ //=========================================================================
- setNextStepCallback: function(aFunction) {
- this.setState({'nextStepCallback': aFunction});
- },
-
- getStepNavbarClass: function(aStep) {
- var result;
-
- if (aStep == this.state.currentStep) {
- result = 'active';
- } else if (this.state.importContext.format == 'json' && (aStep>=1&&aStep<=5) ) {
- result = 'disabled';
- } else {
- result = 'inactive';
+ componentWithName: function (aName) {
+ var result;
+ var path;
+ var i, c;
+
+ path = aName.split('.');
+
+ result = Clipperz.PM.UI.Components.ExtraFeatures.DataImport;
+ c = path.length;
+ for (i=0; i=0) ? true : false;
+ return (MochiKit.Base.keys(this.state.recordsToImport).indexOf(record['reference']) != -1) ? true : false;
},
getTags: function (aTitle) {
@@ -85,10 +72,10 @@ Clipperz.PM.UI.Components.ExtraFeatures.DataImport.PreviewClass = React.createCl
var tagList;
var tagObject = Clipperz.PM.DataModel.Record.extractTagsFromFullLabel(aTitle);
-
+
tagList = MochiKit.Base.keys(tagObject);
- tagList = MochiKit.Base.filter(function(aTag) { return tagObject[aTag] }, tagList);
-
+ tagList = MochiKit.Base.filter(function(aTag) { return !Clipperz.PM.DataModel.Record.isSpecialTag(aTag); }, tagList);
+
if (tagList.length > 0) {
result = React.DOM.ul({'className': 'tagList'},
MochiKit.Base.map(function(aTag){
@@ -102,50 +89,44 @@ Clipperz.PM.UI.Components.ExtraFeatures.DataImport.PreviewClass = React.createCl
return result;
},
- renderCardFields: function(someFields) {
- return MochiKit.Base.map(function(key) {
+ renderCardFields: function (someFields) {
+ return MochiKit.Base.map(function (key) {
var field = someFields[key];
-
return [
- React.DOM.dt({},field.label),
- React.DOM.dd({},field.value),
+ React.DOM.dt({}, field['label']),
+ React.DOM.dd({'className': field['actionType'] + (field['hidden'] ? ' password' : '')}, field['value']),
];
- } ,MochiKit.Base.keys(someFields));
+ }, MochiKit.Base.keys(someFields));
},
-
- renderCard: function(aCard) {
- var notesParagraph = (aCard.data.notes) ? React.DOM.p({'className': 'notes'}, aCard.data.notes) : null;
- return React.DOM.li({'className': 'card'}, [
+
+ renderCard: function (aCard) {
+ var classes;
+
+ classes = {
+ 'card': true,
+ 'archived': Clipperz.PM.DataModel.Record.labelContainsArchiveTag(aCard['label'])
+ }
+
+ return React.DOM.li({'className':Clipperz.PM.UI.Components.classNames(classes)}, [
React.DOM.input({
'type': 'checkbox',
'checked': this.isRecordToImport(aCard),
- 'onChange': MochiKit.Base.partial(this.toggleRecordToImport,aCard)
+ 'onChange': MochiKit.Base.partial(this.toggleRecordToImport, aCard)
}),
- React.DOM.h3({}, Clipperz.PM.DataModel.Record.extractLabelFromFullLabel(aCard.label)),
- this.getTags(aCard.label),
- React.DOM.dl({'className': 'fields'}, this.renderCardFields(aCard.currentVersion.fields)),
- notesParagraph
+ React.DOM.div({'className': 'cardContent'}, [
+ React.DOM.h3({}, Clipperz.PM.DataModel.Record.extractLabelFromFullLabel(aCard['label'])),
+ this.getTags(aCard['label']),
+ React.DOM.dl({'className': 'fields'}, this.renderCardFields(aCard['currentVersion']['fields'])),
+ (aCard['data']['notes']) ? React.DOM.p({'className': 'notes'}, aCard['data']['notes']) : null
+ ])
]);
},
render: function() {
- var result;
-
- if (typeof(this.state.jsonToImport)=='undefined' || !this.state.jsonToImport) {
- result = "Error";
- } else {
- var renderedPreview = React.DOM.ul({},
- MochiKit.Base.map(this.renderCard, this.state.jsonToImport)
- );
-
- result =
- React.DOM.div({'className': 'jsonPreview'}, React.DOM.ul({},
- MochiKit.Base.map(this.renderCard, this.state.jsonToImport)
- ) );
- }
-
- return React.DOM.div({},result);
- }
+ return React.DOM.div({'className': 'preview'},
+ React.DOM.ul({}, MochiKit.Base.map(MochiKit.Base.method(this, 'renderCard'), this.props.importContext.state('jsonData')))
+ );
+ },
});
diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DeleteAccount.js b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DeleteAccount.js
index 8339750..2976c1b 100644
--- a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DeleteAccount.js
+++ b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DeleteAccount.js
@@ -75,17 +75,19 @@ Clipperz.PM.UI.Components.ExtraFeatures.DeleteAccountClass = React.createClass({
render: function () {
return React.DOM.div({className:'extraFeature deleteAccount'}, [
- React.DOM.h1({}, "Delete Account"),
+ React.DOM.div({'className':'header'}, [
+ React.DOM.h1({}, "Delete Account"),
+ ]),
React.DOM.div({'className': 'content'}, [
React.DOM.form({'key':'form', 'className':'deleteAccountForm', 'onChange': this.handleFormChange, 'onSubmit':this.handleDeleteAccount}, [
React.DOM.div({'key':'fields'},[
- React.DOM.label({'key':'username-label', 'htmlFor' :'name'}, "username"),
- React.DOM.input({'key':'username', 'className':this.state['username'], 'type':'text', 'name':'name', 'ref':'username', 'placeholder':"username", 'autoCapitalize':'none'}),
- React.DOM.label({'key':'passphrase-label', 'autoFocus': 'true', 'htmlFor' :'passphrase'}, "passphrase"),
- React.DOM.input({'key':'passphrase', 'className':this.state['passphrase'], 'type':'password', 'name':'passphrase', 'ref':'passphrase', 'placeholder':"passphrase"}),
+ React.DOM.label({'key':'username-label', 'htmlFor':'name'}, "username"),
+ React.DOM.input({'key':'username', 'className': this.state['username'], 'type':'text', 'name':'name', 'ref':'username', 'placeholder':"username", 'autoCapitalize':'none'}),
+ React.DOM.label({'key':'passphrase-label', 'autoFocus': 'true', 'htmlFor':'passphrase'}, "passphrase"),
+ React.DOM.input({'key':'passphrase', 'className': this.state['passphrase'], 'type':'password', 'name':'passphrase', 'ref':'passphrase', 'placeholder':"passphrase"}),
React.DOM.p({}, [
- React.DOM.input({'key':'confirm', 'className':'confirmCheckbox', 'type':'checkbox', 'name':'confirm', 'ref':'confirm'}),
- React.DOM.span({}, "I understand that all my data will be deleted and that this action is irreversible.")
+ React.DOM.input({'key':'confirm', 'className':'confirmCheckbox', 'type':'checkbox', 'id':'deleteAccountConfirmCheckbox', 'name':'confirm', 'ref':'confirm'}),
+ React.DOM.label({'htmlFor':'deleteAccountConfirmCheckbox'}, "I understand that all my data will be deleted and that this action is not reversible.")
]),
]),
React.DOM.button({'key':'button', 'type':'submit', 'disabled':!this.shouldEnableDeleteAccountButton(), 'className':'button'}, "Delete my account")
diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DevicePIN.js b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DevicePIN.js
index 9c8e938..9ac9aa5 100644
--- a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DevicePIN.js
+++ b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DevicePIN.js
@@ -35,7 +35,9 @@ Clipperz.PM.UI.Components.ExtraFeatures.DevicePINClass = React.createClass({
render: function () {
return React.DOM.div({className:'extraFeature devicePIN'}, [
- React.DOM.h1({}, "Device PIN"),
+ React.DOM.div({'className':'header'}, [
+ React.DOM.h1({}, "Device PIN"),
+ ]),
React.DOM.div({'className': 'content'}, [
React.DOM.h3({}, this.props['PIN'])
])
diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/OTP.js b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/OTP.js
new file mode 100644
index 0000000..a21ab9b
--- /dev/null
+++ b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/OTP.js
@@ -0,0 +1,229 @@
+/*
+
+Copyright 2008-2015 Clipperz Srl
+
+This file is part of Clipperz, the online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+* Clipperz is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz. If not, see http://www.gnu.org/licenses/.
+
+*/
+
+"use strict";
+Clipperz.Base.module('Clipperz.PM.UI.Components.ExtraFeatures');
+
+Clipperz.PM.UI.Components.ExtraFeatures.OTPClass = React.createClass({
+
+ // TODO: add print button!!!!
+
+ getInitialState: function() {
+ return {
+// 'selectedOTPs': [],
+ 'labelBeingEdited': null,
+ 'otpLabel': '',
+ };
+ },
+
+ propTypes: {
+ },
+
+ //=========================================================================
+
+ handleNew: function() {
+ MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'createNewOTP');
+ },
+
+ handleDelete: function (anOtpReference) {
+ MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'deleteOTPs', [anOtpReference]);
+ },
+
+ //-------------------------------------------------------------------------
+
+ enableOtpLabelEditing: function(anOTP) {
+ var newState = this.state;
+
+ newState['labelBeingEdited'] = anOTP.reference();
+ newState['otpLabel'] = anOTP.label();
+
+ this.setState(newState);
+ },
+
+ updateOtpLabel: function (anOTP, anEvent) {
+ var newState = this.state;
+ var newLabel = anEvent.target.value
+
+ newState['otpLabel'] = newLabel;
+
+ this.setState(newState);
+ },
+
+ handleKeyPressed: function (anOTP, anEvent) {
+ switch (anEvent.keyCode) {
+ case 9: // tab
+ this.handleLabelSave(anOTP);
+ // TODO: edit label of next OTP
+ break;
+ case 13: // enter
+ this.handleLabelSave(anOTP);
+ case 27: // escape
+ this.handleLabelCancel(anOTP);
+ break;
+ }
+ },
+
+ handleLabelSave: function (anOTP) {
+ MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'changeOTPLabel', anOTP.reference(), this.state['otpLabel']);
+ this.handleLabelCancel()
+ },
+
+ handleLabelCancel: function() {
+ var newState;
+
+ newState = this.state;
+ newState['labelBeingEdited'] = null;
+
+ this.setState(newState);
+ },
+
+ //=========================================================================
+
+ handlePrint: function () {
+ this.printOneTimePasswords();
+ },
+
+ printOneTimePasswords: function () {
+ var newWindow;
+
+ var filteredOtpList = MochiKit.Base.filter(MochiKit.Base.bind(function (anOTP) {
+ return (this.props.userInfo.otpsDetails[anOTP.reference()]['status'] == 'ACTIVE');
+ }, this), this.props.userInfo.otpList);
+
+ newWindow = window.open("", "");
+ newWindow.document.write(
+ '' +
+ '' +
+ '' +
+ '' +
+ 'Active One Time Passwords - Clipperz' +
+ '' +
+ '' +
+ '' +
+ '' +
+ MochiKit.Base.map(function (anOTP) {
+ return '- ' +
+ '' + anOTP.password() + '' +
+ '' + anOTP.label() + '' +
+ '
';
+ }, filteredOtpList).join('') +
+ '
' +
+ '' +
+ ''
+ );
+
+ newWindow.document.close();
+ newWindow.focus();
+ newWindow.print();
+ newWindow.close();
+ },
+
+ //=========================================================================
+
+ renderOtpRows: function() {
+ var result;
+
+ if (this.props.userInfo.otpList) {
+ result = MochiKit.Base.map(MochiKit.Base.bind(function (anOTP) {
+ var reference = anOTP.reference();
+ var otpDetailInfo = this.props.userInfo.otpsDetails[reference];
+ var labelComponent;
+ var otpStatusInfo;
+ var otpClasses;
+ var optLabel;
+
+ otpClasses = {
+ 'otpDetail': true,
+ };
+ otpClasses[otpDetailInfo['status']] = true;
+
+ if (otpDetailInfo['status'] != 'ACTIVE') {
+ otpStatusInfo = React.DOM.div({'className':'otpStatusInfo'}, [
+ React.DOM.span({'className':'otpStatus'}, otpDetailInfo['status']),
+ React.DOM.span({'className':'requestDate'}, otpDetailInfo['requestDate']),
+ React.DOM.span({'className':'connectionIp'}, otpDetailInfo['connection']['ip']),
+ React.DOM.span({'className':'connectionBrowser'}, otpDetailInfo['connection']['browser']),
+ ])
+ } else {
+ otpStatusInfo = null;
+ }
+
+ if (reference == this.state.labelBeingEdited) {
+ labelComponent = React.DOM.input({
+ 'autoFocus':true,
+ 'value':this.state.otpLabel,
+ 'onChange':MochiKit.Base.partial(this.updateOtpLabel, anOTP),
+ 'onKeyDown':MochiKit.Base.partial(this.handleKeyPressed, anOTP),
+ });
+ } else {
+ labelComponent = React.DOM.span({'onClick':MochiKit.Base.partial(this.enableOtpLabelEditing, anOTP)}, (anOTP.label()) ? anOTP.label() : "---")
+ }
+
+ return React.DOM.li({
+ 'key':'otp-' + reference,
+ 'className':Clipperz.PM.UI.Components.classNames(otpClasses)
+ }, [
+ React.DOM.div({'className':'otpAction'}, [
+ React.DOM.a({'onClick':MochiKit.Base.partial(this.handleDelete, reference)}, 'remove OTP'),
+ ]),
+ React.DOM.div({'className':'otpInfo'}, [
+ React.DOM.div({'className':'otpPassword'}, anOTP.password()),
+ React.DOM.div({'className':'otpLabel'}, labelComponent),
+ otpStatusInfo,
+ ]),
+ ]);
+ }, this), this.props.userInfo.otpList);
+ } else {
+ result = React.DOM.li({}, React.DOM.div({}, "..."));
+ }
+
+ return result;
+ },
+
+ render: function () {
+ return React.DOM.div({'className':'extraFeature OTP'}, [
+ React.DOM.div({'className':'header'}, [
+ React.DOM.h1({}, "One Time Passwords"),
+ React.DOM.div({'className':'description'}, [
+ React.DOM.p({}, "A one-time passphrase works like your regular passphrase, but can be used only once. This makes it expecially useful for using it in places where keyloggers may be installed."),
+ ]),
+ React.DOM.a({'className':'button', 'onClick':this.handlePrint}, "Print")
+ ]),
+ React.DOM.div({'className':'content'}, [
+ React.DOM.ul({'className':'otpList'}, this.renderOtpRows()),
+ React.DOM.div({'className':'actions'}, [
+ React.DOM.a({'onClick': this.handleNew}, "create new OTP"),
+ ]),
+ ])
+ ]);
+ },
+
+ //=========================================================================
+});
+
+Clipperz.PM.UI.Components.ExtraFeatures.OTP = React.createFactory(Clipperz.PM.UI.Components.ExtraFeatures.OTPClass);
diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/Passphrase.js b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/Passphrase.js
index 49f7aeb..53fa2db 100644
--- a/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/Passphrase.js
+++ b/frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/Passphrase.js
@@ -100,7 +100,9 @@ Clipperz.PM.UI.Components.ExtraFeatures.PassphraseClass = React.createClass({
render: function () {
return React.DOM.div({className:'extraFeature passphrase'}, [
- React.DOM.h1({}, "Change Passphrase"),
+ React.DOM.div({'className':'header'}, [
+ React.DOM.h1({}, "Change Passphrase"),
+ ]),
React.DOM.div({'className': 'content'}, [
React.DOM.form({'key':'form', 'className':'changePassphraseForm', 'onChange': this.handleFormChange, 'onSubmit':this.handleChangePassphrase}, [
React.DOM.div({'key':'fields'},[
@@ -117,8 +119,8 @@ Clipperz.PM.UI.Components.ExtraFeatures.PassphraseClass = React.createClass({
React.DOM.input({'key':'confirm-new-passphrase', 'className':this.state['confirm-new-passphrase'], 'type':'password', 'name':'confirm-new-passphrase', 'ref':'confirm-new-passphrase', 'placeholder':"confirm new passphrase"}),
React.DOM.p({}, [
- React.DOM.input({'key':'confirm', 'className':'confirmCheckbox', 'type':'checkbox', 'name':'confirm', 'ref':'confirm'}),
- React.DOM.span({}, "I understand that Clipperz will not be able to recover a lost passphrase.")
+ React.DOM.input({'key':'confirm', 'id':'changePassphraseConfirmCheckbox', 'className':'confirmCheckbox', 'type':'checkbox', 'name':'confirm', 'ref':'confirm'}),
+ React.DOM.label({'htmlFor':'changePassphraseConfirmCheckbox'}, "I understand that Clipperz will not be able to help me recovering a lost passphrase.")
]),
]),
React.DOM.button({'key':'button', 'type':'submit', 'disabled':!this.shouldEnableChangePassphraseButton(), 'className':'button'}, "Change passphrase"),
diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/Pages/MainPage.js b/frontend/delta/js/Clipperz/PM/UI/Components/Pages/MainPage.js
index 23df0bc..6e929d0 100644
--- a/frontend/delta/js/Clipperz/PM/UI/Components/Pages/MainPage.js
+++ b/frontend/delta/js/Clipperz/PM/UI/Components/Pages/MainPage.js
@@ -34,16 +34,16 @@ Clipperz.PM.UI.Components.Pages.MainPageClass = React.createClass({
},
propTypes: {
- 'tags': React.PropTypes.object,
- 'allTags': React.PropTypes.array,
- 'messageBox': React.PropTypes.object.isRequired,
- 'featureSet': React.PropTypes.oneOf(['FULL', 'EXPIRED', 'TRIAL']).isRequired,
- 'features': React.PropTypes.array.isRequired,
- 'userInfo': React.PropTypes.object.isRequired,
- 'accountInfo': React.PropTypes.object.isRequired,
-// 'mediaQueryStyle': React.PropTypes.oneOf(['extra-short', 'narrow', 'wide', 'extra-wide']).isRequired,
+ 'tags': React.PropTypes.object,
+ 'allTags': React.PropTypes.array,
+ 'messageBox': React.PropTypes.object.isRequired,
+ 'featureSet': React.PropTypes.oneOf(['FULL', 'EXPIRED', 'TRIAL']).isRequired,
+ 'features': React.PropTypes.array.isRequired,
+ 'userInfo': React.PropTypes.object.isRequired,
+ 'accountInfo': React.PropTypes.object.isRequired,
'style': React.PropTypes.oneOf(Clipperz_PM_UI_availableStyles).isRequired,
- // 'cards': React.PropTypes.deferred.isRequired
+// 'mediaQueryStyle': React.PropTypes.oneOf(['extra-short', 'narrow', 'wide', 'extra-wide']).isRequired,
+// 'cards': React.PropTypes.deferred.isRequired
},
getInitialState: function () {
@@ -60,8 +60,7 @@ Clipperz.PM.UI.Components.Pages.MainPageClass = React.createClass({
};
classes[this.props['style']] = true;
-//console.log("MAIN PAGE", this.props['showGlobalMask']);
- return React.DOM.div({'key':'mainPage', 'className':Clipperz.PM.UI.Components.classNames(classes)/*Clipperz.PM.UI.Components.classNames(classes)*/}, [
+ return React.DOM.div({'key':'mainPage', 'className':Clipperz.PM.UI.Components.classNames(classes)}, [
this.props['style'] != 'extra-wide' ? Clipperz.PM.UI.Components.Panels.SelectionPanel(this.props) : null,
Clipperz.PM.UI.Components.Panels.MainPanel(this.props),
Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanel(this.props),
diff --git a/frontend/delta/js/Clipperz/PM/UI/Components/Panels/ExtraFeaturesPanel.js b/frontend/delta/js/Clipperz/PM/UI/Components/Panels/ExtraFeaturesPanel.js
index 50a2854..840a11a 100644
--- a/frontend/delta/js/Clipperz/PM/UI/Components/Panels/ExtraFeaturesPanel.js
+++ b/frontend/delta/js/Clipperz/PM/UI/Components/Panels/ExtraFeaturesPanel.js
@@ -26,6 +26,10 @@ Clipperz.Base.module('Clipperz.PM.UI.Components.Panels');
Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({
+ componentDidMount: function () {
+ MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'closeSettingsPanel', MochiKit.Base.method(this, 'hideExtraFeatureContent'));
+ },
+
settingsToggleHandler: function (anEvent) {
//console.log("settingsToggleHandler");
this.hideExtraFeatureContent();
@@ -40,6 +44,7 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({
propTypes: {
'accountInfo': React.PropTypes.object.isRequired,
+ 'userInfo': React.PropTypes.object.isRequired
},
getInitialState: function() {
@@ -81,6 +86,7 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({
},
extraFeaturesProps: function () {
+// console.log("ExtraFeaturesPanel, extraFeaturesProps:",this.props);
return this.props;
},
@@ -95,10 +101,16 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({
},
showExtraFeatureContent: function (aComponent, aComponentName) {
+// console.log("ExtraFeaturesPanel, showExtraFeatureContent")
+ if (aComponentName == 'OTP') {
+ MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'updateOTPListAndDetails');
+ }
+
this.setState({
'isFullyOpen':true,
'extraFeatureComponentName': aComponentName,
- 'extraFeatureContent': aComponent(this.extraFeaturesProps())
+ // 'extraFeatureContent': aComponent(this.extraFeaturesProps()),
+ 'extraFeatureContentComponent': aComponent // Trying to instantiate the component at every render
});
},
@@ -124,16 +136,17 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({
React.DOM.ul({'key':'accountUL'}, [
React.DOM.li({'key':'account_1', 'onClick':this.toggleExtraFeatureComponent('Passphrase'), 'className':(this.state['extraFeatureComponentName'] == 'Passphrase') ? 'selected' : ''}, [
React.DOM.h2({'key':'account_1_h2'}, "Passphrase"),
- React.DOM.div({'key':'account_1_div'}, [
- React.DOM.p({'key':'account_1_p'}, "Change your account passphrase.")
- ])
+// React.DOM.div({'key':'account_1_div'}, [
+// React.DOM.p({'key':'account_1_p'}, "Change your account passphrase.")
+// ])
]),
- React.DOM.li({'key':'account_2'}, [
+ React.DOM.li({'key':'account_2', 'onClick':this.toggleExtraFeatureComponent('OTP')}, [
React.DOM.h2({}, "One Time Passwords"),
- React.DOM.div({}, [
- React.DOM.p({}, "")
- ])
+// React.DOM.div({}, [
+// React.DOM.p({}, "Manage your OTPs.")
+// ])
]),
+/*
React.DOM.li({'key':'account_3', 'onClick':this.toggleExtraFeatureComponent('DevicePIN')}, [
React.DOM.h2({}, "Device PIN"),
React.DOM.div({}, [
@@ -146,14 +159,16 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({
React.DOM.p({}, "")
])
]),
+*/
React.DOM.li({'key':'account_5', 'onClick':this.toggleExtraFeatureComponent('DeleteAccount'), 'className':(this.state['extraFeatureComponentName'] == 'DeleteAccount') ? 'selected' : ''}, [
React.DOM.h2({}, "Delete account"),
- React.DOM.div({}, [
- React.DOM.p({}, "Delete your account for good.")
- ])
+// React.DOM.div({}, [
+// React.DOM.p({}, "Delete your account for good.")
+// ])
])
])
]),
+/*
React.DOM.li({'key':'subscription', 'className':this.state['index']['subscription'] ? 'open' : 'closed'}, [
React.DOM.h1({'onClick':this.toggleIndexState('subscription')}, "Subscription"),
React.DOM.ul({'key':'subscription'}, [
@@ -183,6 +198,7 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({
])
])
]),
+*/
React.DOM.li({'key':'data', 'className':this.state['index']['data'] ? 'open' : 'closed'}, [
React.DOM.h1({'onClick':this.toggleIndexState('data')}, "Data"),
React.DOM.ul({'key':'data'}, [
@@ -195,22 +211,24 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({
// ]),
React.DOM.li({'key':'data_2', 'onClick':this.toggleExtraFeatureComponent('DataImport'), 'className':(this.state['extraFeatureComponentName'] == 'DataImport') ? 'selected' : ''}, [
React.DOM.h2({}, "Import"),
- React.DOM.div({}, [
- React.DOM.p({}, "CSV, JSON, …")
- ])
+// React.DOM.div({}, [
+// React.DOM.p({}, "CSV, JSON, …")
+// ])
]),
React.DOM.li({'key':'data_3', 'onClick':this.toggleExtraFeatureComponent('DataExport'), 'className':(this.state['extraFeatureComponentName'] == 'DataExport') ? 'selected' : ''}, [
React.DOM.h2({}, "Export"),
- React.DOM.div({}, [
- React.DOM.p({}, "Offline copy, printable version, JSON, …")
- ])
+// React.DOM.div({}, [
+// React.DOM.p({}, "Offline copy, printable version, JSON, …")
+// ])
]),
+/*
React.DOM.li({'key':'data_4'}, [
React.DOM.h2({}, "Sharing"),
React.DOM.div({}, [
React.DOM.p({}, "Securely share cards with other users")
])
])
+*/
])
])
])
@@ -227,7 +245,8 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({
React.DOM.header({}, [
React.DOM.div({'className':'button', 'onClick':this.hideExtraFeatureContent}, "close")
]),
- this.state['extraFeatureContent']
+ // this.state['extraFeatureContent']
+ this.state['extraFeatureContentComponent'] ? this.state['extraFeatureContentComponent'](this.props) : null
]);
},
@@ -242,7 +261,7 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({
'open': isOpen,
'fullOpen': isFullyOpen
}
-
+
return React.DOM.div({'key':'extraFeaturesPanel', 'id':'extraFeaturesPanel', 'className':Clipperz.PM.UI.Components.classNames(classes)}, [
this.renderIndex(),
this.renderContent(),
diff --git a/frontend/delta/js/Clipperz/PM/UI/ExportController.js b/frontend/delta/js/Clipperz/PM/UI/ExportController.js
index a4bd81c..00eb30a 100644
--- a/frontend/delta/js/Clipperz/PM/UI/ExportController.js
+++ b/frontend/delta/js/Clipperz/PM/UI/ExportController.js
@@ -41,6 +41,11 @@ Clipperz.PM.UI.ExportController = function(args) {
"padding: 10px;" +
"border-bottom: 2px solid black;" +
"}" +
+
+ "header p span {" +
+// "padding: 0px 4px;" +
+ "font-weight: bold;" +
+ "}" +
"h1 {" +
"margin: 0px;" +
@@ -102,6 +107,7 @@ Clipperz.PM.UI.ExportController = function(args) {
"margin: 0px;" +
"margin-bottom: 5px;" +
"padding-left: 10px;" +
+ "font-size: 13pt;" +
"}" +
"div > div {" +
@@ -110,9 +116,20 @@ Clipperz.PM.UI.ExportController = function(args) {
"padding: 10px;" +
"}" +
+ "li p, dd.hidden {" +
+ "white-space: pre-wrap;" +
+ "word-wrap: break-word;" +
+ "font-family: monospace;" +
+ "}" +
+
"textarea {" +
- "width: 100%;" +
- "height: 200px;" +
+ "display: none" +
+// "width: 100%;" +
+// "height: 200px;" +
+ "}" +
+
+ "a {" +
+ "color: white;" +
"}" +
"@media print {" +
@@ -120,6 +137,10 @@ Clipperz.PM.UI.ExportController = function(args) {
"display: none !important;" +
"}" +
+ "div > ul > li.archived {" +
+ "color: #ddd;" +
+ "}" +
+
"ul > li {" +
"page-break-inside: avoid;" +
"} " +
@@ -175,9 +196,11 @@ MochiKit.Base.update(Clipperz.PM.UI.ExportController.prototype, {
MochiKit.DOM.DIV({},
MochiKit.DOM.DL({},
MochiKit.Base.map(function(key) {
+ var isHiddenField = jsonCardData.currentVersion.fields[key]['hidden'];
+
return [
- MochiKit.DOM.DT(jsonCardData.currentVersion.fields[key].label),
- MochiKit.DOM.DD(jsonCardData.currentVersion.fields[key].value),
+ MochiKit.DOM.DT({}, jsonCardData.currentVersion.fields[key]['label']),
+ MochiKit.DOM.DD((isHiddenField ? {'class':'hidden'} : {}), jsonCardData.currentVersion.fields[key]['value']),
];
}, MochiKit.Base.keys(jsonCardData.currentVersion.fields))
)
@@ -187,22 +210,30 @@ MochiKit.Base.update(Clipperz.PM.UI.ExportController.prototype, {
},
'renderToHtml': function (jsonData) {
- var title;
- var style;
- var date;
- var body;
+ var title;
+ var style;
+ var now;
+ var dateString;
+ var timeString
+ var body;
title = "Clipperz data";
style = this._style;
- date = "dd/mm/yyyy";
+ now = new XDate();
+ dateString = now.toString("MMM d, yyyy");
+ timeString = now.toString("HH:mm");
body = MochiKit.DOM.DIV({},
MochiKit.DOM.HEADER({},
MochiKit.DOM.H1({}, "Your data on Clipperz"),
- MochiKit.DOM.H5({}, "Export date: " + date),
+ MochiKit.DOM.H5({}, "Export generated on " + dateString + " at " + timeString),
MochiKit.DOM.DIV({},
- MochiKit.DOM.P({}, "Security warning - This file lists the content of all your cards in a printer-friendly format. At the very bottom, the same content is also available in JSON format."),
- MochiKit.DOM.P({}, "Beware: all data are unencrypted! Therefore make sure to properly store and manage this file. We recommend to delete it as soon as it is no longer needed."),
+ MochiKit.DOM.P({}, "Security warning - This file lists the content of all your cards in a printer-friendly format"),
+ MochiKit.DOM.P({}, [
+ "Beware: ",
+ MochiKit.DOM.SPAN({'class':'warning'}, "all data are unencrypted!"),
+ " Therefore make sure to properly store and manage this file. We recommend to delete it as soon as it is no longer needed."
+ ]),
MochiKit.DOM.P({}, "If you are going to print its content on paper, store the printout in a safe and private place!"),
MochiKit.DOM.P({}, "And, if you need to access your data when no Internet connection is available, please consider the much safer option of creating an offline copy.")
)
@@ -210,31 +241,33 @@ MochiKit.Base.update(Clipperz.PM.UI.ExportController.prototype, {
MochiKit.DOM.UL({}, MochiKit.Base.map(this.renderCardToHtml, jsonData)),
MochiKit.DOM.DIV({},
- MochiKit.DOM.H3({}, "JSON content"),
- MochiKit.DOM.DIV({},
- MochiKit.DOM.P({}, "Instructions on how to use JSON content"),
- MochiKit.DOM.P({}, "The JSON version of your data may be useful if you want to move the whole content of your Clipperz account to a new Clipperz account or recover a card that has been accidentally deleted. Just follow these instructions:"),
- MochiKit.DOM.OL({},
- MochiKit.DOM.LI({}, "Login to your Clipperz account and go to \"Data > Import\"."),
- MochiKit.DOM.LI({}, "Select the JSON option."),
- MochiKit.DOM.LI({}, "Copy and paste the JSON content in the form.")
- ),
- MochiKit.DOM.P({}, "Of course, the unencrypted JSON content won't be transmitted to the Clipperz server.")
- ),
+// MochiKit.DOM.H3({}, "JSON content"),
+// MochiKit.DOM.DIV({},
+// MochiKit.DOM.P({}, "Instructions on how to use JSON content"),
+// MochiKit.DOM.P({}, "The JSON version of your data may be useful if you want to move the whole content of your Clipperz account to a new Clipperz account or recover a card that has been accidentally deleted. Just follow these instructions:"),
+// MochiKit.DOM.OL({},
+// MochiKit.DOM.LI({}, "Login to your Clipperz account and go to \"Data > Import\"."),
+// MochiKit.DOM.LI({}, "Select the JSON option."),
+// MochiKit.DOM.LI({}, "Copy and paste the JSON content in the form.")
+// ),
+// MochiKit.DOM.P({}, "Of course, the unencrypted JSON content won't be transmitted to the Clipperz server.")
+// ),
MochiKit.DOM.TEXTAREA({}, Clipperz.Base.serializeJSON(jsonData)),
MochiKit.DOM.FOOTER({},
MochiKit.DOM.P({},
- "This file has been downloaded from clipperz.is, a service by Clipperz Srl. - ",
+ "This file has been downloaded from ",
+ MochiKit.DOM.A({'href':'https://clipperz.is'} ,"clipperz.is"),
+ ", a service by Clipperz Srl. - ",
MochiKit.DOM.A({'href':'https://clipperz.is/terms_service/'}, "Terms of service"),
" - ",
MochiKit.DOM.A({'href':'https://clipperz.is/privacy_policy/'}, "Privacy policy")
- ),
- MochiKit.DOM.H4({}, "Clipperz - keep it to yourself")
+ )
+// MochiKit.DOM.H4({}, "Clipperz - keep it to yourself")
)
)
);
- return '' + title + '' + MochiKit.DOM.toHTML(body) + '';
+ return '' + title + '' + MochiKit.DOM.toHTML(body) + '';
},
//----------------------------------------------------------------------------
diff --git a/frontend/delta/js/Clipperz/PM/UI/ImportContext.js b/frontend/delta/js/Clipperz/PM/UI/ImportContext.js
index 7a638da..598c499 100644
--- a/frontend/delta/js/Clipperz/PM/UI/ImportContext.js
+++ b/frontend/delta/js/Clipperz/PM/UI/ImportContext.js
@@ -24,125 +24,422 @@ refer to http://www.clipperz.com.
"use strict";
Clipperz.Base.module('Clipperz.PM.UI');
-Clipperz.PM.UI.ImportContext = function(args) {
+Clipperz.PM.UI.ImportContext = function(anInputComponent) {
+ this._importComponent = anInputComponent;
+
+ this._status = {
+ 'inputString': '',
+ 'isInputStringValid': false,
+ 'inputFormat': 'UNDEFINED',
+ 'currentStep': 'Input',
+ };
- this.inputString = null;
-
return this;
}
MochiKit.Base.update(Clipperz.PM.UI.ImportContext.prototype, {
- 'toString': function() {
+ toString: function() {
return "Clipperz.PM.UI.ImportContext";
},
- //=============================================================================
-
- 'resetContext': function() {
- delete this.inputString;
- delete this.format;
- delete this.jsonToImport;
- delete this.recordsToImport;
+ release: function () {
+ this._importComponent = null;
},
-
- 'getInitialJsonContext': function(aJsonList) {
- return {
- 'format': 'json',
- 'jsonToImport': aJsonList,
- 'recordsToImport': aJsonList.map(function(d){return d._importId})
- };
- },
-
- 'getInitialCsvContext': function(aCsvTable) {
- var result;
- var nColumns;
- var defaultSelectedColumns;
- var defaultHiddenColumns;
- var defaultColumnLabels;
- var columnLabelsFirstrow;
- var i;
- nColumns = aCsvTable[0].length;
+ //=============================================================================
+
+ ensureStateConsistency: function () {
+ var csvData;
- defaultSelectedColumns = {};
- defaultHiddenColumns = {};
- defaultColumnLabels = {};
- columnLabelsFirstrow = {};
- for (i=0; i(.*)<\/textarea>.*', 'g');
+ if (isExportContent.test(aValue)) {
+ textarea = MochiKit.DOM.TEXTAREA();
+ textarea.innerHTML = aValue.replace(isExportContent, '$1');
+ result = textarea.innerHTML;
+ }
+ }
+
+ try {
+ var jsonData;
+
+ jsonData = JSON.parse(result);
+ jsonData = this.enhanceJsonDataWithCardReferences(jsonData);
+
+ this.setJsonData(jsonData);
+ if (isUploadingFile == true) {
+ this.showJsonPreview();
+ }
+ } catch(e) {
+ var parsedCsv;
+
+ parsedCsv = Papa.parse(result);
+ if (parsedCsv.errors.length == 0) {
+ var csvData;
+ csvData = this.csvFillEmptyCells(parsedCsv.data);
+
+ this.setCsvData(csvData);
+ if (isUploadingFile == true) {
+ this.startCsvWizard(csvData);
+ }
+ }
+ }
+
+ this.setState('inputString', result);
+ return result;
+ },
+
+ //=============================================================================
+
+ backButtonStatus: function () {
+ var result;
+
+ result = 'DISABLED';
+ if (this.currentStepIndex() > 0) {
+ result = 'ENABLED';
+ }
+
+ return result;
+ },
+
+ //.............................................................................
+
+ forwardButtonStatus: function () {
+ var result;
+
+ result = 'DISABLED';
+
+ if (this.currentStep() == 'Input') {
+ if (this.isInputStringValid()) {
+ result = 'ENABLED';
+ }
+ } else if (this.currentStep() == 'Preview') {
+ if (this.state('recordsToImport').length > 0) {
+ result = 'ENABLED';
+ }
+ } else if (this.currentStep() == 'CSV.Columns') {
+ if (MochiKit.Iter.some(this.state('csvData.selectedColumns'), MochiKit.Base.operator.identity)) {
+ result = 'ENABLED';
+ }
+ } else if (this.currentStep() == 'CSV.Labels') {
+ var selectedColumns = this.state('csvData.selectedColumns');
+ if (MochiKit.Iter.every(Clipperz.Base.zipWithRange(this.state('csvData.labels')), function (labelInfo) { return (Clipperz.Base.trim(labelInfo[1]).length > 0) || (selectedColumns[labelInfo[0]] == false)})) {
+ result = 'ENABLED';
+ }
+ } else if (this.currentStep() == 'CSV.Titles') {
+ if ((this.state('csvData.titleIndex') != null) && (this.state('csvData.selectedColumns')[this.state('csvData.titleIndex')] == true)) {
+ result = 'ENABLED';
+ }
+ } else if (this.currentStep() == 'CSV.Notes') {
+ result = 'ENABLED';
+ } else if (this.currentStep() == 'CSV.Hidden') {
+ result = 'ENABLED';
+ }
+
+ return result;
+ },
+
+ //=============================================================================
+
+ goBackHandler: function () {
+ return MochiKit.Base.bind(function (anEvent) {
+ if (this.backButtonStatus() == 'ENABLED') {
+ this.goBack();
+ }
+ }, this);
+ },
+
+ goForwardHandler: function () {
+ return MochiKit.Base.bind(function (anEvent) {
+ if (this.forwardButtonStatus() == 'ENABLED') {
+ this.goForward();
+ }
+ }, this);
+ },
+
+ //=============================================================================
+
+ goBack: function () {
+ this.setCurrentStep(this.steps()[this.currentStepIndex() - 1]);
+ },
+
+ goForward: function () {
+ if (this.currentStep() == 'CSV.Hidden') {
+ var jsonData;
+
+ jsonData = this.createJsonDataFromCSV(this.state('csvData'));
+ this.setState('jsonData', jsonData);
+ this.setState('recordsToImport', jsonData);
+ }
+
+ this.setCurrentStep(this.steps()[this.currentStepIndex() + 1]);
+ },
+
+ //=============================================================================
+
+ renderCsvTableBody: function (hideDeselectedColumns) {
+ var importContext = this;
+
+ return React.DOM.tbody({}, MochiKit.Base.map(function (rowInfo) {
+ var result;
+ var rowIndex = rowInfo[0];
+ var row = rowInfo[1]
+
+ result = React.DOM.tr({'key': 'csv-row-' + rowIndex},
+ MochiKit.Base.map(function (cellInfo) {
+ var result;
+ var columnIndex = cellInfo[0];
+ var columnValue = cellInfo[1];
+
+ if (importContext.state('csvData.selectedColumns')[columnIndex] || !hideDeselectedColumns) {
+ result = React.DOM.td({
+ 'key':'csv-cell-' + rowIndex + '-' + columnIndex,
+ 'className':(importContext.state('csvData.hiddenFields')[columnIndex]) ? 'PASSWORD' : null
+ }, columnValue);
+ } else{
+ result = null;
+ }
+
+ return result;
+ }, Clipperz.Base.zipWithRange(row))
+ );
+
+ return result;
+ }, Clipperz.Base.zipWithRange((importContext.state('csvData.useFirstRowAsLabels')) ? importContext.state('csvData.data').slice(1) : importContext.state('csvData.data'))))
+ },
+
//=============================================================================
__syntaxFix__: "syntax fix"
});
diff --git a/frontend/delta/js/Clipperz/PM/UI/MainController.js b/frontend/delta/js/Clipperz/PM/UI/MainController.js
index 4e7375a..a0dae81 100644
--- a/frontend/delta/js/Clipperz/PM/UI/MainController.js
+++ b/frontend/delta/js/Clipperz/PM/UI/MainController.js
@@ -63,6 +63,7 @@ Clipperz.PM.UI.MainController = function() {
this.registerForNotificationCenterEvents([
'doLogin', 'registerNewUser', 'showRegistrationForm', 'goBack',
'changePassphrase', 'deleteAccount',
+ 'updateOTPListAndDetails', 'createNewOTP', 'deleteOTPs', 'changeOTPLabel',
// 'export',
'importCards',
'downloadExport',
@@ -122,6 +123,16 @@ MochiKit.Base.update(Clipperz.PM.UI.MainController.prototype, {
},
//=========================================================================
+/*
+ proxy: function () {
+ return this._proxy;
+ },
+
+ setProxy: function (aValue) {
+ this._proxy = aValue;
+ },
+*/
+ //=========================================================================
isOnline: function() {
return navigator.onLine;
@@ -246,10 +257,8 @@ console.log("THE BROWSER IS OFFLINE");
var canRegisterNewUsers;
canRegisterNewUsers = Clipperz.PM.Proxy.defaultProxy.canRegisterNewUsers();
-//console.log("CAN REGISTER NEW USERS", canRegisterNewUsers);
this.selectInitialProxy();
shouldShowRegistrationForm = parameters['shouldShowRegistrationForm'] && canRegisterNewUsers;
-// this.pages()['loginPage'].setProps({'mode':this.loginMode(), 'isNewUserRegistrationAvailable':canRegisterNewUsers});
this.showLoginForm();
if (shouldShowRegistrationForm) {
@@ -262,7 +271,7 @@ console.log("THE BROWSER IS OFFLINE");
//-------------------------------------------------------------------------
- checkPassphrase: function (passphraseIn) {
+ checkPassphrase: function( passphraseIn ) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("MainController.checkPassphrase", {trace: false});
@@ -931,13 +940,12 @@ console.log("THE BROWSER IS OFFLINE");
//.........................................................................
- userInfo: function() {
+ userInfo: function () {
var result;
- result = {
- 'checkPassphraseCallback': MochiKit.Base.bind(this.checkPassphrase,this)
- };
+ result = {};
+ result['checkPassphraseCallback'] = MochiKit.Base.bind(this.checkPassphrase,this);
if (this.user() != null) {
result['username'] = this.user().username();
}
@@ -1116,6 +1124,9 @@ console.log("THE BROWSER IS OFFLINE");
toggleSettingsPanel_handler: function (anEvent) {
this._isSettingsPanelOpen = !this._isSettingsPanelOpen;
this.setCloseMaskAction(MochiKit.Base.method(this, 'toggleSettingsPanel_handler'));
+ if (this._isSettingsPanelOpen == false) {
+ MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'closeSettingsPanel');
+ }
this.refreshCurrentPage();
},
@@ -1246,7 +1257,7 @@ console.log("THE BROWSER IS OFFLINE");
},
//----------------------------------------------------------------------------
-
+
// export_handler: function(exportType) {
// return Clipperz.PM.UI.ExportController.exportJSON( this.recordsInfo(), exportType );
// },
@@ -1274,14 +1285,14 @@ console.log("THE BROWSER IS OFFLINE");
var deferredResult;
var getPassphraseDelegate;
var user;
-
+
getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, newPassphrase);
user = new Clipperz.PM.DataModel.User({'username':this.user().username(), 'getPassphraseFunction':getPassphraseDelegate});
deferredResult = new Clipperz.Async.Deferred("MainController.changePassphrase_handler", {trace: false});
// deferredResult.addMethod(currentPage, 'setProps', {'showGlobalMask':true});
deferredResult.addMethod(this.overlay(), 'show', "changing …", true);
- deferredResult.addMethod(this.user(), 'changePassphrase', newPassphrase);
+ deferredResult.addMethod(this.user(), 'changePassphrase', getPassphraseDelegate);
deferredResult.addMethod(user, 'login');
deferredResult.addMethod(this, 'setUser', user);
// deferredResult.addMethod(currentPage, 'setProps', {'mode':'view', 'showGlobalMask':false});
@@ -1290,12 +1301,12 @@ console.log("THE BROWSER IS OFFLINE");
deferredResult.callback();
return deferredResult;
- },
+ },
deleteAccount_handler: function() {
var deferredResult;
var doneMessageDelay = 2;
-
+
deferredResult = new Clipperz.Async.Deferred("MainController.deleteAccount_handler", {trace: false});
deferredResult.addCallback(MochiKit.Base.method(this, 'ask', {
'question': "Do you really want to permanently delete your account?",
@@ -1313,23 +1324,22 @@ console.log("THE BROWSER IS OFFLINE");
return deferredResult;
},
-
+
importCards_handler: function(data) {
return Clipperz.Async.callbacks("MainController.importCards_handler", [
MochiKit.Base.method(this.overlay(), 'show', "importing …", true),
- function() { return data; },
- MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this, function(recordData) {
- var newRecord;
- // I have the feeling this should be done in a more elegant way
- return Clipperz.Async.callbacks("MainController.importCards_handler-newRecord", [
- MochiKit.Base.method(this.user(), 'createNewRecord'),
- function (aValue) {
- newRecord = aValue;
- return newRecord;
- },
- MochiKit.Base.methodcaller('setUpWithJSON', recordData),
- ])
- })),
+ MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'toggleSettingsPanel'),
+// MochiKit.Base.method(this.pages()[this.currentPage()], 'setProps', {'mode':'view', 'showGlobalMask':false}),
+ function () { return data; },
+ MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.method(this.user(), 'createNewRecordFromJSON')),
+
+ // MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.bind(function (recordData) {
+ // return Clipperz.Async.callbacks("MainController.importCards_handler-newRecord", [
+ // MochiKit.Base.method(this.user(), 'createNewRecord'),
+ // MochiKit.Base.methodcaller('setUpWithJSON', recordData),
+ // ], {trace:false})
+ // }, this)),
+
Clipperz.Async.collectAll,
MochiKit.Base.method(this.user(), 'saveChanges'),
MochiKit.Base.partial(MochiKit.Base.method(this, 'resetRecordsInfo')),
@@ -1339,6 +1349,61 @@ console.log("THE BROWSER IS OFFLINE");
], {trace:false});
},
+ //----------------------------------------------------------------------------
+
+ updateOTPListAndDetails: function() {
+
+ return Clipperz.Async.callbacks("MainController.updateOTPListAndDetails", [
+ Clipperz.Async.collectResults("User.updateOTPListAndDetails ", {
+ 'userInfo': MochiKit.Base.method(this, 'userInfo'),
+ 'otpDetails': Clipperz.Async.collectResults("User.updateOTPListAndDetails ", {
+ 'otpList': MochiKit.Base.method(this.user(),'getOneTimePasswords'),
+ 'otpsDetails': MochiKit.Base.method(this.user(),'getOneTimePasswordsDetails'),
+ }),
+ }, {trace:false}),
+ function (someData) {
+ return MochiKit.Base.update(someData['userInfo'], someData['otpDetails']);
+ },
+ MochiKit.Base.bind(function(someUserInfo) {
+ this.setPageProperties('mainPage', 'userInfo', someUserInfo);
+ }, this)
+ ], {trace:false});
+ },
+
+ /* Used only one time (the first time the OTP ExtraFeature loads), other times
+ the list update is triggered by other operations. Maybe the first OTP list retrieval
+ could be done during init, so that this would not be necessary. */
+ updateOTPListAndDetails_handler: function () {
+ return this.updateOTPListAndDetails();
+ },
+
+ createNewOTP_handler: function () {
+ return Clipperz.Async.callbacks("MainController.createNewOTP_handler", [
+ MochiKit.Base.method(this.overlay(), 'show', "", true),
+ MochiKit.Base.method(this.user(), 'createNewOTP'),
+ MochiKit.Base.method(this, 'updateOTPListAndDetails'),
+ MochiKit.Base.method(this.overlay(), 'done', "", 0.5),
+ ], {trace:false});
+ },
+
+ deleteOTPs_handler: function (aList) {
+ return Clipperz.Async.callbacks("MainController.deleteOTPs_handler", [
+ MochiKit.Base.method(this.overlay(), 'show', "", true),
+ MochiKit.Base.method(this.user(), 'deleteOTPs', aList),
+ MochiKit.Base.method(this, 'updateOTPListAndDetails'),
+ MochiKit.Base.method(this.overlay(), 'done', "", 0.5),
+ ], {trace:false});
+ },
+
+ changeOTPLabel_handler: function (aReference, aLabel) {
+ return Clipperz.Async.callbacks("MainController.changeOTPLabel_handler", [
+ MochiKit.Base.method(this.overlay(), 'show', "", true),
+ MochiKit.Base.method(this.user(), 'changeOTPLabel', aReference, aLabel),
+ MochiKit.Base.method(this, 'updateOTPListAndDetails'),
+ MochiKit.Base.method(this.overlay(), 'done', "", 0.5),
+ ], {trace:false});
+ },
+
//----------------------------------------------------------------------------
saveChanges: function () {
diff --git a/frontend/delta/js/TestData/User.data.js b/frontend/delta/js/TestData/User.data.js
index caa95ca..704e9c6 100644
--- a/frontend/delta/js/TestData/User.data.js
+++ b/frontend/delta/js/TestData/User.data.js
@@ -1195,7 +1195,7 @@ testData = {
},
"v": "ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf",
"version": "0.2",
- "userDetails": "{\"records\":{\"index\":{\"062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80\":\"0\",\"d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d\":\"1\",\"de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4\":\"2\",\"d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045\":\"3\",\"f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732\":\"4\",\"6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18\":\"5\",\"9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291\":\"6\",\"6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a\":\"7\",\"6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728\":\"8\",\"f13d3614512f35960896be45bec72fb177209b05cb846741454d10befdc96e0b\":\"9\",\"e5ecff72df3a57862c1aec4084c90a458a04b63d4ede8c6c02cd6c73f1afb0ce\":\"10\",\"2631d52448aa008a918adfa9ac7d092b68ca65d2a8b052501a21a952ea9d158d\":\"11\",\"26f564ac38b07878222831815f4ad2ac3652ad2aa85e463c0d72c245ccb55500\":\"12\",\"bbd1a005b14cd128187a3d8247168d19136c5c3c887b22040a21347b7926a9b6\":\"13\",\"54afc19bc21acb29739395aec2b89f5cb1db05b6066b9bfd4f989ba12ccef1b9\":\"14\",\"e0dba99d2973c63d5231459337603e0c483fe6ec586b4f10d78baa53314d7f02\":\"15\",\"405cf90598df199675bc47a6b86967d3b0fd48a4c23bd1e142e2b7f50b2136fd\":\"16\",\"03e80a849bdcef055859870f6a8789b3c5b9bee22b610eeb0aae1a5c7893a827\":\"17\",\"a519f4a285a8954e47a7ba220986ad3f1e048bd301ade71c32f8d7278bb84b08\":\"18\",\"6b2467a411278edb2415eb37da08b3c570b05d229f5435cc3f8e1ec03cef4858\":\"19\",\"c45fad0ba337cf90493780dafc3ceb6fa29410dca5e1bdf77f3b5e6d1a755128\":\"20\",\"b1015a5ac47a9f3d0b2787c95f871022f39431674825d27759ce8f881705b6a2\":\"21\",\"c4aa834d9059f854c4dd8de275192747e8ff54ac2932ba6b7b57ca13754a2950\":\"22\",\"3bdc93056c8c2c9116380435715d9afc016cd0057e754bb3b919a086f3ce3dac\":\"23\",\"2f68ed41765b3f49c06fc5aa18f56e0f0bd6a0e5024f5af987e6476b47cf7009\":\"24\",\"2aa1871b3dab60d7a0aab1cd4cc3df813fdc35bb3c60d99d7c8e7b46b6cf6484\":\"25\",\"b56413ce2384696e76261660790d452997ff59f3d9feaa90b1dc3ad121d3558d\":\"26\",\"c549f7d97ed162fecba1eaefbf456ca12f0631efeaec9f5394b20674bef93bef\":\"27\",\"d7c2425ad5bd8d36cc7432de28a67d1fe989f48fdfa89249a0b57ff394145673\":\"28\",\"5dfebd797126b11db899509bbd367d22e7985b726aa12e23b3d62419f5db11ad\":\"29\",\"2634a70250cd3cedc08313e642baeae38720a1fa50aaed56fd36556332846206\":\"30\",\"5ebf59d32dd40342d97a7e7a1a1f1faaed1997762680795f8eb7e661b528d702\":\"31\",\"8aaa83ede958b2621bf941e68e801b32e7ddd5d686551392d4d533eaecf58098\":\"32\"},\"data\":\"t6njeKB5pY6kWT\/FbuYJTayHpQMkPr\/O1HQ\/YNpqvuHN+gZQ7k8yTKdVO\/MguanpOnVJJ6ObYImUyQ5BmiLGticHHylQeFx9bwSD4PKHHm1ILNZPYf\/Maafj+kEK8SLkUAd2wipXQLK7KZeWQkoabv87mB0+Du+ejN5DXaKy90Urx21bf\/9KSfRC74TRIA6Qkr2S\/iMJibl3qP37tT3wlIiieKn17JSQca3dOFo3I\/vBhHH92MRKym7ehDSQmhYsbqjGJ0EpxrUinXMiqheyHmBwV102MWox8HiNj9PfRzmBcNj49\/RNqZHpIH5KgfkGREqnGXg2kBDckxEuij3taD0Jf7V\/rID4J5N3wSZmh08assJFwg7CXWJxRwfM7QVJLkMPlXgVYTatwdQcrtL7pmcKefBJa1DzanLNp\/0\/A621TApjxO1RBjwGlfRDp3Gyz6XvT8XeF85ESIGBIiITZpDUsWNctyiPEhj32LXk+CWg8xaEyhM9tq0q0InWEd4cL7GTZEEPOWb4pMIm\/\/c3NpZOwATfYKIqpg9cRrQk0gEG3dk9MV\/5eu\/Q3W0q50VMBXxCmTLcNMu+DodbsWRnq8BT54+WdmWwDq26WiAONUQ7430sV38zjqh97hs7I+if59ineJinKybnEpqJCCHTCMowDFW25xdF3Z03HkTjZWpFaDma5JWXTTA3L5MjkFPxJDGdMp5OeFFkpeM5h9dtpMzG06gsVqlskeLOxFVUhOrWnZ7y2Ofg0UMK+Xfqc0AonlQyzhyQbFAk3puM\/zEOfkxu0gpEGuHWl6\/ejrC0ddjQo1ctvS5e0WruZAJ+GlBMMTWXxOWe9IRRaGX7zSfXFP5QgPCR92ukemx++NLkwa7dpLJ1Spj0NZXW0\/f9\/0TGucs5x4+B46dnceAshVFEBoP6MximJMC1HnxaD3H6M99c8QstoHGmvqEQ1aupQcZlbi5V4r0qYNF4LJ57ee2LIOoo3fcyB1qpmdw4+OaLShjNhNsAPk8yqvy1XErLJwADvVS6vkNy8tSlBs9b1h1iP0UGnS5mT\/LOUz2OORvdJNpim3tCoBCymiOqWZEhz7VMGlSWzQB8UcmEveb\/D3gKa2foQN7WZRbFI\/QTKldoGURCTPEQuuDkAbIbJqQ\/zSK85XeDLb0yD\/FtC1BchCYynQU74vTZPH9dGMufLdSwykuc7NU9rlIbyjNrzfN0H3hIXyjGj2P3LQNfH\/edMvBOcXt5zri12VCs7UD8DmxVWY7bBvzoAy54WV8zZ2jkYqCQ93QDL80wxzE8t0AxXlo9Jpr2fCImtHyGyOg7N433M37pwgKTJecf4wc7136Zh6JsBkAYsVSkrgbfJY\/Di03VUm5fjdE83lD+WqH8YbR44xByDnIXF27k0ECQUW\/MXBkdWHgmdNmNadwJ1RA6nV\/xxtI7caboamRn5ocOlDbwS0fN94bIdCh97wwF3ZuQcFJBxQ9IECJ4dUQ1gNKi9W7Eo1BPfy7MZD4afE43Yrfn4ce4ZdFjQj6dhmN++lZIAHuBrhzZuMQLKPmfzyE7Jd9diE+0kTZSp2ldWn0Ef7Otwear4uYw2BsnFwJMhecKnH++kxLvObHTHFrRLcnRGLayVxLfLprkgFM0Z+YrUgsysFnw6issVlo+bXMPXnC2GCF9oK3dToXu8O8udCE2tajufSUOAHK4ZnZsKA+r35inlc3mtfNki0jeTt5n+ZLtVkw9yODipR1Mqm4mtvDF4vYrDyrYRB3V\/Eok+GDi1uERhQfZiZn1Bsae2bXvOjHnvh\/CkgI6K9CCP8E+xtY5IKFlGVEgIkhy32lZLRNZWQwLAIAIzo\/xg8g+zBJ7kW\/77oTkLiF\/jNT\/run6AFYLZg8uKYXYvKZL5plURu8c4uTbwzNQAzsLL6euqVpQ+IZ0sUk6f35WmQ2niSibHas1VJc9vHFibpouDsDlIoR71VSeTpL+HY6pu4o8M8sjaISf0gDve6+HZFHOXXz0oEnhU5Y7qdO5x7kkpOmexQrlDUYlP8MNCAG5XdGRcIQ7LakMjkOdEIYauUMSNV+K6ncSjE7F+yn09aMhMZsxJRCjxVWI3ErYlSw0ltawi\/kXnp0vcoAjH7Fz4etSU14a\/FR+S0ugmWa6U6uRQ7wYhDN8YeOxTnrIRmF+8F2roZvEiJC\/S0mivJiBlRVABWvI\/cdJ2h5XMGPFAlCeAjI9P\/iN2IhYF11cLZHCnqa+CdDQRp9VWKfGsLBVjE157UnJfwWHnSlGuQ1GAYSsq2In86cf3jUI16nIy7tByzestwQKVtzkh+PYzW+DXcyY8254lRvQtWSBvBicwb6M\/XfdfyOyGntfBeNeCxc\/tvlVtruHQCJ1eouFdk12UlvShzfWD9ZGKkFd2UgwbAAaj6pGfw9NW5d5skhh8qWbvqAIjiatd6adJ9XIVwuwDs+5IqQ8t03O6bdsHf2G4+spgQ7V+ZglFvGY8uxS4zLSRFF90MEDptIz\/jkJKhCVfLgUtRAFakncx8P9R5eDnRjhjdRi5Xf8+NaYL9nuCYKxNhfkVbnpQgbQDT35z6SWeMgmE1L78Tg2AjLWZCD9djKVQsdmhmo2d1kQTNTwzW2ctjaGJ4LLpx+8guUTQKTpSCYaMko6hRvvBjdS8tjx\/Xa28xTWRkwy+R\/24Js\/fXWqAdmJgbpXrMLen09LCXKQri4rkK3LeIZsqrSkkuxxD99tXUyTulGFSeEVQq3o+XlcMs0kSD8fsZ9yRseFu99R3NcEHYfmx2Fy3EgqQjKcQVpL1WXr\/71Zw1MWGZscnX7vAASLFm24Ga3fZ4oXdT81MF0ViRuygaonlVjbxoI2pXvCiIGwpEcsuz+9WYX77WmTUjgOsVEX\/\/oi4305AvfXCygB02dcZciNWVk73FADVr5mlVqTrn3vQcs8sRoaG6GCkiYqqumMFDY3CiWzxOU2U7dQBxXoSCB+GSeljTMim+nOoKJHPFCfftCSnGljx5Fy7+Op\/zJVXppDXbNXT8qbeKUwvcUEiV3UnBA2OJ0Qh7edMHSMziX+PLkHEHr3\/C7rn7dYC1OQQJn7lQn8KEw1wNsqIFu9wwyTxmlhRC2BgMLxdY67Vda96+OI3bsT3\/GT\/d7T7fV7yTzbhQ5wa2DS+lG8PnK0UnVTh0U75PYtD0x1UqGTVxWLgfvrPzlJDOnfBSaXd9yCgK516l88hnrL0OsaOtWTJZu4hlaKlIx3qdZMludDSG+iwCw4dTZ5GFgqqfj2z2mdwIrkI5kvz3CaXs3PGcJDtFTbtXDB8eu9wyPsNlDaHZ90YGL\/eP5uSDmwmx0xzeKd5Fx4B9xw7z0NJ0vIZcZv\/xphOTm6Giy2PMcPBx6sFV2KYnMTTo5aHvxoo4dPqvW5lboIGgaQI1Wp8FNHAMFmi7HguNCPA8cpdk4ux8nX729PuYj+Q6Lzlx9RWpn1yn5sdYirJbgIUlWNEsTquL7hRq7p8KC0\/7sp\/OIQvRGEr+hHBGkjLIDNx5pE\/ToZJ3CCi8lutyJt0QQroCK1A6Qd27uxc86mIYZJn4GbbyOfUZc9er7eNgGKIDNIB+fTY5e5HBRLB7P2M+BaPQviljjsuM76OwOfLB1XrYnK+0Aog5T5QLqdjpHyzynvVLtAwwbf6PKodNMf\/8zSyxtF+bhYF9MN\/r\/SUntfmzH06sQuV7R4tQISFkSMSwOYeayksnSzlioszILkCCXXrkTFO2xJh\/lftONca6cGYc8CxtILZZ2ypmIALoePfXxBXMtxk1t2\/\/OTI5bXe8FhIvScKApM5F3YBGHyOmARJa5UteJZrWY6oXEWxIXx7QxMna\/4yCNddSoDSEPOb7edS4s4Ms0hKke7Q94q7UbCInsiEgNPEfR2Gwg79+I4f0sW6NkDEwPHxkKMcBiz0IAv\/oVsrnmxheBID3s2RS7YNvwTigcoWM2JO8BDkoEwmnIM\/158sS5IhCBWgxJpPYJldUEi2yWXl\/F8vMftJLsFnDrImnrmUzL+bKEJ9WekOp4y0RVEM4pUOLpacqPiMNMlTnR5zyI7MX4t2YLhJJsNvIvyVeC3C1j5CB0bbJtheAX7V\/M8jxh4h7plHe23AKrI881liGSGhftGJvxz2lP\/Lof2btPIOjqgTI2gVh6xYrNLYAThw+UQ2NrNSufIKmxrxA4CJNyqFoRN+oGbTgk03AZ5onDJMqE83N\/3u3w5zvewoB2GI1XbErOeJYmg0aJ0JEgy8KmEjrAX1qPuL\/xhAftGlH41UtdpskIqX6kUeg\/ML33M+MwtnJVnmvt8KYDSum9Kwou1Tfsx2+ELG\/9hCtZC9Wgi3IXqUMWTtmtXivUpFY6fg1ZyWo2TIKjeYxQGk9rG8OfRuaRRyTSBj5qIsbCUzmZvHlvCDYwqvt7oRQZckOCubi0MdmgY3QYusfVxhBYAh3X7+JIQFhBfEcuWGN6jhLSLC9Vw1+kn3msMa8L+0SL8H947ZfpEKl\/QWwnZjgEt1qnlEBDeezy7nXDWrz5rQGRUfy4RHvTPD16U4Slkf9dMpiIFmRrYtT0HTVGqNlBbAjUM7hsxZe8DvMwkkMORAPec7fjn67XqBl27gADn\/yWJ3yMaB4pHeBjnnVHsTdFwsrRgqLmMAuGX2hran5\/f6HmKfvMB8JvYBq0uyWyApNTw1BcgtQObm2ioY8RAptBo6nqn4dTgSxs9h\/n44aLMVlpXORR4GFN2LWLHk65iV8EF49SkNRCMJ1yRLOGWOD29mFgv+9f2U82UCSYIMF4FCblZyZ16Xs3QhW5EP1E3hm3alOIG7BZSdGUO7tgyKjtyQDfZsLgMXkCkEFy0WJbFEbNzjGA5UluLbXBkTrYOgroSDBLfz84F+RxVP827ZNh+vbbGA1ObhhprBb1YRJfa\/3X5+TFIS3ak5eTVuKtF12ZpqB0TiYBQz15pK4axK9Ir9SpwQzJBN6HW6UQno7KajXfFhQM80klawnw7ivOTqdZYDRcwkbXfEImA6La0MobAg0bmS7QndS6\/iJf9TgXIelOjAxof33N8NVwRCn74JaqF5PHugJeh92DBI6G3MseyrDQ0k4AQyjyOAKDjYodEmWoXJA==\"},\"directLogins\":{\"index\":{\"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348\":\"0\",\"dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496\":\"1\",\"aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584\":\"2\",\"6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f\":\"3\",\"f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1\":\"4\",\"a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e\":\"5\",\"f4cc4604c1db808cfab53354260b01ae1f2826c621ac4a3cc499f132ac30f02b\":\"6\",\"aad35cd020e3d78ba03681682096d1ab0303073c971c0282d0bf31d56843fd9f\":\"7\",\"8d7bf22dbce3e7d5eb873fa437c3b27168afa8bd28d06fec76026f9e9dd8c26c\":\"8\",\"cb5a31797a00ac70952c1e8f30679eb101353ea98313543f33caec13624b15e4\":\"9\",\"53baf661f0c41b41026cd8e8cc4dd1855956461b9201286cb98486e4afb8254b\":\"10\",\"5859b5eb97e6a342de219e49bce04c29f9c6aeea77658a699ef27ec2f943e18d\":\"11\",\"69f76440f9c5fa0c66bf4d0b2742c8211f30dcf562d3aaac28e56216d53c2f27\":\"12\",\"aebadbfcc69bf029b2ae47cfb4e3bc2b8b71ae4a90f786538dcb44be6b5fc1f9\":\"13\",\"af97323febc46a095403cf77e9b16b0351556354aeaa4da37b17ab148d917a4a\":\"14\",\"9613ee2be520c7de0af9f67cc5048ebb649fb4a472717bbdb6822b299a4c7f55\":\"15\",\"632f40721cf56606f5c8227020e4a574585feb522cd410872e741ccde348adf3\":\"16\",\"a8818157b59693c573fdff99b3932ee95c8b228670ecd8a2944479edbb91249f\":\"17\",\"9a8e6cc57266b8364547f450e71d98596efd9210df8f5f1a9dc755df0b23f0db\":\"18\",\"e2231d46181622754c6326044448750caa9a9496a290a9661996e47cd5d51e3a\":\"19\",\"f0d93bf3e52bc4f4e8d34c4759f5f566c1bcf220bcf5edd28af71ee8ef0da8dd\":\"20\",\"c50495ba204a69758ef50a95851c7481845e4f9af342341b5bcd8023bc00226e\":\"21\",\"65f93ac9c0f0787dc5d149a44e574140df26cde715372a534189e41658c7f828\":\"22\",\"33a73db6f9626dd260e9d33ca2e6000518b6eea8b7a3e5e55fc4fd4add4d43ab\":\"23\",\"34e2981a6cf30b15b774ba76a7de32b83795c95f4ea04b49e34ba7d85e77c7f2\":\"24\"},\"data\":\"j6o5ZeJ21I0G1KY\/PhJ7DvGXxQlpV7IX8FjT3o2MDuoEZ68FUo4FdMhm9VmmRn8461acH6n7ZWlVuB0v5Zf6FVIxTSwnCzf\/DneEl+6gH6cpr0k8+usMNfTj8LOUlhOPtVdbsZC1S2hdRSz9viQEpWkhTbdOabf8trPXOjjJepJ6RR3VQMlCH3OYUDrm7G\/4z3Qw1T9hbRUttsUafK63JNGUk6GhOtptCpTP8eE2nLlvKd2RguVZpFFh6RDi2vWA\/7CaJbbtvCqIrUTXrPZJTqoZ0bDqV1zIfLm9ui42EXk2cKqZiL76G6bJINR9PU+83fGdsG7CxbdSvhB5gMNmr1FkRZS7u9bvNf8sgYcQQVvmGP8joDeMTIsC+Uz\/595jKKnvnkPnSp1CqhUVmHZHqnIEZAh7VOakN\/k3UunKeinTHtluQBOvkFyqHp8X0zLmDWPeuf3aBA3mCWPeqLVv09iEbsuIZRFkFPivNGPYqQRwSt2Ql+GbmG4VwvRUa6WoeR2X+HIT7w4BcZ1QbvTSnTmV263eY0W1Yjf5wALsxEuwjDIxMemjUgYLoDihawA\/t16QFBJG\/VT4MbBUsVeMNCm1xE8G3GW\/V\/O0G+B+A95eSsL9x8gEIwoaH78vNbvSzYLv6Y\/z5feqb9z8oVimJCX9xKFbW\/1zxaLxcesgzFfmqCpJCnLxhvg1UjA83UUzJgieMzvIKCwklGGWjys+sK6tWQKpL9KISNEDuQ6Rzictd0psIu7JnX2WFZFbC2yTubiN+A59tNsX1h6kQo8CBAw+7F\/uyfIqSei7vphjjPlveQE2yZXoMtfqEuQISEDaK+70GGsdI4j1I2V7rscS1u3bTWR1BD6B7G8aSiZGL2+7MuEcNF3WhGL7W+awG3KSuxb+SBoKyAoT70y\/VJum+7ZXJa1rWCcNoYqLLZ77uwp4UxCvjSylwfzoJwkwebgOVVJf\/ELEd+En8Zi8SPxrgEqdQ\/AxYEoHAyivpcYfeoqaXAOYMU\/St6FvSvZVeT8iRUjTwr\/15aAR5UW7rqoE5i6P72OIu+le82M51w27y4SIBkjrFDM8NTMIeRXvWYt0U9qX\/JkGhS\/syGTNq0EJPl6+qUsHrguZJhky1uxtafNz\/DtN0z0NuCqScnBgrVgUNdXc7FlAkjUImNjsGGdodSnmqz4zo6xHmhfSYgyEGtAgpyqmNzMnZ8AAjV+8EnOseuY0D2xc3UbfthrubzNC97ycIfIv3ouBZi98PxPzd7iQzbZ3\/cK5prVnSHcH6sGap\/+uzzG\/SwFxVOsespkn4iaHuMRlP2Kl6yGPRUmReINGmaMg7EqrTCJpfmVCucop63jxg1RIvVf4PQf5cw7dXj0F\/wQsmo+IbJS85kUyD0VHN+e3AYq4GbFubr0L1udvau30vqZ94Y\/1UsjjFdZXCAikbgoW5138BEhVDM0OOTJnpAcQCKfxDy\/Fgutgr3H659BK6h8eQNBj+mdDuJBnnvjJiZFaZT4x7uphioX2THLZJJ2S82MMqRC59Zo+\/oKa6blU9LYoSKotD4KShGt8ZSU1y6x4l9UK\/8dibrKpS77zAw109TaeLIXeqBRmJVQghpxu1KTb8uLsADszHZiFvQJlphUH3TRevvh2r32l4DxFiD+iOFDyTUHJrAyR6X6LZdTG2308dzOuf9M3oxOPS5cZjUjcl7cI6rvDtTQmijmVFtkqwHh005sLYbhT1Y6T3pAONl+VZnDIMgxPrCT0Son28CfgenLF5sx9qLV3v4ceYPbdiaLFRzm31ZXoUL7Xg06HtJ2pVFFMi232C\/LjpyUGJXA\/yTFN1R12R9pdn8cTPW\/i\/jCoQ8se9Tke\/qXTlM0FQb83XBAb7hiMgUu7sEjxk74rM7xK2XLt\/sJ6XYWGMc6LDUoKXpyJoa9mv+xw9aoE4AMl5FEbKCjxORkFpB9uomyIsC1ywoFYR+d8Di5m2\/rB7QnvfZT053w8pgknBOK6y3u8k8XQXU5Evl\/UxUHgE40Ua5JTUMsJ6gAIk8RBcLayLzkhPY5kut+wynoMuvq2lTZIMCZvi9NmqrzDdsKcjRt9qT5aD7SDNEO7mKvzj11ly9GMk9oxHONJioll4G+ZWwDI+Zi2WS4TEBmAnfw2GPTGpGvpozN1+LqnkwN2MvtKgkX2QoawvkrS6EE9AWY3VFzv42VaNL2UIh+5q1BJk46KFBOCDhLIb092\/sCXfGU\/q0rG7z97fjapVu9IpriswDvS+XkYPsbeLdtoPSY10ZOzGTm0HM43KHePEmmQmh9wfCNhbzg\/boJmXD5Kc+wXLnSuKDsaByD7HyLniNjRNLgtFWr1xf+SHvXgElumrKkVLCq9VSwde5QAp0UQ96i7RjiLhivJX78Tk\/NMlYsowShnykEYUKEv\/la4e1JH5XfW+\/cox1vaTi7njXXga+cOPUbQk3GMJc09ipvWgabUi7E82IEBTN1qDvQGrnNNowfqRLv4OdyVeH5U376DLLZx8c+NSqrusy\/DJU+Ft2FFGtxxT8JnxvaBnMjPxx01EchmMRVqjfgaT0iwljDwru+hweIgrc9M6AgIGA\/3o5Tzl16WGITzmQ+euGbp4IiTvlBkCxp8ie5XQXz8YXVr3DCX1x8G2Uj4l69I+ttvQzjC6RhULpJ+gTN3lR3096quTkudAkUzbPR9mvbLRev8Ds9LsPrSysJstw6HxE6jKiy\/eiMRnYX+frFpwu6qn67wbMBNFWd8dl+WqwnSmN17nITNAc0oc6sjwBHZNjj9km1ykEGNykV9BoCmJcNnRdzslU9znSthZJDSBnH9e\/YuBtR9DsQ2hSe4E8OX2HqQJ9Xt8e\/R8RsbKYwS8wHuj7YubuJh3HLQOVl6oDeUpe2ncpQrZnRMl9OG3NZ\/48SIzaYvDlLbeh+PGxz+jK2wlNjRSd8OPCA9Keb0t98+RWmUZfpyjTYskPJEak8r\/A7Qb1ONMm5Y9cT4OgDYYJI6sxZXCqesCLZPUI+MgMiuVzRi+JX3DJlogPZ4\"},\"preferences\":{\"data\":\"++\/WKXCLtqppntM0EWGmgw3oiBq7QS0CSzhP3GWAv3gm\/VJkxmbRuLS8tZ1eOvq3\"},\"oneTimePasswords\":{\"data\":\"REi10CXWsFACMiL3ejEEFH8h1aaJBgacC5urQDR7WLZg12CCkspnRO2QXtPZFc1UILopwpD9rFhJht+ORlVIsCc8SswZL4vC2rlzlInPyLzUvcW\/G6OuOm5EWPx0E67YvSDthLhlIxL4vMLkPocbV63z51jjgm0V5TXGaPY+ATVmFOmQEQce0wRPN\/+xLV3K86u5JdO2QbizdMvpmgeBLxF8NFz8mXP3C9oCwIgJX5hzLN85FOTD4lYnD01RXGbYS51zJdOS4xtnKW+AfIbjru1kaaNYZqLOPx1H2rvqXkDhaXH92iG8SZ7ccIX74Op4twoh5FxejInhZrYQTnONjFsEIqzYFgmpa0GOwbB2Fc2pG5MZ00ala3NKMJZ7SXAhWXDGacn3uXbTIUVOuAcTh4bSYqlzLXjQYa\/G6IxbIhW8oY\/3hSWPbft\/QI\/DTPmSMtU55b9BoMXbGU0nHZV\/Gdxkshmp3T\/Qh8bcYpbxhl5cPWcxbwuSgs8V+QUCSKqvRQmPig3w73gWtTQNQkVCznaBBjGsXHjTE4gAFI4AZRbJMIti\/6ffxYNFPg6AjEbgrhmo5jI=\"},\"version\":\"0.1\"}",
+ "userDetails": "{\"records\":{\"index\":{\"062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80\":\"0\",\"d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d\":\"1\",\"de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4\":\"2\",\"d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045\":\"3\",\"f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732\":\"4\",\"6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18\":\"5\",\"9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291\":\"6\",\"6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a\":\"7\",\"6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728\":\"8\",\"f13d3614512f35960896be45bec72fb177209b05cb846741454d10befdc96e0b\":\"9\",\"e5ecff72df3a57862c1aec4084c90a458a04b63d4ede8c6c02cd6c73f1afb0ce\":\"10\",\"2631d52448aa008a918adfa9ac7d092b68ca65d2a8b052501a21a952ea9d158d\":\"11\",\"26f564ac38b07878222831815f4ad2ac3652ad2aa85e463c0d72c245ccb55500\":\"12\",\"bbd1a005b14cd128187a3d8247168d19136c5c3c887b22040a21347b7926a9b6\":\"13\",\"54afc19bc21acb29739395aec2b89f5cb1db05b6066b9bfd4f989ba12ccef1b9\":\"14\",\"e0dba99d2973c63d5231459337603e0c483fe6ec586b4f10d78baa53314d7f02\":\"15\",\"405cf90598df199675bc47a6b86967d3b0fd48a4c23bd1e142e2b7f50b2136fd\":\"16\",\"03e80a849bdcef055859870f6a8789b3c5b9bee22b610eeb0aae1a5c7893a827\":\"17\",\"a519f4a285a8954e47a7ba220986ad3f1e048bd301ade71c32f8d7278bb84b08\":\"18\",\"6b2467a411278edb2415eb37da08b3c570b05d229f5435cc3f8e1ec03cef4858\":\"19\",\"c45fad0ba337cf90493780dafc3ceb6fa29410dca5e1bdf77f3b5e6d1a755128\":\"20\",\"b1015a5ac47a9f3d0b2787c95f871022f39431674825d27759ce8f881705b6a2\":\"21\",\"c4aa834d9059f854c4dd8de275192747e8ff54ac2932ba6b7b57ca13754a2950\":\"22\",\"3bdc93056c8c2c9116380435715d9afc016cd0057e754bb3b919a086f3ce3dac\":\"23\",\"2f68ed41765b3f49c06fc5aa18f56e0f0bd6a0e5024f5af987e6476b47cf7009\":\"24\",\"2aa1871b3dab60d7a0aab1cd4cc3df813fdc35bb3c60d99d7c8e7b46b6cf6484\":\"25\",\"b56413ce2384696e76261660790d452997ff59f3d9feaa90b1dc3ad121d3558d\":\"26\",\"c549f7d97ed162fecba1eaefbf456ca12f0631efeaec9f5394b20674bef93bef\":\"27\",\"d7c2425ad5bd8d36cc7432de28a67d1fe989f48fdfa89249a0b57ff394145673\":\"28\",\"5dfebd797126b11db899509bbd367d22e7985b726aa12e23b3d62419f5db11ad\":\"29\",\"2634a70250cd3cedc08313e642baeae38720a1fa50aaed56fd36556332846206\":\"30\",\"5ebf59d32dd40342d97a7e7a1a1f1faaed1997762680795f8eb7e661b528d702\":\"31\",\"8aaa83ede958b2621bf941e68e801b32e7ddd5d686551392d4d533eaecf58098\":\"32\"},\"data\":\"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\"},\"directLogins\":{\"index\":{\"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348\":\"0\",\"dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496\":\"1\",\"aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584\":\"2\",\"6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f\":\"3\",\"f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1\":\"4\",\"a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e\":\"5\",\"f4cc4604c1db808cfab53354260b01ae1f2826c621ac4a3cc499f132ac30f02b\":\"6\",\"aad35cd020e3d78ba03681682096d1ab0303073c971c0282d0bf31d56843fd9f\":\"7\",\"8d7bf22dbce3e7d5eb873fa437c3b27168afa8bd28d06fec76026f9e9dd8c26c\":\"8\",\"cb5a31797a00ac70952c1e8f30679eb101353ea98313543f33caec13624b15e4\":\"9\",\"53baf661f0c41b41026cd8e8cc4dd1855956461b9201286cb98486e4afb8254b\":\"10\",\"5859b5eb97e6a342de219e49bce04c29f9c6aeea77658a699ef27ec2f943e18d\":\"11\",\"69f76440f9c5fa0c66bf4d0b2742c8211f30dcf562d3aaac28e56216d53c2f27\":\"12\",\"aebadbfcc69bf029b2ae47cfb4e3bc2b8b71ae4a90f786538dcb44be6b5fc1f9\":\"13\",\"af97323febc46a095403cf77e9b16b0351556354aeaa4da37b17ab148d917a4a\":\"14\",\"9613ee2be520c7de0af9f67cc5048ebb649fb4a472717bbdb6822b299a4c7f55\":\"15\",\"632f40721cf56606f5c8227020e4a574585feb522cd410872e741ccde348adf3\":\"16\",\"a8818157b59693c573fdff99b3932ee95c8b228670ecd8a2944479edbb91249f\":\"17\",\"9a8e6cc57266b8364547f450e71d98596efd9210df8f5f1a9dc755df0b23f0db\":\"18\",\"e2231d46181622754c6326044448750caa9a9496a290a9661996e47cd5d51e3a\":\"19\",\"f0d93bf3e52bc4f4e8d34c4759f5f566c1bcf220bcf5edd28af71ee8ef0da8dd\":\"20\",\"c50495ba204a69758ef50a95851c7481845e4f9af342341b5bcd8023bc00226e\":\"21\",\"65f93ac9c0f0787dc5d149a44e574140df26cde715372a534189e41658c7f828\":\"22\",\"33a73db6f9626dd260e9d33ca2e6000518b6eea8b7a3e5e55fc4fd4add4d43ab\":\"23\",\"34e2981a6cf30b15b774ba76a7de32b83795c95f4ea04b49e34ba7d85e77c7f2\":\"24\"},\"data\":\"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\"},\"preferences\":{\"data\":\"y3WB0m/1Pr8yr5JfXffbLrcnwkhwU0qOj6r2F9ZHzm3aIzh0esucZ6PKW8mIe3Dg\"},\"oneTimePasswords\":{\"data\":\"ZtJ7qTQp1O8tc+VC0OLl4M2QCNGEMXVQXU1WDpT20e/PuJouRuNEnZ+qrNVJdq3GfwlUfnjIUnWxfEn2YBVbhKhwD8ERHwn1ZaJLjf18YAgl1CWGfcK4MtfCOXSoH7WFZ+Vq0gj43V7m0efAUU400cGcMUE5ETThNFGe/Fvu19diH1XhlMgQGk7d4tnAJOSpFj39wKzNK3Vm5ii0\"},\"version\":\"0.1\"}",
"maxNumberOfRecords": 100,
"statistics": "77hYFQnArAQV8a46SszqAIjH"
},
@@ -1705,5 +1705,97 @@ testData = {
}
}
},
+
+ // username: 'test', passphrase: 'test'
+ '9a984e219b07f9b645ef35f4de938b4741abe2e0b4adc88b40e9367170c91cc8': {
+ "accountInfo": {
+ "features": [
+ "UPDATE_CREDENTIALS",
+ "EDIT_CARD",
+ "CARD_DETAILS",
+ "ADD_CARD",
+ "DELETE_CARD",
+ "OFFLINE_COPY",
+ "LIST_CARDS"
+ ],
+ "paymentVerificationPending": false,
+ "currentSubscriptionType": "EARLY_ADOPTER",
+ "isExpiring": false,
+ "latestActiveLevel": "EARLY_ADOPTER",
+ "payments": [],
+ "featureSet": "FULL",
+ "latestActiveThreshold": "-1.00000000",
+ "referenceDate": "Fri, 03 April 2015 08:17:46 UTC",
+ "isExpired": false,
+ "expirationDate": "Mon, 01 January 4001 00:00:00 UTC"
+ },
+ s: '55a27b18e8fdf1fb5e5bcf859cfa50fcbc69c9a41f04e371606a86411a98f460',
+ v: '983a6c79e7d5d490c3f13645c49760180fca05cc677914bf60fee009ead5a65d',
+ version: '0.2',
+ maxNumberOfRecords: '100',
+ userDetails: '{"records":{"index":{"3f5cad41321c89a0570c310f8e994a13c39c83842660c540960586fa9f2d2fc0":"0"},"data":"cllv5EtmluxBR3AWjet3jfZsJZDUXFddl1hIO4285PJOUymk5VP8nxLGSkYxkrbwIKHxxSERdwhcSVeuz+QJLFzx4hP/wngSNJT3edxh9pwM+fUs8nJunyK1LNS1JatoaWOIobTV1DbotfvxGUQI5QIxvKA="},"directLogins":{"index":{},"data":"54KM7x3emxWZH4CQDLBj4SkT"},"preferences":{"data":"AwOQXmReKkLpp8qZa4zjaWcY"},"oneTimePasswords":{"data":"1FTEyUjZ/MS1Kp91l3j00WNnOel6EFQhAYyAhcr90ozYwu6UDqlKNKyp5f2ndVZS36ReoxXbzIUYUJoaQegdvic/aVfyU/drjqVA/Ta2S5ICR050ewTUBs5BebBQT2WAMzKhmhQoKvMNCJFpNhLhJ7sbevyAHX4lZbpBUz92hTQ9jtpTi2pZ7IBUFI3JPV71H0reIs8FFA+Ugx3UPVVq77famGm5mh4I0rjY68zVvqNvfB5APM9OKR+AM3jkSHUa1QEzCEObMndR8WfKEyXlYoEhnhr1UEra8v5INHpSacU8210="},"version":"0.1"}',
+ statistics: 'tmRcqihMK0YvsnFoMKH5F/rN',
+ userDetailsVersion: '0.3',
+ records: {
+ '3f5cad41321c89a0570c310f8e994a13c39c83842660c540960586fa9f2d2fc0': {
+ data: 'nlihNmY5UjnGFxilT5LoDRvdp5WoHausCTiulBY9/Fm82ZJCEZ0mwH96WzsnQ6zMvrZPFHAr1zGAQPr82/MOr7xTVILjbEP6MKq9rOyEDRhY/3CVQgJVWLPfwiL9ihw9jKkd7ea3eU/RSj7V0UQB1zXzEXFqw0FwQcpSuCOl5hkYPecydA==',
+ version: '0.3',
+ creationDate: 'Thu Oct 01 16:21:50 PDT 2009',
+ updateDate: 'Tue Feb 09 08:57:03 PST 2010',
+ accessDate: 'Tue Feb 09 08:57:03 PST 2010',
+ currentVersion: 'ac353e86f69528d21dad0b17d00bbfb3e56c954e2ba71d0d091c903880ba1479',
+ versions: {
+ 'c84928db21b880a53e7ba1e51eebc4acc4b2bffe66f30368b8b7070973f5912a': {
+ header: '####',
+ data: '0xBSvvZ3EJhc/PmW+8PtpaLSAOmGo4i0sG9Uwe9RGbzDILvna447spjscE3IxIucj1EuBagtc2hvIT/tgkA5IIp4fq2dSvk3RF8h5+hXPy877tEZkiQFpigyUHd27smpYDSYc0Bzv0DWx+eR72TFIjwbU/CXxKR3qqyzma+q1pqIf1GiaZWlM+Qv4xmKEkJnRd6NdOyTwuAQoZ9q0O9pHtkDQ5eKQlwvuZuL+8Tdhn/Mvr5HzIset+4wo5HNvmkLNAtonChJpWWnj6Gc8LTI+ImSjM5PVku/O/pJKuCYtMovzzEoNuFWrtdn9XESKF3yjtpKzuDxsNPrfX5Mz0iBZCefbWEtmqeABn3o5IgkpW/rhSmsyu8UcCoq91O+Yb9+8qlcsJyjcLECd+wgkpN926vcg/LMTWUW6Oq8x1a6mM8Bw1u9kT0eZGgKvu0CZpv3bpgVAWbfGW3aTM/0moWjHa3amJaL0DPjF8Pe9ujUDlqVEiPHznzfS+aVB+M3DtjfNEMysab77imICRs39cm6N/XAz+CNnSuP+W4WPfbZZ+3xWU4BgS7YXd/AM5rlI9sXNQQgzVmQttNo',
+ version: '0.3',
+ creationDate: 'Thu Oct 01 16:21:50 PDT 2009',
+ updateDate: 'Thu Oct 01 16:21:50 PDT 2009',
+ accessDate: 'Tue Feb 09 08:56:46 PST 2010'
+ },
+ 'ac353e86f69528d21dad0b17d00bbfb3e56c954e2ba71d0d091c903880ba1479': {
+ header: '####',
+ data: 'DGvb5Ur86eYxzJrqITEX5XqtGQT3QiaR66B2vw5F+6fo6cxWwCztnoEFyLUPzZGWqYMIIwA2rKaNBW0PxO1ehu7kyyQ/Tj42g64JiI4sVtb47W5/En2blTtkPe1FjpBiVW9ZaTDo4ia2wMzrBxTpUJ/NCT/Hn/xAyhZrafL+SN8U94F/FX6n5x98fV9KwrtjPpqeDEtfwheiEzws4qoPy1arXgnaECxOFnri7KpjwE8WVzwbU/WFOGPewKY4bLcba4pp1KjjObhVcYyj3K+GkSHeXyBDQqZi1grKvGOGvoZkFr7CDndseaXZ8og3A+NpqPcOzbqNst97gsky2RWc7bD2MfyAJ+QHzw5uDFCoKnAv5VH1HxwkShLb2QswQFf9/AGT3IDFi6ssvELk8xSMTgICV9jUwcTwkjkBa1Zpf4GTr6qrzen4YzNeK6XxgAqueKFbJoC8p0l1dBGBoH5zP0bkh3QENEFk67FT3aXUtInP7ZDX9Fnbe6qPkoztgmG7TukNUs2pk1Z/iJTVrUdLTVtwFI56LaTfRT8Ica+yFJc+1zoKeEg9LKcnbgfPY6WK58o1vXlhYb8j',
+ version: '0.3',
+ previousVersion: 'c84928db21b880a53e7ba1e51eebc4acc4b2bffe66f30368b8b7070973f5912a',
+ previousVersionKey: 'vy7sCLt6q3xaMngGjJxVLcYe60vW0LHXDVZGo7QWZCIOjK26Yn9JvpeAi4rKJ0/ggGGyYJncqHVr68u/VHuwJRUmlRb7JRk5k9gJOyuroyx5wg==',
+ creationDate: 'Tue Feb 09 08:57:03 PST 2010',
+ updateDate: 'Tue Feb 09 08:57:03 PST 2010',
+ accessDate: 'Tue Feb 09 08:57:03 PST 2010'
+ }
+ }
+ }
+ }
+ }
+ },
+
+ 'onetimePasswords': {
+ // OTP: 'yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg' (test)
+ 'c3664af5744319c6d3b874895f803df19cb0492acf27cb51912110d023ba9b38': { // reference
+ 'reference': "c3664af5744319c6d3b874895f803df19cb0492acf27cb51912110d023ba9b38",
+ 'user': "9a984e219b07f9b645ef35f4de938b4741abe2e0b4adc88b40e9367170c91cc8",
+ 'status': 'ACTIVE', // 1: 'ACTIVE', 2: 'REQUESTED', 3: 'USED', 4: 'DISABLED'
+ 'creation_date': "2010-02-09 17:57:14",
+ 'request_date': "4001-01-01 09:00:00",
+ 'usage_date': "4001-01-01 09:00:00",
+ 'key': "7074103e8ce35f813dbfb9c90665bd66ba3f5b1c9e4fa7a3d8aee679b7a38102",
+ "key_checksum": "53739910c97d74c80c6028eb3293ffbc652def811d9aa11725fefa3139dfcf29",
+ "data": "aN3rPl5rusBWXveUpjKqZNFLRPWJgH2Zs8HYQIaS65QObQFWFTZ8lRpBXFoPlvSOHcHQpEavZUuq31Y/2Y9sI/scvmZjQ8UEaT2GY9NiWJVswGq1W3AX8zs32jOgf1L5iBVxK54mfig2vXFoL8lG0JGGY1zHZXlkCvFPWuvwuCcH+uRE0oP3it0FvNFBV4+TiiGnGYgD9LPAVevzr/Doq5UXjn9VplVU+upeDTWY+7rlOdIOnZG/A9P9/dQtsyMb5c5zABD2FNpQQ40JDfG/nHt5WvfuWmPwUisW1181oBAd5BwF9LgVHdrhcSh8OuUL7rdbKTPTlWT826I6JNrFMzYGMY+NV6gllDvc6eCNrgI98ABhL1AoZNpAXXuCy4uQhEYmj+O71C/eXEDw+crMAXiCn6SZrbTM8GT5TQ5yF2NcxhudopO4qoILjnwEHZZ+i37kRDFg6oCBccCD67oHTPexUkSqnKIIYLli5CdmE7UdvX6LuVG/VYJKevOUgMf0UzHDPgvtlp3gsSo09TfNPOtoeAiogL6cAHb1seZwv+6E8Pz7WqkkOTsBQYeHIfPE0OnQPDtUjVRA5MTTX5zt6rCCNDKNbqfkPu8V4am26ykaWOSTXZYIcfnywkG0TfPzdAyQvyxdUyl/r1b36bclQFiXcRzkz9zS9xx14Il3QjYXRbIFWcwm/mEFltBFPdATKo5Zh+wcTLiFh56YEUVa9/h6oN8281X6zxH4DOw=",
+ 'version': "0.3"
+ },
+
+ // OTP: '8tyx g33t - zmnc wye1 - rw50 77r3 - y5fw zda9' (joe) - BROKEN
+ 'd799007a02896ab97665e1783f3a2f6b35a6ffbaaaec1b7ec8d872d6f33e6f0b' : {
+ "reference":"d799007a02896ab97665e1783f3a2f6b35a6ffbaaaec1b7ec8d872d6f33e6f0b",
+ "key":"9f09af59a7533b8a3e9d24754eab48ad0f638804c9c93df528b5edb898e6f41c",
+ "keyChecksum":"8bf28eb21866718f57a0f8ee5525793887d2234079a37f29b1eaa9d5ce0c014e",
+ "data":"irgna+/uEypFTkFPYldc15FmkMgXwpep9exT2zGxkcGLz8IllqZt6U17zTVP16UpQw4Pk0dRU2CcRpM42y3TXkLnxSgKC7R03nGBvpjG5Xegl/mlg/V9cxdJCiQ6J4P3G6UzMP5hMqcs9jfS1HyBekYkmwtngauelMjg6DTe5YDMfFiYiTjgEiN23FBETNlneZ6CRV4SBWSk5RHqjqAX5IHPgmoUytbj+uEI7Byi3C9TIdqPDuT0K0PEJMS2sASW/FZX8rz39Zsq6L8WheKk/C9KhZrmUOKHeZocdZMjTwZ8HeyRHOjlkwBoAfw9hmJyVz6Ngj7mWR5p6XKwNYSX9cEquV3YmEpH+8bLUoHnkBJiSbqMO4vpvaKq/Q/w4hrApOIk5FI+pp+yNeYeJG5QFbAbbwiC6MH4mIdIJVDCicEH2aoCsW7uTyC/GRQv9/fJEip4mCWbSPKlmHXdw6w9dTZRNOoq0BAo5EAISQ3WKhhq90FyGwW3d+CsKnJwNmLm/McgRLj19kT8x/eMFcik3fbWDL8a3icziCOxdq7sde6R5ShtMRFeR8DKV8yx0ZD4Ep/t2Nfo9WxWpeNi22DwUFme6niLZmUHhxwgJacgJc2HWhEVbcaEe5Upc6mwREvk+D4AuDjt7EtmEYl+NGGjTBRTv+uZEsh2mn/jmGeyhHMsgh8AtjwRHIfj1mbapxFAkpFA23aAUmB8Xij44El8Y1oRndiljWuTGBCTEqU=",
+ "version":"0.4",
+ "user":"f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674",
+ "status":"ACTIVE",
+ "creation_date":"2015-06-11 16:39:27",
+ "request_date":"4001-01-01 09:00:00",
+ "usage_date":"4001-01-01 09:00:00"
+ }
}
}
diff --git a/frontend/delta/js/xDate/xdate.js b/frontend/delta/js/xDate/xdate.js
new file mode 100644
index 0000000..b2dedc9
--- /dev/null
+++ b/frontend/delta/js/xDate/xdate.js
@@ -0,0 +1,859 @@
+/*
+
+Copyright 2008-2015 Clipperz Srl
+
+This file is part of Clipperz, the online password manager.
+For further information about its features and functionalities please
+refer to http://www.clipperz.com.
+
+* Clipperz is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+* Clipperz is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU Affero General Public License for more details.
+
+* You should have received a copy of the GNU Affero General Public
+ License along with Clipperz. If not, see http://www.gnu.org/licenses/.
+
+*/
+
+/**
+ * @preserve XDate v@VERSION
+ * Docs & Licensing: http://arshaw.com/xdate/
+ */
+
+/*
+ * Internal Architecture
+ * ---------------------
+ * An XDate wraps a native Date. The native Date is stored in the '0' property of the object.
+ * UTC-mode is determined by whether the internal native Date's toString method is set to
+ * Date.prototype.toUTCString (see getUTCMode).
+ *
+ */
+
+var XDate = (function(Date, Math, Array, undefined) {
+
+
+/** @const */ var FULLYEAR = 0;
+/** @const */ var MONTH = 1;
+/** @const */ var DATE = 2;
+/** @const */ var HOURS = 3;
+/** @const */ var MINUTES = 4;
+/** @const */ var SECONDS = 5;
+/** @const */ var MILLISECONDS = 6;
+/** @const */ var DAY = 7;
+/** @const */ var YEAR = 8;
+/** @const */ var WEEK = 9;
+/** @const */ var DAY_MS = 86400000;
+var ISO_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ss(.fff)";
+var ISO_FORMAT_STRING_TZ = ISO_FORMAT_STRING + "zzz";
+
+
+var methodSubjects = [
+ 'FullYear', // 0
+ 'Month', // 1
+ 'Date', // 2
+ 'Hours', // 3
+ 'Minutes', // 4
+ 'Seconds', // 5
+ 'Milliseconds', // 6
+ 'Day', // 7
+ 'Year' // 8
+];
+var subjectPlurals = [
+ 'Years', // 0
+ 'Months', // 1
+ 'Days' // 2
+];
+var unitsWithin = [
+ 12, // months in year
+ 31, // days in month (sort of)
+ 24, // hours in day
+ 60, // minutes in hour
+ 60, // seconds in minute
+ 1000, // milliseconds in second
+ 1 //
+];
+var formatStringRE = new RegExp(
+ "(([a-zA-Z])\\2*)|" + // 1, 2
+ "(\\(" + "(('.*?'|\\(.*?\\)|.)*?)" + "\\))|" + // 3, 4, 5 (allows for 1 level of inner quotes or parens)
+ "('(.*?)')" // 6, 7
+);
+var UTC = Date.UTC;
+var toUTCString = Date.prototype.toUTCString;
+var proto = XDate.prototype;
+
+
+
+// This makes an XDate look pretty in Firebug and Web Inspector.
+// It makes an XDate seem array-like, and displays [ .toString() ]
+proto.length = 1;
+proto.splice = Array.prototype.splice;
+
+
+
+
+/* Constructor
+---------------------------------------------------------------------------------*/
+
+// TODO: in future, I'd change signature for the constructor regarding the `true` utc-mode param. ~ashaw
+// I'd move the boolean to be the *first* argument. Still optional. Seems cleaner.
+// I'd remove it from the `xdate`, `nativeDate`, and `milliseconds` constructors.
+// (because you can simply call .setUTCMode(true) after)
+// And I'd only leave it for the y/m/d/h/m/s/m and `dateString` constructors
+// (because those are the only constructors that need it for DST-gap data-loss reasons)
+// Should do this for 1.0
+
+function XDate() {
+ return init(
+ (this instanceof XDate) ? this : new XDate(),
+ arguments
+ );
+}
+
+
+function init(xdate, args) {
+ var len = args.length;
+ var utcMode;
+ if (isBoolean(args[len-1])) {
+ utcMode = args[--len];
+ args = slice(args, 0, len);
+ }
+ if (!len) {
+ xdate[0] = new Date();
+ }
+ else if (len == 1) {
+ var arg = args[0];
+ if (arg instanceof Date || isNumber(arg)) {
+ xdate[0] = new Date(+arg);
+ }
+ else if (arg instanceof XDate) {
+ xdate[0] = _clone(arg);
+ }
+ else if (isString(arg)) {
+ xdate[0] = new Date(0);
+ xdate = parse(arg, utcMode || false, xdate);
+ }
+ }
+ else {
+ xdate[0] = new Date(UTC.apply(Date, args));
+ if (!utcMode) {
+ xdate[0] = coerceToLocal(xdate[0]);
+ }
+ }
+ if (isBoolean(utcMode)) {
+ setUTCMode(xdate, utcMode);
+ }
+ return xdate;
+}
+
+
+
+/* UTC Mode Methods
+---------------------------------------------------------------------------------*/
+
+
+proto.getUTCMode = methodize(getUTCMode);
+function getUTCMode(xdate) {
+ return xdate[0].toString === toUTCString;
+};
+
+
+proto.setUTCMode = methodize(setUTCMode);
+function setUTCMode(xdate, utcMode, doCoercion) {
+ if (utcMode) {
+ if (!getUTCMode(xdate)) {
+ if (doCoercion) {
+ xdate[0] = coerceToUTC(xdate[0]);
+ }
+ xdate[0].toString = toUTCString;
+ }
+ }else{
+ if (getUTCMode(xdate)) {
+ if (doCoercion) {
+ xdate[0] = coerceToLocal(xdate[0]);
+ }else{
+ xdate[0] = new Date(+xdate[0]);
+ }
+ // toString will have been cleared
+ }
+ }
+ return xdate; // for chaining
+}
+
+
+proto.getTimezoneOffset = function() {
+ if (getUTCMode(this)) {
+ return 0;
+ }else{
+ return this[0].getTimezoneOffset();
+ }
+};
+
+
+
+/* get / set / add / diff Methods (except for week-related)
+---------------------------------------------------------------------------------*/
+
+
+each(methodSubjects, function(subject, fieldIndex) {
+
+ proto['get' + subject] = function() {
+ return _getField(this[0], getUTCMode(this), fieldIndex);
+ };
+
+ if (fieldIndex != YEAR) { // because there is no getUTCYear
+
+ proto['getUTC' + subject] = function() {
+ return _getField(this[0], true, fieldIndex);
+ };
+
+ }
+
+ if (fieldIndex != DAY) { // because there is no setDay or setUTCDay
+ // and the add* and diff* methods use DATE instead
+
+ proto['set' + subject] = function(value) {
+ _set(this, fieldIndex, value, arguments, getUTCMode(this));
+ return this; // for chaining
+ };
+
+ if (fieldIndex != YEAR) { // because there is no setUTCYear
+ // and the add* and diff* methods use FULLYEAR instead
+
+ proto['setUTC' + subject] = function(value) {
+ _set(this, fieldIndex, value, arguments, true);
+ return this; // for chaining
+ };
+
+ proto['add' + (subjectPlurals[fieldIndex] || subject)] = function(delta, preventOverflow) {
+ _add(this, fieldIndex, delta, preventOverflow);
+ return this; // for chaining
+ };
+
+ proto['diff' + (subjectPlurals[fieldIndex] || subject)] = function(otherDate) {
+ return _diff(this, otherDate, fieldIndex);
+ };
+
+ }
+
+ }
+
+});
+
+
+function _set(xdate, fieldIndex, value, args, useUTC) {
+ var getField = curry(_getField, xdate[0], useUTC);
+ var setField = curry(_setField, xdate[0], useUTC);
+ var expectedMonth;
+ var preventOverflow = false;
+ if (args.length == 2 && isBoolean(args[1])) {
+ preventOverflow = args[1];
+ args = [ value ];
+ }
+ if (fieldIndex == MONTH) {
+ expectedMonth = (value % 12 + 12) % 12;
+ }else{
+ expectedMonth = getField(MONTH);
+ }
+ setField(fieldIndex, args);
+ if (preventOverflow && getField(MONTH) != expectedMonth) {
+ setField(MONTH, [ getField(MONTH) - 1 ]);
+ setField(DATE, [ getDaysInMonth(getField(FULLYEAR), getField(MONTH)) ]);
+ }
+}
+
+
+function _add(xdate, fieldIndex, delta, preventOverflow) {
+ delta = Number(delta);
+ var intDelta = Math.floor(delta);
+ xdate['set' + methodSubjects[fieldIndex]](
+ xdate['get' + methodSubjects[fieldIndex]]() + intDelta,
+ preventOverflow || false
+ );
+ if (intDelta != delta && fieldIndex < MILLISECONDS) {
+ _add(xdate, fieldIndex+1, (delta-intDelta)*unitsWithin[fieldIndex], preventOverflow);
+ }
+}
+
+
+function _diff(xdate1, xdate2, fieldIndex) { // fieldIndex=FULLYEAR is for years, fieldIndex=DATE is for days
+ xdate1 = xdate1.clone().setUTCMode(true, true);
+ xdate2 = XDate(xdate2).setUTCMode(true, true);
+ var v = 0;
+ if (fieldIndex == FULLYEAR || fieldIndex == MONTH) {
+ for (var i=MILLISECONDS, methodName; i>=fieldIndex; i--) {
+ v /= unitsWithin[i];
+ v += _getField(xdate2, false, i) - _getField(xdate1, false, i);
+ }
+ if (fieldIndex == MONTH) {
+ v += (xdate2.getFullYear() - xdate1.getFullYear()) * 12;
+ }
+ }
+ else if (fieldIndex == DATE) {
+ var clear1 = xdate1.toDate().setUTCHours(0, 0, 0, 0); // returns an ms value
+ var clear2 = xdate2.toDate().setUTCHours(0, 0, 0, 0); // returns an ms value
+ v = Math.round((clear2 - clear1) / DAY_MS) + ((xdate2 - clear2) - (xdate1 - clear1)) / DAY_MS;
+ }
+ else {
+ v = (xdate2 - xdate1) / [
+ 3600000, // milliseconds in hour
+ 60000, // milliseconds in minute
+ 1000, // milliseconds in second
+ 1 //
+ ][fieldIndex - 3];
+ }
+ return v;
+}
+
+
+
+/* Week Methods
+---------------------------------------------------------------------------------*/
+
+
+proto.getWeek = function() {
+ return _getWeek(curry(_getField, this, false));
+};
+
+
+proto.getUTCWeek = function() {
+ return _getWeek(curry(_getField, this, true));
+};
+
+
+proto.setWeek = function(n, year) {
+ _setWeek(this, n, year, false);
+ return this; // for chaining
+};
+
+
+proto.setUTCWeek = function(n, year) {
+ _setWeek(this, n, year, true);
+ return this; // for chaining
+};
+
+
+proto.addWeeks = function(delta) {
+ return this.addDays(Number(delta) * 7);
+};
+
+
+proto.diffWeeks = function(otherDate) {
+ return _diff(this, otherDate, DATE) / 7;
+};
+
+
+function _getWeek(getField) {
+ return getWeek(getField(FULLYEAR), getField(MONTH), getField(DATE));
+}
+
+
+function getWeek(year, month, date) {
+ var d = new Date(UTC(year, month, date));
+ var week1 = getWeek1(
+ getWeekYear(year, month, date)
+ );
+ return Math.floor(Math.round((d - week1) / DAY_MS) / 7) + 1;
+}
+
+
+function getWeekYear(year, month, date) { // get the year that the date's week # belongs to
+ var d = new Date(UTC(year, month, date));
+ if (d < getWeek1(year)) {
+ return year - 1;
+ }
+ else if (d >= getWeek1(year + 1)) {
+ return year + 1;
+ }
+ return year;
+}
+
+
+function getWeek1(year) { // returns Date of first week of year, in UTC
+ var d = new Date(UTC(year, 0, 4));
+ d.setUTCDate(d.getUTCDate() - (d.getUTCDay() + 6) % 7); // make it Monday of the week
+ return d;
+}
+
+
+function _setWeek(xdate, n, year, useUTC) {
+ var getField = curry(_getField, xdate, useUTC);
+ var setField = curry(_setField, xdate, useUTC);
+
+ if (year === undefined) {
+ year = getWeekYear(
+ getField(FULLYEAR),
+ getField(MONTH),
+ getField(DATE)
+ );
+ }
+
+ var week1 = getWeek1(year);
+ if (!useUTC) {
+ week1 = coerceToLocal(week1);
+ }
+
+ xdate.setTime(+week1);
+ setField(DATE, [ getField(DATE) + (n-1) * 7 ]); // would have used xdate.addUTCWeeks :(
+ // n-1 because n is 1-based
+}
+
+
+
+/* Parsing
+---------------------------------------------------------------------------------*/
+
+
+XDate.parsers = [
+ parseISO
+];
+
+
+XDate.parse = function(str) {
+ return +XDate(''+str);
+};
+
+
+function parse(str, utcMode, xdate) {
+ var parsers = XDate.parsers;
+ var i = 0;
+ var res;
+ for (; i=0; i--) {
+ uniqueness.push(getField(i));
+ }
+ }
+ return getField(fieldIndex);
+ }
+
+ return _format(xdate, formatString, getFieldAndTrace, getSetting, useUTC);
+}
+
+
+function _format(xdate, formatString, getField, getSetting, useUTC) {
+ var m;
+ var subout;
+ var out = '';
+ while (m = formatString.match(formatStringRE)) {
+ out += formatString.substr(0, m.index);
+ if (m[1]) { // consecutive alphabetic characters
+ out += processTokenString(xdate, m[1], getField, getSetting, useUTC);
+ }
+ else if (m[3]) { // parenthesis
+ subout = _format(xdate, m[4], getField, getSetting, useUTC);
+ if (parseInt(subout.replace(/\D/g, ''), 10)) { // if any of the numbers are non-zero. or no numbers at all
+ out += subout;
+ }
+ }
+ else { // else if (m[6]) { // single quotes
+ out += m[7] || "'"; // if inner is blank, meaning 2 consecutive quotes = literal single quote
+ }
+ formatString = formatString.substr(m.index + m[0].length);
+ }
+ return out + formatString;
+}
+
+
+function processTokenString(xdate, tokenString, getField, getSetting, useUTC) {
+ var end = tokenString.length;
+ var replacement;
+ var out = '';
+ while (end > 0) {
+ replacement = getTokenReplacement(xdate, tokenString.substr(0, end), getField, getSetting, useUTC);
+ if (replacement !== undefined) {
+ out += replacement;
+ tokenString = tokenString.substr(end);
+ end = tokenString.length;
+ }else{
+ end--;
+ }
+ }
+ return out + tokenString;
+}
+
+
+function getTokenReplacement(xdate, token, getField, getSetting, useUTC) {
+ var formatter = XDate.formatters[token];
+ if (isString(formatter)) {
+ return _format(xdate, formatter, getField, getSetting, useUTC);
+ }
+ else if (isFunction(formatter)) {
+ return formatter(xdate, useUTC || false, getSetting);
+ }
+ switch (token) {
+ case 'fff' : return zeroPad(getField(MILLISECONDS), 3);
+ case 's' : return getField(SECONDS);
+ case 'ss' : return zeroPad(getField(SECONDS));
+ case 'm' : return getField(MINUTES);
+ case 'mm' : return zeroPad(getField(MINUTES));
+ case 'h' : return getField(HOURS) % 12 || 12;
+ case 'hh' : return zeroPad(getField(HOURS) % 12 || 12);
+ case 'H' : return getField(HOURS);
+ case 'HH' : return zeroPad(getField(HOURS));
+ case 'd' : return getField(DATE);
+ case 'dd' : return zeroPad(getField(DATE));
+ case 'ddd' : return getSetting('dayNamesShort')[getField(DAY)] || '';
+ case 'dddd' : return getSetting('dayNames')[getField(DAY)] || '';
+ case 'M' : return getField(MONTH) + 1;
+ case 'MM' : return zeroPad(getField(MONTH) + 1);
+ case 'MMM' : return getSetting('monthNamesShort')[getField(MONTH)] || '';
+ case 'MMMM' : return getSetting('monthNames')[getField(MONTH)] || '';
+ case 'yy' : return (getField(FULLYEAR)+'').substring(2);
+ case 'yyyy' : return getField(FULLYEAR);
+ case 't' : return _getDesignator(getField, getSetting).substr(0, 1).toLowerCase();
+ case 'tt' : return _getDesignator(getField, getSetting).toLowerCase();
+ case 'T' : return _getDesignator(getField, getSetting).substr(0, 1);
+ case 'TT' : return _getDesignator(getField, getSetting);
+ case 'z' :
+ case 'zz' :
+ case 'zzz' : return useUTC ? 'Z' : _getTZString(xdate, token);
+ case 'w' : return _getWeek(getField);
+ case 'ww' : return zeroPad(_getWeek(getField));
+ case 'S' :
+ var d = getField(DATE);
+ if (d > 10 && d < 20) return 'th';
+ return ['st', 'nd', 'rd'][d % 10 - 1] || 'th';
+ }
+}
+
+
+function _getTZString(xdate, token) {
+ var tzo = xdate.getTimezoneOffset();
+ var sign = tzo < 0 ? '+' : '-';
+ var hours = Math.floor(Math.abs(tzo) / 60);
+ var minutes = Math.abs(tzo) % 60;
+ var out = hours;
+ if (token == 'zz') {
+ out = zeroPad(hours);
+ }
+ else if (token == 'zzz') {
+ out = zeroPad(hours) + ':' + zeroPad(minutes);
+ }
+ return sign + out;
+}
+
+
+function _getDesignator(getField, getSetting) {
+ return getField(HOURS) < 12 ? getSetting('amDesignator') : getSetting('pmDesignator');
+}
+
+
+
+/* Misc Methods
+---------------------------------------------------------------------------------*/
+
+
+each(
+ [ // other getters
+ 'getTime',
+ 'valueOf',
+ 'toDateString',
+ 'toTimeString',
+ 'toLocaleString',
+ 'toLocaleDateString',
+ 'toLocaleTimeString',
+ 'toJSON'
+ ],
+ function(methodName) {
+ proto[methodName] = function() {
+ return this[0][methodName]();
+ };
+ }
+);
+
+
+proto.setTime = function(t) {
+ this[0].setTime(t);
+ return this; // for chaining
+};
+
+
+proto.valid = methodize(valid);
+function valid(xdate) {
+ return !isNaN(+xdate[0]);
+}
+
+
+proto.clone = function() {
+ return new XDate(this);
+};
+
+
+proto.clearTime = function() {
+ return this.setHours(0, 0, 0, 0); // will return an XDate for chaining
+};
+
+
+proto.toDate = function() {
+ return new Date(+this[0]);
+};
+
+
+
+/* Misc Class Methods
+---------------------------------------------------------------------------------*/
+
+
+XDate.now = function() {
+ return +new Date();
+};
+
+
+XDate.today = function() {
+ return new XDate().clearTime();
+};
+
+
+XDate.UTC = UTC;
+
+
+XDate.getDaysInMonth = getDaysInMonth;
+
+
+
+/* Internal Utilities
+---------------------------------------------------------------------------------*/
+
+
+function _clone(xdate) { // returns the internal Date object that should be used
+ var d = new Date(+xdate[0]);
+ if (getUTCMode(xdate)) {
+ d.toString = toUTCString;
+ }
+ return d;
+}
+
+
+function _getField(d, useUTC, fieldIndex) {
+ return d['get' + (useUTC ? 'UTC' : '') + methodSubjects[fieldIndex]]();
+}
+
+
+function _setField(d, useUTC, fieldIndex, args) {
+ d['set' + (useUTC ? 'UTC' : '') + methodSubjects[fieldIndex]].apply(d, args);
+}
+
+
+
+/* Date Math Utilities
+---------------------------------------------------------------------------------*/
+
+
+function coerceToUTC(date) {
+ return new Date(UTC(
+ date.getFullYear(),
+ date.getMonth(),
+ date.getDate(),
+ date.getHours(),
+ date.getMinutes(),
+ date.getSeconds(),
+ date.getMilliseconds()
+ ));
+}
+
+
+function coerceToLocal(date) {
+ return new Date(
+ date.getUTCFullYear(),
+ date.getUTCMonth(),
+ date.getUTCDate(),
+ date.getUTCHours(),
+ date.getUTCMinutes(),
+ date.getUTCSeconds(),
+ date.getUTCMilliseconds()
+ );
+}
+
+
+function getDaysInMonth(year, month) {
+ return 32 - new Date(UTC(year, month, 32)).getUTCDate();
+}
+
+
+
+/* General Utilities
+---------------------------------------------------------------------------------*/
+
+
+function methodize(f) {
+ return function() {
+ return f.apply(undefined, [this].concat(slice(arguments)));
+ };
+}
+
+
+function curry(f) {
+ var firstArgs = slice(arguments, 1);
+ return function() {
+ return f.apply(undefined, firstArgs.concat(slice(arguments)));
+ };
+}
+
+
+function slice(a, start, end) {
+ return Array.prototype.slice.call(
+ a,
+ start || 0, // start and end cannot be undefined for IE
+ end===undefined ? a.length : end
+ );
+}
+
+
+function each(a, f) {
+ for (var i=0; i div {
@include flex(auto);
- @include overflow-auto;
+ @include overflow-auto();
// overflow: auto;
}
@@ -233,6 +233,23 @@ input {
height: 100%;
// background-color: rgba( 0, 0, 0, 0.95);
background-color: black;
+
+ .extraFeature {
+ @include flexbox();
+ @include flex-direction(column);
+ height: 100%;
+
+ .header {
+ @include flex(none);
+ padding: 20px;
+ }
+ .content {
+ @include flex(auto);
+// height: 100%;
+ padding: 0px 20px 20px 20px;
+ @include overflow-auto();
+ }
+ }
}
}
@@ -444,7 +461,7 @@ div.cardContent {
@include flex(auto);
// overflow-y: scroll;
// overflow:auto;
- @include overflow-auto;
+ @include overflow-auto();
}
}
}
diff --git a/frontend/delta/scss/style/settingsPanel.scss b/frontend/delta/scss/style/settingsPanel.scss
index 8a8ce7a..32fd62a 100644
--- a/frontend/delta/scss/style/settingsPanel.scss
+++ b/frontend/delta/scss/style/settingsPanel.scss
@@ -89,7 +89,7 @@ refer to http://www.clipperz.com.
&.offlineCopy {
cursor: default;
- }
+ }
}
&.open {
@@ -170,19 +170,25 @@ refer to http://www.clipperz.com.
.extraFeatureContent {
border-right: 1px solid #222;
color: white;
+// padding: 20px;
header {
display: none;
}
.extraFeature {
- padding: 20px;
+ .header {
+// padding-bottom: 20px;
+
+ h1 {
+ font-size: 20pt;
+ }
- h1 {
- font-size: 20pt;
- padding-bottom: 20px;
+ p {
+ padding: 10px 0px;
+ }
}
-
+
form {
label {
@@ -209,15 +215,19 @@ refer to http://www.clipperz.com.
p {
@include flexbox;
@include flex-direction(row);
+ padding-top: 8px;
input {
width: 30px;
@include flex(auto);
}
-
- span {
+
+ label {
@include flex(auto);
font-size: 12pt;
+ display: block;
+ cursor: pointer;
+ line-height: 1.5em;
}
}
@@ -256,7 +266,7 @@ refer to http://www.clipperz.com.
color: white;
li {
- padding-bottom: 40px;
+ padding-bottom: 30px;
}
}
@@ -265,8 +275,9 @@ refer to http://www.clipperz.com.
}
.description {
- max-width: 500px;
+// max-width: 500px;
padding: 10px 0px 20px 0px;
+// padding-bottom: 20px;
p {
font-size: 10pt;
@@ -277,11 +288,16 @@ refer to http://www.clipperz.com.
em {
text-decoration: underline;
}
+
+ &.warning {
+ font-weight: bold;
+ color: white;
+ }
}
}
.button {
- display: inline;
+ display: inline-block;
color: white;
background-color: $main-color;
@@ -289,14 +305,462 @@ refer to http://www.clipperz.com.
font-size: 14pt;
border: 1px solid white;
- padding: 6px 10px;
+ padding: 10px 14px;
&:after {
};
+
+ &.disabled {
+ background-color: #c0c0c0;
+ cursor: default;
+ }
}
}
+ .OTP {
+ height: 100%;
+
+ .header {
+ .description {
+ padding-bottom: 0px;
+
+ p {
+ margin-bottom: 0px;
+ padding-bottom: 0px;
+ }
+ }
+ }
+
+ .actions {
+ padding-left: 9px;
+ padding-top: 6px;
+
+ a {
+ @include icon-font();
+ cursor: pointer;
+ font-size: 18pt;
+ line-height: 1.1em;
+
+ &:hover {
+ color: green;
+ };
+ }
+ }
+ .selectMenu {
+ margin-top: 1em;
+
+ li {
+ display: inline-block;
+ margin-right: 1em;
+ padding:1em 0;
+
+ // a {
+// text-decoration: underline;
+// cursor: pointer;
+// }
+ }
+ }
+
+ .otpList {
+
+ .otpDetail {
+ $detailPadding: 5px;
+ $detailMargin: 4px;
+ $labelPadding: 5px;
+
+ @include flexbox;
+ @include flex-direction(row);
+
+ border: 1px solid #222;
+ @include border-radius(5px);
+
+ padding: $detailPadding 0;
+ margin: $detailMargin 0;
+
+ .otpAction {
+ width: 40px;
+ text-align: center;
+// @include align-self(center);
+
+ a {
+ @include icon-font();
+ cursor: pointer;
+ font-size: 16pt;
+ line-height: 1.1em;
+
+ &:hover {
+ color: red;
+ };
+ }
+ }
+
+ .otpInfo {
+ .otpPassword {
+ font-size: 14pt;
+ line-height: 1.3em;
+ @include user-select(text);
+ }
+
+ .otpLabel {
+
+ span {
+ font-size: 12pt;
+ color: gray;
+ padding: 4px 0px 4px 0px;
+ line-height: 1.3em;
+ cursor:pointer;
+ display: block;
+ }
+
+ input {
+ font-size: 12pt;
+ color: gray;
+ width: 100%;
+ border: 0px;
+ padding: 2px;
+ padding-left: 0px;
+ margin: 0px;
+ margin-bottom: 1px;
+ background-color: #333;
+ }
+// .undefinedLabel {
+// color: gray;
+// }
+ }
+
+ .otpStatusInfo {
+ font-size: 8pt;
+ color: gray;
+
+ span {
+ padding-right: 10px;
+ }
+ }
+ }
+
+ &.REQUESTED, &.USED {
+ background-color: #222;
+
+ .otpPassword {
+// color: gray;
+ }
+ }
+
+ }
+ }
+ .button {
+ margin:1em 1em 0 0;
+ }
+
+ table {
+ tr {
+ td {
+ a {
+ font-size: small;
+ padding: 0 1em;
+ text-decoration: underline;
+ cursor: pointer;
+ }
+ }
+ }
+ }
+ }
+
+ .dataImport {
+
+ .content {
+ display: block;
+ height: 100%;
+ @include flexbox;
+ @include flex-direction(column);
+
+ ul.stepNavbar {
+ @include flex(none);
+ padding-top: 5px;
+ padding-bottom: 5px;
+ text-align: center;
+ font-size: 24pt;
+
+ &.Input {
+ display: none;
+ }
+
+ li {
+ display: inline-block;
+ padding: 0px;
+ padding-right: 10px;
+// margin-right:1em;
+
+ &.disabled {
+ color: gray;
+ }
+
+ &.active {
+// text-decoration: underline;
+ }
+ }
+ }
+
+ .step {
+ @include flex(auto);
+ @include overflow-auto();
+
+ &.Input {
+
+ .description {
+
+ p {
+ width: 100%;
+ }
+ }
+
+ form {
+ .dropArea {
+ width: calc(100% - 6px);
+ text-align: center;
+ height: inherit;
+ line-height: 2em;
+
+ border: 3px dashed white;
+ background: black;
+ }
+
+ p {
+ margin: 10px 50%;
+
+ &.error {
+ color: red;
+ font-size: 10pt;
+ font-style: italic;
+ margin: 0px 0px 10px 0px;
+ }
+ }
+
+
+ textarea {
+ width:100%;
+ min-height:100px;
+ display: block;
+ margin: 1em 0;
+ border: 0;
+ }
+ }
+ }
+
+ &.Preview {
+ li.card {
+ @include flexbox;
+ @include flex-direction(row);
+ padding-top: 15px;
+ padding-bottom: 0px;
+ border-bottom: 1px solid #333;
+
+ &.archived {
+ background-color: #333;
+ }
+
+ input {
+ width: 30px;
+ margin-top: 6px;
+ @include flex(none);
+ }
+
+ div.cardContent {
+ @include flex(auto);
+ @include flexbox;
+ @include flex-direction(column);
+ height: auto;
+
+ h3 {
+ font-size: 24pt;
+ padding-bottom: 6px;
+ }
+
+ ul.tagList {
+ li {
+ display: inline-block;
+ padding-right: 10px;
+ padding-bottom: 5px;
+
+ &:before {
+ content: 'tag';
+ @include icon-font();
+ font-size: 10pt;
+ padding-right: 5px;
+ line-height: 28px;
+ color: #ccc;
+ }
+ }
+ }
+
+ dl {
+ dt {
+ font-size: 12pt;
+ color: gray;
+ line-height: 16pt;
+ }
+
+ dd {
+ font-size: 16pt;
+ color: white;
+ line-height: 24pt;
+ padding-bottom: 6pt;
+
+ &.PASSWORD {
+ font-family: clipperz-password;
+// color: red;
+ }
+ }
+ }
+
+ p {
+ font-size: 10pt;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+ }
+ }
+ }
+
+ &.Import {
+ h5 {
+ padding-bottom: 15px;
+ }
+ }
+ table.csvTable {
+ width: 100%;
+ color: white;
+ border-collapse: collapse;
+
+ thead {
+ background-color: gray;
+
+ th {
+ align: left;
+ }
+ }
+
+ tbody {
+ td {
+ align: right;
+ }
+ }
+
+ td, th {
+ border: 1px solid #999;
+ padding: 0.5rem;
+
+ &.PASSWORD {
+ font-family: clipperz-password;
+ font-size: 14.9pt;
+ line-height: 10pt;
+ }
+ }
+
+ th {
+ background-color: #666;
+
+ &.title {
+ background-color: #888;
+ }
+
+ &.notes {
+ background-color: #aaa;
+ }
+
+ input {
+ color: white;
+ border: 0px;
+ padding: 0px;
+ font-size: 12pt;
+ font-weight: bold;
+ background-color: inherit;
+ }
+ }
+ }
+
+ }
+
+ .buttons {
+ @include flex(none);
+ text-align: center;
+ padding-top: 10px;
+
+ &.Input {
+ .button.back {
+ visibility: hidden;
+ }
+ }
+
+ &.Import {
+ .button.next {
+ visibility: hidden;
+ }
+ }
+
+ .button {
+// border: 0px;
+ margin: 0px 5px;
+ span {
+ display: none;
+ }
+
+ &.back {
+ background-color: #c0c0c0;
+ &:before {
+ content: '<<';
+ }
+ }
+
+ &.next {
+
+ &.DISABLED {
+ background-color: #d3d3d3;
+ }
+
+ &:after {
+ content: '>>';
+ }
+ }
+ }
+ }
+/*
+ .csvTable {
+ background: white;
+ margin: 1em 0;
+ }
+
+
+ .button {
+ margin-right:1em;
+ }
+
+ .jsonPreview {
+ width: 100%;
+ height:80%;
+ overflow: auto;
+ margin-top:1em;
+
+ h3 {
+ font-weight:bold;
+ }
+
+ ul {
+ margin-bottom:1em;
+ padding-left:1em;
+
+ li {
+ .label {
+ font-weight:bold;
+ }
+ }
+ }
+ }
+*/
+ }
+ }
+
/*
.changePassphraseForm {
label {
@@ -327,11 +791,15 @@ refer to http://www.clipperz.com.
}
*/
-
+ form {
+ input.valid + .invalidMsg, input.empty + .invalidMsg, input:focus + .invalidMsg, input.invalid:focus + .invalidMsg {
+ visibility: hidden;
+ }
+
+ }
}
-}
-
-
+}
+
.mainPage.narrow {
#extraFeaturesPanel {
.extraFeatureContent {
diff --git a/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html b/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html
index 6b5a447..1f1194f 100644
--- a/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html
+++ b/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html
@@ -41,6 +41,7 @@ refer to http://www.clipperz.com.
+
diff --git a/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js b/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js
index 611e4c6..512f120 100644
--- a/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js
+++ b/frontend/delta/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js
@@ -95,8 +95,8 @@ var tests = {
newPassphrase = 'tset';
proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
- user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
- user2 = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return otp;}});
+ user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction: MochiKit.Base.partial(MochiKit.Async.succeed, 'test')});
+ user2 = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction: MochiKit.Base.partial(MochiKit.Async.succeed, otp)});
deferredResult = new Clipperz.Async.Deferred("changePassphraseAndLoginUsingOtp_test", someTestArgs);
deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_with_otps']);
@@ -107,7 +107,7 @@ var tests = {
deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
deferredResult.addTest(1, "This account has only a single card");
- deferredResult.addMethod(user, 'changePassphrase', newPassphrase);
+ deferredResult.addMethod(user, 'changePassphrase', MochiKit.Base.partial(MochiKit.Async.succeed, newPassphrase));
deferredResult.addMethod(user, 'logout');
deferredResult.addMethod(user2, 'login');
@@ -181,7 +181,145 @@ var tests = {
return deferredResult;
},
- //-------------------------------------------------------------------------
+ 'loginWithANewOTP_test': function(someTestArgs) {
+ var deferredResult;
+ var proxy;
+ var user;
+ var user2;
+ var user3;
+ var username;
+ var passphrase;
+
+ username = "1";
+ passphrase = "1";
+
+ proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
+ user = new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:MochiKit.Base.partial(MochiKit.Async.succeed, passphrase)});
+ user2 = new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return "WILL_BE_CHANGED_WITH_OTP";}});
+ user3 = new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return "WILL_BE_CHANGED_WITH_OTP";}});
+
+ deferredResult = new Clipperz.Async.Deferred("loginUserWithANewOTP_test", someTestArgs);
+ deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['1/1_data']);
+
+ deferredResult.addMethod(user, 'login');
+ deferredResult.addMethod(user, 'getRecords');
+ deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
+ deferredResult.addTest(1, "This account has one single card");
+
+ deferredResult.addMethod(user, 'getOneTimePasswords');
+ deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
+ deferredResult.addTest(0, "There should be no OTPs initially");
+
+ deferredResult.addMethod(user, 'createNewOTP');
+ deferredResult.addMethod(user, 'getOneTimePasswords');
+ deferredResult.setValue('otpList');
+ deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
+ deferredResult.addTest(1, "There should be one single OTP now");
+
+ deferredResult.getValue('otpList');
+ deferredResult.addCallback(function(aList) {return MochiKit.Base.partial(MochiKit.Async.succeed, aList[0].password()); });
+ deferredResult.addMethod(user2, 'setPassphraseFunction'),
+ deferredResult.addMethod(user, 'logout');
+ deferredResult.addMethod(user2, 'login');
+
+ deferredResult.addMethod(user2, 'getRecords');
+ deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
+ deferredResult.addTest(1, "This account has one single card");
+
+ deferredResult.getValue('otpList');
+ deferredResult.addCallback(function(aList) {return MochiKit.Base.partial(MochiKit.Async.succeed, aList[0].password()); });
+ deferredResult.addMethod(user3, 'setPassphraseFunction'),
+ deferredResult.addMethod(user2, 'logout');
+ deferredResult.addMethod(user3, 'login');
+ deferredResult.shouldFail("Second login with the same OTP should fail");
+
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
+ 'deleteOTP_test': function(someTestArgs) {
+ var deferredResult;
+ var proxy;
+ var user;
+ var user2;
+ var username;
+ var passphrase;
+
+ username = "1";
+ passphrase = "1";
+
+ proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
+ user = new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:MochiKit.Base.partial(MochiKit.Async.succeed, passphrase)});
+ user2 = new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return "WILL_BE_CHANGED_WITH_OTP";}});
+
+ deferredResult = new Clipperz.Async.Deferred("deleteOTP_test", someTestArgs);
+ deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['1/1_data']);
+
+ deferredResult.addMethod(user, 'login');
+ deferredResult.addMethod(user, 'getOneTimePasswords');
+ deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
+ deferredResult.addTest(0, "There should be no OTPs initially");
+
+ deferredResult.addMethod(user, 'createNewOTP');
+ deferredResult.addMethod(user, 'createNewOTP');
+ deferredResult.addMethod(user, 'createNewOTP');
+ deferredResult.addMethod(user, 'createNewOTP');
+ deferredResult.addMethod(user, 'createNewOTP');
+ deferredResult.addMethod(user, 'createNewOTP');
+
+ deferredResult.addMethod(user, 'getOneTimePasswords');
+ deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
+ deferredResult.addTest(6, "There should be 6 OTPs now");
+
+ deferredResult.addMethod(user, 'getOneTimePasswords');
+ deferredResult.addCallback(function(aList) {return [aList[0].reference(), aList[1].reference()];});
+ deferredResult.addMethod(user, 'deleteOTPs');
+ deferredResult.addMethod(user, 'getOneTimePasswords');
+ deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
+ deferredResult.addTest(4, "There should be 4 OTPs now");
+
+ deferredResult.addMethod(user, 'getOneTimePasswords');
+ deferredResult.addCallback(function(aList) {return [aList[0].reference(), aList[1].reference(), aList[2].reference()];});
+ deferredResult.addMethod(user, 'deleteOTPs');
+ deferredResult.addMethod(user, 'getOneTimePasswords');
+ deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
+ deferredResult.addTest(1, "There should be 1 OTP now");
+
+ deferredResult.addMethod(user, 'getOneTimePasswords');
+ deferredResult.addCallback(function(aList) {return MochiKit.Base.partial(MochiKit.Async.succeed, aList[0].password()); });
+ deferredResult.addMethod(user2, 'setPassphraseFunction');
+ deferredResult.addMethod(user, 'logout');
+ deferredResult.addMethod(user2, 'login');
+ deferredResult.addMethod(user2, 'getRecords');
+ deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
+ deferredResult.addTest(1, "Login with the remaining OTP should work");
+
+ deferredResult.addMethod(user2, 'getOneTimePasswords');
+ deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
+ deferredResult.addTest(1, "There should be 1 remaining OTP now");
+
+ deferredResult.collectResults({
+ 'oneTimePasswords': MochiKit.Base.method(user2, 'getOneTimePasswords'),
+ 'oneTimePasswordsDetails': MochiKit.Base.method(user2, 'getOneTimePasswordsDetails')
+ });
+ deferredResult.addCallback(function(someData) {
+ return someData['oneTimePasswordsDetails'][someData['oneTimePasswords'][0].reference()]['status'];
+ });
+ deferredResult.addTest('USED', "The remaining OTP should have 'USED' status");
+
+ deferredResult.addMethod(user2, 'getOneTimePasswords');
+ deferredResult.addCallback(function(aList) {return [aList[0].reference()];});
+ deferredResult.addMethod(user2, 'deleteOTPs');
+ deferredResult.addMethod(user2, 'getOneTimePasswords');
+ deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
+ deferredResult.addTest(0, "There should be no OTPs left after the deletion of the last one");
+
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
//-------------------------------------------------------------------------
'syntaxFix': MochiKit.Base.noop
};
@@ -190,4 +328,4 @@ var tests = {
//#############################################################################
-SimpleTest.runDeferredTests("Clipperz.PM.DataModel.OneTimePassword", tests, {trace:false});
+SimpleTest.runDeferredTests("Clipperz.PM.DataModel.OneTimePassword", tests, {trace:true});
diff --git a/frontend/delta/tests/tests/Clipperz/PM/DataModel/Record.test.js b/frontend/delta/tests/tests/Clipperz/PM/DataModel/Record.test.js
index fce8d52..a9e0f54 100644
--- a/frontend/delta/tests/tests/Clipperz/PM/DataModel/Record.test.js
+++ b/frontend/delta/tests/tests/Clipperz/PM/DataModel/Record.test.js
@@ -23,7 +23,7 @@ refer to http://www.clipperz.com.
"use strict";
-Clipperz.PM.DataModel.Record.tagChar = '#'; // Simplify tests using a 'regular' char instead of an UTF-8 reserved one
+// Clipperz.PM.DataModel.Record.tagChar = '#'; // Simplify tests using a 'regular' char instead of an UTF-8 reserved one
Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
var tests = {
@@ -80,6 +80,33 @@ var tests = {
return deferredResult;
},
+ //-------------------------------------------------------------------------
+ 'createNewRecord_test': function(someTestArgs) {
+ var deferredResult;
+ var proxy;
+ var user;
+
+ proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
+ user = new Clipperz.PM.DataModel.User({username:"1", getPassphraseFunction:MochiKit.Base.partial(MochiKit.Async.succeed, "1")});
+
+ deferredResult = new Clipperz.Async.Deferred("deleteOTP_test", someTestArgs);
+ deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['1/1_data']);
+
+ deferredResult.addMethod(user, 'login');
+ deferredResult.addMethod(user, 'createNewRecord');
+ deferredResult.setValue('newRecord');
+ deferredResult.addMethodcaller('setLabel', "A record");
+ deferredResult.getValue('newRecord');
+ deferredResult.addMethodcaller('addField', {'label':"Field 1", 'value':"Value 1", 'isHidden':false});
+ deferredResult.getValue('newRecord');
+ deferredResult.addMethodcaller('label');
+ deferredResult.addTest("A record", "Record returns the right value for label");
+
+ deferredResult.callback();
+
+ return deferredResult;
+ },
+
//-------------------------------------------------------------------------
'createRecordWithoutAllRequiredParameters_test': function (someTestArgs) {
@@ -1434,6 +1461,8 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re
return filterRecordsWithRegExp(aUser, Clipperz.PM.DataModel.Record.regExpForSearch(aSearchTerm));
}
+ var tagChar = Clipperz.PM.DataModel.Record.tagChar;
+
proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false});
user = new Clipperz.PM.DataModel.User({username:'tag', getPassphraseFunction:function () { return 'tag';}});
@@ -1452,11 +1481,11 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re
deferredResult.addMethod(user, 'getRecordsInfo', Clipperz.PM.DataModel.Record.defaultCardInfo);
deferredResult.addCallback(MochiKit.Base.map, Clipperz.Base.itemgetter('_searchableContent'));
deferredResult.addCallback(SimpleTest.eq, [
- 'Card 1 #Tag1 #Tag2 ',
- 'Card 2 #Tag1 #Tag3 ',
- 'Card 3 #Tag1 ',
- 'Card 4 #Tag3 ',
- 'Card 5 #Tag4 ',
+ 'Card 1 '+tagChar+'Tag1 '+tagChar+'Tag2 ',
+ 'Card 2 '+tagChar+'Tag1 '+tagChar+'Tag3 ',
+ 'Card 3 '+tagChar+'Tag1 ',
+ 'Card 4 '+tagChar+'Tag3 ',
+ 'Card 5 '+tagChar+'Tag4 ',
'Card 6 '
]);
@@ -1920,7 +1949,7 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re
var deferredResult;
var proxy;
var user;
- var recordID = 'eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01'
+ var recordID = '327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83'
var originalFieldReference = 'bfd7624054e1eb6f1849082714f4016e300bce66645c7a7370276d82767cf125';
proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false});
@@ -2002,7 +2031,7 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re
var deferredResult;
var proxy;
var user;
- var recordID = 'eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01'
+ var recordID = '327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83'
var originalFieldReference = 'bfd7624054e1eb6f1849082714f4016e300bce66645c7a7370276d82767cf125';
proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false});
@@ -2066,7 +2095,7 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re
var deferredResult;
var proxy;
var user;
- var recordID = 'eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01'
+ var recordID = '327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83'
// var originalFieldReference = 'bfd7624054e1eb6f1849082714f4016e300bce66645c7a7370276d82767cf125';
proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false});
@@ -2132,7 +2161,7 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re
var deferredResult;
var proxy;
var user;
- var recordID = 'eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01'
+ var recordID = '327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83'
// var originalFieldReference = 'bfd7624054e1eb6f1849082714f4016e300bce66645c7a7370276d82767cf125';
proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false});
diff --git a/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.data.js b/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.data.js
index 55c07a6..40cf586 100644
--- a/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.data.js
+++ b/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.data.js
@@ -1832,14 +1832,14 @@ testData = {
},
'onetimePasswords': {
// OTP: 'yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg',
- '7074103e8ce35f813dbfb9c90665bd66ba3f5b1c9e4fa7a3d8aee679b7a38102': { // reference
+ 'c3664af5744319c6d3b874895f803df19cb0492acf27cb51912110d023ba9b38': { // key
'reference': "c3664af5744319c6d3b874895f803df19cb0492acf27cb51912110d023ba9b38",
'user': "9a984e219b07f9b645ef35f4de938b4741abe2e0b4adc88b40e9367170c91cc8",
'status': 'ACTIVE', // 1: 'ACTIVE', 2: 'REQUESTED', 3: 'USED', 4: 'DISABLED'
'creation_date': "2010-02-09 17:57:14",
'request_date': "4001-01-01 09:00:00",
'usage_date': "4001-01-01 09:00:00",
-// 'key': "7074103e8ce35f813dbfb9c90665bd66ba3f5b1c9e4fa7a3d8aee679b7a38102",
+ 'key': "7074103e8ce35f813dbfb9c90665bd66ba3f5b1c9e4fa7a3d8aee679b7a38102",
"key_checksum": "53739910c97d74c80c6028eb3293ffbc652def811d9aa11725fefa3139dfcf29",
"data": "aN3rPl5rusBWXveUpjKqZNFLRPWJgH2Zs8HYQIaS65QObQFWFTZ8lRpBXFoPlvSOHcHQpEavZUuq31Y/2Y9sI/scvmZjQ8UEaT2GY9NiWJVswGq1W3AX8zs32jOgf1L5iBVxK54mfig2vXFoL8lG0JGGY1zHZXlkCvFPWuvwuCcH+uRE0oP3it0FvNFBV4+TiiGnGYgD9LPAVevzr/Doq5UXjn9VplVU+upeDTWY+7rlOdIOnZG/A9P9/dQtsyMb5c5zABD2FNpQQ40JDfG/nHt5WvfuWmPwUisW1181oBAd5BwF9LgVHdrhcSh8OuUL7rdbKTPTlWT826I6JNrFMzYGMY+NV6gllDvc6eCNrgI98ABhL1AoZNpAXXuCy4uQhEYmj+O71C/eXEDw+crMAXiCn6SZrbTM8GT5TQ5yF2NcxhudopO4qoILjnwEHZZ+i37kRDFg6oCBccCD67oHTPexUkSqnKIIYLli5CdmE7UdvX6LuVG/VYJKevOUgMf0UzHDPgvtlp3gsSo09TfNPOtoeAiogL6cAHb1seZwv+6E8Pz7WqkkOTsBQYeHIfPE0OnQPDtUjVRA5MTTX5zt6rCCNDKNbqfkPu8V4am26ykaWOSTXZYIcfnywkG0TfPzdAyQvyxdUyl/r1b36bclQFiXcRzkz9zS9xx14Il3QjYXRbIFWcwm/mEFltBFPdATKo5Zh+wcTLiFh56YEUVa9/h6oN8281X6zxH4DOw=",
'version': "0.3"
@@ -1900,127 +1900,229 @@ testData = {
},
// username: 'tag', passphrase: 'tag'
"38d2354c878a06fbdcccc493a23fc6d9be06eebb4f66952bbc1b736824b123f9": {
- "s": "e332fc34a678a6be7f025403c8007c1dff962cbae8acd1a490018ffb7477536d",
- "v": "afa4836f22b8a1fbfb0b6a563c2356c0438ef9a9dd56877af8e8421d0706e300",
- "version": "0.2",
- "maxNumberOfRecords": "100",
- "userDetails": '{"records":{"index":{"021c1512cd4eb8e05fd82d4b0d86cb6edcc7be0c06e32bc21ed74beafefdb33d":"0","ae9bf2d068fe27ee0922371ec519c8a75b30e0bf88d72a8606a74f97a69badb8":"1","bdf315d1c65c1de200a384cfc23fb0b6e140905830c9d42f25585165fb8851fb":"2","5358946680c0ea40e36bbb9f2f62a0f5f2aabb66efe643ee26d3715c2c17feee":"3","501e451d5e3f4d5d69c5e9430fcee63800bae551ff4ebd89c46d3d5c654c083f":"4","b869b4b928e26b8c669d7e39da1df55406336b259edf19b032ee2e475347e8fa":"5"},"data":"EPB52oY8PC/GYaSORI9ytiiPIoDrIQrgu02OpI168mnT0BRtonqfvMUxejJ/nvgWCNgx7lCYMmGzaDCQtvmAj7q8DQHjgcG1HJS/BjaEJdlK+mIa0WmVED1nGi7HzZDP8XgeR6FSAS0MsIXqBI1BtOhPizWaQxQ7q/wiZpGwSMu4R8I/16u6bWNSdsIR52GkI2RXrXxit0BSs/ZHefCAEQVprygBJYTAsuBlI9UdOrtOG3ODCMGzzY69kC10YBPxEHgVdsJ8xGlM4QxrDoYcAXdqmHVNc8X3fsOSN6CdC+TPOYQ7kp7RsiWlAy/a26ASmfDioXikiEqSZ/m7Hz5EYBfdPIKzTf1HaTaj1EXPFwQ16Kkdyjlrc3OKl79Pe2JZ5lAfmf2aqHXxRFGk4aedDvwhMENdZYgea8IwBmmnalF+5U67gSY0YYe2ZixTnFKg1MRHAaGZSCJhZlbmcTKRzI4crNrRs03F9V10EfaUyIQdktRBNsKexQaJr1dxq524XJDSdIzu3A++8ks/khLFzrAQySWcjv2PmaFq/wf19HzVLOwJAkYv7Kp8AGpXpdNrtm2wNTiQ84a6KOuV8YW3jz8/m0VrsVe8wImHrih58lWi7SOHZ1y/ZjtSXwa8OEo/vdR3+SOFJujgYaoDcxLknMxXvjYjSUViLmAcHkM3SRx4ucGPlL9EOTFHhJJI3pynhubXYME/ujlkLRZEPQoSRKUWHAQ5X+O+1SwgPVPcSKqeEhM6kWhnXXpBWmUE+sSXfC4CC4Jqw+Mfrx6Mdx9ayep8ssge4ZIaDIVDUu3p2aEAQehwOvGzYec9jZfvhdODO0MK9cCV6D3iv8I="},"directLogins":{"index":{},"data":"VXRt7prFeG9+iLmWhkJVGKi9"},"preferences":{"data":"xPvWlbPo8iwq4OiL6BhiHWCg"},"oneTimePasswords":{"data":"UFam/MJzsuh7hiMUXruQrI94"},"version":"0.1"}',
- "statistics": "Pf9V+hgwcEUMUbiYj7lhOvy/",
- "userDetailsVersion": "0.4",
- "records": {
- "021c1512cd4eb8e05fd82d4b0d86cb6edcc7be0c06e32bc21ed74beafefdb33d": {
- "data": "coBU7HDciqWdtPrGoRE8x307+S0fXZPjdxCypClm9qXdQIJCTEohg8E3OHWydsZMI852VNgoIfhjv5+E8qzxCAwb+eh/2Lsv4+VWTi7MxVAgsqHk+NGOlpTzlBOtq/V86lZHuZajy4UWsLhoJvQxMNlV4Gryk+9G+MQv/ITYi/d6mRNMNQ==",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:44:30 GMT 2014",
- "updateDate": "Thu Jul 03 13:44:30 GMT 2014",
- "accessDate": "Thu Jul 03 13:44:30 GMT 2014",
- "currentVersion": "d29b343b00ef60309365c2a7ff2dee750271c86cbe9671c19de184c5b7cfd71a",
- "versions": {
- "d29b343b00ef60309365c2a7ff2dee750271c86cbe9671c19de184c5b7cfd71a": {
- "header": "####",
- "data": "NXmNUj/dXJImYLfqLmCFJeJh7GI51jzCitJBZS6bDoD1YzNj98weM4fW7AweTpvloojR1/1bzrvuEk13YKRYeDqD3WLKDC1QpAhmBj7EPkYfmOFizPRTpb3i0CkH2HQ2+OqCi27BdrMbU2VTNgBAtGl2RLQYa9yLJpz6wD1Bone192X3BuxWp2/9h8gYVqrmfT/aN5UGZlGHtJscjoqQME0=",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:44:30 GMT 2014",
- "updateDate": "Thu Jul 03 13:44:30 GMT 2014",
- "accessDate": "Thu Jul 03 13:44:30 GMT 2014"
- }
- }
- },
- "ae9bf2d068fe27ee0922371ec519c8a75b30e0bf88d72a8606a74f97a69badb8": {
- "data": "+vz60IxhoBYTxnCKoiEVmr9BVBKQ2vFtDyJqvpA468m6+ngCQZUAuyRvuTy7HGtHh/8Fc+VHZy6sjy6z5noVIhSG8uQnOpMj7lIxr471DC2suKgYzM3buiHehmzF8W+eNIOumyysAgQxvIXF/12zYVGiYUKBw9s9NgayeCXWZCktGyKp/w==",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:44:54 GMT 2014",
- "updateDate": "Thu Jul 03 13:44:54 GMT 2014",
- "accessDate": "Thu Jul 03 13:44:54 GMT 2014",
- "currentVersion": "23ed84136b59b351c10a1f608c84af426651755180ff3b0154eeedeb9f9d9efc",
- "versions": {
- "23ed84136b59b351c10a1f608c84af426651755180ff3b0154eeedeb9f9d9efc": {
- "header": "####",
- "data": "tw4PEJ2+bpv69m2JlKlUo2TXTSWzhd5qVuuEXa78Fzz2TAA+SLIAn/0YMLMZqJpT9/UX2A5llYIg4tasSTiScdKduvLqTwjZ/wQL9zkWw9vlb5DwUboLHYTD24rLQDKtEuZtQzkds7cKmTS8JocHiePtOnw4WYav7d1mNrEFFz6RJU4RklG5T0ATN59UTg9uRseN4zSSIl21Np3kb7/QSEI=",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:44:54 GMT 2014",
- "updateDate": "Thu Jul 03 13:44:54 GMT 2014",
- "accessDate": "Thu Jul 03 13:44:54 GMT 2014"
- }
- }
- },
- "bdf315d1c65c1de200a384cfc23fb0b6e140905830c9d42f25585165fb8851fb": {
- "data": "TGS6lm8w6OVFEnyQkjzJnS/FWx1h0LgrdpJwRKMz+/o5pJi0S9KGSzihtc6iek2/Dqixqh/Nxi8fZY2tNsB6n50aNHR+gVX4LHhgQOpw/3aYcWMd9WIuwdMPKDY6RiCBDLwxCDuhtKDCsGkd105+v58h08wYeCc8WDEg2vsR1bXQQZMYQw==",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:45:16 GMT 2014",
- "updateDate": "Thu Jul 03 13:45:16 GMT 2014",
- "accessDate": "Thu Jul 03 13:45:16 GMT 2014",
- "currentVersion": "a7a90ac83249e6aeba78ebde4ba798a8c912975d55c5315fec320f42ed67175d",
- "versions": {
- "a7a90ac83249e6aeba78ebde4ba798a8c912975d55c5315fec320f42ed67175d": {
- "header": "####",
- "data": "iNlrPeH/d9jtI91isY3r8n1QUtUYXVT1mhrRisyGwrpQo+4XCqMYattH31MrFh1hZCmplL0+vq8+bWo1JqA1HclSpAetyDIQ7NnlqGlnZYMBII3GgBfknHJRIlnm+RNFFQeOHWjhyL7YQVpmmC0ONJ++HaAmPxvOWzP1g/rKbsEoQyIBqqG32H3nxSU/bUVo+F5K5sfSNWnayPsDlEv5pNM=",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:45:16 GMT 2014",
- "updateDate": "Thu Jul 03 13:45:16 GMT 2014",
- "accessDate": "Thu Jul 03 13:45:16 GMT 2014"
- }
- }
- },
- "5358946680c0ea40e36bbb9f2f62a0f5f2aabb66efe643ee26d3715c2c17feee": {
- "data": "vEEFjeDfMPr1ahbjPA56Su31uJvyXcOAfJ2SfCdd0xTld6tj7iRsh81g1UYw8W1nvyRg4ymSiXIwEmx5cyOa/lj7eWRM0AqFy3qfqSUJze8Xn8u9RYiE0rt4LZLSDk9FogvvMIXKDbCvUbmyPSA83bmjCvDkiCvhqY4MhwGE8Jk/liE3YQ==",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:45:38 GMT 2014",
- "updateDate": "Thu Jul 03 13:45:38 GMT 2014",
- "accessDate": "Thu Jul 03 13:45:38 GMT 2014",
- "currentVersion": "211175a91451fa30b3c989ebe46ec2e7593b88e74bbe9ccb0578315750e31626",
- "versions": {
- "211175a91451fa30b3c989ebe46ec2e7593b88e74bbe9ccb0578315750e31626": {
- "header": "####",
- "data": "Ouu/BSyDHstyLcddZd1EsSQRWKTjQUt9kFNSYoxQOUBXWw+ukqDPPMXYZWggjrGAbT5hFf4yoEqi2VCCAdZT5juwmMrSEGZjoFSSw/e5OYH3ptoZAQ4ThNo75R2oJfI7/kUMKBeeXE4zykRYWv4aEOGHtSKpnzydGHnvDFfpxInFx2MH1eIYH+BpCujMDN0aDNFLRWl9isZ070DioTNgvI8=",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:45:38 GMT 2014",
- "updateDate": "Thu Jul 03 13:45:38 GMT 2014",
- "accessDate": "Thu Jul 03 13:45:38 GMT 2014"
- }
- }
- },
- "501e451d5e3f4d5d69c5e9430fcee63800bae551ff4ebd89c46d3d5c654c083f": {
- "data": "7aTkEoBButGoPiXCpAfn+CrJpzfw5zau1kEBY2uWBJ3cAT3XbkDgAodPmU/HDTV1pb7+2a2sAnwThDWCSkJfMGG6i3eRlQJj9WZfIEIv0W7UDMGbZdhuweSEPTf7GMR4BtHPMgVgLToSn+YOc0tasavVGz3+rV9qNFf9Rf2PrGKFQkY7Kg==",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:46:07 GMT 2014",
- "updateDate": "Thu Jul 03 13:46:07 GMT 2014",
- "accessDate": "Thu Jul 03 13:46:07 GMT 2014",
- "currentVersion": "a03817cced057a4bc693db014eb356277d9b91df6a08c55f45c97b5d4b08003b",
- "versions": {
- "a03817cced057a4bc693db014eb356277d9b91df6a08c55f45c97b5d4b08003b": {
- "header": "####",
- "data": "blB9bmxoEh//V40FoD9tLbQGyHiFAcLn9Rj4KDOp5DQRiLLlxqgvShShXEVtjUmiTjnHGlkNm6RQtZTaJrG84nV29QncBxLKMNnZKmqW2fXp2uyd4k+zzg4r7ilC29Vh1WP6bNxapwivDUw1n1Y9bEsX8LSAtCSIseIXszciSnLQ6ktyzBGzuDppc/cQ94TfGFKTSwZdts3d34Kxh8q0NTE=",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:46:07 GMT 2014",
- "updateDate": "Thu Jul 03 13:46:07 GMT 2014",
- "accessDate": "Thu Jul 03 13:46:07 GMT 2014"
- }
- }
- },
- "b869b4b928e26b8c669d7e39da1df55406336b259edf19b032ee2e475347e8fa": {
- "data": "cZQZboAoipwpOdCuvyXfS1T0ul0FnoWBAB0jqwQ282mWHjOBM/JI/7jk4z20qaYp/3XTGpVvbYPqvQn/+KyYiLT8aR/JkiFQ38wioaaq6X0Qg38Y2itPXMZjTnSGnf0boPf6mP8s9k8GGubuk4Gi1n4uJECLESX4In3VGq02hHcoxfZwMQ==",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:46:28 GMT 2014",
- "updateDate": "Thu Jul 03 13:46:28 GMT 2014",
- "accessDate": "Thu Jul 03 13:46:28 GMT 2014",
- "currentVersion": "b29e478ce7352c85234a4040514255a0162f62ab60880d5d959d86c365f0f088",
- "versions": {
- "b29e478ce7352c85234a4040514255a0162f62ab60880d5d959d86c365f0f088": {
- "header": "####",
- "data": "zOv15MnYpRcPyUoig13mGdWktiSLStCla0RVOp3laAEBBxplEao1RXWd/FOjKRmf2rx1Ma+s1s+CB1r2Z8t8VFRLDLQQk+m4LuGzY/QvHXbvcWMtNFxb8Ax464lX2w8FHZDBbcN29nfroeMX0Cq9oD6BKVrRdouUESHpX/oMDZ6VJRfZhv7ZIqdEET3+6u8Ub+OHdYyktYH4OHJTpW5eRc8=",
- "version": "0.4",
- "creationDate": "Thu Jul 03 13:46:28 GMT 2014",
- "updateDate": "Thu Jul 03 13:46:28 GMT 2014",
- "accessDate": "Thu Jul 03 13:46:28 GMT 2014"
- }
- }
- }
- }
+ "userDetailsVersion": "0.4",
+ "accountInfo": {
+ "features": [
+ "UPDATE_CREDENTIALS",
+ "EDIT_CARD",
+ "CARD_DETAILS",
+ "ADD_CARD",
+ "DELETE_CARD",
+ "OFFLINE_COPY",
+ "LIST_CARDS"
+ ],
+ "paymentVerificationPending": false,
+ "currentSubscriptionType": "EARLY_ADOPTER",
+ "isExpiring": false,
+ "latestActiveLevel": "EARLY_ADOPTER",
+ "payments": [],
+ "featureSet": "FULL",
+ "latestActiveThreshold": "-1.00000000",
+ "referenceDate": "Wed, 17 June 2015 12:44:29 UTC",
+ "isExpired": false,
+ "expirationDate": "Mon, 01 January 4001 00:00:00 UTC"
+ },
+ "s": "e332fc34a678a6be7f025403c8007c1dff962cbae8acd1a490018ffb7477536d",
+ "records": {
+ "501e451d5e3f4d5d69c5e9430fcee63800bae551ff4ebd89c46d3d5c654c083f": {
+ "reference": "501e451d5e3f4d5d69c5e9430fcee63800bae551ff4ebd89c46d3d5c654c083f",
+ "updateDate": "Thu, 03 July 2014 13:46:07 UTC",
+ "data": "7aTkEoBButGoPiXCpAfn+CrJpzfw5zau1kEBY2uWBJ3cAT3XbkDgAodPmU/HDTV1pb7+2a2sAnwThDWCSkJfMGG6i3eRlQJj9WZfIEIv0W7UDMGbZdhuweSEPTf7GMR4BtHPMgVgLToSn+YOc0tasavVGz3+rV9qNFf9Rf2PrGKFQkY7Kg==",
+ "accessDate": "Wed, 17 June 2015 12:44:07 UTC",
+ "versions": {"a03817cced057a4bc693db014eb356277d9b91df6a08c55f45c97b5d4b08003b": {
+ "reference": "a03817cced057a4bc693db014eb356277d9b91df6a08c55f45c97b5d4b08003b",
+ "updateDate": "Thu, 03 July 2014 13:46:07 UTC",
+ "data": "blB9bmxoEh//V40FoD9tLbQGyHiFAcLn9Rj4KDOp5DQRiLLlxqgvShShXEVtjUmiTjnHGlkNm6RQtZTaJrG84nV29QncBxLKMNnZKmqW2fXp2uyd4k+zzg4r7ilC29Vh1WP6bNxapwivDUw1n1Y9bEsX8LSAtCSIseIXszciSnLQ6ktyzBGzuDppc/cQ94TfGFKTSwZdts3d34Kxh8q0NTE=",
+ "accessDate": "Wed, 17 June 2015 12:44:07 UTC",
+ "header": "####",
+ "creationDate": "Thu, 03 July 2014 13:46:07 UTC",
+ "version": "0.4"
+ }},
+ "creationDate": "Thu, 03 July 2014 13:46:07 UTC",
+ "version": "0.4",
+ "currentVersion": "a03817cced057a4bc693db014eb356277d9b91df6a08c55f45c97b5d4b08003b",
+ "oldestUsedEncryptedVersion": "0.4"
+ },
+ "5358946680c0ea40e36bbb9f2f62a0f5f2aabb66efe643ee26d3715c2c17feee": {
+ "reference": "5358946680c0ea40e36bbb9f2f62a0f5f2aabb66efe643ee26d3715c2c17feee",
+ "updateDate": "Thu, 03 July 2014 13:45:38 UTC",
+ "data": "vEEFjeDfMPr1ahbjPA56Su31uJvyXcOAfJ2SfCdd0xTld6tj7iRsh81g1UYw8W1nvyRg4ymSiXIwEmx5cyOa/lj7eWRM0AqFy3qfqSUJze8Xn8u9RYiE0rt4LZLSDk9FogvvMIXKDbCvUbmyPSA83bmjCvDkiCvhqY4MhwGE8Jk/liE3YQ==",
+ "accessDate": "Wed, 17 June 2015 12:43:49 UTC",
+ "versions": {"211175a91451fa30b3c989ebe46ec2e7593b88e74bbe9ccb0578315750e31626": {
+ "reference": "211175a91451fa30b3c989ebe46ec2e7593b88e74bbe9ccb0578315750e31626",
+ "updateDate": "Thu, 03 July 2014 13:45:38 UTC",
+ "data": "Ouu/BSyDHstyLcddZd1EsSQRWKTjQUt9kFNSYoxQOUBXWw+ukqDPPMXYZWggjrGAbT5hFf4yoEqi2VCCAdZT5juwmMrSEGZjoFSSw/e5OYH3ptoZAQ4ThNo75R2oJfI7/kUMKBeeXE4zykRYWv4aEOGHtSKpnzydGHnvDFfpxInFx2MH1eIYH+BpCujMDN0aDNFLRWl9isZ070DioTNgvI8=",
+ "accessDate": "Wed, 17 June 2015 12:43:49 UTC",
+ "header": "####",
+ "creationDate": "Thu, 03 July 2014 13:45:38 UTC",
+ "version": "0.4"
+ }},
+ "creationDate": "Thu, 03 July 2014 13:45:38 UTC",
+ "version": "0.4",
+ "currentVersion": "211175a91451fa30b3c989ebe46ec2e7593b88e74bbe9ccb0578315750e31626",
+ "oldestUsedEncryptedVersion": "0.4"
+ },
+ "b869b4b928e26b8c669d7e39da1df55406336b259edf19b032ee2e475347e8fa": {
+ "reference": "b869b4b928e26b8c669d7e39da1df55406336b259edf19b032ee2e475347e8fa",
+ "updateDate": "Thu, 03 July 2014 13:46:28 UTC",
+ "data": "cZQZboAoipwpOdCuvyXfS1T0ul0FnoWBAB0jqwQ282mWHjOBM/JI/7jk4z20qaYp/3XTGpVvbYPqvQn/+KyYiLT8aR/JkiFQ38wioaaq6X0Qg38Y2itPXMZjTnSGnf0boPf6mP8s9k8GGubuk4Gi1n4uJECLESX4In3VGq02hHcoxfZwMQ==",
+ "accessDate": "Fri, 10 April 2015 09:27:54 UTC",
+ "versions": {"b29e478ce7352c85234a4040514255a0162f62ab60880d5d959d86c365f0f088": {
+ "reference": "b29e478ce7352c85234a4040514255a0162f62ab60880d5d959d86c365f0f088",
+ "updateDate": "Thu, 03 July 2014 13:46:28 UTC",
+ "data": "zOv15MnYpRcPyUoig13mGdWktiSLStCla0RVOp3laAEBBxplEao1RXWd/FOjKRmf2rx1Ma+s1s+CB1r2Z8t8VFRLDLQQk+m4LuGzY/QvHXbvcWMtNFxb8Ax464lX2w8FHZDBbcN29nfroeMX0Cq9oD6BKVrRdouUESHpX/oMDZ6VJRfZhv7ZIqdEET3+6u8Ub+OHdYyktYH4OHJTpW5eRc8=",
+ "accessDate": "Fri, 10 April 2015 09:27:54 UTC",
+ "header": "####",
+ "creationDate": "Thu, 03 July 2014 13:46:28 UTC",
+ "version": "0.4"
+ }},
+ "creationDate": "Thu, 03 July 2014 13:46:28 UTC",
+ "version": "0.4",
+ "currentVersion": "b29e478ce7352c85234a4040514255a0162f62ab60880d5d959d86c365f0f088",
+ "oldestUsedEncryptedVersion": "0.4"
+ },
+ "ae9bf2d068fe27ee0922371ec519c8a75b30e0bf88d72a8606a74f97a69badb8": {
+ "reference": "ae9bf2d068fe27ee0922371ec519c8a75b30e0bf88d72a8606a74f97a69badb8",
+ "updateDate": "Thu, 03 July 2014 13:44:54 UTC",
+ "data": "+vz60IxhoBYTxnCKoiEVmr9BVBKQ2vFtDyJqvpA468m6+ngCQZUAuyRvuTy7HGtHh/8Fc+VHZy6sjy6z5noVIhSG8uQnOpMj7lIxr471DC2suKgYzM3buiHehmzF8W+eNIOumyysAgQxvIXF/12zYVGiYUKBw9s9NgayeCXWZCktGyKp/w==",
+ "accessDate": "Wed, 17 June 2015 12:43:13 UTC",
+ "versions": {"23ed84136b59b351c10a1f608c84af426651755180ff3b0154eeedeb9f9d9efc": {
+ "reference": "23ed84136b59b351c10a1f608c84af426651755180ff3b0154eeedeb9f9d9efc",
+ "updateDate": "Thu, 03 July 2014 13:44:54 UTC",
+ "data": "tw4PEJ2+bpv69m2JlKlUo2TXTSWzhd5qVuuEXa78Fzz2TAA+SLIAn/0YMLMZqJpT9/UX2A5llYIg4tasSTiScdKduvLqTwjZ/wQL9zkWw9vlb5DwUboLHYTD24rLQDKtEuZtQzkds7cKmTS8JocHiePtOnw4WYav7d1mNrEFFz6RJU4RklG5T0ATN59UTg9uRseN4zSSIl21Np3kb7/QSEI=",
+ "accessDate": "Wed, 17 June 2015 12:43:13 UTC",
+ "header": "####",
+ "creationDate": "Thu, 03 July 2014 13:44:54 UTC",
+ "version": "0.4"
+ }},
+ "creationDate": "Thu, 03 July 2014 13:44:54 UTC",
+ "version": "0.4",
+ "currentVersion": "23ed84136b59b351c10a1f608c84af426651755180ff3b0154eeedeb9f9d9efc",
+ "oldestUsedEncryptedVersion": "0.4"
+ },
+ "bdf315d1c65c1de200a384cfc23fb0b6e140905830c9d42f25585165fb8851fb": {
+ "reference": "bdf315d1c65c1de200a384cfc23fb0b6e140905830c9d42f25585165fb8851fb",
+ "updateDate": "Thu, 03 July 2014 13:45:16 UTC",
+ "data": "TGS6lm8w6OVFEnyQkjzJnS/FWx1h0LgrdpJwRKMz+/o5pJi0S9KGSzihtc6iek2/Dqixqh/Nxi8fZY2tNsB6n50aNHR+gVX4LHhgQOpw/3aYcWMd9WIuwdMPKDY6RiCBDLwxCDuhtKDCsGkd105+v58h08wYeCc8WDEg2vsR1bXQQZMYQw==",
+ "accessDate": "Wed, 17 June 2015 12:43:36 UTC",
+ "versions": {"a7a90ac83249e6aeba78ebde4ba798a8c912975d55c5315fec320f42ed67175d": {
+ "reference": "a7a90ac83249e6aeba78ebde4ba798a8c912975d55c5315fec320f42ed67175d",
+ "updateDate": "Thu, 03 July 2014 13:45:16 UTC",
+ "data": "iNlrPeH/d9jtI91isY3r8n1QUtUYXVT1mhrRisyGwrpQo+4XCqMYattH31MrFh1hZCmplL0+vq8+bWo1JqA1HclSpAetyDIQ7NnlqGlnZYMBII3GgBfknHJRIlnm+RNFFQeOHWjhyL7YQVpmmC0ONJ++HaAmPxvOWzP1g/rKbsEoQyIBqqG32H3nxSU/bUVo+F5K5sfSNWnayPsDlEv5pNM=",
+ "accessDate": "Wed, 17 June 2015 12:43:36 UTC",
+ "header": "####",
+ "creationDate": "Thu, 03 July 2014 13:45:16 UTC",
+ "version": "0.4"
+ }},
+ "creationDate": "Thu, 03 July 2014 13:45:16 UTC",
+ "version": "0.4",
+ "currentVersion": "a7a90ac83249e6aeba78ebde4ba798a8c912975d55c5315fec320f42ed67175d",
+ "oldestUsedEncryptedVersion": "0.4"
+ },
+ "021c1512cd4eb8e05fd82d4b0d86cb6edcc7be0c06e32bc21ed74beafefdb33d": {
+ "reference": "021c1512cd4eb8e05fd82d4b0d86cb6edcc7be0c06e32bc21ed74beafefdb33d",
+ "updateDate": "Thu, 03 July 2014 13:44:30 UTC",
+ "data": "coBU7HDciqWdtPrGoRE8x307+S0fXZPjdxCypClm9qXdQIJCTEohg8E3OHWydsZMI852VNgoIfhjv5+E8qzxCAwb+eh/2Lsv4+VWTi7MxVAgsqHk+NGOlpTzlBOtq/V86lZHuZajy4UWsLhoJvQxMNlV4Gryk+9G+MQv/ITYi/d6mRNMNQ==",
+ "accessDate": "Wed, 17 June 2015 12:42:51 UTC",
+ "versions": {"d29b343b00ef60309365c2a7ff2dee750271c86cbe9671c19de184c5b7cfd71a": {
+ "reference": "d29b343b00ef60309365c2a7ff2dee750271c86cbe9671c19de184c5b7cfd71a",
+ "updateDate": "Thu, 03 July 2014 13:44:30 UTC",
+ "data": "NXmNUj/dXJImYLfqLmCFJeJh7GI51jzCitJBZS6bDoD1YzNj98weM4fW7AweTpvloojR1/1bzrvuEk13YKRYeDqD3WLKDC1QpAhmBj7EPkYfmOFizPRTpb3i0CkH2HQ2+OqCi27BdrMbU2VTNgBAtGl2RLQYa9yLJpz6wD1Bone192X3BuxWp2/9h8gYVqrmfT/aN5UGZlGHtJscjoqQME0=",
+ "accessDate": "Wed, 17 June 2015 12:42:51 UTC",
+ "header": "####",
+ "creationDate": "Thu, 03 July 2014 13:44:30 UTC",
+ "version": "0.4"
+ }},
+ "creationDate": "Thu, 03 July 2014 13:44:30 UTC",
+ "version": "0.4",
+ "currentVersion": "d29b343b00ef60309365c2a7ff2dee750271c86cbe9671c19de184c5b7cfd71a",
+ "oldestUsedEncryptedVersion": "0.4"
+ }
+ },
+ "v": "afa4836f22b8a1fbfb0b6a563c2356c0438ef9a9dd56877af8e8421d0706e300",
+ "version": "0.2",
+ "userDetails": "{\"records\":{\"index\":{\"021c1512cd4eb8e05fd82d4b0d86cb6edcc7be0c06e32bc21ed74beafefdb33d\":\"0\",\"ae9bf2d068fe27ee0922371ec519c8a75b30e0bf88d72a8606a74f97a69badb8\":\"1\",\"bdf315d1c65c1de200a384cfc23fb0b6e140905830c9d42f25585165fb8851fb\":\"2\",\"5358946680c0ea40e36bbb9f2f62a0f5f2aabb66efe643ee26d3715c2c17feee\":\"3\",\"501e451d5e3f4d5d69c5e9430fcee63800bae551ff4ebd89c46d3d5c654c083f\":\"4\",\"b869b4b928e26b8c669d7e39da1df55406336b259edf19b032ee2e475347e8fa\":\"5\"},\"data\":\"5oWOZGW\/lnLtQ\/JzAiZCP6gDN8A3Vpnona1uCdNl5j2n8Q5JHOrxG2hYbIpO1pQ0H3PrKsYrMqstuHggaTB0\/Rzm\/ficHaUWhRJqmQrrqu3S14UQ6Ts7ZE+me+JHC67dEMBxxSRvw9DMErR2ph1O1AUWlEqjqDt99UU6T\/mA\/0aqfJu9fsFC5AVk\/QH6Pzp8xMK1oX4AhB9H3hVZzWvIr2jYFTyVRldSfD5h1HKNt2cCyEWvAzSvBmIsTcTJIyah7Uv8ZVRk1zFTvdD2eWgNkKrQo8fMdCalw1cT7lQ3esccKllp1ydQZSNZ6365HYu1fC4negehCzMz5eu3Y\/Q236F2rZo63cXHQgDi38GWM+cdXL7JgXdPMfMudyCKIxJnFVFK5VzghMU\/n7i\/nYZD1K04Q\/E6fKP4kKkJlNd3JEpr\/nM9cVpWXB5ghrI4pvo3kxNy9DWVL5mD8eANmqZyNZqii2jTpPF+oZS8NtKWPSwLs8HbcnS\/eRVgv0pE8mLCp0nPxqfBHrlORX5phzSURONZZIvqxh\/s0uxYEQFuzFl2G+NhtbhL25Q4rLLUZrFAnlp1qgoH1sUl0B4WzEN8qw56uOtNesRv63NoETIhvOYNU89t4CsCnRznuWm774KWNnbuBXTiDw\/rreQU59PgXgr7BPuJFvzonqiDTiqRHVWDYnTP5YSWBwtEEr24vfCjWx1BmoxytH0hRhWcJOqJGW3rhLHkBTLg9rDUFBKR5HJbjzW1Htw\/Yhq9PzhRVbkTNdvVzVv6cMiFNeuJG2LyBeSe2ioDcyWSYmHedEYnn3PRXEJhD3AAdpANj2MGP5yvZ7dHNXGXz2DgkhRO24PoiHuehe2jMx9Zkw==\"},\"directLogins\":{\"index\":{},\"data\":\"Ud\/RyTy7CT291MeUshmhjoT6\"},\"preferences\":{\"data\":\"hseSN5pYGCAs144bQVlVHtop\"},\"oneTimePasswords\":{\"data\":\"2GS0OVjaU42kt4yinfQUXK6c\"},\"version\":\"0.1\"}",
+ "maxNumberOfRecords": 100,
+ "statistics": "Pf9V+hgwcEUMUbiYj7lhOvy/"
}
}
};}(),
+
+
+
+ //-------------------------------------------------------------------------
+
+ '1/1_data': function () { return {
+ users:{
+ 'catchAllUser': {
+ __masterkey_test_value__: 'masterkey',
+ s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
+ v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
+ },
+ // username: '1', passphrase: '1'
+ "3073058ba04e7d35a161af27f07ddb24d603d2a6418b4140010b7cdb24ff4774": {
+ "userDetailsVersion": "0.4",
+ "accountInfo": {
+ "features": [
+ "UPDATE_CREDENTIALS",
+ "EDIT_CARD",
+ "CARD_DETAILS",
+ "ADD_CARD",
+ "DELETE_CARD",
+ "OFFLINE_COPY",
+ "LIST_CARDS"
+ ],
+ "paymentVerificationPending": false,
+ "currentSubscriptionType": "EARLY_ADOPTER",
+ "isExpiring": false,
+ "latestActiveLevel": "EARLY_ADOPTER",
+ "payments": [],
+ "featureSet": "FULL",
+ "latestActiveThreshold": "-1.00000000",
+ "referenceDate": "Wed, 17 June 2015 13:43:24 UTC",
+ "isExpired": false,
+ "expirationDate": "Mon, 01 January 4001 00:00:00 UTC"
+ },
+ "s": "a363479cf2f229466e01f32bfb783800745c740b4a955a83c0fbf561028bdba7",
+ "records": {
+ "327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83": {
+ "reference": "327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83",
+ "updateDate": "Wed, 17 June 2015 13:42:54 UTC",
+ "data": "SPU205djKKDJ7mg6txo5B9z0myET/8lcwjuT+IEMJVIw4JdBq+gXQ9cxESKQjvuuGnZyNRPzOKgfXlJTtgUwtPSwmpigrnUMilxcBtcpOkVe+kZXe+N1J7iMli1xVHfpmrhSEA8E+zZ4OEnGuHiJgX9qzNix15rbeZLX7bXBsWUowHuIvw==",
+ "accessDate": "Wed, 17 June 2015 13:42:54 UTC",
+ "versions": {
+ "eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01": {
+ "reference": "eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01",
+ "updateDate": "Wed, 17 June 2015 13:42:54 UTC",
+ "data": "Em0rLpHXv9IKtyVLWPGXeM6erk52v/1nYyh0DqT/UnL2pZjU4PRAPvKYZa5yhkx7QqgfWJNtdMUKbGN4DAfmKYcaAZZl0fcYRddAAduWUdG4Zuwk41hJ5gzomf0oqAtQU8lPK4VQFo1iyOctWVJ19h+/fZbUvLVzWOWXBMvItu054w+jHMDWF/hFuL09HQoyMz1JeXJroRTVx47pLbVVkUYNBOCz5FSTIRUqdmeSkaSiLtrLI0349SVrvPEXWPghGgKdWBiJCn/lFivmRKenJtGpxJwiV1CfQIS00JeyEFg+zqWBg31A8cp70NSHXVuprYbruWaMRdwZlI4PNl5JuzGdhL/z3iR+3TevcOIrHkvgH4/zVV+BHYlIPMpwj1zs4C0XNr+DF7F3FX3gCuU4CbMdzt6GoPYJnKAAfM+bZGQpAZp2sdzuZWdGi2EuHNicjLhdZF/TcbeGNjVG6RdliFvrqC+o0wet3OO7MRyHDU1AqWNPTgAo7gIp33DH0lf2HOtXJH8HjOXNSa7fgW5JhyfUxyddEONJwXUOL9KbkXsSElJjk+W0/QiWqw==",
+ "accessDate": "Wed, 17 June 2015 13:42:54 UTC",
+ "header": "####",
+ "creationDate": "Wed, 17 June 2015 13:42:54 UTC",
+ "version": "0.4"
+ }
+ },
+ "creationDate": "Wed, 17 June 2015 13:42:54 UTC",
+ "version": "0.4",
+ "currentVersion": "eb9a01d0094fcd8f3cbf4f875b7f4c43afa2bb796b5787badf75fba1b3e77c01",
+ "oldestUsedEncryptedVersion": "0.4"
+ }
+ },
+ "v": "baef74012d85813dca18ab0218bb27c63ffabc414223f05c015b4b73485b8fed",
+ "version": "0.2",
+ "userDetails": "{\"records\":{\"index\":{\"327139a4d4cfbdb61c06b4cfa009f9cb05ef2f3e3703b6b071bcdb4213b2ca83\":\"0\"},\"data\":\"HF+LSoX668EqFNltHvK7vaiO4srKLI5AzxXmlTssJNUCgSoWcvyE3psARFbnRamrUKHsFXipQypQjLH3W9eHNCt1im4GnxLGJskFJx0IjfYwrIJP1MNThUoz2EMMGAJiZS4WAFxnpMj3pD1JpFvNVtC+5B1NNQ==\"},\"directLogins\":{\"index\":{},\"data\":\"AJvILR1GywXePCwZd6HE27im\"},\"preferences\":{\"data\":\"5sK4mjoBQ3ONd4oKpxB9yWcV\"},\"oneTimePasswords\":{\"data\":\"J1yST9vO+PGreat6f8W7McqF\"},\"version\":\"0.1\"}",
+ "maxNumberOfRecords": 100,
+ "statistics": "h4SscRLQf8X+q5+Qhfs6MG44"
+ }
+ }
+ };}(),
+
+
+
+
+
+
+
//-------------------------------------------------------------------------
/*
'tt/tt_data': function () { return {
diff --git a/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.test.js b/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.test.js
index 616bc31..0093837 100644
--- a/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.test.js
+++ b/frontend/delta/tests/tests/Clipperz/PM/DataModel/User.test.js
@@ -2022,8 +2022,8 @@ console.log("PROXY", proxy);
newPassphrase = 'zreppilc';
proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
- user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
- user2 = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return newPassphrase;}});
+ user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction: MochiKit.Base.partial(MochiKit.Async.succeed, 'clipperz')});
+ user2 = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction: MochiKit.Base.partial(MochiKit.Async.succeed, newPassphrase)});
deferredResult = new Clipperz.Async.Deferred("changePassphrase_test", someTestArgs);
deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
@@ -2034,7 +2034,7 @@ console.log("PROXY", proxy);
deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
deferredResult.addTest(20, "This account has oly a single card");
- deferredResult.addMethod(user, 'changePassphrase', newPassphrase);
+ deferredResult.addMethod(user, 'changePassphrase', MochiKit.Base.partial(MochiKit.Async.succeed, newPassphrase));
deferredResult.addMethod(user, 'logout');
deferredResult.addMethod(user2, 'login');