hen commited on
Commit
e2ef657
1 Parent(s): cb68191

cleanup UI, HTML template

Browse files
client/dist/main.css CHANGED
@@ -1,4 +1,4 @@
1
  @font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(7eeb10384e8e1ef96c87f7074cf2ef59.ttf) format("truetype")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans Regular"),local("IBMPlexSans-Regular"),url(05ca9c06114e79436ea9b5c8d4a7869c.ttf) format("truetype")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SemiBold"),local("IBMPlexSans-SemiBold"),url(a849e7649e2005ab4aecfa50d96120e1.ttf) format("truetype")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(4171e41154ba857f85c536f167d581ba.ttf) format("truetype")}
2
- body{background-color:#fff;font-family:IBM Plex Sans,sans-serif;font-weight:400}.sticky{position:fixed}.noscroll{overflow:hidden}.vpartial{max-height:90vh}.scrolling{overflow:auto;max-height:98%}.btn .btn-xs{padding:.25rem .4rem;font-size:.875rem;line-height:.5;border-radius:.2rem}button{-webkit-transition-duration:.4s;transition-duration:.4s;background:transparent;padding:5px;border-radius:5px;background-color:#d3d3d3}button.selected,button:active :focus{background-color:#98b7d9}#loader{border:5px solid #f3f3f3;border-radius:50%;border-top:5px solid #3498db;width:100px;height:100px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite;position:absolute;left:50%;top:20%;display:none}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}svg{vertical-align:top}select{font-size:9pt;font-weight:600;background-color:transparent;padding:8px 6px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border:0;outline:0}.navbar{position:absolute;top:0;left:0;width:100%;height:50px;background-color:#faebd7}.navbarContent{margin:10px 20px}.navbarContent span{padding-left:10px}.navbarContent button{margin-left:10px}.navbarTitle{font-size:12pt;font-weight:700}.main_frame{position:fixed;top:55px;overflow-x:hidden;overflow-y:auto}.floating_content{padding:10px;height:94%}.container{width:100%;height:95%;text-align:center;display:inline-block;margin:5px auto}#bottom-margin{height:100px}.content{max-width:960px;margin:auto}.whitespace{height:8vh}#sentence-input{margin-bottom:0;margin-right:0;margin-left:10px;width:100%}#sentence-input form{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-evenly;align-items:center}#sentence-input form .form-group{flex-grow:3}#sentence-input form .form-group input{width:50%;max-width:700px;margin-right:5%}#sentence-input form .btn{flex-grow:1}.input-description{font-weight:800}#connector-container{margin:40px;align-items:center}.connector-controls{display:grid;grid-template-columns:.5fr .5fr}.slide-container{grid-column-start:1;grid-column-end:2;grid-row-start:1;grid-row-end:2;margin:auto;text-align:center;width:75%}.slider{-webkit-appearance:none;width:10px;height:10px;border-radius:5px;background:#d3d3d3;outline:none;opacity:.7;-webkit-transition:.2s;transition:opacity .2s}.slider:hover{opacity:1}.slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:15px;height:15px;border-radius:50%;background:#666;cursor:pointer}#layer-selection{grid-column-start:1;grid-column-end:2;grid-row-start:2;grid-row-end:3}.layer-select{margin-bottom:2em}#atn-container{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:top;margin:0 auto;width:100%;vertical-align:top}#atn-container #left-att-heads{order:1;display:inline-block;vertical-align:top}#atn-container #left-tokens{order:2;text-align:right;vertical-align:top}#atn-container #atn-display{order:3;vertical-align:top}#atn-container #right-tokens{order:4;text-align:left;vertical-align:top}#atn-container #right-att-heads{order:5;vertical-align:top}.att-rect{transition:fill .1s}.token{display:block}.atn-curve{fill:none;stroke:purple}.masked-token{color:rgba(0,0,0,.2)}.unselected{fill:gray}.selected-token{border:3px solid #99c400}.switch{position:relative;display:inline-block;width:60px;height:34px}.switch input{opacity:0;width:0;height:0}.short-slider{cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc}.short-slider,.short-slider:before{position:absolute;-webkit-transition:.4s;transition:.4s}.short-slider:before{content:"";height:26px;width:26px;left:4px;bottom:4px;background-color:#fff}input:checked+.short-slider{background-color:#2196f3}input:focus+.short-slider{box-shadow:0 0 1px #2196f3}input:checked+.short-slider:before{-webkit-transform:translateX(26px);-ms-transform:translateX(26px);transform:translateX(26px)}.short-slider.round{border-radius:34px}.short-slider.round:before{border-radius:50%}#select-all-heads{margin-top:20px;margin-bottom:20px}body{font-family:IBM Plex Sans;margin-left:auto;margin-right:auto;width:80%;max-width:1500px}.layerCheckbox{background-color:#d3d3d3;padding-left:8px;padding-right:8px}.layerCheckbox.active{color:#fff;background-color:#6c7067}.main-grid{width:100%;display:grid;grid-template-columns:.18fr .2fr .2fr .04fr .2fr .2fr .18fr;overflow:auto;max-height:100vh}#vis-break{height:15px}label{margin-left:5px}#header{width:100%;background-color:#d3d3d3;height:40px;margin-bottom:5px}#header .header-logo{height:20px;display:inline-block;margin-left:10px;margin-top:5px;margin-bottom:5px}#header .header-info{font-size:9pt;height:30px;display:inline-block;float:right;margin-right:10px;margin-top:10px}#header #headertext{text-align:center;display:inline-block;font-size:18px;margin-left:30%;margin-top:5px;margin-bottom:5px}.highlighted{background:rgba(152,83,216,.8)}#selected-heads{margin-bottom:1em}#corpus-selection-description{display:inline-block;margin-right:15px}#corpus-querying,#corpus-querying .btn{display:inline-block}#usage-info{margin-top:10px;color:#575757;font-size:14px}.tick{font-size:18px}#connector-container .mat-hover-display{pointer-events:none;display:block;position:absolute;visibility:hidden;background-color:hsla(0,0%,78%,.93);font-size:14px}#connector-container .mat-hover-display p{margin:4px 1px 1px 4px}.right-token-hover{border-radius:1px 8px 8px 8px;text-align:left}.left-token-hover{border-radius:8px 1px 8px 8px;text-align:right}.next-token{color:rgba(228,1,1,.8);-moz-box-shadow:0 0 3px #ccc;-webkit-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc}
3
 
4
- /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9mb250cy9wbGV4X3NhbnMuY3NzIiwid2VicGFjazovLy8uL2Nzcy9jc3MvYmFzZS5zY3NzIiwid2VicGFjazovLy8uL2Nzcy9jc3MvU2VudGVuY2VJbnB1dC5zY3NzIiwid2VicGFjazovLy8uL2Nzcy9jc3MvQXR0ZW50aW9uQ29ubmVjdG9yQ29udHJvbHMuc2NzcyIsIndlYnBhY2s6Ly8vLi9jc3MvY3NzL21haW4uc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxXQUNFLDBCQUNBLGtCQUNBLGdCQUNBLDRHQUEySCxDQUc3SCxXQUNFLDBCQUNBLGtCQUNBLGdCQUNBLGdIQUFpSSxDQUduSSxXQUNFLDBCQUNBLGtCQUNBLGdCQUNBLGtIQUFvSSxDQUd0SSxXQUNFLDBCQUNBLGtCQUNBLGdCQUNBLDBHQUF3SCxDQUN6SCxnRDtBQzNCRCxLQUNFLHNCQUNBLHFDQUNBLGVBQWdCLENBR2xCLFFBQ0UsY0FBZSxDQUdqQixVQUNFLGVBQWdCLENBR2xCLFVBQ0UsZUFBZ0IsQ0FHbEIsV0FDRSxjQUNBLGNBQWUsQ0FHakIsYUFFSSxxQkFDQSxrQkFDQSxlQUNBLG1CQUFxQixDQUl6QixPQUNFLGdDQUNBLHdCQUNBLHVCQUNBLFlBQ0Esa0JBQ0Esd0JBQTJCLENBTzdCLHFDQUNFLHdCQUF5QixDQUczQixRQUNFLHlCQUNBLGtCQUNBLDZCQUNBLFlBQ0EsYUFDQSwwQ0FDQSxrQ0FDQSxrQkFDQSxTQUNBLFFBQ0EsWUFBYSxDQUlmLHdCQUNFLEdBQ0UsOEJBQStCLENBRWpDLEdBQ0UsK0JBQWlDLEVBSXJDLGdCQUNFLEdBQ0Usc0JBQXVCLENBRXpCLEdBQ0UsdUJBQXlCLEVBSTdCLElBQ0Usa0JBQW1CLENBR3JCLE9BQ0UsY0FDQSxnQkFHQSw2QkFLQSxnQkFNQSw4QkFDQSwyQkFDQSxzQkFDQSxrQkFDQSxTQUNBLFNBQVUsQ0FFWixRQUNFLGtCQUNBLE1BQ0EsT0FDQSxXQUNBLFlBQ0Esd0JBQThCLENBSWhDLGVBQ0UsZ0JBQWlC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R3BCLGtCQUNJLDhCQUNBLGdCQUFpQixDQUdyQixZQUNFLHVCQUNBLDZCQUNBLGdDQUNBLHVCQUF3QixDIiwiZmlsZSI6Im1haW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdJQk0gUGxleCBTYW5zJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogMzAwO1xuICBzcmM6IGxvY2FsKCdJQk0gUGxleCBTYW5zIExpZ2h0JyksIGxvY2FsKCdJQk1QbGV4U2Fucy1MaWdodCcpLCB1cmwoSUJNX1BsZXhfU2Fucy9JQk1QbGV4U2Fucy1MaWdodC50dGYpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnSUJNIFBsZXggU2Fucyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgc3JjOiBsb2NhbCgnSUJNIFBsZXggU2FucyBSZWd1bGFyJyksIGxvY2FsKCdJQk1QbGV4U2Fucy1SZWd1bGFyJyksIHVybChJQk1fUGxleF9TYW5zL0lCTVBsZXhTYW5zLVJlZ3VsYXIudHRmKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0lCTSBQbGV4IFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHNyYzogbG9jYWwoJ0lCTSBQbGV4IFNhbnMgU2VtaUJvbGQnKSwgbG9jYWwoJ0lCTVBsZXhTYW5zLVNlbWlCb2xkJyksIHVybChJQk1fUGxleF9TYW5zL0lCTVBsZXhTYW5zLVNlbWlCb2xkLnR0ZikgZm9ybWF0KCd0cnVldHlwZScpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdJQk0gUGxleCBTYW5zJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNzAwO1xuICBzcmM6IGxvY2FsKCdJQk0gUGxleCBTYW5zIEJvbGQnKSwgbG9jYWwoJ0lCTVBsZXhTYW5zLUJvbGQnKSwgdXJsKElCTV9QbGV4X1NhbnMvSUJNUGxleFNhbnMtQm9sZC50dGYpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbn1cbiIsImJvZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7XG4gIGZvbnQtZmFtaWx5OiAnSUJNIFBsZXggU2FucycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi5zdGlja3kge1xuICBwb3NpdGlvbjogZml4ZWQ7XG59XG5cbi5ub3Njcm9sbCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi52cGFydGlhbCB7XG4gIG1heC1oZWlnaHQ6IDkwdmg7XG59XG5cbi5zY3JvbGxpbmcge1xuICBvdmVyZmxvdzogYXV0bztcbiAgbWF4LWhlaWdodDogOTglO1xufVxuXG4uYnRuIHtcbiAgLmJ0bi14cyB7XG4gICAgcGFkZGluZyAgOiAuMjVyZW0gLjRyZW07XG4gICAgZm9udC1zaXplICA6IC44NzVyZW07XG4gICAgbGluZS1oZWlnaHQgIDogLjU7XG4gICAgYm9yZGVyLXJhZGl1cyA6IC4ycmVtO1xuICB9XG59XG5cbmJ1dHRvbiB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40czsgLyogU2FmYXJpICovXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiA1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmF5O1xuXG4gICYuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM5OGI3ZDk7XG4gIH1cbn1cblxuYnV0dG9uOmFjdGl2ZSA6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOThiN2Q5O1xufVxuXG4jbG9hZGVyIHtcbiAgYm9yZGVyOiA1cHggc29saWQgI2YzZjNmMztcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXItdG9wOiA1cHggc29saWQgIzM0OThkYjtcbiAgd2lkdGg6IDEwMHB4O1xuICBoZWlnaHQ6IDEwMHB4O1xuICAtd2Via2l0LWFuaW1hdGlvbjogc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7IC8qIFNhZmFyaSAqL1xuICBhbmltYXRpb246IHNwaW4gMnMgbGluZWFyIGluZmluaXRlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgdG9wOiAyMCU7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIFNhZmFyaSAqL1xuQC13ZWJraXQta2V5ZnJhbWVzIHNwaW4ge1xuICAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzcGluIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuc3ZnIHtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuc2VsZWN0IHtcbiAgZm9udC1zaXplOiA5cHQ7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG5cbiAgLy9iYWNrZ3JvdW5kOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwcHgnIGhlaWdodD0nMTBweCc+PHBvbHlsaW5lIHBvaW50cz0nMCwwIDEwLDAgNSwxMCcvPjwvc3ZnPlwiKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC8vYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgLy9iYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCA1cHggdG9wIDlweDtcbiAgLy9iYWNrZ3JvdW5kLXNpemU6IDdweCA3cHg7XG4gIC8vcGFkZGluZzogNXB4IDE1cHggNXB4IDVweDtcbiAgcGFkZGluZzogOHB4IDZweDtcbiAgLy93aWR0aDogYXV0bztcbiAgLy9mb250LXNpemU6MTZweDtcbiAgLy9mb250LXdlaWdodDogYm9sZDtcbiAgLy90ZXh0LWFsaWduOmNlbnRlcjtcbiAgLy90ZXh0LXNoYWRvdzowIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3JkZXI6IDA7XG4gIG91dGxpbmU6IDA7XG59XG4ubmF2YmFyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDUwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IGFudGlxdWV3aGl0ZTtcbiAgLy9wYWRkaW5nOiAxMHB4IDEwcHggMTBweCAzMHB4O1xufVxuXG4ubmF2YmFyQ29udGVudCB7XG4gIG1hcmdpbjogMTBweCAyMHB4O1xuXG4gIHNwYW4ge1xuICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgfVxuXG4gIGJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIH1cbn1cblxuLm5hdmJhclRpdGxlIHtcbiAgZm9udC1zaXplOiAxMnB0O1xuICAvL21hcmdpbjogNXB0O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLm1haW5fZnJhbWUge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNTVweDtcbiAgLy9tYXJnaW46IDBweCA1MHB4IDBweCA1MHB4O1xuICAvL2JhY2tncm91bmQ6ICNmZmZmZmY7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLmZsb2F0aW5nX2NvbnRlbnQge1xuICBwYWRkaW5nOiAxMHB4O1xuICBoZWlnaHQ6IDk0JTtcbn1cblxuLmNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDk1JTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogNXB4IGF1dG87XG59XG5cbiNib3R0b20tbWFyZ2luIHtcbiAgaGVpZ2h0OiAxMDBweDtcbn1cblxuLmNvbnRlbnQge1xuICBtYXgtd2lkdGg6IDk2MHB4O1xuICBtYXJnaW46IGF1dG87XG59XG5cbi53aGl0ZXNwYWNlIHtcbiAgaGVpZ2h0OiA4dmg7XG59IiwiXG4jc2VudGVuY2UtaW5wdXQge1xuICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDBweDtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIGZvcm0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgLmZvcm0tZ3JvdXAge1xuICAgICAgICAgICAgZmxleC1ncm93OiAzO1xuXG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgLy8gZmxleC1ncm93OiAzO1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA3MDBweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDUlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIH1cbiAgICB9XG59IiwiLmlucHV0LWRlc2NyaXB0aW9uIHtcblx0Zm9udC13ZWlnaHQ6IDgwMFxufVxuXG4jY29ubmVjdG9yLWNvbnRhaW5lciB7XG5cdG1hcmdpbjogNDBweCA0MHB4IDQwcHggNDBweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uY29ubmVjdG9yLWNvbnRyb2xzIHtcblx0ZGlzcGxheTogZ3JpZDtcblx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAwLjVmciAwLjVmcjtcbn1cblxuLnNsaWRlLWNvbnRhaW5lciB7XG5cdGdyaWQtY29sdW1uLXN0YXJ0OiAxO1xuXHRncmlkLWNvbHVtbi1lbmQ6IDI7XG5cdGdyaWQtcm93LXN0YXJ0OiAxO1xuXHRncmlkLXJvdy1lbmQ6IDI7XG5cdG1hcmdpbjogYXV0bztcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR3aWR0aDogNzUlOyBcbn1cblxuLnNsaWRlciB7XG5cdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcblx0d2lkdGg6IDEwcHg7XG5cdGhlaWdodDogMTBweDtcblx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRiYWNrZ3JvdW5kOiAjZDNkM2QzO1xuXHRvdXRsaW5lOiBub25lO1xuXHRvcGFjaXR5OiAwLjc7XG5cdC13ZWJraXQtdHJhbnNpdGlvbjogLjJzO1xuXHR0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycztcbn1cblxuLnNsaWRlcjpob3ZlciB7XG5cdG9wYWNpdHk6IDE7XG59XG5cbi5zbGlkZXI6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcblx0LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuXHRhcHBlYXJhbmNlOiBub25lO1xuXHR3aWR0aDogMTVweDtcblx0aGVpZ2h0OiAxNXB4O1xuXHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdGJhY2tncm91bmQ6ICM2NjY2NjY7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cblxuI2xheWVyLXNlbGVjdGlvbiB7XG5cdGdyaWQtY29sdW1uLXN0YXJ0OiAxO1xuXHRncmlkLWNvbHVtbi1lbmQ6IDI7XG5cdGdyaWQtcm93LXN0YXJ0OiAyO1xuXHRncmlkLXJvdy1lbmQ6IDM7XG5cbn1cbi5sYXllci1zZWxlY3Qge1xuXHRtYXJnaW4tYm90dG9tOiAyZW07XG59XG5cbiNhdG4tY29udGFpbmVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0ZmxleC13cmFwOiBub3dyYXA7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRhbGlnbi1pdGVtczogdG9wO1xuXG5cdG1hcmdpbjogMCBhdXRvO1xuXHR3aWR0aDogMTAwJTtcblx0dmVydGljYWwtYWxpZ246IHRvcDtcblxuXHQjbGVmdC1hdHQtaGVhZHMge1xuXHRcdG9yZGVyOjE7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cdH1cblxuXHQjbGVmdC10b2tlbnMge1xuXHRcdG9yZGVyOiAyO1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cdH1cblxuXG5cdCNhdG4tZGlzcGxheSB7XG5cdFx0b3JkZXI6IDM7XG5cdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0fVxuXG5cdCNyaWdodC10b2tlbnMge1xuXHRcdG9yZGVyOiA0O1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0fVxuXG5cdCNyaWdodC1hdHQtaGVhZHMge1xuXHRcdG9yZGVyOiA1O1xuXHRcdHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cdH1cblx0XG59XG5cbi5hdHQtcmVjdCB7XG5cdHRyYW5zaXRpb246IGZpbGwgMC4xcztcbn1cblxuLnRva2VuIHtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5hdG4tY3VydmUge1xuXHRmaWxsOiBub25lO1xuXHQvLyBzdHJva2Utd2lkdGg6IDM7XG5cdHN0cm9rZTogcHVycGxlO1xufVxuXG4ubWFza2VkLXRva2VuIHtcblx0Y29sb3I6IHJnYmEoMCwwLDAsMC4yKVxufVxuXG4udW5zZWxlY3RlZCB7XG5cdGZpbGw6IGdyYXk7XG59XG5cbi5zZWxlY3RlZC10b2tlbiB7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogM3B4O1xuXHRib3JkZXItY29sb3I6IHJnYigxNTMsIDE5NiwgMCk7XG59XG5cbi8qIFRoZSBzd2l0Y2ggLSB0aGUgYm94IGFyb3VuZCB0aGUgc2xpZGVyICovXG4uc3dpdGNoIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHdpZHRoOiA2MHB4O1xuXHRoZWlnaHQ6IDM0cHg7XG5cbi8qIEhpZGUgZGVmYXVsdCBIVE1MIGNoZWNrYm94ICovXG5cdGlucHV0IHtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHdpZHRoOiAwO1xuXHRcdGhlaWdodDogMDtcblx0fVxufVxuXG4vKiBUaGUgc2xpZGVyICovXG4uc2hvcnQtc2xpZGVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdHRvcDogMDtcblx0bGVmdDogMDtcblx0cmlnaHQ6IDA7XG5cdGJvdHRvbTogMDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2NjYztcblx0LXdlYmtpdC10cmFuc2l0aW9uOiAuNHM7XG5cdHRyYW5zaXRpb246IC40cztcblxuXHQmOmJlZm9yZSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0aGVpZ2h0OiAyNnB4O1xuXHRcdHdpZHRoOiAyNnB4O1xuXHRcdGxlZnQ6IDRweDtcblx0XHRib3R0b206IDRweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcblx0XHQtd2Via2l0LXRyYW5zaXRpb246IC40cztcblx0XHR0cmFuc2l0aW9uOiAuNHM7XG5cdH1cbn1cblxuaW5wdXQ6Y2hlY2tlZCArIC5zaG9ydC1zbGlkZXIge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjMjE5NkYzO1xufVxuXG5pbnB1dDpmb2N1cyArIC5zaG9ydC1zbGlkZXIge1xuXHRib3gtc2hhZG93OiAwIDAgMXB4ICMyMTk2RjM7XG59XG5cbmlucHV0OmNoZWNrZWQgKyAuc2hvcnQtc2xpZGVyOmJlZm9yZSB7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDI2cHgpO1xuXHQtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDI2cHgpO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjZweCk7XG59XG5cbi8qIFJvdW5kZWQgc2xpZGVycyAqL1xuLnNob3J0LXNsaWRlci5yb3VuZCB7XG5cdGJvcmRlci1yYWRpdXM6IDM0cHg7XG59XG5cbi5zaG9ydC1zbGlkZXIucm91bmQ6YmVmb3JlIHtcblx0Ym9yZGVyLXJhZGl1czogNTAlO1xufVxuXG4jc2VsZWN0LWFsbC1oZWFkc3sgXG5cdG1hcmdpbi10b3A6IDIwcHg7XG5cdG1hcmdpbi1ib3R0b206IDIwcHg7XG59IiwiQGltcG9ydCBcInBhbGV0dGUuc2Nzc1wiO1xuLy9AaW1wb3J0IFwiTGF0b0xpZ2h0LnNjc3NcIjtcbkBpbXBvcnQgXCIuLi9mb250cy9wbGV4X3NhbnMuY3NzXCI7XG5AaW1wb3J0IFwiYmFzZVwiO1xuQGltcG9ydCBcIlNlbnRlbmNlSW5wdXRcIjtcbkBpbXBvcnQgXCJBdHRlbnRpb25Db25uZWN0b3JDb250cm9sc1wiO1xuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6ICdJQk0gUGxleCBTYW5zJztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgd2lkdGg6IDgwJTtcbiAgbWF4LXdpZHRoOiAxNTAwcHg7XG59XG5cbi5sYXllckNoZWNrYm94IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmV5O1xuICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgcGFkZGluZy1yaWdodDogOHB4O1xuXG4gICYuYWN0aXZle1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM2YzcwNjc7XG4gIH1cbn1cblxuLm1haW4tZ3JpZCB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDAuMThmciAwLjJmciAwLjJmciAwLjA0ZnIgMC4yZnIgMC4yZnIgMC4xOGZyO1xuICBvdmVyZmxvdzogYXV0bztcbiAgbWF4LWhlaWdodDogMTAwdmg7XG59XG5cbiN2aXMtYnJlYWsge1xuICBoZWlnaHQ6IDE1cHg7XG59XG5cbmxhYmVsIHtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cblxuI2hlYWRlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyYXk7XG4gIGhlaWdodDogNDBweDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuXG4gIC5oZWFkZXItbG9nb3tcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgfVxuICAuaGVhZGVyLWluZm97XG4gICAgZm9udC1zaXplOiA5cHQ7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIGZsb2F0OnJpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIC8vbWFyZ2luLWJvdHRvbTogNXB4O1xuICB9XG5cblxuICAjaGVhZGVydGV4dHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgbWFyZ2luLWxlZnQ6IDMwJTtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICB9XG59XG5cbi5oaWdobGlnaHRlZCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTUyLCA4MywgMjE2LCAwLjgpO1xufVxuXG4jc2VsZWN0ZWQtaGVhZHMge1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG5cbiNjb3JwdXMtc2VsZWN0aW9uLWRlc2NyaXB0aW9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG59XG5cbiNjb3JwdXMtcXVlcnlpbmcge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIC5idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxufVxuXG4jdXNhZ2UtaW5mbyB7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIGNvbG9yOiByZ2IoODcsIDg3LCA4Nyk7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLnRpY2sge1xuICBmb250LXNpemU6IDE4cHg7XG59XG5cbiNjb25uZWN0b3ItY29udGFpbmVyIHtcbiAgLm1hdC1ob3Zlci1kaXNwbGF5e1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMDAsIDIwMCwgMjAwLCAwLjkzKTtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgcCB7XG4gICAgICBtYXJnaW46IDRweCAxcHggMXB4IDRweDtcbiAgICAgIC8vIG1hcmdpbjogYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLnJpZ2h0LXRva2VuLWhvdmVyIHtcbiAgICBib3JkZXItcmFkaXVzOiAxcHggOHB4IDhweCA4cHg7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLmxlZnQtdG9rZW4taG92ZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDhweCAxcHggOHB4IDhweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLm5leHQtdG9rZW4ge1xuICBjb2xvcjogcmdiYSgyMjgsIDEsIDEsIDAuOCk7XG4gIC1tb3otYm94LXNoYWRvdzogMCAwIDNweCAjY2NjO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAzcHggI2NjYztcbiAgYm94LXNoYWRvdzogMCAwIDNweCAjY2NjO1xufSJdLCJzb3VyY2VSb290IjoiIn0=*/
 
1
  @font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(7eeb10384e8e1ef96c87f7074cf2ef59.ttf) format("truetype")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans Regular"),local("IBMPlexSans-Regular"),url(05ca9c06114e79436ea9b5c8d4a7869c.ttf) format("truetype")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SemiBold"),local("IBMPlexSans-SemiBold"),url(a849e7649e2005ab4aecfa50d96120e1.ttf) format("truetype")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(4171e41154ba857f85c536f167d581ba.ttf) format("truetype")}
2
+ body{background-color:#fff;font-family:IBM Plex Sans,sans-serif;font-weight:400}.sticky{position:fixed}.noscroll{overflow:hidden}.vpartial{max-height:90vh}.scrolling{overflow:auto;max-height:98%}.btn .btn-xs{padding:.25rem .4rem;font-size:.875rem;line-height:.5;border-radius:.2rem}button{-webkit-transition-duration:.4s;transition-duration:.4s;background:transparent;padding:5px;border-radius:5px;background-color:#d3d3d3}button.selected,button:active :focus{background-color:#98b7d9}#loader{border:5px solid #f3f3f3;border-radius:50%;border-top:5px solid #3498db;width:100px;height:100px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite;position:absolute;left:50%;top:20%;display:none}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}svg{vertical-align:top}select{font-size:9pt;font-weight:600;background-color:transparent;padding:8px 6px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border:0;outline:0}.navbar{position:absolute;top:0;left:0;width:100%;height:50px;background-color:#faebd7}.navbarContent{margin:10px 20px}.navbarContent span{padding-left:10px}.navbarContent button{margin-left:10px}.navbarTitle{font-size:12pt;font-weight:700}.main_frame{position:fixed;top:55px;overflow-x:hidden;overflow-y:auto}.floating_content{padding:10px;height:94%}.container{width:100%;height:95%;text-align:center;display:inline-block;margin:5px auto}#bottom-margin{height:100px}.content{max-width:960px;margin:auto}.whitespace{height:8vh}#sentence-input{margin-bottom:0;margin-right:0;width:100%}#sentence-input form{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-evenly;align-items:center}#sentence-input form .form-group{flex-grow:3}#sentence-input form .form-group input{width:100%}#sentence-input form .btn{flex-grow:1}.input-description{font-weight:800}#connector-container{align-items:center}.connector-controls{display:grid;grid-template-columns:.5fr .5fr}.slider{-webkit-appearance:none;width:10px;height:10px;border-radius:5px;background:#d3d3d3;outline:none;opacity:.7;-webkit-transition:.2s;transition:opacity .2s}.slider:hover{opacity:1}.slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:15px;height:15px;border-radius:50%;background:#666;cursor:pointer}#layer-selection{grid-column-start:1;grid-column-end:2;grid-row-start:2;grid-row-end:3}.layer-select{margin-bottom:2em}#atn-container{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:top;margin:0 auto;width:100%;vertical-align:top}#atn-container #left-att-heads{order:1;display:inline-block;vertical-align:top}#atn-container #left-tokens{order:2;text-align:right;vertical-align:top}#atn-container #atn-display{order:3;vertical-align:top}#atn-container #right-tokens{order:4;text-align:left;vertical-align:top}#atn-container #right-att-heads{order:5;vertical-align:top}.att-rect{transition:fill .1s}.token{display:block}.atn-curve{fill:none;stroke:purple}.masked-token{color:rgba(0,0,0,.2)}.unselected{fill:gray}.selected-token{border:3px solid #99c400}.switch{position:relative;display:inline-block;width:46px;height:20px}.switch input{opacity:0;width:0;height:0}.short-slider{cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc}.short-slider,.short-slider:before{position:absolute;-webkit-transition:.4s;transition:.4s}.short-slider:before{content:"";height:13px;width:13px;left:4px;bottom:4px;background-color:#fff}input:checked+.short-slider{background-color:#2196f3}input:focus+.short-slider{box-shadow:0 0 1px #2196f3}input:checked+.short-slider:before{-webkit-transform:translateX(26px);-ms-transform:translateX(26px);transform:translateX(26px)}.short-slider.round{border-radius:17px}.short-slider.round:before{border-radius:50%}#select-all-heads{margin-top:20px;margin-bottom:20px}body{font-family:IBM Plex Sans;margin-left:auto;margin-right:auto;width:80%;max-width:1500px}.layerCheckbox{background-color:#d3d3d3;padding-left:8px;padding-right:8px}.layerCheckbox.active{color:#fff;background-color:#6c7067}.main-grid{width:100%;display:grid;grid-template-columns:.18fr .2fr .2fr .04fr .2fr .2fr .18fr;overflow:auto;max-height:100vh}#vis-break{height:15px}#header{width:100%;background-color:#d3d3d3;height:40px;margin-bottom:5px}#header .header-logo{height:20px;display:inline-block;margin-left:10px;margin-top:5px;margin-bottom:5px}#header .header-info{font-size:9pt;height:30px;display:inline-block;float:right;margin-right:10px;margin-top:10px}#header #headertext{text-align:center;display:inline-block;font-size:18px;margin-left:30%;margin-top:5px;margin-bottom:5px}.highlighted{background:rgba(152,83,216,.8)}#selected-heads{margin-bottom:1em}#corpus-selection-description{display:inline-block;margin-right:15px}#corpus-querying,#corpus-querying .btn{display:inline-block}#usage-info{margin-top:10px;color:#575757;font-size:14px}.tick{font-size:18px}#connector-container .mat-hover-display{pointer-events:none;display:block;position:absolute;visibility:hidden;background-color:hsla(0,0%,78%,.93);font-size:14px}#connector-container .mat-hover-display p{margin:4px 1px 1px 4px}.right-token-hover{border-radius:1px 8px 8px 8px;text-align:left}.left-token-hover{border-radius:8px 1px 8px 8px;text-align:right}.next-token{color:rgba(228,1,1,.8);-moz-box-shadow:0 0 3px #ccc;-webkit-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc}
3
 
4
+ /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9mb250cy9wbGV4X3NhbnMuY3NzIiwid2VicGFjazovLy8uL2Nzcy9jc3MvYmFzZS5zY3NzIiwid2VicGFjazovLy8uL2Nzcy9jc3MvU2VudGVuY2VJbnB1dC5zY3NzIiwid2VicGFjazovLy8uL2Nzcy9jc3MvQXR0ZW50aW9uQ29ubmVjdG9yQ29udHJvbHMuc2NzcyIsIndlYnBhY2s6Ly8vLi9jc3MvY3NzL21haW4uc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxXQUNFLDBCQUNBLGtCQUNBLGdCQUNBLDRHQUEySCxDQUc3SCxXQUNFLDBCQUNBLGtCQUNBLGdCQUNBLGdIQUFpSSxDQUduSSxXQUNFLDBCQUNBLGtCQUNBLGdCQUNBLGtIQUFvSSxDQUd0SSxXQUNFLDBCQUNBLGtCQUNBLGdCQUNBLDBHQUF3SCxDQUN6SCxnRDtBQzNCRCxLQUNFLHNCQUNBLHFDQUNBLGVBQWdCLENBR2xCLFFBQ0UsY0FBZSxDQUdqQixVQUNFLGVBQWdCLENBR2xCLFVBQ0UsZUFBZ0IsQ0FHbEIsV0FDRSxjQUNBLGNBQWUsQ0FHakIsYUFFSSxxQkFDQSxrQkFDQSxlQUNBLG1CQUFxQixDQUl6QixPQUNFLGdDQUNBLHdCQUNBLHVCQUNBLFlBQ0Esa0JBQ0Esd0JBQTJCLENBTzdCLHFDQUNFLHdCQUF5QixDQUczQixRQUNFLHlCQUNBLGtCQUNBLDZCQUNBLFlBQ0EsYUFDQSwwQ0FDQSxrQ0FDQSxrQkFDQSxTQUNBLFFBQ0EsWUFBYSxDQUlmLHdCQUNFLEdBQ0UsOEJBQStCLENBRWpDLEdBQ0UsK0JBQWlDLEVBSXJDLGdCQUNFLEdBQ0Usc0JBQXVCLENBRXpCLEdBQ0UsdUJBQXlCLEVBSTdCLElBQ0Usa0JBQW1CLENBR3JCLE9BQ0UsY0FDQSxnQkFHQSw2QkFLQSxnQkFNQSw4QkFDQSwyQkFDQSxzQkFDQSxrQkFDQSxTQUNBLFNBQVUsQ0FFWixRQUNFLGtCQUNBLE1BQ0EsT0FDQSxXQUNBLFlBQ0Esd0JBQThCLENBSWhDLGVBQ0UsZ0JBQWlCLENBU2xCLG9CQU5HLGlCQUFrQixDQUNuQixzQkFHQyxnQkFBaUIsQ0FJckIsYUFDRSxlQUVBLGVBQWlCLENBR25CLFlBQ0UsZUFDQSxTQUdBLGtCQUNBLGVBQWdCLENBR2xCLGtCQUNFLGFBQ0EsVUFBVyxDQUdiLFdBQ0UsV0FDQSxXQUNBLGtCQUNBLHFCQUNBLGVBQWdCLENBR2xCLGVBQ0UsWUFBYSxDQUdmLFNBQ0UsZ0JBQ0EsV0FBWSxDQUdkLFlBQ0UsVUFBVyxDQ3hLYixnQkFDSSxnQkFDQSxlQUVBLFVBQVcsQ0F5QmQscUJBckJPLGFBQ0EsbUJBQ0EsaUJBQ0EsNkJBQ0Esa0JBQW1CLENBZ0J0QixpQ0FiTyxXQUFZLENBUWYsdUNBSk8sVUFBVyxDQUdkLDBCQUlELFdBQVksQ0MzQnhCLG1CQUNDLGVBQ0QsQ0FFQSxxQkFFSSxrQkFBbUIsQ0FHdkIsb0JBQ0MsYUFDQSwrQkFBa0MsQ0FhbkMsUUFDQyx3QkFDQSxXQUNBLFlBQ0Esa0JBQ0EsbUJBQ0EsYUFDQSxXQUNBLHVCQUNBLHNCQUF1QixDQUd4QixjQUNDLFNBQVUsQ0FHWCw4QkFDQyx3QkFDQSxnQkFDQSxXQUNBLFlBQ0Esa0JBQ0EsZ0JBQ0EsY0FBZSxDQUdoQixpQkFDQyxvQkFDQSxrQkFDQSxpQkFDQSxjQUFlLENBR2hCLGNBQ0MsaUJBQWtCLENBR25CLGVBQ0MsYUFDQSxtQkFDQSxpQkFDQSx1QkFDQSxnQkFFQSxjQUNBLFdBQ0Esa0JBQW1CLENBK0JuQiwrQkE1QkMsUUFDQSxxQkFDQSxrQkFBbUIsQ0FDbkIsNEJBR0EsUUFDQSxpQkFDQSxrQkFBbUIsQ0FDbkIsNEJBSUEsUUFDQSxrQkFBbUIsQ0FDbkIsNkJBR0EsUUFDQSxnQkFDQSxrQkFBbUIsQ0FDbkIsZ0NBR0EsUUFDQSxrQkFBbUIsQ0FLckIsVUFDQyxtQkFBcUIsQ0FHdEIsT0FDQyxhQUFjLENBR2YsV0FDQyxVQUVBLGFBQWMsQ0FHZixjQUNDLG9CQUFzQixDQUd2QixZQUNDLFNBQVUsQ0FHWCxnQkFHQyx3QkFBOEIsQ0FJL0IsUUFDQyxrQkFDQSxxQkFDQSxXQUNBLFdBQVksQ0FRWixjQUpDLFVBQ0EsUUFDQSxRQUFTLENBS1gsY0FFQyxlQUNBLE1BQ0EsT0FDQSxRQUNBLFNBQ0EscUJBQXNCLENBZXRCLG1DQXJCQSxrQkFPQSx1QkFDQSxjQUFlLENBWWQscUJBUkEsV0FDQSxZQUNBLFdBQ0EsU0FDQSxXQUNBLHFCQUF1QixDQU16Qiw0QkFDQyx3QkFBeUIsQ0FHMUIsMEJBQ0MsMEJBQTJCLENBRzVCLG1DQUNDLG1DQUNBLCtCQUNBLDBCQUEyQixDQUk1QixvQkFDQyxrQkFBbUIsQ0FHcEIsMkJBQ0MsaUJBQWtCLENBR25CLGtCQUNDLGdCQUNBLGtCQUFtQixDQzdMcEIsS0FDRSwwQkFDQSxpQkFDQSxrQkFDQSxVQUNBLGdCQUFpQixDQUduQixlQUNFLHlCQUNBLGlCQUNBLGlCQUFrQixDQU1uQixzQkFIRyxXQUNBLHdCQUF5QixDQUk3QixXQUNFLFdBQ0EsYUFDQSw0REFDQSxjQUNBLGdCQUFpQixDQUduQixXQUNFLFdBQVksQ0FPZCxRQUNFLFdBQ0EseUJBQ0EsWUFDQSxpQkFBa0IsQ0E0Qm5CLHFCQXpCRyxZQUNBLHFCQUNBLGlCQUNBLGVBQ0EsaUJBQWtCLENBQ25CLHFCQUVDLGNBQ0EsWUFDQSxxQkFDQSxZQUNBLGtCQUNBLGVBQWdCLENBRWpCLG9CQUlDLGtCQUNBLHFCQUNBLGVBQ0EsZ0JBQ0EsZUFDQSxpQkFBa0IsQ0FJdEIsYUFDRSw4QkFBbUMsQ0FHckMsZ0JBQ0UsaUJBQWtCLENBR3BCLDhCQUNFLHFCQUNBLGlCQUFrQixDQUdwQix1Q0FHSSxvQkFBcUIsQ0FJekIsWUFDRSxnQkFDQSxjQUNBLGNBQWUsQ0FHakIsTUFDRSxjQUFlLENBR2pCLHdDQUVJLG9CQUNBLGNBQ0Esa0JBQ0Esa0JBQ0Esb0NBQ0EsY0FBZSxDQUtoQiwwQ0FIRyxzQkFBdUIsQ0FNN0IsbUJBQ0ksOEJBQ0EsZUFBZ0IsQ0FHcEIsa0JBQ0ksOEJBQ0EsZ0JBQWlCLENBR3JCLFlBQ0UsdUJBQ0EsNkJBQ0EsZ0NBQ0EsdUJBQXdCLEMiLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBjeXJpbGxpYy1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0lCTSBQbGV4IFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIHNyYzogbG9jYWwoJ0lCTSBQbGV4IFNhbnMgTGlnaHQnKSwgbG9jYWwoJ0lCTVBsZXhTYW5zLUxpZ2h0JyksIHVybChJQk1fUGxleF9TYW5zL0lCTVBsZXhTYW5zLUxpZ2h0LnR0ZikgZm9ybWF0KCd0cnVldHlwZScpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdJQk0gUGxleCBTYW5zJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBzcmM6IGxvY2FsKCdJQk0gUGxleCBTYW5zIFJlZ3VsYXInKSwgbG9jYWwoJ0lCTVBsZXhTYW5zLVJlZ3VsYXInKSwgdXJsKElCTV9QbGV4X1NhbnMvSUJNUGxleFNhbnMtUmVndWxhci50dGYpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnSUJNIFBsZXggU2Fucyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgc3JjOiBsb2NhbCgnSUJNIFBsZXggU2FucyBTZW1pQm9sZCcpLCBsb2NhbCgnSUJNUGxleFNhbnMtU2VtaUJvbGQnKSwgdXJsKElCTV9QbGV4X1NhbnMvSUJNUGxleFNhbnMtU2VtaUJvbGQudHRmKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0lCTSBQbGV4IFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoJ0lCTSBQbGV4IFNhbnMgQm9sZCcpLCBsb2NhbCgnSUJNUGxleFNhbnMtQm9sZCcpLCB1cmwoSUJNX1BsZXhfU2Fucy9JQk1QbGV4U2Fucy1Cb2xkLnR0ZikgZm9ybWF0KCd0cnVldHlwZScpO1xufVxuIiwiYm9keSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTtcbiAgZm9udC1mYW1pbHk6ICdJQk0gUGxleCBTYW5zJywgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuLnN0aWNreSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cblxuLm5vc2Nyb2xsIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnZwYXJ0aWFsIHtcbiAgbWF4LWhlaWdodDogOTB2aDtcbn1cblxuLnNjcm9sbGluZyB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBtYXgtaGVpZ2h0OiA5OCU7XG59XG5cbi5idG4ge1xuICAuYnRuLXhzIHtcbiAgICBwYWRkaW5nICA6IC4yNXJlbSAuNHJlbTtcbiAgICBmb250LXNpemUgIDogLjg3NXJlbTtcbiAgICBsaW5lLWhlaWdodCAgOiAuNTtcbiAgICBib3JkZXItcmFkaXVzIDogLjJyZW07XG4gIH1cbn1cblxuYnV0dG9uIHtcbiAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjRzOyAvKiBTYWZhcmkgKi9cbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40cztcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDVweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyYXk7XG5cbiAgJi5zZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzk4YjdkOTtcbiAgfVxufVxuXG5idXR0b246YWN0aXZlIDpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5OGI3ZDk7XG59XG5cbiNsb2FkZXIge1xuICBib3JkZXI6IDVweCBzb2xpZCAjZjNmM2YzO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJvcmRlci10b3A6IDVweCBzb2xpZCAjMzQ5OGRiO1xuICB3aWR0aDogMTAwcHg7XG4gIGhlaWdodDogMTAwcHg7XG4gIC13ZWJraXQtYW5pbWF0aW9uOiBzcGluIDJzIGxpbmVhciBpbmZpbml0ZTsgLyogU2FmYXJpICovXG4gIGFuaW1hdGlvbjogc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0b3A6IDIwJTtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogU2FmYXJpICovXG5ALXdlYmtpdC1rZXlmcmFtZXMgc3BpbiB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNwaW4ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG5zdmcge1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG5zZWxlY3Qge1xuICBmb250LXNpemU6IDlwdDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcblxuICAvL2JhY2tncm91bmQ6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTBweCcgaGVpZ2h0PScxMHB4Jz48cG9seWxpbmUgcG9pbnRzPScwLDAgMTAsMCA1LDEwJy8+PC9zdmc+XCIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLy9iYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAvL2JhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDVweCB0b3AgOXB4O1xuICAvL2JhY2tncm91bmQtc2l6ZTogN3B4IDdweDtcbiAgLy9wYWRkaW5nOiA1cHggMTVweCA1cHggNXB4O1xuICBwYWRkaW5nOiA4cHggNnB4O1xuICAvL3dpZHRoOiBhdXRvO1xuICAvL2ZvbnQtc2l6ZToxNnB4O1xuICAvL2ZvbnQtd2VpZ2h0OiBib2xkO1xuICAvL3RleHQtYWxpZ246Y2VudGVyO1xuICAvL3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJvcmRlcjogMDtcbiAgb3V0bGluZTogMDtcbn1cbi5uYXZiYXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNTBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogYW50aXF1ZXdoaXRlO1xuICAvL3BhZGRpbmc6IDEwcHggMTBweCAxMHB4IDMwcHg7XG59XG5cbi5uYXZiYXJDb250ZW50IHtcbiAgbWFyZ2luOiAxMHB4IDIwcHg7XG5cbiAgc3BhbiB7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICB9XG5cbiAgYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgfVxufVxuXG4ubmF2YmFyVGl0bGUge1xuICBmb250LXNpemU6IDEycHQ7XG4gIC8vbWFyZ2luOiA1cHQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4ubWFpbl9mcmFtZSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA1NXB4O1xuICAvL21hcmdpbjogMHB4IDUwcHggMHB4IDUwcHg7XG4gIC8vYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uZmxvYXRpbmdfY29udGVudCB7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGhlaWdodDogOTQlO1xufVxuXG4uY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogOTUlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiA1cHggYXV0bztcbn1cblxuI2JvdHRvbS1tYXJnaW4ge1xuICBoZWlnaHQ6IDEwMHB4O1xufVxuXG4uY29udGVudCB7XG4gIG1heC13aWR0aDogOTYwcHg7XG4gIG1hcmdpbjogYXV0bztcbn1cblxuLndoaXRlc3BhY2Uge1xuICBoZWlnaHQ6IDh2aDtcbn0iLCJcbiNzZW50ZW5jZS1pbnB1dCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIG1hcmdpbi1yaWdodDogMHB4O1xuICAgIC8vbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG5cblxuICAgIGZvcm0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgLmZvcm0tZ3JvdXAge1xuICAgICAgICAgICAgZmxleC1ncm93OiAzO1xuXG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgLy8gZmxleC1ncm93OiAzO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIC8vbWF4LXdpZHRoOiA3MDBweDtcbiAgICAgICAgICAgICAgICAvL21hcmdpbi1yaWdodDogNSU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5pbnB1dC1kZXNjcmlwdGlvbiB7XG5cdGZvbnQtd2VpZ2h0OiA4MDBcbn1cblxuI2Nvbm5lY3Rvci1jb250YWluZXIge1xuXHQvL21hcmdpbjogNDBweCA0MHB4IDQwcHggNDBweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uY29ubmVjdG9yLWNvbnRyb2xzIHtcblx0ZGlzcGxheTogZ3JpZDtcblx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAwLjVmciAwLjVmcjtcbn1cblxuLy8uc2xpZGUtY29udGFpbmVyIHtcbi8vXHRncmlkLWNvbHVtbi1zdGFydDogMTtcbi8vXHRncmlkLWNvbHVtbi1lbmQ6IDI7XG4vL1x0Z3JpZC1yb3ctc3RhcnQ6IDE7XG4vL1x0Z3JpZC1yb3ctZW5kOiAyO1xuLy9cdG1hcmdpbjogYXV0bztcbi8vXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG4vL1x0d2lkdGg6IDc1JTtcbi8vfVxuXG4uc2xpZGVyIHtcblx0LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuXHR3aWR0aDogMTBweDtcblx0aGVpZ2h0OiAxMHB4O1xuXHRib3JkZXItcmFkaXVzOiA1cHg7XG5cdGJhY2tncm91bmQ6ICNkM2QzZDM7XG5cdG91dGxpbmU6IG5vbmU7XG5cdG9wYWNpdHk6IDAuNztcblx0LXdlYmtpdC10cmFuc2l0aW9uOiAuMnM7XG5cdHRyYW5zaXRpb246IG9wYWNpdHkgLjJzO1xufVxuXG4uc2xpZGVyOmhvdmVyIHtcblx0b3BhY2l0eTogMTtcbn1cblxuLnNsaWRlcjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG5cdGFwcGVhcmFuY2U6IG5vbmU7XG5cdHdpZHRoOiAxNXB4O1xuXHRoZWlnaHQ6IDE1cHg7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0YmFja2dyb3VuZDogIzY2NjY2Njtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4jbGF5ZXItc2VsZWN0aW9uIHtcblx0Z3JpZC1jb2x1bW4tc3RhcnQ6IDE7XG5cdGdyaWQtY29sdW1uLWVuZDogMjtcblx0Z3JpZC1yb3ctc3RhcnQ6IDI7XG5cdGdyaWQtcm93LWVuZDogMztcblxufVxuLmxheWVyLXNlbGVjdCB7XG5cdG1hcmdpbi1ib3R0b206IDJlbTtcbn1cblxuI2F0bi1jb250YWluZXIge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGFsaWduLWl0ZW1zOiB0b3A7XG5cblx0bWFyZ2luOiAwIGF1dG87XG5cdHdpZHRoOiAxMDAlO1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXG5cdCNsZWZ0LWF0dC1oZWFkcyB7XG5cdFx0b3JkZXI6MTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0fVxuXG5cdCNsZWZ0LXRva2VucyB7XG5cdFx0b3JkZXI6IDI7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0fVxuXG5cblx0I2F0bi1kaXNwbGF5IHtcblx0XHRvcmRlcjogMztcblx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXHR9XG5cblx0I3JpZ2h0LXRva2VucyB7XG5cdFx0b3JkZXI6IDQ7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXHR9XG5cblx0I3JpZ2h0LWF0dC1oZWFkcyB7XG5cdFx0b3JkZXI6IDU7XG5cdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0fVxuXG59XG5cbi5hdHQtcmVjdCB7XG5cdHRyYW5zaXRpb246IGZpbGwgMC4xcztcbn1cblxuLnRva2VuIHtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5hdG4tY3VydmUge1xuXHRmaWxsOiBub25lO1xuXHQvLyBzdHJva2Utd2lkdGg6IDM7XG5cdHN0cm9rZTogcHVycGxlO1xufVxuXG4ubWFza2VkLXRva2VuIHtcblx0Y29sb3I6IHJnYmEoMCwwLDAsMC4yKVxufVxuXG4udW5zZWxlY3RlZCB7XG5cdGZpbGw6IGdyYXk7XG59XG5cbi5zZWxlY3RlZC10b2tlbiB7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogM3B4O1xuXHRib3JkZXItY29sb3I6IHJnYigxNTMsIDE5NiwgMCk7XG59XG5cbi8qIFRoZSBzd2l0Y2ggLSB0aGUgYm94IGFyb3VuZCB0aGUgc2xpZGVyICovXG4uc3dpdGNoIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHdpZHRoOiA0NnB4O1xuXHRoZWlnaHQ6IDIwcHg7XG5cbi8qIEhpZGUgZGVmYXVsdCBIVE1MIGNoZWNrYm94ICovXG5cdGlucHV0IHtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHdpZHRoOiAwO1xuXHRcdGhlaWdodDogMDtcblx0fVxufVxuXG4vKiBUaGUgc2xpZGVyICovXG4uc2hvcnQtc2xpZGVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdHRvcDogMDtcblx0bGVmdDogMDtcblx0cmlnaHQ6IDA7XG5cdGJvdHRvbTogMDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2NjYztcblx0LXdlYmtpdC10cmFuc2l0aW9uOiAuNHM7XG5cdHRyYW5zaXRpb246IC40cztcblxuXHQmOmJlZm9yZSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0aGVpZ2h0OiAxM3B4O1xuXHRcdHdpZHRoOiAxM3B4O1xuXHRcdGxlZnQ6IDRweDtcblx0XHRib3R0b206IDRweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcblx0XHQtd2Via2l0LXRyYW5zaXRpb246IC40cztcblx0XHR0cmFuc2l0aW9uOiAuNHM7XG5cdH1cbn1cblxuaW5wdXQ6Y2hlY2tlZCArIC5zaG9ydC1zbGlkZXIge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjMjE5NkYzO1xufVxuXG5pbnB1dDpmb2N1cyArIC5zaG9ydC1zbGlkZXIge1xuXHRib3gtc2hhZG93OiAwIDAgMXB4ICMyMTk2RjM7XG59XG5cbmlucHV0OmNoZWNrZWQgKyAuc2hvcnQtc2xpZGVyOmJlZm9yZSB7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDI2cHgpO1xuXHQtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDI2cHgpO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjZweCk7XG59XG5cbi8qIFJvdW5kZWQgc2xpZGVycyAqL1xuLnNob3J0LXNsaWRlci5yb3VuZCB7XG5cdGJvcmRlci1yYWRpdXM6IDE3cHg7XG59XG5cbi5zaG9ydC1zbGlkZXIucm91bmQ6YmVmb3JlIHtcblx0Ym9yZGVyLXJhZGl1czogNTAlO1xufVxuXG4jc2VsZWN0LWFsbC1oZWFkc3tcblx0bWFyZ2luLXRvcDogMjBweDtcblx0bWFyZ2luLWJvdHRvbTogMjBweDtcbn1cbiIsIkBpbXBvcnQgXCJwYWxldHRlLnNjc3NcIjtcbi8vQGltcG9ydCBcIkxhdG9MaWdodC5zY3NzXCI7XG5AaW1wb3J0IFwiLi4vZm9udHMvcGxleF9zYW5zLmNzc1wiO1xuQGltcG9ydCBcImJhc2VcIjtcbkBpbXBvcnQgXCJTZW50ZW5jZUlucHV0XCI7XG5AaW1wb3J0IFwiQXR0ZW50aW9uQ29ubmVjdG9yQ29udHJvbHNcIjtcblxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiAnSUJNIFBsZXggU2Fucyc7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIHdpZHRoOiA4MCU7XG4gIG1heC13aWR0aDogMTUwMHB4O1xufVxuXG4ubGF5ZXJDaGVja2JveCB7XG4gIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JleTtcbiAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDhweDtcblxuICAmLmFjdGl2ZXtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3MDY3O1xuICB9XG59XG5cbi5tYWluLWdyaWQge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAwLjE4ZnIgMC4yZnIgMC4yZnIgMC4wNGZyIDAuMmZyIDAuMmZyIDAuMThmcjtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIG1heC1oZWlnaHQ6IDEwMHZoO1xufVxuXG4jdmlzLWJyZWFrIHtcbiAgaGVpZ2h0OiAxNXB4O1xufVxuXG5sYWJlbCB7XG4gIC8vbWFyZ2luLWxlZnQ6IDVweDtcbn1cblxuI2hlYWRlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyYXk7XG4gIGhlaWdodDogNDBweDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuXG4gIC5oZWFkZXItbG9nb3tcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgfVxuICAuaGVhZGVyLWluZm97XG4gICAgZm9udC1zaXplOiA5cHQ7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIGZsb2F0OnJpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIC8vbWFyZ2luLWJvdHRvbTogNXB4O1xuICB9XG5cblxuICAjaGVhZGVydGV4dHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgbWFyZ2luLWxlZnQ6IDMwJTtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICB9XG59XG5cbi5oaWdobGlnaHRlZCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTUyLCA4MywgMjE2LCAwLjgpO1xufVxuXG4jc2VsZWN0ZWQtaGVhZHMge1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG5cbiNjb3JwdXMtc2VsZWN0aW9uLWRlc2NyaXB0aW9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG59XG5cbiNjb3JwdXMtcXVlcnlpbmcge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIC5idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxufVxuXG4jdXNhZ2UtaW5mbyB7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIGNvbG9yOiByZ2IoODcsIDg3LCA4Nyk7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLnRpY2sge1xuICBmb250LXNpemU6IDE4cHg7XG59XG5cbiNjb25uZWN0b3ItY29udGFpbmVyIHtcbiAgLm1hdC1ob3Zlci1kaXNwbGF5e1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMDAsIDIwMCwgMjAwLCAwLjkzKTtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgcCB7XG4gICAgICBtYXJnaW46IDRweCAxcHggMXB4IDRweDtcbiAgICAgIC8vIG1hcmdpbjogYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLnJpZ2h0LXRva2VuLWhvdmVyIHtcbiAgICBib3JkZXItcmFkaXVzOiAxcHggOHB4IDhweCA4cHg7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLmxlZnQtdG9rZW4taG92ZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDhweCAxcHggOHB4IDhweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLm5leHQtdG9rZW4ge1xuICBjb2xvcjogcmdiYSgyMjgsIDEsIDEsIDAuOCk7XG4gIC1tb3otYm94LXNoYWRvdzogMCAwIDNweCAjY2NjO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAzcHggI2NjYztcbiAgYm94LXNoYWRvdzogMCAwIDNweCAjY2NjO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==*/
client/dist/main.js CHANGED
The diff for this file is too large to render. See raw diff
 
client/dist/vendor.js CHANGED
@@ -78567,202 +78567,202 @@ __webpack_require__.r(__webpack_exports__);
78567
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; });
78568
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; });
78569
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; });
78570
- /*! *****************************************************************************
78571
- Copyright (c) Microsoft Corporation. All rights reserved.
78572
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
78573
- this file except in compliance with the License. You may obtain a copy of the
78574
- License at http://www.apache.org/licenses/LICENSE-2.0
78575
-
78576
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
78577
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
78578
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
78579
- MERCHANTABLITY OR NON-INFRINGEMENT.
78580
-
78581
- See the Apache Version 2.0 License for specific language governing permissions
78582
- and limitations under the License.
78583
- ***************************************************************************** */
78584
- /* global Reflect, Promise */
78585
-
78586
- var extendStatics = function(d, b) {
78587
- extendStatics = Object.setPrototypeOf ||
78588
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
78589
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
78590
- return extendStatics(d, b);
78591
- };
78592
-
78593
- function __extends(d, b) {
78594
- extendStatics(d, b);
78595
- function __() { this.constructor = d; }
78596
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
78597
- }
78598
-
78599
- var __assign = function() {
78600
- __assign = Object.assign || function __assign(t) {
78601
- for (var s, i = 1, n = arguments.length; i < n; i++) {
78602
- s = arguments[i];
78603
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
78604
- }
78605
- return t;
78606
- }
78607
- return __assign.apply(this, arguments);
78608
- }
78609
-
78610
- function __rest(s, e) {
78611
- var t = {};
78612
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
78613
- t[p] = s[p];
78614
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
78615
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
78616
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
78617
- t[p[i]] = s[p[i]];
78618
- }
78619
- return t;
78620
- }
78621
-
78622
- function __decorate(decorators, target, key, desc) {
78623
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
78624
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
78625
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
78626
- return c > 3 && r && Object.defineProperty(target, key, r), r;
78627
- }
78628
-
78629
- function __param(paramIndex, decorator) {
78630
- return function (target, key) { decorator(target, key, paramIndex); }
78631
- }
78632
-
78633
- function __metadata(metadataKey, metadataValue) {
78634
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
78635
- }
78636
-
78637
- function __awaiter(thisArg, _arguments, P, generator) {
78638
- return new (P || (P = Promise))(function (resolve, reject) {
78639
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
78640
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
78641
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
78642
- step((generator = generator.apply(thisArg, _arguments || [])).next());
78643
- });
78644
- }
78645
-
78646
- function __generator(thisArg, body) {
78647
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
78648
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
78649
- function verb(n) { return function (v) { return step([n, v]); }; }
78650
- function step(op) {
78651
- if (f) throw new TypeError("Generator is already executing.");
78652
- while (_) try {
78653
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
78654
- if (y = 0, t) op = [op[0] & 2, t.value];
78655
- switch (op[0]) {
78656
- case 0: case 1: t = op; break;
78657
- case 4: _.label++; return { value: op[1], done: false };
78658
- case 5: _.label++; y = op[1]; op = [0]; continue;
78659
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
78660
- default:
78661
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
78662
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
78663
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
78664
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
78665
- if (t[2]) _.ops.pop();
78666
- _.trys.pop(); continue;
78667
- }
78668
- op = body.call(thisArg, _);
78669
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
78670
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
78671
- }
78672
- }
78673
-
78674
- function __exportStar(m, exports) {
78675
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
78676
- }
78677
-
78678
- function __values(o) {
78679
- var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
78680
- if (m) return m.call(o);
78681
- return {
78682
- next: function () {
78683
- if (o && i >= o.length) o = void 0;
78684
- return { value: o && o[i++], done: !o };
78685
- }
78686
- };
78687
- }
78688
-
78689
- function __read(o, n) {
78690
- var m = typeof Symbol === "function" && o[Symbol.iterator];
78691
- if (!m) return o;
78692
- var i = m.call(o), r, ar = [], e;
78693
- try {
78694
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
78695
- }
78696
- catch (error) { e = { error: error }; }
78697
- finally {
78698
- try {
78699
- if (r && !r.done && (m = i["return"])) m.call(i);
78700
- }
78701
- finally { if (e) throw e.error; }
78702
- }
78703
- return ar;
78704
- }
78705
-
78706
- function __spread() {
78707
- for (var ar = [], i = 0; i < arguments.length; i++)
78708
- ar = ar.concat(__read(arguments[i]));
78709
- return ar;
78710
- }
78711
-
78712
- function __spreadArrays() {
78713
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
78714
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
78715
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
78716
- r[k] = a[j];
78717
- return r;
78718
- };
78719
-
78720
- function __await(v) {
78721
- return this instanceof __await ? (this.v = v, this) : new __await(v);
78722
- }
78723
-
78724
- function __asyncGenerator(thisArg, _arguments, generator) {
78725
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
78726
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
78727
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
78728
- function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
78729
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
78730
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
78731
- function fulfill(value) { resume("next", value); }
78732
- function reject(value) { resume("throw", value); }
78733
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
78734
- }
78735
-
78736
- function __asyncDelegator(o) {
78737
- var i, p;
78738
- return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
78739
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
78740
- }
78741
-
78742
- function __asyncValues(o) {
78743
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
78744
- var m = o[Symbol.asyncIterator], i;
78745
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
78746
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
78747
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
78748
- }
78749
-
78750
- function __makeTemplateObject(cooked, raw) {
78751
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
78752
- return cooked;
78753
- };
78754
-
78755
- function __importStar(mod) {
78756
- if (mod && mod.__esModule) return mod;
78757
- var result = {};
78758
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
78759
- result.default = mod;
78760
- return result;
78761
- }
78762
-
78763
- function __importDefault(mod) {
78764
- return (mod && mod.__esModule) ? mod : { default: mod };
78765
- }
78766
 
78767
 
78768
  /***/ }),
 
78567
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; });
78568
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; });
78569
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; });
78570
+ /*! *****************************************************************************
78571
+ Copyright (c) Microsoft Corporation. All rights reserved.
78572
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
78573
+ this file except in compliance with the License. You may obtain a copy of the
78574
+ License at http://www.apache.org/licenses/LICENSE-2.0
78575
+
78576
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
78577
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
78578
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
78579
+ MERCHANTABLITY OR NON-INFRINGEMENT.
78580
+
78581
+ See the Apache Version 2.0 License for specific language governing permissions
78582
+ and limitations under the License.
78583
+ ***************************************************************************** */
78584
+ /* global Reflect, Promise */
78585
+
78586
+ var extendStatics = function(d, b) {
78587
+ extendStatics = Object.setPrototypeOf ||
78588
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
78589
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
78590
+ return extendStatics(d, b);
78591
+ };
78592
+
78593
+ function __extends(d, b) {
78594
+ extendStatics(d, b);
78595
+ function __() { this.constructor = d; }
78596
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
78597
+ }
78598
+
78599
+ var __assign = function() {
78600
+ __assign = Object.assign || function __assign(t) {
78601
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
78602
+ s = arguments[i];
78603
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
78604
+ }
78605
+ return t;
78606
+ }
78607
+ return __assign.apply(this, arguments);
78608
+ }
78609
+
78610
+ function __rest(s, e) {
78611
+ var t = {};
78612
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
78613
+ t[p] = s[p];
78614
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
78615
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
78616
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
78617
+ t[p[i]] = s[p[i]];
78618
+ }
78619
+ return t;
78620
+ }
78621
+
78622
+ function __decorate(decorators, target, key, desc) {
78623
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
78624
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
78625
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
78626
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
78627
+ }
78628
+
78629
+ function __param(paramIndex, decorator) {
78630
+ return function (target, key) { decorator(target, key, paramIndex); }
78631
+ }
78632
+
78633
+ function __metadata(metadataKey, metadataValue) {
78634
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
78635
+ }
78636
+
78637
+ function __awaiter(thisArg, _arguments, P, generator) {
78638
+ return new (P || (P = Promise))(function (resolve, reject) {
78639
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
78640
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
78641
+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
78642
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
78643
+ });
78644
+ }
78645
+
78646
+ function __generator(thisArg, body) {
78647
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
78648
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
78649
+ function verb(n) { return function (v) { return step([n, v]); }; }
78650
+ function step(op) {
78651
+ if (f) throw new TypeError("Generator is already executing.");
78652
+ while (_) try {
78653
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
78654
+ if (y = 0, t) op = [op[0] & 2, t.value];
78655
+ switch (op[0]) {
78656
+ case 0: case 1: t = op; break;
78657
+ case 4: _.label++; return { value: op[1], done: false };
78658
+ case 5: _.label++; y = op[1]; op = [0]; continue;
78659
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
78660
+ default:
78661
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
78662
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
78663
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
78664
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
78665
+ if (t[2]) _.ops.pop();
78666
+ _.trys.pop(); continue;
78667
+ }
78668
+ op = body.call(thisArg, _);
78669
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
78670
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
78671
+ }
78672
+ }
78673
+
78674
+ function __exportStar(m, exports) {
78675
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
78676
+ }
78677
+
78678
+ function __values(o) {
78679
+ var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
78680
+ if (m) return m.call(o);
78681
+ return {
78682
+ next: function () {
78683
+ if (o && i >= o.length) o = void 0;
78684
+ return { value: o && o[i++], done: !o };
78685
+ }
78686
+ };
78687
+ }
78688
+
78689
+ function __read(o, n) {
78690
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
78691
+ if (!m) return o;
78692
+ var i = m.call(o), r, ar = [], e;
78693
+ try {
78694
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
78695
+ }
78696
+ catch (error) { e = { error: error }; }
78697
+ finally {
78698
+ try {
78699
+ if (r && !r.done && (m = i["return"])) m.call(i);
78700
+ }
78701
+ finally { if (e) throw e.error; }
78702
+ }
78703
+ return ar;
78704
+ }
78705
+
78706
+ function __spread() {
78707
+ for (var ar = [], i = 0; i < arguments.length; i++)
78708
+ ar = ar.concat(__read(arguments[i]));
78709
+ return ar;
78710
+ }
78711
+
78712
+ function __spreadArrays() {
78713
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
78714
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
78715
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
78716
+ r[k] = a[j];
78717
+ return r;
78718
+ };
78719
+
78720
+ function __await(v) {
78721
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
78722
+ }
78723
+
78724
+ function __asyncGenerator(thisArg, _arguments, generator) {
78725
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
78726
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
78727
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
78728
+ function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
78729
+ function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
78730
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
78731
+ function fulfill(value) { resume("next", value); }
78732
+ function reject(value) { resume("throw", value); }
78733
+ function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
78734
+ }
78735
+
78736
+ function __asyncDelegator(o) {
78737
+ var i, p;
78738
+ return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
78739
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
78740
+ }
78741
+
78742
+ function __asyncValues(o) {
78743
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
78744
+ var m = o[Symbol.asyncIterator], i;
78745
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
78746
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
78747
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
78748
+ }
78749
+
78750
+ function __makeTemplateObject(cooked, raw) {
78751
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
78752
+ return cooked;
78753
+ };
78754
+
78755
+ function __importStar(mod) {
78756
+ if (mod && mod.__esModule) return mod;
78757
+ var result = {};
78758
+ if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
78759
+ result.default = mod;
78760
+ return result;
78761
+ }
78762
+
78763
+ function __importDefault(mod) {
78764
+ return (mod && mod.__esModule) ? mod : { default: mod };
78765
+ }
78766
 
78767
 
78768
  /***/ }),
client/src/css/AttentionConnectorControls.scss CHANGED
@@ -3,7 +3,7 @@
3
  }
4
 
5
  #connector-container {
6
- margin: 40px 40px 40px 40px;
7
  align-items: center;
8
  }
9
 
@@ -12,15 +12,15 @@
12
  grid-template-columns: 0.5fr 0.5fr;
13
  }
14
 
15
- .slide-container {
16
- grid-column-start: 1;
17
- grid-column-end: 2;
18
- grid-row-start: 1;
19
- grid-row-end: 2;
20
- margin: auto;
21
- text-align: center;
22
- width: 75%;
23
- }
24
 
25
  .slider {
26
  -webkit-appearance: none;
@@ -98,7 +98,7 @@
98
  order: 5;
99
  vertical-align: top;
100
  }
101
-
102
  }
103
 
104
  .att-rect {
@@ -133,8 +133,8 @@
133
  .switch {
134
  position: relative;
135
  display: inline-block;
136
- width: 60px;
137
- height: 34px;
138
 
139
  /* Hide default HTML checkbox */
140
  input {
@@ -159,8 +159,8 @@
159
  &:before {
160
  position: absolute;
161
  content: "";
162
- height: 26px;
163
- width: 26px;
164
  left: 4px;
165
  bottom: 4px;
166
  background-color: white;
@@ -185,14 +185,14 @@ input:checked + .short-slider:before {
185
 
186
  /* Rounded sliders */
187
  .short-slider.round {
188
- border-radius: 34px;
189
  }
190
 
191
  .short-slider.round:before {
192
  border-radius: 50%;
193
  }
194
 
195
- #select-all-heads{
196
  margin-top: 20px;
197
  margin-bottom: 20px;
198
- }
 
3
  }
4
 
5
  #connector-container {
6
+ //margin: 40px 40px 40px 40px;
7
  align-items: center;
8
  }
9
 
 
12
  grid-template-columns: 0.5fr 0.5fr;
13
  }
14
 
15
+ //.slide-container {
16
+ // grid-column-start: 1;
17
+ // grid-column-end: 2;
18
+ // grid-row-start: 1;
19
+ // grid-row-end: 2;
20
+ // margin: auto;
21
+ // text-align: center;
22
+ // width: 75%;
23
+ //}
24
 
25
  .slider {
26
  -webkit-appearance: none;
 
98
  order: 5;
99
  vertical-align: top;
100
  }
101
+
102
  }
103
 
104
  .att-rect {
 
133
  .switch {
134
  position: relative;
135
  display: inline-block;
136
+ width: 46px;
137
+ height: 20px;
138
 
139
  /* Hide default HTML checkbox */
140
  input {
 
159
  &:before {
160
  position: absolute;
161
  content: "";
162
+ height: 13px;
163
+ width: 13px;
164
  left: 4px;
165
  bottom: 4px;
166
  background-color: white;
 
185
 
186
  /* Rounded sliders */
187
  .short-slider.round {
188
+ border-radius: 17px;
189
  }
190
 
191
  .short-slider.round:before {
192
  border-radius: 50%;
193
  }
194
 
195
+ #select-all-heads{
196
  margin-top: 20px;
197
  margin-bottom: 20px;
198
+ }
client/src/css/SentenceInput.scss CHANGED
@@ -2,9 +2,10 @@
2
  #sentence-input {
3
  margin-bottom: 0px;
4
  margin-right: 0px;
5
- margin-left: 10px;
6
  width: 100%;
7
 
 
8
  form {
9
  display: flex;
10
  flex-direction: row;
@@ -17,9 +18,9 @@
17
 
18
  input {
19
  // flex-grow: 3;
20
- width: 50%;
21
- max-width: 700px;
22
- margin-right: 5%;
23
  }
24
  }
25
 
@@ -27,4 +28,4 @@
27
  flex-grow: 1;
28
  }
29
  }
30
- }
 
2
  #sentence-input {
3
  margin-bottom: 0px;
4
  margin-right: 0px;
5
+ //margin-left: 10px;
6
  width: 100%;
7
 
8
+
9
  form {
10
  display: flex;
11
  flex-direction: row;
 
18
 
19
  input {
20
  // flex-grow: 3;
21
+ width: 100%;
22
+ //max-width: 700px;
23
+ //margin-right: 5%;
24
  }
25
  }
26
 
 
28
  flex-grow: 1;
29
  }
30
  }
31
+ }
client/src/css/main.scss CHANGED
@@ -37,7 +37,7 @@ body {
37
  }
38
 
39
  label {
40
- margin-left: 5px;
41
  }
42
 
43
  #header {
@@ -134,4 +134,4 @@ label {
134
  -moz-box-shadow: 0 0 3px #ccc;
135
  -webkit-box-shadow: 0 0 3px #ccc;
136
  box-shadow: 0 0 3px #ccc;
137
- }
 
37
  }
38
 
39
  label {
40
+ //margin-left: 5px;
41
  }
42
 
43
  #header {
 
134
  -moz-box-shadow: 0 0 3px #ccc;
135
  -webkit-box-shadow: 0 0 3px #ccc;
136
  box-shadow: 0 0 3px #ccc;
137
+ }
client/src/package-lock.json CHANGED
@@ -6385,8 +6385,7 @@
6385
  "ansi-regex": {
6386
  "version": "2.1.1",
6387
  "bundled": true,
6388
- "dev": true,
6389
- "optional": true
6390
  },
6391
  "aproba": {
6392
  "version": "1.2.0",
@@ -6407,14 +6406,12 @@
6407
  "balanced-match": {
6408
  "version": "1.0.0",
6409
  "bundled": true,
6410
- "dev": true,
6411
- "optional": true
6412
  },
6413
  "brace-expansion": {
6414
  "version": "1.1.11",
6415
  "bundled": true,
6416
  "dev": true,
6417
- "optional": true,
6418
  "requires": {
6419
  "balanced-match": "^1.0.0",
6420
  "concat-map": "0.0.1"
@@ -6429,20 +6426,17 @@
6429
  "code-point-at": {
6430
  "version": "1.1.0",
6431
  "bundled": true,
6432
- "dev": true,
6433
- "optional": true
6434
  },
6435
  "concat-map": {
6436
  "version": "0.0.1",
6437
  "bundled": true,
6438
- "dev": true,
6439
- "optional": true
6440
  },
6441
  "console-control-strings": {
6442
  "version": "1.1.0",
6443
  "bundled": true,
6444
- "dev": true,
6445
- "optional": true
6446
  },
6447
  "core-util-is": {
6448
  "version": "1.0.2",
@@ -6559,8 +6553,7 @@
6559
  "inherits": {
6560
  "version": "2.0.3",
6561
  "bundled": true,
6562
- "dev": true,
6563
- "optional": true
6564
  },
6565
  "ini": {
6566
  "version": "1.3.5",
@@ -6572,7 +6565,6 @@
6572
  "version": "1.0.0",
6573
  "bundled": true,
6574
  "dev": true,
6575
- "optional": true,
6576
  "requires": {
6577
  "number-is-nan": "^1.0.0"
6578
  }
@@ -6587,7 +6579,6 @@
6587
  "version": "3.0.4",
6588
  "bundled": true,
6589
  "dev": true,
6590
- "optional": true,
6591
  "requires": {
6592
  "brace-expansion": "^1.1.7"
6593
  }
@@ -6595,14 +6586,12 @@
6595
  "minimist": {
6596
  "version": "0.0.8",
6597
  "bundled": true,
6598
- "dev": true,
6599
- "optional": true
6600
  },
6601
  "minipass": {
6602
  "version": "2.3.5",
6603
  "bundled": true,
6604
  "dev": true,
6605
- "optional": true,
6606
  "requires": {
6607
  "safe-buffer": "^5.1.2",
6608
  "yallist": "^3.0.0"
@@ -6621,7 +6610,6 @@
6621
  "version": "0.5.1",
6622
  "bundled": true,
6623
  "dev": true,
6624
- "optional": true,
6625
  "requires": {
6626
  "minimist": "0.0.8"
6627
  }
@@ -6709,8 +6697,7 @@
6709
  "number-is-nan": {
6710
  "version": "1.0.1",
6711
  "bundled": true,
6712
- "dev": true,
6713
- "optional": true
6714
  },
6715
  "object-assign": {
6716
  "version": "4.1.1",
@@ -6722,7 +6709,6 @@
6722
  "version": "1.4.0",
6723
  "bundled": true,
6724
  "dev": true,
6725
- "optional": true,
6726
  "requires": {
6727
  "wrappy": "1"
6728
  }
@@ -6808,8 +6794,7 @@
6808
  "safe-buffer": {
6809
  "version": "5.1.2",
6810
  "bundled": true,
6811
- "dev": true,
6812
- "optional": true
6813
  },
6814
  "safer-buffer": {
6815
  "version": "2.1.2",
@@ -6845,7 +6830,6 @@
6845
  "version": "1.0.2",
6846
  "bundled": true,
6847
  "dev": true,
6848
- "optional": true,
6849
  "requires": {
6850
  "code-point-at": "^1.0.0",
6851
  "is-fullwidth-code-point": "^1.0.0",
@@ -6865,7 +6849,6 @@
6865
  "version": "3.0.1",
6866
  "bundled": true,
6867
  "dev": true,
6868
- "optional": true,
6869
  "requires": {
6870
  "ansi-regex": "^2.0.0"
6871
  }
@@ -6909,14 +6892,12 @@
6909
  "wrappy": {
6910
  "version": "1.0.2",
6911
  "bundled": true,
6912
- "dev": true,
6913
- "optional": true
6914
  },
6915
  "yallist": {
6916
  "version": "3.0.3",
6917
  "bundled": true,
6918
- "dev": true,
6919
- "optional": true
6920
  }
6921
  }
6922
  },
 
6385
  "ansi-regex": {
6386
  "version": "2.1.1",
6387
  "bundled": true,
6388
+ "dev": true
 
6389
  },
6390
  "aproba": {
6391
  "version": "1.2.0",
 
6406
  "balanced-match": {
6407
  "version": "1.0.0",
6408
  "bundled": true,
6409
+ "dev": true
 
6410
  },
6411
  "brace-expansion": {
6412
  "version": "1.1.11",
6413
  "bundled": true,
6414
  "dev": true,
 
6415
  "requires": {
6416
  "balanced-match": "^1.0.0",
6417
  "concat-map": "0.0.1"
 
6426
  "code-point-at": {
6427
  "version": "1.1.0",
6428
  "bundled": true,
6429
+ "dev": true
 
6430
  },
6431
  "concat-map": {
6432
  "version": "0.0.1",
6433
  "bundled": true,
6434
+ "dev": true
 
6435
  },
6436
  "console-control-strings": {
6437
  "version": "1.1.0",
6438
  "bundled": true,
6439
+ "dev": true
 
6440
  },
6441
  "core-util-is": {
6442
  "version": "1.0.2",
 
6553
  "inherits": {
6554
  "version": "2.0.3",
6555
  "bundled": true,
6556
+ "dev": true
 
6557
  },
6558
  "ini": {
6559
  "version": "1.3.5",
 
6565
  "version": "1.0.0",
6566
  "bundled": true,
6567
  "dev": true,
 
6568
  "requires": {
6569
  "number-is-nan": "^1.0.0"
6570
  }
 
6579
  "version": "3.0.4",
6580
  "bundled": true,
6581
  "dev": true,
 
6582
  "requires": {
6583
  "brace-expansion": "^1.1.7"
6584
  }
 
6586
  "minimist": {
6587
  "version": "0.0.8",
6588
  "bundled": true,
6589
+ "dev": true
 
6590
  },
6591
  "minipass": {
6592
  "version": "2.3.5",
6593
  "bundled": true,
6594
  "dev": true,
 
6595
  "requires": {
6596
  "safe-buffer": "^5.1.2",
6597
  "yallist": "^3.0.0"
 
6610
  "version": "0.5.1",
6611
  "bundled": true,
6612
  "dev": true,
 
6613
  "requires": {
6614
  "minimist": "0.0.8"
6615
  }
 
6697
  "number-is-nan": {
6698
  "version": "1.0.1",
6699
  "bundled": true,
6700
+ "dev": true
 
6701
  },
6702
  "object-assign": {
6703
  "version": "4.1.1",
 
6709
  "version": "1.4.0",
6710
  "bundled": true,
6711
  "dev": true,
 
6712
  "requires": {
6713
  "wrappy": "1"
6714
  }
 
6794
  "safe-buffer": {
6795
  "version": "5.1.2",
6796
  "bundled": true,
6797
+ "dev": true
 
6798
  },
6799
  "safer-buffer": {
6800
  "version": "2.1.2",
 
6830
  "version": "1.0.2",
6831
  "bundled": true,
6832
  "dev": true,
 
6833
  "requires": {
6834
  "code-point-at": "^1.0.0",
6835
  "is-fullwidth-code-point": "^1.0.0",
 
6849
  "version": "3.0.1",
6850
  "bundled": true,
6851
  "dev": true,
 
6852
  "requires": {
6853
  "ansi-regex": "^2.0.0"
6854
  }
 
6892
  "wrappy": {
6893
  "version": "1.0.2",
6894
  "bundled": true,
6895
+ "dev": true
 
6896
  },
6897
  "yallist": {
6898
  "version": "3.0.3",
6899
  "bundled": true,
6900
+ "dev": true
 
6901
  }
6902
  }
6903
  },
client/src/ts/vis/attentionVis.ts CHANGED
@@ -20,6 +20,7 @@ import { D3Sel, Sel } from '../etc/Util';
20
  import { from, fromEvent } from 'rxjs'
21
  import { switchMap, map, tap } from 'rxjs/operators'
22
  import { BaseType } from "d3";
 
23
 
24
 
25
  function isNullToken(tok: tp.TokenEvent) {
@@ -67,197 +68,6 @@ function setSelDisabled(attr: boolean, sel: D3Sel) {
67
  sel.attr('disabled', val)
68
  }
69
 
70
- function createStaticSkeleton(base: D3Sel) {
71
-
72
- /**
73
- * Top level sections
74
- */
75
- const sentenceInput = base.append('div')
76
- .attr("id", "sentence-input")
77
-
78
- const connectorContainer = base.append('div')
79
- .attr('id', 'connector-container')
80
-
81
- const atnControls = connectorContainer.append('div')
82
- .attr("id", "connector-controls")
83
-
84
- const atnContainer = connectorContainer.append('div')
85
- .attr("id", "atn-container")
86
- .classed("text-center", true)
87
-
88
- /**
89
- * Sentence Input
90
- */
91
-
92
- const formGroup = sentenceInput.append('form')
93
- .append('div').classed('form-group', true)
94
-
95
- formGroup.append('label')
96
- .attr('for', "form-sentence-a")
97
- .text(' Input Sentence ')
98
-
99
- const sentenceA = formGroup.append('input')
100
- .attr('id', 'form-sentence-a')
101
- .attr('type', 'text')
102
- .attr('name', 'sent-a-input')
103
-
104
- sentenceInput.append('div')
105
- .classed('padding', true)
106
-
107
- const formButton = sentenceInput.append('button')
108
- .attr('class', 'btn btn-primary')
109
- .attr('id', "update-sentence")
110
- .attr('type', 'button')
111
-
112
- formButton.text("Update")
113
-
114
- /**
115
- * Connector Controls
116
- */
117
- const leftControlHalf = atnControls.append('div')
118
- .classed('left-control-half', true)
119
-
120
- const rightControlHalf = atnControls.append('div')
121
- .attr('class', 'right-control-half head-control')
122
-
123
- const modelSelection = leftControlHalf.append('div')
124
- .attr('id', 'model-selection')
125
-
126
- modelSelection.append('label')
127
- .attr('for', 'model-options').text('Select model')
128
-
129
- const modelSelector = modelSelection.append('select')
130
- .attr('id', 'model-option-selector')
131
- .attr('name', 'model-options')
132
-
133
- const slideContainer = leftControlHalf.append('div')
134
- .classed('slide-container', true)
135
-
136
- slideContainer.append('label')
137
- .attr('for', 'my-range')
138
- .html("Display top <span id=\"my-range-value\">...</span>% of attention")
139
-
140
- const threshSlider = slideContainer.append('input')
141
- .attr('type', 'range')
142
- .attr('min', '0')
143
- .attr('max', '100')
144
- .attr('value', '70')
145
- .classed('slider', true)
146
- .attr('id', 'my-range')
147
-
148
- const layerSelection = leftControlHalf.append('div')
149
- .attr('id', 'layer-selection')
150
-
151
- layerSelection.append('div')
152
- .classed('input-description', true)
153
- .text("Layer: ")
154
-
155
- const layerCheckboxes = layerSelection.append('div')
156
- .attr('class', 'layer-select btn-group btn-group-toggle')
157
- .attr('data-toggle', 'buttons')
158
- .attr('id', 'layer-select')
159
-
160
- const clsToggle = leftControlHalf.append('div')
161
- .attr('id', 'cls-toggle')
162
-
163
- clsToggle.append('div')
164
- .attr('class', 'input-description')
165
- .text("Hide Special Tokens")
166
-
167
- const clsSwitch = clsToggle.append('label')
168
- .attr('class', 'switch')
169
-
170
- clsSwitch.append('input').attr('type', 'checkbox')
171
- .attr('checked', 'checked')
172
-
173
- clsSwitch.append('span')
174
- .attr('class', 'short-slider round')
175
-
176
- const selectedHeadDiv = rightControlHalf.append('div')
177
- .attr('id', 'selected-head-display')
178
-
179
- selectedHeadDiv.append('div')
180
- .classed('input-description', true)
181
- .text('Selected heads:')
182
-
183
- const selectedHeads = selectedHeadDiv.append('div').attr('id', 'selected-heads')
184
-
185
- const headButtons = rightControlHalf.append('div')
186
- .classed('select-input', true)
187
- .attr('id', 'head-all-or-none')
188
-
189
- const headSelectAll = headButtons.append('button').attr('id', 'select-all-heads').text("Select all heads")
190
- const headSelectNone = headButtons.append('button').attr('id', 'select-no-heads').text("Unselect all heads")
191
-
192
- const infoContainer = rightControlHalf.append('div')
193
- .attr('id', 'usage-info')
194
-
195
- infoContainer.append('p').html("You focus on one token by <b>click</b>.<br /> You can mask any token by <b>double click</b>.")
196
- infoContainer.append('p').html("You can select and de-select a head by a <b>click</b> on the heatmap columns")
197
-
198
- connectorContainer.append('div').attr('id', 'vis-break')
199
-
200
- /**
201
- * For main attention vis
202
- */
203
-
204
- const headInfoBox = atnContainer.append('div')
205
- .attr('id', "head-info-box")
206
- .classed('mat-hover-display', true)
207
- .classed('text-center', true)
208
- .style('width', String(70) + 'px')
209
- .style('height', String(30) + 'px')
210
- .style('visibillity', 'hidden')
211
-
212
- const headBoxLeft = atnContainer.append('svg')
213
- .attr('id', 'left-att-heads')
214
-
215
- const tokensLeft = atnContainer.append('div')
216
- .attr("id", "left-tokens")
217
-
218
- const atnDisplay = atnContainer.append('svg')
219
- .attr("id", "atn-display")
220
-
221
- const tokensRight = atnContainer.append('div')
222
- .attr("id", "right-tokens")
223
-
224
- const headBoxRight = atnContainer.append('svg')
225
- .attr('id', 'right-att-heads')
226
-
227
- /**
228
- * Return an object that provides handles to the important parts here
229
- */
230
-
231
- const pctSpan = base.select("#my-range-value")
232
-
233
- const sels = {
234
- body: d3.select('body'),
235
- atnContainer: atnContainer,
236
- atnDisplay: atnDisplay,
237
- atnHeads: {
238
- left: headBoxLeft,
239
- right: headBoxRight,
240
- headInfo: headInfoBox
241
- },
242
- form: {
243
- sentenceA: sentenceA,
244
- button: formButton
245
- },
246
- tokens: {
247
- left: tokensLeft,
248
- right: tokensRight
249
- },
250
- modelSelector: modelSelector,
251
- clsToggle: clsToggle,
252
- layerCheckboxes: layerCheckboxes,
253
- selectedHeads: selectedHeads,
254
- headSelectAll: headSelectAll,
255
- headSelectNone: headSelectNone,
256
- threshSlider: threshSlider,
257
- }
258
- return sels
259
- }
260
-
261
  export class MainGraphic {
262
  base: D3Sel
263
  api: API
@@ -269,7 +79,7 @@ export class MainGraphic {
269
  eventHandler: SimpleEventHandler // Orchestrates events raised from components
270
 
271
  /**
272
- *
273
  * @param base 'div' html element into which everything below will be rendered
274
  */
275
  constructor(baseDiv: Element) {
 
20
  import { from, fromEvent } from 'rxjs'
21
  import { switchMap, map, tap } from 'rxjs/operators'
22
  import { BaseType } from "d3";
23
+ import {createStaticSkeleton} from "./staticLayout";
24
 
25
 
26
  function isNullToken(tok: tp.TokenEvent) {
 
68
  sel.attr('disabled', val)
69
  }
70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  export class MainGraphic {
72
  base: D3Sel
73
  api: API
 
79
  eventHandler: SimpleEventHandler // Orchestrates events raised from components
80
 
81
  /**
82
+ *
83
  * @param base 'div' html element into which everything below will be rendered
84
  */
85
  constructor(baseDiv: Element) {
client/src/ts/vis/staticLayout.ts ADDED
@@ -0,0 +1,226 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import {D3Sel} from "../etc/Util";
2
+ import * as d3 from "d3";
3
+
4
+ export function createStaticSkeleton(base: D3Sel) {
5
+
6
+ // ---- TEMPLATE -----
7
+ // language=HTML
8
+ function template() {
9
+ return `
10
+ <!-- <div id="attention-vis">-->
11
+ <div>
12
+ <div id="model-selection">
13
+ <label for="model-options"
14
+ style="width:150px;margin-bottom: 5px;">Select
15
+ model</label><select id="model-option-selector"
16
+ name="model-options">
17
+
18
+ </select>
19
+ </div>
20
+ </div>
21
+ <div id="sentence-input">
22
+ <form>
23
+ <div class="form-group">
24
+ <label for="form-sentence-a"
25
+ style="width: 150px; display: inline-block;vertical-align: middle;">Input
26
+ Sentence</label>
27
+ <input id="form-sentence-a" type="text"
28
+ name="sent-a-input"
29
+ placeholder="Enter new sentence to analyze"
30
+ value="The girl ran to a local pub to escape the din of her city."
31
+ style="width: calc(100% - 240px); display: inline-block;vertical-align: middle;"
32
+ >
33
+ <button class="btn btn-primary" id="update-sentence"
34
+ type="button"
35
+ style="width:70px;display: inline-block;padding: 3px 3px;">
36
+ Update
37
+ </button>
38
+ </div>
39
+ </form>
40
+ <!-- <div class="padding"></div>-->
41
+
42
+ </div>
43
+
44
+ <div>
45
+ <div style="display: inline-block; width:150px;"><b>Filters</b>
46
+ </div>
47
+ <div id="cls-toggle" style="display: inline-block;">
48
+ <!-- <div class="input-description">-->
49
+ Hide Special Tokens
50
+ <!-- </div>-->
51
+ <label class="switch" style="vertical-align: middle;">
52
+ <input type="checkbox" checked="checked">
53
+ <span class="short-slider round"></span>
54
+ </label>
55
+ </div>
56
+ <div style="margin-left: 25px;display: inline-block;">
57
+ Show top <span id="my-range-value">70</span>% of att:
58
+ </div>
59
+
60
+ <div class="slide-container"
61
+ style="display: inline-block;margin-left: 5px;width:calc(100% - 550px);">
62
+ <!-- <label for="my-range">-->
63
+
64
+ <!-- </label>-->
65
+ <input
66
+ type="range" min="0" max="100" value="70"
67
+ class="slider" id="my-range"
68
+ style="vertical-align: middle;display: inline-block;">
69
+ </div>
70
+ </div>
71
+
72
+ <div id="layer-selection" style="margin-top: 10px;">
73
+ <div class="input-description"
74
+ style="display: inline-block; width: 150px;vertical-align: top;">
75
+ Layer
76
+ </div>
77
+ <div class="layer-select btn-group btn-group-toggle"
78
+ data-toggle="buttons" id="layer-select"
79
+ style="vertical-align: top;">
80
+
81
+ </div>
82
+ </div>
83
+
84
+ <div id="selected-head-display">
85
+ <div class="input-description" style="display: inline-block; width: 150px;vertical-align: top;">
86
+ Selected heads:
87
+ </div>
88
+ <div id="selected-heads" style="display:inline-block;vertical-align: top;">
89
+
90
+ </div>
91
+ </div>
92
+
93
+ <div id="connector-container">
94
+ <div id="connector-controls">
95
+ <div class="left-control-half">
96
+
97
+
98
+ <!-- <div id="layer-selection">-->
99
+ <!-- <div class="input-description">-->
100
+ <!-- Layer:-->
101
+ <!-- </div>-->
102
+ <!-- <div class="layer-select btn-group btn-group-toggle"-->
103
+ <!-- data-toggle="buttons" id="layer-select">-->
104
+
105
+ <!-- </div>-->
106
+ <!-- </div>-->
107
+
108
+ </div>
109
+ <div class="right-control-half head-control">
110
+ <!-- <div id="selected-head-display">-->
111
+ <!-- <div class="input-description">-->
112
+ <!-- Selected heads:-->
113
+ <!-- </div>-->
114
+ <!-- <div id="selected-heads">-->
115
+
116
+ <!-- </div>-->
117
+ <!-- </div>-->
118
+ <div class="select-input" id="head-all-or-none">
119
+ <button id="select-all-heads">Select all heads
120
+ </button>
121
+ <button id="select-no-heads">Unselect all heads
122
+ </button>
123
+ </div>
124
+ <div id="usage-info">
125
+ <p>
126
+ You focus on one token by <b>click</b>.
127
+ You can mask any token by <b>double click</b>.
128
+ </p>
129
+ <p>
130
+ You can select and de-select a head by a
131
+ <b>click</b>
132
+ on the heatmap columns
133
+ </p>
134
+ </div>
135
+ </div>
136
+ </div>
137
+ <div id="atn-container" class="text-center">
138
+ <div id="head-info-box"
139
+ class="mat-hover-display text-center"
140
+ style="width: 70px; height: 30px; visibility: hidden; left: 929px; top: 670px; border-radius: 8px 8px 8px 1px;">
141
+ </div>
142
+ <svg id="left-att-heads" width="182" height="442"></svg>
143
+ <div id="left-tokens"></div>
144
+ <svg id="atn-display" height="442" width="200"></svg>
145
+ <div id="right-tokens"></div>
146
+ <svg id="right-att-heads" width="182" height="442"></svg>
147
+ </div>
148
+ <div id="vis-break"></div>
149
+ </div>
150
+ <!-- </div>-->
151
+ `
152
+ }
153
+
154
+ base.html(template);
155
+
156
+ // ---- TEMPLATE.end -----
157
+
158
+
159
+ /**
160
+ * Top level sections
161
+ */
162
+ const sentenceInput = base.select("#sentence-input");
163
+ const connectorContainer = base.select('#connector-container');
164
+ const atnControls = base.select('#connector-controls');
165
+ const atnContainer = base.select('#atn-container');
166
+
167
+ /**
168
+ * Sentence Input
169
+ */
170
+
171
+ const sentenceA = base.select('#form-sentence-a');
172
+ const formButton = base.select('#update-sentence');
173
+
174
+ /**
175
+ * Connector Controls
176
+ */
177
+
178
+ const modelSelector = base.select('#model-option-selector')
179
+ const threshSlider = base.select('#my-range');
180
+ const layerCheckboxes = base.select('#layer-select');
181
+ const clsToggle = base.select('#cls-toggle');
182
+ const selectedHeads = base.select('#selected-heads');
183
+ const headSelectAll = base.select('#select-all-heads');
184
+ const headSelectNone = base.select('#select-no-heads');
185
+
186
+ /**
187
+ * For main attention vis
188
+ */
189
+
190
+ const headInfoBox = base.select('#head-info-box');
191
+ const headBoxLeft = base.select('#left-att-heads');
192
+ const tokensLeft = base.select('#left-tokens');
193
+ const atnDisplay = base.select('#atn-display');
194
+ const tokensRight = base.select('#right-tokens');
195
+ const headBoxRight = base.select('#right-att-heads');
196
+
197
+ /**
198
+ * Return an object that provides handles to the important parts here
199
+ */
200
+
201
+ return {
202
+ body: d3.select('body'),
203
+ atnContainer: atnContainer,
204
+ atnDisplay: atnDisplay,
205
+ atnHeads: {
206
+ left: headBoxLeft,
207
+ right: headBoxRight,
208
+ headInfo: headInfoBox
209
+ },
210
+ form: {
211
+ sentenceA: sentenceA,
212
+ button: formButton
213
+ },
214
+ tokens: {
215
+ left: tokensLeft,
216
+ right: tokensRight
217
+ },
218
+ modelSelector: modelSelector,
219
+ clsToggle: clsToggle,
220
+ layerCheckboxes: layerCheckboxes,
221
+ selectedHeads: selectedHeads,
222
+ headSelectAll: headSelectAll,
223
+ headSelectNone: headSelectNone,
224
+ threshSlider: threshSlider,
225
+ }
226
+ }
environment.yml CHANGED
@@ -8,6 +8,7 @@ dependencies:
8
  - pip>=19.0.3
9
  - python=3.7
10
  - connexion=1.5.3
 
11
  - boto3
12
  - regex
13
  - flask-cors
@@ -15,4 +16,5 @@ dependencies:
15
  - numpy
16
  - pytorch
17
  - torchvision
18
- - transformers>=2.4.1
 
 
8
  - pip>=19.0.3
9
  - python=3.7
10
  - connexion=1.5.3
11
+ - Werkzeug=0.16.1
12
  - boto3
13
  - regex
14
  - flask-cors
 
16
  - numpy
17
  - pytorch
18
  - torchvision
19
+ - pip:
20
+ - transformers==2.4.1