import java.util.*; import java.util.zip.*; import java.util.List; import java.util.regex.*; import java.util.concurrent.*; import java.util.concurrent.atomic.*; import java.util.concurrent.locks.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.table.*; import java.io.*; import java.net.*; import java.lang.reflect.*; import java.lang.ref.*; import java.lang.management.*; import java.security.*; import java.security.spec.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.imageio.*; import java.math.*; import x30_pkg.x30_util; import static x30_pkg.x30_util.VF1; import static x30_pkg.x30_util.l; import static x30_pkg.x30_util.fail; import static x30_pkg.x30_util.indexOf; import static x30_pkg.x30_util.getOpt; import static x30_pkg.x30_util.setOpt; import static x30_pkg.x30_util.callOpt; import static x30_pkg.x30_util.newWeakHashMap; import static x30_pkg.x30_util.newDangerousWeakHashMap; import static x30_pkg.x30_util.get; import static x30_pkg.x30_util.get_raw; import static x30_pkg.x30_util.assertTrue; import static x30_pkg.x30_util.isHeadless; import static x30_pkg.x30_util.isAndroid; import static x30_pkg.x30_util.isTrue; import x30_pkg.x30_util.DynamicObject; import loadableUtils.utils; import static loadableUtils.utils._threadInfo; import static loadableUtils.utils._threadInheritInfo; import static loadableUtils.utils._threadInfo_addMakerAndRetriever; import static loadableUtils.utils.dm_currentModule; import static loadableUtils.utils.dm_current_mandatory; import static loadableUtils.utils.match; import static loadableUtils.utils.getOpt_raw; import static loadableUtils.utils.setOpt_raw; import static loadableUtils.utils.getField; import static loadableUtils.utils.fieldType; import static loadableUtils.utils.format3; import static loadableUtils.utils.vm_generalIdentityHashSet; import static loadableUtils.utils.vm_generalHashMap; import static loadableUtils.utils.vm_generalWeakSubMap; import static loadableUtils.utils.bindToComponent; import static loadableUtils.utils.struct; import static loadableUtils.utils.structure; import static loadableUtils.utils.loadPage; import static loadableUtils.utils.loadPage_utf8; import static loadableUtils.utils.loadPageSilentlyWithTimeout; import static loadableUtils.utils.loadPageSilently; import static loadableUtils.utils.loadSnippet; import static loadableUtils.utils.loadSnippetQuietly; import static loadableUtils.utils.sendToLocalBot; import static loadableUtils.utils.sendToLocalBotOpt; import static loadableUtils.utils.sendToLocalBotQuietly; import static loadableUtils.utils.componentPopupMenu; import static loadableUtils.utils.componentPopupMenu_top; import static loadableUtils.utils.componentPopupMenu_initForComponent; import static loadableUtils.utils.componentPopupMenu_getEvent; import static loadableUtils.utils.listPopupMenu; import static loadableUtils.utils.tablePopupMenu; import static loadableUtils.utils.tablePopupMenuFirst; import static loadableUtils.utils.rowSorter_setComparators; import static loadableUtils.utils.sexyTableWithoutDrag; import static loadableUtils.utils.dm_current_generic; import static loadableUtils.utils.dm_current_mandatory_generic; import static loadableUtils.utils.cset; import static loadableUtils.utils.DynamicObject_loading; import static loadableUtils.utils.concepts_unlisted; import static loadableUtils.utils.makePopupMenuConditional; import static loadableUtils.utils.makeConceptsTable_idWidth; import static loadableUtils.utils.showConceptsTable_afterUpdate; import static loadableUtils.utils.dynamicObjectIsLoading; import static loadableUtils.utils.rethrow; import static loadableUtils.utils.hasBot; import static loadableUtils.utils.concepts_internStringsLongerThan; import static loadableUtils.utils.concepts_setUnlistedByDefault; import static loadableUtils.utils.realMC_tl; import loadableUtils.utils.F0; import loadableUtils.utils.F1; import loadableUtils.utils.IF0; import loadableUtils.utils.IF1; import loadableUtils.utils.IVF1; import loadableUtils.utils.IVF2; import loadableUtils.utils.Matches; import loadableUtils.utils.BetterLabel; import loadableUtils.utils.SingleComponentPanel; import loadableUtils.utils.Snippet; import loadableUtils.utils.Q; import loadableUtils.utils.ImageSurface; import loadableUtils.utils.structure_Data; import loadableUtils.utils.structure_ClassInfo; import loadableUtils.utils.RGBImage; import loadableUtils.utils.RGB; import loadableUtils.utils.BWImage; import loadableUtils.utils.MakesBufferedImage; import loadableUtils.utils.MultiSet; import loadableUtils.utils.Concept; import loadableUtils.utils.Concepts; import loadableUtils.utils.RC; import loadableUtils.utils.IConceptIndex; import loadableUtils.utils.IFieldIndex; import loadableUtils.utils.Derefable; import loadableUtils.utils.ImageSurfaceSelector; import loadableUtils.utils.SimpleCRUD; import loadableUtils.utils.PersistableThrowable; import loadableUtils.utils.DynModule; import loadableUtils.utils.DynPrintLog; import loadableUtils.utils.DynObjectTable; import loadableUtils.utils.DynImageSurface; import loadableUtils.utils.DynCalculatedList; import loadableUtils.utils.GlobalID; import loadableUtils.utils.Rect; import loadableUtils.utils.Pt; import loadableUtils.utils.SynchronizedArrayList; import loadableUtils.utils.SecretValue; import loadableUtils.utils.HCRUD; import loadableUtils.utils.HCRUD_Data; import loadableUtils.utils.HCRUD_Concepts; import loadableUtils.utils.ValueConverterForField; import loadableUtils.utils.DefaultValueConverterForField; import loadableUtils.utils.OrError; import loadableUtils.utils.HTML; import java.awt.datatransfer.StringSelection; class main { static public class AModule extends DynPrintLog { public void start() { try { super.start(); startThread("Start", new Runnable() { public void run() { try { AutoCloseable __11 = enter(); try { try { copyTextToClipboard(unquote("\"/*\\r\\nmixins\\r\\n*/\\r\\n/*\\r\\n/mixins\\r\\n*/\\r\\n/*\\r\\ncolor\\r\\n*/\\r\\n/*\\r\\nGlobals\\r\\n*/\\r\\nbody {\\r\\n margin: 0;\\r\\n min-height: 100vh;\\r\\n font-family: 'Montserrat', sans-serif; }\\r\\n\\r\\n* {\\r\\n -webkit-box-sizing: border-box;\\r\\n box-sizing: border-box;\\r\\n font-size: 16px; }\\r\\n\\r\\n.container-fluid {\\r\\n width: 100%;\\r\\n padding: 0 15px;\\r\\n margin: 0 auto; }\\r\\n\\r\\n.mt-2 {\\r\\n margin-top: 2rem; }\\r\\n\\r\\n.mb-2 {\\r\\n margin-bottom: 2rem; }\\r\\n\\r\\n.border-rounded {\\r\\n border-radius: 50%; }\\r\\n\\r\\n.img-fluid {\\r\\n max-width: 100%;\\r\\n height: auto; }\\r\\n\\r\\n.hide {\\r\\n display: none; }\\r\\n\\r\\n.table {\\r\\n width: 100%;\\r\\n margin-bottom: 2rem;\\r\\n color: #212529;\\r\\n border-collapse: collapse;\\r\\n background-color: #fff; }\\r\\n .table th,\\r\\n .table td {\\r\\n border-bottom: 1px solid #ddd;\\r\\n text-align: center; }\\r\\n .table thead th {\\r\\n color: #4097C8;\\r\\n font-weight: 600;\\r\\n font-style: italic; }\\r\\n .table thead,\\r\\n .table tr {\\r\\n display: table;\\r\\n width: 100%;\\r\\n table-layout: fixed;\\r\\n border-collapse: collapse; }\\r\\n .table tbody {\\r\\n overflow: hidden scroll;\\r\\n display: block; }\\r\\n .table tbody::-webkit-scrollbar-track {\\r\\n background: #4097C8;\\r\\n border-bottom: 3px solid transparent;\\r\\n border-right: 3px solid transparent;\\r\\n border-left: 3px solid transparent;\\r\\n background-clip: content-box;\\r\\n /* THIS IS IMPORTANT */ }\\r\\n .table tbody::-webkit-scrollbar {\\r\\n width: 8px; }\\r\\n .table tbody::-webkit-scrollbar-thumb {\\r\\n border-radius: 10px;\\r\\n background: #4097C8; }\\r\\n .table tbody tr.company-meta-wrapper {\\r\\n display: none; }\\r\\n .table tbody tr td {\\r\\n font-size: 14px;\\r\\n padding-top: 10px;\\r\\n padding-bottom: 10px; }\\r\\n .table tbody tr td:first-of-type {\\r\\n font-weight: 600 !important;\\r\\n text-align: left;\\r\\n text-transform: uppercase; }\\r\\n .table tbody tr td img {\\r\\n margin-left: 16px;\\r\\n margin-right: 10px;\\r\\n vertical-align: middle; }\\r\\n .table tbody tr:hover {\\r\\n background: #4097c8;\\r\\n background: -webkit-gradient(linear, left top, right top, from(rgba(64, 151, 200, 0.2987570028)), to(rgba(64, 151, 200, 0)));\\r\\n background: linear-gradient(90deg, rgba(64, 151, 200, 0.2987570028) 0%, rgba(64, 151, 200, 0) 100%);\\r\\n -webkit-box-shadow: 0 5px 14px rgba(0, 0, 0, 0.16);\\r\\n box-shadow: 0 5px 14px rgba(0, 0, 0, 0.16); }\\r\\n .table tbody tr:hover td {\\r\\n border-bottom: none; }\\r\\n\\r\\n.table-wrapper {\\r\\n border-radius: 20px;\\r\\n overflow: hidden;\\r\\n background-color: #fff;\\r\\n -webkit-box-shadow: 0 7px 20px rgba(0, 0, 0, 0.26);\\r\\n box-shadow: 0 7px 20px rgba(0, 0, 0, 0.26); }\\r\\n\\r\\n.gradient-img-bg {\\r\\n background-image: url(\\\"imgs/icons/left.svg\\\"), url(\\\"imgs/icons/right.svg\\\");\\r\\n background-position: top left, bottom right;\\r\\n background-repeat: no-repeat, no-repeat;\\r\\n background-size: contain, contain; }\\r\\n\\r\\n.start-chat-button {\\r\\n width: 80px;\\r\\n height: 80px;\\r\\n position: fixed;\\r\\n -webkit-box-shadow: -4px 4px 10px rgba(0, 0, 0, 0.16);\\r\\n box-shadow: -4px 4px 10px rgba(0, 0, 0, 0.16);\\r\\n border-radius: 50%;\\r\\n background-color: #fff; }\\r\\n\\r\\n.toggle-chat {\\r\\n width: 80px;\\r\\n height: 80px;\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-pack: center;\\r\\n -ms-flex-pack: center;\\r\\n justify-content: center;\\r\\n -webkit-box-align: center;\\r\\n -ms-flex-align: center;\\r\\n align-items: center;\\r\\n padding: 10px; }\\r\\n\\r\\n.shadow-bg {\\r\\n position: fixed;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n z-index: 2;\\r\\n background-color: rgba(0, 0, 0, 0.9); }\\r\\n\\r\\n.chat-on-phone {\\r\\n position: fixed;\\r\\n background: url(\\\"imgs/mobile.png\\\") no-repeat top left;\\r\\n background-size: cover;\\r\\n z-index: 3;\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-pack: center;\\r\\n -ms-flex-pack: center;\\r\\n justify-content: center;\\r\\n -webkit-box-align: center;\\r\\n -ms-flex-align: center;\\r\\n align-items: center;\\r\\n -webkit-box-shadow: -10px 10px 20px rgba(0, 0, 0, 0.2);\\r\\n box-shadow: -10px 10px 20px rgba(0, 0, 0, 0.2); }\\r\\n .chat-on-phone .chat-on-phone-wrapper {\\r\\n position: absolute;\\r\\n top: 54px;\\r\\n left: 13px;\\r\\n padding: 0 10px;\\r\\n width: calc(100% - 25px);\\r\\n height: calc(100% - 74px);\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-orient: vertical;\\r\\n -webkit-box-direction: normal;\\r\\n -ms-flex-direction: column;\\r\\n flex-direction: column;\\r\\n -webkit-box-pack: justify;\\r\\n -ms-flex-pack: justify;\\r\\n justify-content: space-between; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper {\\r\\n width: 100%;\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-pack: justify;\\r\\n -ms-flex-pack: justify;\\r\\n justify-content: space-between;\\r\\n -ms-flex-wrap: wrap;\\r\\n flex-wrap: wrap; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type {\\r\\n width: calc(50% - 5px);\\r\\n height: 145px;\\r\\n background: rgba(64, 151, 200, 0.3);\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-orient: vertical;\\r\\n -webkit-box-direction: normal;\\r\\n -ms-flex-direction: column;\\r\\n flex-direction: column;\\r\\n -webkit-box-pack: justify;\\r\\n -ms-flex-pack: justify;\\r\\n justify-content: space-between;\\r\\n -ms-flex-wrap: wrap;\\r\\n flex-wrap: wrap;\\r\\n -webkit-box-align: center;\\r\\n -ms-flex-align: center;\\r\\n align-items: center;\\r\\n border-radius: 5px;\\r\\n padding: 10px 0;\\r\\n position: relative;\\r\\n margin: 5px 0;\\r\\n text-align: center;\\r\\n position: relative; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type:hover {\\r\\n -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.16);\\r\\n box-shadow: 0 3px 5px rgba(0, 0, 0, 0.16); }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type:first-of-type {\\r\\n -webkit-box-pack: center;\\r\\n -ms-flex-pack: center;\\r\\n justify-content: center; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-type-icon {\\r\\n width: 80px; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-type-name {\\r\\n font-size: 12px;\\r\\n font-weight: 500;\\r\\n color: #2F669A;\\r\\n text-transform: capitalize; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-event {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n visibility: none; }\\r\\n\\r\\n.input-group input {\\r\\n width: 100%;\\r\\n height: 50px;\\r\\n padding: 10px 15px;\\r\\n border-radius: 30px;\\r\\n font-size: 14px;\\r\\n border: 1px solid #4097C8; }\\r\\n .input-group input::-webkit-input-placeholder {\\r\\n color: #8b8b8b;\\r\\n opacity: .5; }\\r\\n .input-group input:-ms-input-placeholder {\\r\\n color: #8b8b8b;\\r\\n opacity: .5; }\\r\\n .input-group input::-ms-input-placeholder {\\r\\n color: #8b8b8b;\\r\\n opacity: .5; }\\r\\n .input-group input::placeholder {\\r\\n color: #8b8b8b;\\r\\n opacity: .5; }\\r\\n.input-group.button-inside-input {\\r\\n position: relative; }\\r\\n .input-group.button-inside-input .icon {\\r\\n position: absolute;\\r\\n top: 50%;\\r\\n right: 15px;\\r\\n width: 30px;\\r\\n -webkit-transform: translateY(-50%);\\r\\n transform: translateY(-50%); }\\r\\n\\r\\n.chat-box-container .chat-box {\\r\\n margin-top: 10px;\\r\\n width: 100%;\\r\\n height: 525px; }\\r\\n .chat-box-container .chat-box .message-wrapper {\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -ms-flex-wrap: wrap;\\r\\n flex-wrap: wrap;\\r\\n -webkit-box-align: center;\\r\\n -ms-flex-align: center;\\r\\n align-items: center;\\r\\n margin-bottom: 20px; }\\r\\n .chat-box-container .chat-box .message-wrapper.user {\\r\\n -webkit-box-orient: horizontal;\\r\\n -webkit-box-direction: reverse;\\r\\n -ms-flex-direction: row-reverse;\\r\\n flex-direction: row-reverse; }\\r\\n .chat-box-container .chat-box .message-wrapper.user .message {\\r\\n background-color: #4097C8;\\r\\n color: #fff; }\\r\\n .chat-box-container .chat-box .message-wrapper img {\\r\\n width: 60px;\\r\\n height: 60px;\\r\\n border-radius: 50%; }\\r\\n .chat-box-container .chat-box .message-wrapper .message {\\r\\n margin: 0 10px;\\r\\n background-color: rgba(191, 191, 191, 0.2);\\r\\n font-family: 'Roboto', sans-serif;\\r\\n font-size: 14px;\\r\\n line-height: 16px;\\r\\n border-radius: 10px;\\r\\n padding: 10px 15px;\\r\\n max-width: 186px;\\r\\n color: #727272; }\\r\\n .chat-box-container .chat-box .message-wrapper .message-timestamp {\\r\\n font-family: 'Roboto', sans-serif;\\r\\n font-size: 8px;\\r\\n color: #727272; }\\r\\n .chat-box-container .chat-box .message-wrapper .automated-messages {\\r\\n -webkit-box-flex: 0;\\r\\n -ms-flex: 0 0 100%;\\r\\n flex: 0 0 100%; }\\r\\n .chat-box-container .chat-box .message-wrapper .automated-messages .automated-message {\\r\\n font-family: 'Roboto', sans-serif;\\r\\n font-weight: 300;\\r\\n margin-top: 4px;\\r\\n border-radius: 10px;\\r\\n font-size: 10px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n color: #2F669A;\\r\\n padding: 4px 15px;\\r\\n margin-left: 70px;\\r\\n display: inline-block;\\r\\n max-width: 186px; }\\r\\n@-webkit-keyframes wave {\\r\\n 0% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n@keyframes wave {\\r\\n 0% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n@keyframes wave {\\r\\n 0% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n background-color: #fff;\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n .chat-box-container .chat-box .message-wrapper.user .dot {\\r\\n background-color: #fff; }\\r\\n\\r\\n.dot {\\r\\n display: inline-block;\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n border-radius: 50%;\\r\\n background: #727272;\\r\\n -webkit-animation: wave 1.3s linear infinite;\\r\\n animation: wave 1.3s linear infinite; }\\r\\n\\r\\n.typing-wave {\\r\\n position: relative;\\r\\n text-align: center;\\r\\n width: 55px;\\r\\n height: 30px;\\r\\n margin-left: auto;\\r\\n margin-right: auto;\\r\\n display: grid;\\r\\n -webkit-box-pack: center;\\r\\n -ms-flex-pack: center;\\r\\n justify-content: center;\\r\\n padding-top: 10px;\\r\\n border-radius: 17px;\\r\\n grid-template-columns: 12px 12px 12px;\\r\\n grid-template-rows: 1fr; }\\r\\n .typing-wave div {\\r\\n text-align: center; }\\r\\n .typing-wave div:nth-child(2) .dot {\\r\\n -webkit-animation-delay: -1.1s;\\r\\n animation-delay: -1.1s; }\\r\\n .typing-wave div:nth-child(3) .dot {\\r\\n -webkit-animation-delay: -0.9s;\\r\\n animation-delay: -0.9s;\\r\\n margin-right: 0; }\\r\\n\\r\\n.no-gutter {\\r\\n margin: 0 -15px;\\r\\n max-width: calc(100% + 30px); }\\r\\n\\r\\n.link_overlay {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%; }\\r\\n\\r\\n/*\\r\\n/Globals\\r\\n*/\\r\\n@media only screen and (max-width: 1399px) {\\r\\n .logo {\\r\\n margin-top: 20px;\\r\\n margin-bottom: 20px; }\\r\\n\\r\\n .container-fluid {\\r\\n max-width: 1140px; }\\r\\n\\r\\n .table thead th {\\r\\n height: 80px;\\r\\n font-size: 20px; }\\r\\n .table tr {\\r\\n font-size: 0.9rem; }\\r\\n\\r\\n .table tbody {\\r\\n max-height: 360px; }\\r\\n\\r\\n .start-chat {\\r\\n bottom: 2%;\\r\\n right: 12%; }\\r\\n\\r\\n .start-chat-button {\\r\\n bottom: 20px;\\r\\n right: 100px; }\\r\\n\\r\\n .chat-on-phone {\\r\\n border-radius: 20px;\\r\\n bottom: 23px;\\r\\n right: 40px;\\r\\n width: 208px;\\r\\n height: 420px; }\\r\\n\\r\\n .chat-box-container .chat-box {\\r\\n height: 306px; }\\r\\n .chat-box-container .chat-box .message-wrapper {\\r\\n margin-bottom: 10px; }\\r\\n .chat-box-container .chat-box .message-wrapper img {\\r\\n width: 30px;\\r\\n height: 30px; }\\r\\n .chat-box-container .chat-box .message-wrapper .message {\\r\\n max-width: 101px;\\r\\n font-size: 9px;\\r\\n line-height: 9px;\\r\\n padding: 5px;\\r\\n border-radius: 5px;\\r\\n margin: 0 5px; }\\r\\n .chat-box-container .chat-box .message-wrapper .message-timestamp {\\r\\n font-size: 5px; }\\r\\n .chat-box-container .chat-box .message-wrapper .automated-messages .automated-message {\\r\\n margin-left: 35px;\\r\\n font-size: 8px;\\r\\n max-width: 120px;\\r\\n padding: 3px 5px;\\r\\n border-radius: 5px; }\\r\\n @-webkit-keyframes wave {\\r\\n 0% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n @keyframes wave {\\r\\n 0% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n @keyframes wave {\\r\\n 0% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n background-color: #fff;\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n .chat-box-container .chat-box .message-wrapper.user .dot {\\r\\n background-color: #fff; }\\r\\n\\r\\n .dot {\\r\\n width: 6px !important;\\r\\n height: 6px !important; }\\r\\n\\r\\n .input-group input {\\r\\n font-size: 8px;\\r\\n height: 30px;\\r\\n padding: 7px; }\\r\\n .input-group.button-inside-input .icon {\\r\\n width: 18px; }\\r\\n\\r\\n .chat-type-wrapper {\\r\\n margin-top: 10px; }\\r\\n .chat-type-wrapper .chat-type {\\r\\n width: calc(50% - 5px);\\r\\n height: 80px !important;\\r\\n padding: 10px 0 !important;\\r\\n margin: 5px 0 !important; }\\r\\n .chat-type-wrapper .chat-type .chat-type-icon {\\r\\n width: 35px !important; }\\r\\n .chat-type-wrapper .chat-type .chat-type-name {\\r\\n font-size: 9px !important; } }\\r\\n@media only screen and (min-width: 1400px) {\\r\\n .logo {\\r\\n margin-top: 30px;\\r\\n margin-bottom: 30px; }\\r\\n\\r\\n .container-fluid {\\r\\n max-width: 1170px; }\\r\\n\\r\\n .table tr {\\r\\n font-size: 0.9rem; }\\r\\n .table thead th {\\r\\n height: 138px;\\r\\n font-size: 24px; }\\r\\n .table tbody {\\r\\n max-height: 566px; }\\r\\n .table tbody tr td img {\\r\\n margin-left: 20px; }\\r\\n\\r\\n .start-chat {\\r\\n bottom: 2%;\\r\\n right: 12%; }\\r\\n\\r\\n .chat-on-phone {\\r\\n border-radius: 54px;\\r\\n bottom: 40px;\\r\\n right: 40px;\\r\\n width: 375px;\\r\\n height: 755px; }\\r\\n\\r\\n .start-chat-button {\\r\\n bottom: 40px;\\r\\n right: 40px; }\\r\\n\\r\\n .chat-on-phone .chat-on-phone-wrapper {\\r\\n top: 116px;\\r\\n left: 23px;\\r\\n padding: 0 15px;\\r\\n width: calc(100% - 45px);\\r\\n height: calc(100% - 155px); }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type {\\r\\n width: calc(50% - 5px);\\r\\n height: 145px;\\r\\n border-radius: 5px;\\r\\n padding: 10px 0;\\r\\n margin: 5px 0; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-type-icon {\\r\\n width: 80px; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-type-name {\\r\\n font-size: 12px; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-event {\\r\\n top: 0;\\r\\n left: 0; }\\r\\n\\r\\n @-webkit-keyframes wave {\\r\\n 0% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n\\r\\n @keyframes wave {\\r\\n 0% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n @keyframes wave {\\r\\n 0% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background-color: #fff;\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n .chat-box-container .chat-box .message-wrapper.user .dot {\\r\\n background-color: #fff; } }\\r\\n@media only screen and (max-width: 808px) {\\r\\n .d-xs-none {\\r\\n display: none; }\\r\\n\\r\\n .table thead tr th {\\r\\n text-align: left;\\r\\n padding-left: 20px;\\r\\n padding-right: 20px;\\r\\n font-size: 24px; }\\r\\n .table tbody {\\r\\n max-height: 575px; }\\r\\n .table tbody tr {\\r\\n position: relative; }\\r\\n .table tbody tr.active + .company-meta-wrapper {\\r\\n display: table; }\\r\\n .table tbody tr.company-meta-wrapper {\\r\\n display: none; }\\r\\n .table tbody tr.company-meta-wrapper:after {\\r\\n content: none; }\\r\\n .table tbody tr:after {\\r\\n position: absolute;\\r\\n right: 10px;\\r\\n top: 27px;\\r\\n -webkit-transform: translateY(-50%);\\r\\n transform: translateY(-50%);\\r\\n width: 9.7px;\\r\\n height: 5px;\\r\\n background-image: url(\\\"imgs/icons/up.svg\\\");\\r\\n background-size: cover;\\r\\n content: ''; }\\r\\n .table tbody tr.active:after {\\r\\n background-image: url(\\\"imgs/icons/down.svg\\\"); }\\r\\n .table tbody tr td {\\r\\n font-size: 16px;\\r\\n width: 100%; }\\r\\n .table tbody .company-meta {\\r\\n padding-top: 20px;\\r\\n padding-left: 10px;\\r\\n padding-right: 10px;\\r\\n width: 100% !important;\\r\\n background-color: rgba(191, 191, 191, 0.1); }\\r\\n .table tbody .company-meta .th {\\r\\n font-size: 18px;\\r\\n font-weight: 600;\\r\\n font-style: italic;\\r\\n color: #4097C8;\\r\\n display: block; }\\r\\n .table tbody .company-meta .td {\\r\\n font-size: 16px;\\r\\n margin: 5px 0;\\r\\n font-weight: 400;\\r\\n text-transform: capitalize;\\r\\n display: inline-block; }\\r\\n .table tbody .company-meta-all {\\r\\n margin-top: 5px;\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-pack: justify;\\r\\n -ms-flex-pack: justify;\\r\\n justify-content: space-between; }\\r\\n .table tbody .company-meta-all div {\\r\\n padding-right: 10px;\\r\\n border-right: 1px solid #727272; }\\r\\n .table tbody .company-meta-all div:last-of-type {\\r\\n padding-right: 0;\\r\\n border-right: none; }\\r\\n\\r\\n .chat-on-phone {\\r\\n width: 100vw;\\r\\n height: 100vh;\\r\\n top: 0;\\r\\n left: 0;\\r\\n right: unset;\\r\\n bottom: unset;\\r\\n background-image: none;\\r\\n border-radius: 0;\\r\\n background-color: #fff; }\\r\\n .chat-on-phone .chat-on-phone-wrapper {\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n padding: 0 15px;\\r\\n -webkit-box-pack: start;\\r\\n -ms-flex-pack: start;\\r\\n justify-content: start; }\\r\\n\\r\\n .chat-type-wrapper .chat-type {\\r\\n height: 165px !important; }\\r\\n .chat-type-wrapper .chat-type .chat-type-name {\\r\\n font-size: 13px !important;\\r\\n font-weight: 500 !important; }\\r\\n .chat-type-wrapper .chat-type .chat-type-icon {\\r\\n width: 90px !important;\\r\\n height: 90px !important; }\\r\\n\\r\\n .chat-input {\\r\\n position: absolute;\\r\\n left: 15px;\\r\\n bottom: 20px;\\r\\n width: calc(100% - 30px); }\\r\\n\\r\\n .input-group.button-inside-input .icon {\\r\\n width: 35px; }\\r\\n .input-group input {\\r\\n height: 50px;\\r\\n font-size: 15px; }\\r\\n\\r\\n .chat-box-container .chat-box {\\r\\n margin-top: 30px;\\r\\n height: 610px; }\\r\\n .chat-box-container .chat-box .message-wrapper img {\\r\\n width: 70px;\\r\\n height: 70px; }\\r\\n .chat-box-container .chat-box .message-wrapper .message {\\r\\n max-width: 215px;\\r\\n margin: 0 10px;\\r\\n font-size: 15px;\\r\\n font-weight: 400;\\r\\n line-height: 19px; }\\r\\n .chat-box-container .chat-box .message-wrapper .message-timestamp {\\r\\n font-size: 9px; }\\r\\n .chat-box-container .chat-box .message-wrapper .automated-messages .automated-message {\\r\\n margin-top: 20px;\\r\\n margin-left: 80px;\\r\\n font-size: 11px;\\r\\n max-width: 210px;\\r\\n padding: 5px 15px;\\r\\n border-radius: 5px; }\\r\\n\\r\\n .d-xs-block {\\r\\n display: block !important; }\\r\\n\\r\\n .gradient-img-bg {\\r\\n background-image: url(\\\"imgs/icons/left.svg\\\");\\r\\n background-position: top left;\\r\\n background-repeat: no-repeat;\\r\\n background-size: 80%; }\\r\\n\\r\\n .start-chat-button {\\r\\n bottom: 20px;\\r\\n right: 20px; } }\\r\\n\\r\\n/*# sourceMappingURL=style.css.map */\", \"newVal\"=\"/*\\r\\nmixins\\r\\n*/\\r\\n/*\\r\\n/mixins\\r\\n*/\\r\\n/*\\r\\ncolor\\r\\n*/\\r\\n/*\\r\\nGlobals\\r\\n*/\\r\\nbody {\\r\\n margin: 0;\\r\\n min-height: 100vh;\\r\\n font-family: 'Montserrat', sans-serif; }\\r\\n\\r\\n* {\\r\\n -webkit-box-sizing: border-box;\\r\\n box-sizing: border-box;\\r\\n font-size: 16px; }\\r\\n\\r\\n.container-fluid {\\r\\n width: 100%;\\r\\n padding: 0 15px;\\r\\n margin: 0 auto; }\\r\\n\\r\\n.mt-2 {\\r\\n margin-top: 2rem; }\\r\\n\\r\\n.mb-2 {\\r\\n margin-bottom: 2rem; }\\r\\n\\r\\n.border-rounded {\\r\\n border-radius: 50%; }\\r\\n\\r\\n.img-fluid {\\r\\n max-width: 100%;\\r\\n height: auto; }\\r\\n\\r\\n.hide {\\r\\n display: none; }\\r\\n\\r\\n.table {\\r\\n width: 100%;\\r\\n margin-bottom: 2rem;\\r\\n color: #212529;\\r\\n border-collapse: collapse;\\r\\n background-color: #fff; }\\r\\n .table th,\\r\\n .table td {\\r\\n border-bottom: 1px solid #ddd;\\r\\n text-align: center; }\\r\\n .table thead th {\\r\\n color: #4097C8;\\r\\n font-weight: 600;\\r\\n font-style: italic; }\\r\\n .table thead,\\r\\n .table tr {\\r\\n display: table;\\r\\n width: 100%;\\r\\n table-layout: fixed;\\r\\n border-collapse: collapse; }\\r\\n .table tbody {\\r\\n overflow: hidden scroll;\\r\\n display: block; }\\r\\n .table tbody::-webkit-scrollbar-track {\\r\\n background: #4097C8;\\r\\n border-bottom: 3px solid transparent;\\r\\n border-right: 3px solid transparent;\\r\\n border-left: 3px solid transparent;\\r\\n background-clip: content-box;\\r\\n /* THIS IS IMPORTANT */ }\\r\\n .table tbody::-webkit-scrollbar {\\r\\n width: 8px; }\\r\\n .table tbody::-webkit-scrollbar-thumb {\\r\\n border-radius: 10px;\\r\\n background: #4097C8; }\\r\\n .table tbody tr.company-meta-wrapper {\\r\\n display: none; }\\r\\n .table tbody tr td {\\r\\n font-size: 14px;\\r\\n padding-top: 10px;\\r\\n padding-bottom: 10px; }\\r\\n .table tbody tr td:first-of-type {\\r\\n font-weight: 600 !important;\\r\\n text-align: left;\\r\\n text-transform: uppercase; }\\r\\n .table tbody tr td img {\\r\\n margin-left: 16px;\\r\\n margin-right: 10px;\\r\\n vertical-align: middle; }\\r\\n .table tbody tr:hover {\\r\\n background: #4097c8;\\r\\n background: -webkit-gradient(linear, left top, right top, from(rgba(64, 151, 200, 0.2987570028)), to(rgba(64, 151, 200, 0)));\\r\\n background: linear-gradient(90deg, rgba(64, 151, 200, 0.2987570028) 0%, rgba(64, 151, 200, 0) 100%);\\r\\n -webkit-box-shadow: 0 5px 14px rgba(0, 0, 0, 0.16);\\r\\n box-shadow: 0 5px 14px rgba(0, 0, 0, 0.16); }\\r\\n .table tbody tr:hover td {\\r\\n border-bottom: none; }\\r\\n\\r\\n.table-wrapper {\\r\\n border-radius: 20px;\\r\\n overflow: hidden;\\r\\n background-color: #fff;\\r\\n -webkit-box-shadow: 0 7px 20px rgba(0, 0, 0, 0.26);\\r\\n box-shadow: 0 7px 20px rgba(0, 0, 0, 0.26); }\\r\\n\\r\\n.gradient-img-bg {\\r\\n background-image: url(\\\"/imgs/icons/left.svg\\\"), url(\\\"/imgs/icons/right.svg\\\");\\r\\n background-position: top left, bottom right;\\r\\n background-repeat: no-repeat, no-repeat;\\r\\n background-size: contain, contain; }\\r\\n\\r\\n.start-chat-button {\\r\\n width: 80px;\\r\\n height: 80px;\\r\\n position: fixed;\\r\\n -webkit-box-shadow: -4px 4px 10px rgba(0, 0, 0, 0.16);\\r\\n box-shadow: -4px 4px 10px rgba(0, 0, 0, 0.16);\\r\\n border-radius: 50%;\\r\\n background-color: #fff; }\\r\\n\\r\\n.toggle-chat {\\r\\n width: 80px;\\r\\n height: 80px;\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-pack: center;\\r\\n -ms-flex-pack: center;\\r\\n justify-content: center;\\r\\n -webkit-box-align: center;\\r\\n -ms-flex-align: center;\\r\\n align-items: center;\\r\\n padding: 10px; }\\r\\n\\r\\n.shadow-bg {\\r\\n position: fixed;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n z-index: 2;\\r\\n background-color: rgba(0, 0, 0, 0.9); }\\r\\n\\r\\n.chat-on-phone {\\r\\n position: fixed;\\r\\n background: url(\\\"/imgs/mobile.png\\\") no-repeat top left;\\r\\n background-size: cover;\\r\\n z-index: 3;\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-pack: center;\\r\\n -ms-flex-pack: center;\\r\\n justify-content: center;\\r\\n -webkit-box-align: center;\\r\\n -ms-flex-align: center;\\r\\n align-items: center;\\r\\n -webkit-box-shadow: -10px 10px 20px rgba(0, 0, 0, 0.2);\\r\\n box-shadow: -10px 10px 20px rgba(0, 0, 0, 0.2); }\\r\\n .chat-on-phone .chat-on-phone-wrapper {\\r\\n position: absolute;\\r\\n top: 54px;\\r\\n left: 13px;\\r\\n padding: 0 10px;\\r\\n width: calc(100% - 25px);\\r\\n height: calc(100% - 74px);\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-orient: vertical;\\r\\n -webkit-box-direction: normal;\\r\\n -ms-flex-direction: column;\\r\\n flex-direction: column;\\r\\n -webkit-box-pack: justify;\\r\\n -ms-flex-pack: justify;\\r\\n justify-content: space-between; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper {\\r\\n width: 100%;\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-pack: justify;\\r\\n -ms-flex-pack: justify;\\r\\n justify-content: space-between;\\r\\n -ms-flex-wrap: wrap;\\r\\n flex-wrap: wrap; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type {\\r\\n width: calc(50% - 5px);\\r\\n height: 145px;\\r\\n background: rgba(64, 151, 200, 0.3);\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-orient: vertical;\\r\\n -webkit-box-direction: normal;\\r\\n -ms-flex-direction: column;\\r\\n flex-direction: column;\\r\\n -webkit-box-pack: justify;\\r\\n -ms-flex-pack: justify;\\r\\n justify-content: space-between;\\r\\n -ms-flex-wrap: wrap;\\r\\n flex-wrap: wrap;\\r\\n -webkit-box-align: center;\\r\\n -ms-flex-align: center;\\r\\n align-items: center;\\r\\n border-radius: 5px;\\r\\n padding: 10px 0;\\r\\n position: relative;\\r\\n margin: 5px 0;\\r\\n text-align: center;\\r\\n position: relative; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type:hover {\\r\\n -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.16);\\r\\n box-shadow: 0 3px 5px rgba(0, 0, 0, 0.16); }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type:first-of-type {\\r\\n -webkit-box-pack: center;\\r\\n -ms-flex-pack: center;\\r\\n justify-content: center; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-type-icon {\\r\\n width: 80px; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-type-name {\\r\\n font-size: 12px;\\r\\n font-weight: 500;\\r\\n color: #2F669A;\\r\\n text-transform: capitalize; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-event {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n visibility: none; }\\r\\n\\r\\n.input-group input {\\r\\n width: 100%;\\r\\n height: 50px;\\r\\n padding: 10px 15px;\\r\\n border-radius: 30px;\\r\\n font-size: 14px;\\r\\n border: 1px solid #4097C8; }\\r\\n .input-group input::-webkit-input-placeholder {\\r\\n color: #8b8b8b;\\r\\n opacity: .5; }\\r\\n .input-group input:-ms-input-placeholder {\\r\\n color: #8b8b8b;\\r\\n opacity: .5; }\\r\\n .input-group input::-ms-input-placeholder {\\r\\n color: #8b8b8b;\\r\\n opacity: .5; }\\r\\n .input-group input::placeholder {\\r\\n color: #8b8b8b;\\r\\n opacity: .5; }\\r\\n.input-group.button-inside-input {\\r\\n position: relative; }\\r\\n .input-group.button-inside-input .icon {\\r\\n position: absolute;\\r\\n top: 50%;\\r\\n right: 15px;\\r\\n width: 30px;\\r\\n -webkit-transform: translateY(-50%);\\r\\n transform: translateY(-50%); }\\r\\n\\r\\n.chat-box-container .chat-box {\\r\\n margin-top: 10px;\\r\\n width: 100%;\\r\\n height: 525px; }\\r\\n .chat-box-container .chat-box .message-wrapper {\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -ms-flex-wrap: wrap;\\r\\n flex-wrap: wrap;\\r\\n -webkit-box-align: center;\\r\\n -ms-flex-align: center;\\r\\n align-items: center;\\r\\n margin-bottom: 20px; }\\r\\n .chat-box-container .chat-box .message-wrapper.user {\\r\\n -webkit-box-orient: horizontal;\\r\\n -webkit-box-direction: reverse;\\r\\n -ms-flex-direction: row-reverse;\\r\\n flex-direction: row-reverse; }\\r\\n .chat-box-container .chat-box .message-wrapper.user .message {\\r\\n background-color: #4097C8;\\r\\n color: #fff; }\\r\\n .chat-box-container .chat-box .message-wrapper img {\\r\\n width: 60px;\\r\\n height: 60px;\\r\\n border-radius: 50%; }\\r\\n .chat-box-container .chat-box .message-wrapper .message {\\r\\n margin: 0 10px;\\r\\n background-color: rgba(191, 191, 191, 0.2);\\r\\n font-family: 'Roboto', sans-serif;\\r\\n font-size: 14px;\\r\\n line-height: 16px;\\r\\n border-radius: 10px;\\r\\n padding: 10px 15px;\\r\\n max-width: 186px;\\r\\n color: #727272; }\\r\\n .chat-box-container .chat-box .message-wrapper .message-timestamp {\\r\\n font-family: 'Roboto', sans-serif;\\r\\n font-size: 8px;\\r\\n color: #727272; }\\r\\n .chat-box-container .chat-box .message-wrapper .automated-messages {\\r\\n -webkit-box-flex: 0;\\r\\n -ms-flex: 0 0 100%;\\r\\n flex: 0 0 100%; }\\r\\n .chat-box-container .chat-box .message-wrapper .automated-messages .automated-message {\\r\\n font-family: 'Roboto', sans-serif;\\r\\n font-weight: 300;\\r\\n margin-top: 4px;\\r\\n border-radius: 10px;\\r\\n font-size: 10px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n color: #2F669A;\\r\\n padding: 4px 15px;\\r\\n margin-left: 70px;\\r\\n display: inline-block;\\r\\n max-width: 186px; }\\r\\n@-webkit-keyframes wave {\\r\\n 0% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n@keyframes wave {\\r\\n 0% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n@keyframes wave {\\r\\n 0% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n background-color: #fff;\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 4px;\\r\\n height: 4px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n .chat-box-container .chat-box .message-wrapper.user .dot {\\r\\n background-color: #fff; }\\r\\n\\r\\n.dot {\\r\\n display: inline-block;\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n border-radius: 50%;\\r\\n background: #727272;\\r\\n -webkit-animation: wave 1.3s linear infinite;\\r\\n animation: wave 1.3s linear infinite; }\\r\\n\\r\\n.typing-wave {\\r\\n position: relative;\\r\\n text-align: center;\\r\\n width: 55px;\\r\\n height: 30px;\\r\\n margin-left: auto;\\r\\n margin-right: auto;\\r\\n display: grid;\\r\\n -webkit-box-pack: center;\\r\\n -ms-flex-pack: center;\\r\\n justify-content: center;\\r\\n padding-top: 10px;\\r\\n border-radius: 17px;\\r\\n grid-template-columns: 12px 12px 12px;\\r\\n grid-template-rows: 1fr; }\\r\\n .typing-wave div {\\r\\n text-align: center; }\\r\\n .typing-wave div:nth-child(2) .dot {\\r\\n -webkit-animation-delay: -1.1s;\\r\\n animation-delay: -1.1s; }\\r\\n .typing-wave div:nth-child(3) .dot {\\r\\n -webkit-animation-delay: -0.9s;\\r\\n animation-delay: -0.9s;\\r\\n margin-right: 0; }\\r\\n\\r\\n.no-gutter {\\r\\n margin: 0 -15px;\\r\\n max-width: calc(100% + 30px); }\\r\\n\\r\\n.link_overlay {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%; }\\r\\n\\r\\n/*\\r\\n/Globals\\r\\n*/\\r\\n@media only screen and (max-width: 1399px) {\\r\\n .logo {\\r\\n margin-top: 20px;\\r\\n margin-bottom: 20px; }\\r\\n\\r\\n .container-fluid {\\r\\n max-width: 1140px; }\\r\\n\\r\\n .table thead th {\\r\\n height: 80px;\\r\\n font-size: 20px; }\\r\\n .table tr {\\r\\n font-size: 0.9rem; }\\r\\n\\r\\n .table tbody {\\r\\n max-height: 360px; }\\r\\n\\r\\n .start-chat {\\r\\n bottom: 2%;\\r\\n right: 12%; }\\r\\n\\r\\n .start-chat-button {\\r\\n bottom: 20px;\\r\\n right: 100px; }\\r\\n\\r\\n .chat-on-phone {\\r\\n border-radius: 20px;\\r\\n bottom: 23px;\\r\\n right: 40px;\\r\\n width: 208px;\\r\\n height: 420px; }\\r\\n\\r\\n .chat-box-container .chat-box {\\r\\n height: 306px; }\\r\\n .chat-box-container .chat-box .message-wrapper {\\r\\n margin-bottom: 10px; }\\r\\n .chat-box-container .chat-box .message-wrapper img {\\r\\n width: 30px;\\r\\n height: 30px; }\\r\\n .chat-box-container .chat-box .message-wrapper .message {\\r\\n max-width: 101px;\\r\\n font-size: 9px;\\r\\n line-height: 9px;\\r\\n padding: 5px;\\r\\n border-radius: 5px;\\r\\n margin: 0 5px; }\\r\\n .chat-box-container .chat-box .message-wrapper .message-timestamp {\\r\\n font-size: 5px; }\\r\\n .chat-box-container .chat-box .message-wrapper .automated-messages .automated-message {\\r\\n margin-left: 35px;\\r\\n font-size: 8px;\\r\\n max-width: 120px;\\r\\n padding: 3px 5px;\\r\\n border-radius: 5px; }\\r\\n @-webkit-keyframes wave {\\r\\n 0% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n @keyframes wave {\\r\\n 0% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n @keyframes wave {\\r\\n 0% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n background-color: #fff;\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 3px;\\r\\n height: 3px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n .chat-box-container .chat-box .message-wrapper.user .dot {\\r\\n background-color: #fff; }\\r\\n\\r\\n .dot {\\r\\n width: 6px !important;\\r\\n height: 6px !important; }\\r\\n\\r\\n .input-group input {\\r\\n font-size: 8px;\\r\\n height: 30px;\\r\\n padding: 7px; }\\r\\n .input-group.button-inside-input .icon {\\r\\n width: 18px; }\\r\\n\\r\\n .chat-type-wrapper {\\r\\n margin-top: 10px; }\\r\\n .chat-type-wrapper .chat-type {\\r\\n width: calc(50% - 5px);\\r\\n height: 80px !important;\\r\\n padding: 10px 0 !important;\\r\\n margin: 5px 0 !important; }\\r\\n .chat-type-wrapper .chat-type .chat-type-icon {\\r\\n width: 35px !important; }\\r\\n .chat-type-wrapper .chat-type .chat-type-name {\\r\\n font-size: 9px !important; } }\\r\\n@media only screen and (min-width: 1400px) {\\r\\n .logo {\\r\\n margin-top: 30px;\\r\\n margin-bottom: 30px; }\\r\\n\\r\\n .container-fluid {\\r\\n max-width: 1170px; }\\r\\n\\r\\n .table tr {\\r\\n font-size: 0.9rem; }\\r\\n .table thead th {\\r\\n height: 138px;\\r\\n font-size: 24px; }\\r\\n .table tbody {\\r\\n max-height: 566px; }\\r\\n .table tbody tr td img {\\r\\n margin-left: 20px; }\\r\\n\\r\\n .start-chat {\\r\\n bottom: 2%;\\r\\n right: 12%; }\\r\\n\\r\\n .chat-on-phone {\\r\\n border-radius: 54px;\\r\\n bottom: 40px;\\r\\n right: 40px;\\r\\n width: 375px;\\r\\n height: 755px; }\\r\\n\\r\\n .start-chat-button {\\r\\n bottom: 40px;\\r\\n right: 40px; }\\r\\n\\r\\n .chat-on-phone .chat-on-phone-wrapper {\\r\\n top: 116px;\\r\\n left: 23px;\\r\\n padding: 0 15px;\\r\\n width: calc(100% - 45px);\\r\\n height: calc(100% - 155px); }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type {\\r\\n width: calc(50% - 5px);\\r\\n height: 145px;\\r\\n border-radius: 5px;\\r\\n padding: 10px 0;\\r\\n margin: 5px 0; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-type-icon {\\r\\n width: 80px; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-type-name {\\r\\n font-size: 12px; }\\r\\n .chat-on-phone .chat-on-phone-wrapper .chat-type-wrapper .chat-type .chat-event {\\r\\n top: 0;\\r\\n left: 0; }\\r\\n\\r\\n @-webkit-keyframes wave {\\r\\n 0% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n\\r\\n @keyframes wave {\\r\\n 0% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background-color: rgba(64, 151, 200, 0.2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n @keyframes wave {\\r\\n 0% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n background-color: #fff;\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); }\\r\\n 10% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 30% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-10px);\\r\\n transform: translateY(-10px); }\\r\\n 90% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2); }\\r\\n 95% {\\r\\n width: 8px;\\r\\n height: 8px;\\r\\n -webkit-transform: translateY(0px);\\r\\n transform: translateY(0px); }\\r\\n 100% {\\r\\n width: calc($size * 2);\\r\\n height: calc($size * 2);\\r\\n -webkit-transform: translateY(-5px);\\r\\n transform: translateY(-5px); } }\\r\\n .chat-box-container .chat-box .message-wrapper.user .dot {\\r\\n background-color: #fff; } }\\r\\n@media only screen and (max-width: 808px) {\\r\\n .d-xs-none {\\r\\n display: none; }\\r\\n\\r\\n .table thead tr th {\\r\\n text-align: left;\\r\\n padding-left: 20px;\\r\\n padding-right: 20px;\\r\\n font-size: 24px; }\\r\\n .table tbody {\\r\\n max-height: 575px; }\\r\\n .table tbody tr {\\r\\n position: relative; }\\r\\n .table tbody tr.active + .company-meta-wrapper {\\r\\n display: table; }\\r\\n .table tbody tr.company-meta-wrapper {\\r\\n display: none; }\\r\\n .table tbody tr.company-meta-wrapper:after {\\r\\n content: none; }\\r\\n .table tbody tr:after {\\r\\n position: absolute;\\r\\n right: 10px;\\r\\n top: 27px;\\r\\n -webkit-transform: translateY(-50%);\\r\\n transform: translateY(-50%);\\r\\n width: 9.7px;\\r\\n height: 5px;\\r\\n background-image: url(\\\"/imgs/icons/up.svg\\\");\\r\\n background-size: cover;\\r\\n content: ''; }\\r\\n .table tbody tr.active:after {\\r\\n background-image: url(\\\"/imgs/icons/down.svg\\\"); }\\r\\n .table tbody tr td {\\r\\n font-size: 16px;\\r\\n width: 100%; }\\r\\n .table tbody .company-meta {\\r\\n padding-top: 20px;\\r\\n padding-left: 10px;\\r\\n padding-right: 10px;\\r\\n width: 100% !important;\\r\\n background-color: rgba(191, 191, 191, 0.1); }\\r\\n .table tbody .company-meta .th {\\r\\n font-size: 18px;\\r\\n font-weight: 600;\\r\\n font-style: italic;\\r\\n color: #4097C8;\\r\\n display: block; }\\r\\n .table tbody .company-meta .td {\\r\\n font-size: 16px;\\r\\n margin: 5px 0;\\r\\n font-weight: 400;\\r\\n text-transform: capitalize;\\r\\n display: inline-block; }\\r\\n .table tbody .company-meta-all {\\r\\n margin-top: 5px;\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-pack: justify;\\r\\n -ms-flex-pack: justify;\\r\\n justify-content: space-between; }\\r\\n .table tbody .company-meta-all div {\\r\\n padding-right: 10px;\\r\\n border-right: 1px solid #727272; }\\r\\n .table tbody .company-meta-all div:last-of-type {\\r\\n padding-right: 0;\\r\\n border-right: none; }\\r\\n\\r\\n .chat-on-phone {\\r\\n width: 100vw;\\r\\n height: 100vh;\\r\\n top: 0;\\r\\n left: 0;\\r\\n right: unset;\\r\\n bottom: unset;\\r\\n background-image: none;\\r\\n border-radius: 0;\\r\\n background-color: #fff; }\\r\\n .chat-on-phone .chat-on-phone-wrapper {\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n padding: 0 15px;\\r\\n -webkit-box-pack: start;\\r\\n -ms-flex-pack: start;\\r\\n justify-content: start; }\\r\\n\\r\\n .chat-type-wrapper .chat-type {\\r\\n height: 165px !important; }\\r\\n .chat-type-wrapper .chat-type .chat-type-name {\\r\\n font-size: 13px !important;\\r\\n font-weight: 500 !important; }\\r\\n .chat-type-wrapper .chat-type .chat-type-icon {\\r\\n width: 90px !important;\\r\\n height: 90px !important; }\\r\\n\\r\\n .chat-input {\\r\\n position: absolute;\\r\\n left: 15px;\\r\\n bottom: 20px;\\r\\n width: calc(100% - 30px); }\\r\\n\\r\\n .input-group.button-inside-input .icon {\\r\\n width: 35px; }\\r\\n .input-group input {\\r\\n height: 50px;\\r\\n font-size: 15px; }\\r\\n\\r\\n .chat-box-container .chat-box {\\r\\n margin-top: 30px;\\r\\n height: 610px; }\\r\\n .chat-box-container .chat-box .message-wrapper img {\\r\\n width: 70px;\\r\\n height: 70px; }\\r\\n .chat-box-container .chat-box .message-wrapper .message {\\r\\n max-width: 215px;\\r\\n margin: 0 10px;\\r\\n font-size: 15px;\\r\\n font-weight: 400;\\r\\n line-height: 19px; }\\r\\n .chat-box-container .chat-box .message-wrapper .message-timestamp {\\r\\n font-size: 9px; }\\r\\n .chat-box-container .chat-box .message-wrapper .automated-messages .automated-message {\\r\\n margin-top: 20px;\\r\\n margin-left: 80px;\\r\\n font-size: 11px;\\r\\n max-width: 210px;\\r\\n padding: 5px 15px;\\r\\n border-radius: 5px; }\\r\\n\\r\\n .d-xs-block {\\r\\n display: block !important; }\\r\\n\\r\\n .gradient-img-bg {\\r\\n background-image: url(\\\"/imgs/icons/left.svg\\\");\\r\\n background-position: top left;\\r\\n background-repeat: no-repeat;\\r\\n background-size: 80%; }\\r\\n\\r\\n .start-chat-button {\\r\\n bottom: 20px;\\r\\n right: 20px; } }\\r\\n\\r\\n/*# sourceMappingURL=style.css.map */\"")); } catch (Throwable __e) { _handleException(__e); } } finally { _close(__11); } } catch (Exception __e) { throw rethrow(__e); } } public String toString() { return "AutoCloseable __11 = enter(); try { try {\r\ncopyTextToClipboard(unquote(\"\\\"/*\\..."; } }); } catch (Exception __e) { throw rethrow(__e); } } } static public boolean _moduleClass_AModule = true; static public String programID; static public void _onLoad_initUtils() { utils.__javax = javax(); } static public void _onLoad_defaultClassFinder() { setDefaultClassFinder(new F1() { public Class get(String name) { Class c = findClass_fullName(name); if (c != null) return c; if (name.startsWith("main$")) return loadableUtils.utils.findClass_fullName("loadableUtils.utils" + name.substring(4)); return null; } }); } static public ThreadLocal dynamicObjectIsLoading_threadLocal() { return DynamicObject_loading; } static public Thread startThread(Object runnable) { return startThread(defaultThreadName(), runnable); } static public Thread startThread(String name, Object runnable) { runnable = wrapAsActivity(runnable); return startThread(newThread(toRunnable(runnable), name)); } static public Thread startThread(Thread t) { _registerThread(t); t.start(); return t; } static public String copyTextToClipboard(Object _text) { String text = str(_text); StringSelection selection = new StringSelection(text); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, selection); vmBus_send("newClipboardContents", text); return text; } static public String unquote(String s) { if (s == null) return null; if (startsWith(s, '[')) { int i = 1; while (i < s.length() && s.charAt(i) == '=') ++i; if (i < s.length() && s.charAt(i) == '[') { String m = s.substring(1, i); if (s.endsWith("]" + m + "]")) return s.substring(i + 1, s.length() - i - 1); } } if (s.length() > 1) { char c = s.charAt(0); if (c == '\"' || c == '\'') { int l = endsWith(s, c) ? s.length() - 1 : s.length(); StringBuilder sb = new StringBuilder(l - 1); for (int i = 1; i < l; i++) { char ch = s.charAt(i); if (ch == '\\') { char nextChar = (i == l - 1) ? '\\' : s.charAt(i + 1); if (nextChar >= '0' && nextChar <= '7') { String code = "" + nextChar; i++; if ((i < l - 1) && s.charAt(i + 1) >= '0' && s.charAt(i + 1) <= '7') { code += s.charAt(i + 1); i++; if ((i < l - 1) && s.charAt(i + 1) >= '0' && s.charAt(i + 1) <= '7') { code += s.charAt(i + 1); i++; } } sb.append((char) Integer.parseInt(code, 8)); continue; } switch(nextChar) { case '\"': ch = '\"'; break; case '\\': ch = '\\'; break; case 'b': ch = '\b'; break; case 'f': ch = '\f'; break; case 'n': ch = '\n'; break; case 'r': ch = '\r'; break; case 't': ch = '\t'; break; case '\'': ch = '\''; break; case 'u': if (i >= l - 5) { ch = 'u'; break; } int code = Integer.parseInt("" + s.charAt(i + 2) + s.charAt(i + 3) + s.charAt(i + 4) + s.charAt(i + 5), 16); sb.append(Character.toChars(code)); i += 5; continue; default: ch = nextChar; } i++; } sb.append(ch); } return sb.toString(); } } return s; } static volatile public PersistableThrowable _handleException_lastException; static public List _handleException_onException = synchroList(ll("printStackTrace2")); static public void _handleException(Throwable e) { _handleException_lastException = persistableThrowable(e); Throwable e2 = innerException(e); if (e2.getClass() == RuntimeException.class && eq(e2.getMessage(), "Thread cancelled.") || e2 instanceof InterruptedException) return; for (Object f : cloneList(_handleException_onException)) try { callF(f, e); } catch (Throwable e3) { try { printStackTrace2(e3); } catch (Throwable e4) { System.out.println(getStackTrace(e3)); System.out.println(getStackTrace(e4)); } } } static public void _close(AutoCloseable c) { if (c != null) try { c.close(); } catch (Throwable e) { if (c instanceof javax.imageio.stream.ImageOutputStream) return; else throw rethrow(e); } } static public Class javax() { return getJavaX(); } static public void setDefaultClassFinder(Object cf) { _defaultClassFinder_value = cf; } static public HashMap findClass_fullName_cache = new HashMap(); static public Class findClass_fullName(String name) { synchronized (findClass_fullName_cache) { if (findClass_fullName_cache.containsKey(name)) return findClass_fullName_cache.get(name); Class c; try { c = Class.forName(name); } catch (ClassNotFoundException e) { c = null; } findClass_fullName_cache.put(name, c); return c; } } static public Throwable printStackTrace2(Throwable e) { print(getStackTrace2(e)); return e; } static public void printStackTrace2() { printStackTrace2(new Throwable()); } static public void printStackTrace2(String msg) { printStackTrace2(new Throwable(msg)); } static public Object _defaultClassFinder_value = defaultDefaultClassFinder(); static public Object _defaultClassFinder() { return _defaultClassFinder_value; } static public String defaultThreadName_name; static public String defaultThreadName() { if (defaultThreadName_name == null) defaultThreadName_name = "A thread by " + programID(); return defaultThreadName_name; } static public Runnable wrapAsActivity(Object r) { return toRunnable(r); } static public Thread newThread(Object runnable) { return new Thread(_topLevelErrorHandling(toRunnable(runnable))); } static public Thread newThread(Object runnable, String name) { if (name == null) name = defaultThreadName(); return new Thread(_topLevelErrorHandling(toRunnable(runnable)), name); } static public Thread newThread(String name, Object runnable) { return newThread(runnable, name); } static public Runnable toRunnable(final Object o) { if (o instanceof Runnable) return (Runnable) o; return new Runnable() { public void run() { try { callF(o); } catch (Exception __e) { throw rethrow(__e); } } public String toString() { return "callF(o)"; } }; } static public Map _registerThread_threads; static public Object _onRegisterThread; static public Thread _registerThread(Thread t) { if (_registerThread_threads == null) _registerThread_threads = newWeakHashMap(); _registerThread_threads.put(t, true); vm_generalWeakSubMap("thread2mc").put(t, weakRef(mc())); callF(_onRegisterThread, t); return t; } static public void _registerThread() { _registerThread(Thread.currentThread()); } static public String str(Object o) { return o == null ? "null" : o.toString(); } static public String str(char[] c) { return new String(c); } static public void vmBus_send(String msg, Object... args) { Object arg = vmBus_wrapArgs(args); pcallFAll(vm_busListeners_live(), msg, arg); pcallFAll(vm_busListenersByMessage_live().get(msg), msg, arg); } static public void vmBus_send(String msg) { vmBus_send(msg, (Object) null); } static public boolean startsWith(String a, String b) { return a != null && a.startsWith(unnull(b)); } static public boolean startsWith(String a, char c) { return nemptyString(a) && a.charAt(0) == c; } static public boolean startsWith(String a, String b, Matches m) { if (!startsWith(a, b)) return false; m.m = new String[] { substring(a, strL(b)) }; return true; } static public boolean startsWith(List a, List b) { if (a == null || listL(b) > listL(a)) return false; for (int i = 0; i < listL(b); i++) if (neq(a.get(i), b.get(i))) return false; return true; } static public boolean endsWith(String a, String b) { return a != null && a.endsWith(b); } static public boolean endsWith(String a, char c) { return nempty(a) && lastChar(a) == c; } static public boolean endsWith(String a, String b, Matches m) { if (!endsWith(a, b)) return false; m.m = new String[] { dropLast(l(b), a) }; return true; } static public List synchroList() { return Collections.synchronizedList(new ArrayList()); } static public List synchroList(List l) { return Collections.synchronizedList(l); } static public List ll(A... a) { ArrayList l = new ArrayList(a.length); if (a != null) for (A x : a) l.add(x); return l; } static public PersistableThrowable persistableThrowable(Throwable e) { return e == null ? null : new PersistableThrowable(e); } static public Throwable innerException(Throwable e) { return getInnerException(e); } static public boolean eq(Object a, Object b) { return a == b || a != null && b != null && a.equals(b); } static public ArrayList cloneList(Iterable l) { return l instanceof Collection ? cloneList((Collection) l) : asList(l); } static public ArrayList cloneList(Collection l) { if (l == null) return new ArrayList(); synchronized (collectionMutex(l)) { return new ArrayList(l); } } static public Object callF(Object f, Object... args) { try { if (f instanceof String) return callMC((String) f, args); return x30_util.callF(f, args); } catch (Exception __e) { throw rethrow(__e); } } static public A callF(F0 f) { return f == null ? null : f.get(); } static public A callF(IF0 f) { return f == null ? null : f.get(); } static public B callF(F1 f, A a) { return f == null ? null : f.get(a); } static public B callF(IF1 f, A a) { return f == null ? null : f.get(a); } static public void callF(VF1 f, A a) { if (f != null) f.get(a); } static public Object callMC(String method, Object... args) { return call(mc(), method, args); } static public Object call(Object o) { return callF(o); } static public Object call(Object o, String method, Object... args) { return call_withVarargs(o, method, args); } static public String getStackTrace(Throwable throwable) { lastException(throwable); return getStackTrace_noRecord(throwable); } static public String getStackTrace_noRecord(Throwable throwable) { StringWriter writer = new StringWriter(); throwable.printStackTrace(new PrintWriter(writer)); return hideCredentials(writer.toString()); } static public String getStackTrace() { return getStackTrace_noRecord(new Throwable()); } static public Class __javax; static public Class getJavaX() { try { return __javax; } catch (Exception __e) { throw rethrow(__e); } } static volatile public StringBuffer local_log = new StringBuffer(); static volatile public Appendable print_log = local_log; static volatile public int print_log_max = 1024 * 1024; static volatile public int local_log_max = 100 * 1024; static public boolean print_silent = false; static public Object print_byThread_lock = new Object(); static volatile public ThreadLocal print_byThread; static volatile public Object print_allThreads; static volatile public Object print_preprocess; static public void print() { print(""); } static public A print(String s, A o) { print((endsWithLetterOrDigit(s) ? s + ": " : s) + o); return o; } static public A print(A o) { ping_okInCleanUp(); if (print_silent) return o; String s = o + "\n"; print_noNewLine(s); return o; } static public void print_noNewLine(String s) { Object f = getThreadLocal(print_byThread_dontCreate()); if (f == null) f = print_allThreads; if (f != null) if (isFalse(f instanceof F1 ? ((F1) f).get(s) : callF(f, s))) return; print_raw(s); } static public void print_raw(String s) { if (print_preprocess != null) s = (String) callF(print_preprocess, s); s = fixNewLines(s); Appendable loc = local_log; Appendable buf = print_log; int loc_max = print_log_max; if (buf != loc && buf != null) { print_append(buf, s, print_log_max); loc_max = local_log_max; } if (loc != null) print_append(loc, s, loc_max); System.out.print(s); vmBus_send("printed", mc(), s); } static public void print_autoRotate() { } static public String getStackTrace2(Throwable e) { return hideCredentials(getStackTrace(unwrapTrivialExceptionWraps(e)) + replacePrefix("java.lang.RuntimeException: ", "FAIL: ", hideCredentials(str(innerException2(e)))) + "\n"); } static public Object defaultDefaultClassFinder() { return new F1() { public Class get(String name) { Class c = findClass_fullName(name); if (c != null) return c; if (name.startsWith("loadableUtils.utils$")) return findClass_fullName("main" + name.substring(19)); return null; } }; } static public String programID() { return getProgramID(); } static public String programID(Object o) { return getProgramID(o); } static public Runnable _topLevelErrorHandling(final Runnable runnable) { final Object info = _threadInfo(); return new Runnable() { public void run() { try { try { _threadInheritInfo(info); runnable.run(); } catch (Throwable __e) { _handleException(__e); } } catch (Exception __e) { throw rethrow(__e); } } public String toString() { return "pcall {\r\n _threadInheritInfo(info);\r\n runnable.run();\r\n }"; } }; } static public WeakReference weakRef(A a) { return newWeakReference(a); } static public Class mc() { return main.class; } static public Object vmBus_wrapArgs(Object... args) { return empty(args) ? null : l(args) == 1 ? args[0] : args; } static public void pcallFAll(Collection l, Object... args) { if (l != null) for (Object f : cloneList(l)) pcallF(f, args); } static public void pcallFAll(Iterator it, Object... args) { while (it.hasNext()) pcallF(it.next(), args); } static public Set vm_busListeners_live_cache; static public Set vm_busListeners_live() { if (vm_busListeners_live_cache == null) vm_busListeners_live_cache = vm_busListeners_live_load(); return vm_busListeners_live_cache; } static public Set vm_busListeners_live_load() { return vm_generalIdentityHashSet("busListeners"); } static public Map vm_busListenersByMessage_live_cache; static public Map vm_busListenersByMessage_live() { if (vm_busListenersByMessage_live_cache == null) vm_busListenersByMessage_live_cache = vm_busListenersByMessage_live_load(); return vm_busListenersByMessage_live_cache; } static public Map vm_busListenersByMessage_live_load() { return vm_generalHashMap("busListenersByMessage"); } static public String unnull(String s) { return s == null ? "" : s; } static public Collection unnull(Collection l) { return l == null ? emptyList() : l; } static public List unnull(List l) { return l == null ? emptyList() : l; } static public int[] unnull(int[] l) { return l == null ? emptyIntArray() : l; } static public char[] unnull(char[] l) { return l == null ? emptyCharArray() : l; } static public double[] unnull(double[] l) { return l == null ? emptyDoubleArray() : l; } static public Map unnull(Map l) { return l == null ? emptyMap() : l; } static public Iterable unnull(Iterable i) { return i == null ? emptyList() : i; } static public A[] unnull(A[] a) { return a == null ? (A[]) emptyObjectArray() : a; } static public BitSet unnull(BitSet b) { return b == null ? new BitSet() : b; } static public Pt unnull(Pt p) { return p == null ? new Pt() : p; } static public long unnull(Long l) { return l == null ? 0L : l; } static public boolean nemptyString(String s) { return s != null && s.length() > 0; } static public String substring(String s, int x) { return substring(s, x, strL(s)); } static public String substring(String s, int x, int y) { if (s == null) return null; if (x < 0) x = 0; int n = s.length(); if (y < x) y = x; if (y > n) y = n; if (x >= y) return ""; return s.substring(x, y); } static public String substring(String s, CharSequence l) { return substring(s, l(l)); } static public int strL(String s) { return s == null ? 0 : s.length(); } static public int listL(Collection l) { return l == null ? 0 : l.size(); } static public boolean neq(Object a, Object b) { return !eq(a, b); } static public boolean nempty(Collection c) { return !empty(c); } static public boolean nempty(CharSequence s) { return !empty(s); } static public boolean nempty(Object[] o) { return !empty(o); } static public boolean nempty(byte[] o) { return !empty(o); } static public boolean nempty(int[] o) { return !empty(o); } static public boolean nempty(Map m) { return !empty(m); } static public boolean nempty(Iterator i) { return i != null && i.hasNext(); } static public boolean nempty(Object o) { return !empty(o); } static public char lastChar(String s) { return empty(s) ? '\0' : s.charAt(l(s) - 1); } static public A[] dropLast(A[] a) { return dropLast(a, 1); } static public A[] dropLast(A[] a, int n) { if (a == null) return null; n = Math.min(n, a.length); A[] b = arrayOfSameType(a, a.length - n); System.arraycopy(a, 0, b, 0, b.length); return b; } static public List dropLast(List l) { return subList(l, 0, l(l) - 1); } static public List dropLast(int n, List l) { return subList(l, 0, l(l) - n); } static public List dropLast(Iterable l) { return dropLast(asList(l)); } static public String dropLast(String s) { return substring(s, 0, l(s) - 1); } static public String dropLast(String s, int n) { return substring(s, 0, l(s) - n); } static public String dropLast(int n, String s) { return dropLast(s, n); } static public Throwable getInnerException(Throwable e) { if (e == null) return null; while (e.getCause() != null) e = e.getCause(); return e; } static public Throwable getInnerException(Runnable r) { return getInnerException(getException(r)); } static public ArrayList asList(A[] a) { return a == null ? new ArrayList() : new ArrayList(Arrays.asList(a)); } static public ArrayList asList(int[] a) { if (a == null) return null; ArrayList l = emptyList(a.length); for (int i : a) l.add(i); return l; } static public ArrayList asList(long[] a) { if (a == null) return null; ArrayList l = emptyList(a.length); for (long i : a) l.add(i); return l; } static public ArrayList asList(float[] a) { if (a == null) return null; ArrayList l = emptyList(a.length); for (float i : a) l.add(i); return l; } static public ArrayList asList(double[] a) { if (a == null) return null; ArrayList l = emptyList(a.length); for (double i : a) l.add(i); return l; } static public ArrayList asList(Iterable s) { if (s instanceof ArrayList) return (ArrayList) s; ArrayList l = new ArrayList(); if (s != null) for (A a : s) l.add(a); return l; } static public ArrayList asList(Enumeration e) { ArrayList l = new ArrayList(); if (e != null) while (e.hasMoreElements()) l.add(e.nextElement()); return l; } static public Object collectionMutex(List l) { return l; } static public Object collectionMutex(Object o) { if (o instanceof List) return o; String c = className(o); if (eq(c, "java.util.TreeMap$KeySet")) c = className(o = getOpt(o, "m")); else if (eq(c, "java.util.HashMap$KeySet")) c = className(o = get_raw(o, "this$0")); if (eqOneOf(c, "java.util.TreeMap$AscendingSubMap", "java.util.TreeMap$DescendingSubMap")) c = className(o = get_raw(o, "m")); return o; } static public Object call_withVarargs(Object o, String method, Object... args) { try { if (o == null) return null; if (o instanceof Class) { Class c = (Class) o; _MethodCache cache = callOpt_getCache(c); Method me = cache.findStaticMethod(method, args); if (me != null) return invokeMethod(me, null, args); List methods = cache.cache.get(method); if (methods != null) methodSearch: for (Method m : methods) { { if (!(m.isVarArgs())) continue; } { if (!(isStaticMethod(m))) continue; } Object[] newArgs = massageArgsForVarArgsCall(m, args); if (newArgs != null) return invokeMethod(m, null, newArgs); } throw fail("Method " + c.getName() + "." + method + "(" + joinWithComma(classNames(args)) + ") not found"); } else { Class c = o.getClass(); _MethodCache cache = callOpt_getCache(c); Method me = cache.findMethod(method, args); if (me != null) return invokeMethod(me, o, args); List methods = cache.cache.get(method); if (methods != null) methodSearch: for (Method m : methods) { { if (!(m.isVarArgs())) continue; } Object[] newArgs = massageArgsForVarArgsCall(m, args); if (newArgs != null) return invokeMethod(m, o, newArgs); } throw fail("Method " + c.getName() + "." + method + "(" + joinWithComma(classNames(args)) + ") not found"); } } catch (Exception __e) { throw rethrow(__e); } } static volatile public PersistableThrowable lastException_lastException; static public PersistableThrowable lastException() { return lastException_lastException; } static public void lastException(Throwable e) { lastException_lastException = persistableThrowable(e); } static public String hideCredentials(URL url) { return url == null ? null : hideCredentials(str(url)); } static public String hideCredentials(String url) { try { if (startsWithOneOf(url, "http://", "https://") && isAGIBlueDomain(hostNameFromURL(url))) return url; } catch (Throwable e) { print("HideCredentials", e); } return url.replaceAll("([&?])(_pass|key|cookie)=[^&\\s\"]*", "$1$2="); } static public String hideCredentials(Object o) { return hideCredentials(str(o)); } static public AutoCloseable tempInterceptPrintIfNotIntercepted(F1 f) { return print_byThread().get() == null ? tempInterceptPrint(f) : null; } static public boolean endsWithLetterOrDigit(String s) { return s != null && s.length() > 0 && Character.isLetterOrDigit(s.charAt(s.length() - 1)); } static public void ping_okInCleanUp() { if (ping_pauseAll || ping_anyActions) ping_impl(true); } static public Object getThreadLocal(Object o, String name) { ThreadLocal t = (ThreadLocal) (getOpt(o, name)); return t != null ? t.get() : null; } static public A getThreadLocal(ThreadLocal tl) { return tl == null ? null : tl.get(); } static public A getThreadLocal(ThreadLocal tl, A defaultValue) { return or(getThreadLocal(tl), defaultValue); } static public ThreadLocal print_byThread_dontCreate() { return print_byThread; } static public boolean isFalse(Object o) { return eq(false, o); } static public String fixNewLines(String s) { int i = indexOf(s, '\r'); if (i < 0) return s; int l = s.length(); StringBuilder out = new StringBuilder(l); out.append(s, 0, i); for (; i < l; i++) { char c = s.charAt(i); if (c != '\r') out.append(c); else { out.append('\n'); if (i + 1 < l && s.charAt(i + 1) == '\n') ++i; } } return out.toString(); } static public void print_append(Appendable buf, String s, int max) { try { synchronized (buf) { buf.append(s); if (buf instanceof StringBuffer) rotateStringBuffer(((StringBuffer) buf), max); else if (buf instanceof StringBuilder) rotateStringBuilder(((StringBuilder) buf), max); } } catch (Exception __e) { throw rethrow(__e); } } static public Throwable unwrapTrivialExceptionWraps(Throwable e) { if (e == null) return e; while (e.getClass() == RuntimeException.class && e.getCause() != null && eq(e.getMessage(), str(e.getCause()))) e = e.getCause(); return e; } static public String replacePrefix(String prefix, String replacement, String s) { if (!startsWith(s, prefix)) return s; return replacement + substring(s, l(prefix)); } static public Throwable innerException2(Throwable e) { if (e == null) return null; while (empty(e.getMessage()) && e.getCause() != null) e = e.getCause(); return e; } static public String getProgramID() { return nempty(programID) ? formatSnippetIDOpt(programID) : "?"; } static public String getProgramID(Class c) { String id = (String) getOpt(c, "programID"); if (nempty(id)) return formatSnippetID(id); return "?"; } static public String getProgramID(Object o) { return getProgramID(getMainClass(o)); } static public WeakReference newWeakReference(A a) { return a == null ? null : new WeakReference(a); } static public boolean empty(Collection c) { return c == null || c.isEmpty(); } static public boolean empty(Iterable c) { return c == null || !c.iterator().hasNext(); } static public boolean empty(CharSequence s) { return s == null || s.length() == 0; } static public boolean empty(Map map) { return map == null || map.isEmpty(); } static public boolean empty(Object[] o) { return o == null || o.length == 0; } static public boolean empty(Object o) { if (o instanceof Collection) return empty((Collection) o); if (o instanceof String) return empty((String) o); if (o instanceof Map) return empty((Map) o); if (o instanceof Object[]) return empty((Object[]) o); if (o instanceof byte[]) return empty((byte[]) o); if (o == null) return true; throw fail("unknown type for 'empty': " + getType(o)); } static public boolean empty(Iterator i) { return i == null || !i.hasNext(); } static public boolean empty(double[] a) { return a == null || a.length == 0; } static public boolean empty(float[] a) { return a == null || a.length == 0; } static public boolean empty(int[] a) { return a == null || a.length == 0; } static public boolean empty(long[] a) { return a == null || a.length == 0; } static public boolean empty(byte[] a) { return a == null || a.length == 0; } static public boolean empty(short[] a) { return a == null || a.length == 0; } static public boolean empty(MultiSet ms) { return ms == null || ms.isEmpty(); } static public boolean empty(File f) { return getFileSize(f) == 0; } static public Object pcallF(Object f, Object... args) { return pcallFunction(f, args); } static public A pcallF(F0 f) { try { return f == null ? null : f.get(); } catch (Throwable __e) { return null; } } static public B pcallF(F1 f, A a) { try { return f == null ? null : f.get(a); } catch (Throwable __e) { return null; } } static public void pcallF(VF1 f, A a) { try { if (f != null) f.get(a); } catch (Throwable __e) { _handleException(__e); } } static public ArrayList emptyList() { return new ArrayList(); } static public ArrayList emptyList(int capacity) { return new ArrayList(max(0, capacity)); } static public ArrayList emptyList(Iterable l) { return l instanceof Collection ? emptyList(((Collection) l).size()) : emptyList(); } static public ArrayList emptyList(Object[] l) { return emptyList(l(l)); } static public ArrayList emptyList(Class c) { return new ArrayList(); } static public int[] emptyIntArray_a = new int[0]; static public int[] emptyIntArray() { return emptyIntArray_a; } static public char[] emptyCharArray = new char[0]; static public char[] emptyCharArray() { return emptyCharArray; } static public double[] emptyDoubleArray = new double[0]; static public double[] emptyDoubleArray() { return emptyDoubleArray; } static public Map emptyMap() { return new HashMap(); } static public Object[] emptyObjectArray_a = new Object[0]; static public Object[] emptyObjectArray() { return emptyObjectArray_a; } static public A[] arrayOfSameType(A[] a, int n) { return newObjectArrayOfSameType(a, n); } static public List subList(List l, int startIndex) { return subList(l, startIndex, l(l)); } static public List subList(int startIndex, int endIndex, List l) { return subList(l, startIndex, endIndex); } static public List subList(List l, int startIndex, int endIndex) { if (l == null) return null; int n = l(l); startIndex = Math.max(0, startIndex); endIndex = Math.min(n, endIndex); if (startIndex >= endIndex) return ll(); if (startIndex == 0 && endIndex == n) return l; return l.subList(startIndex, endIndex); } static public Throwable getException(Runnable r) { try { callF(r); return null; } catch (Throwable e) { return e; } } static public String className(Object o) { return getClassName(o); } static public boolean eqOneOf(Object o, Object... l) { for (Object x : l) if (eq(o, x)) return true; return false; } static final public Map callOpt_cache = newDangerousWeakHashMap(); static public Object callOpt_cached(Object o, String methodName, Object... args) { try { if (o == null) return null; if (o instanceof Class) { Class c = (Class) o; _MethodCache cache = callOpt_getCache(c); Method me = cache.findMethod(methodName, args); if (me == null || (me.getModifiers() & Modifier.STATIC) == 0) return null; return invokeMethod(me, null, args); } else { Class c = o.getClass(); _MethodCache cache = callOpt_getCache(c); Method me = cache.findMethod(methodName, args); if (me == null) return null; return invokeMethod(me, o, args); } } catch (Exception __e) { throw rethrow(__e); } } static public _MethodCache callOpt_getCache(Class c) { synchronized (callOpt_cache) { _MethodCache cache = callOpt_cache.get(c); if (cache == null) callOpt_cache.put(c, cache = new _MethodCache(c)); return cache; } } static public Object invokeMethod(Method m, Object o, Object... args) { try { try { return m.invoke(o, args); } catch (InvocationTargetException e) { throw rethrow(getExceptionCause(e)); } catch (IllegalArgumentException e) { throw new IllegalArgumentException(e.getMessage() + " - was calling: " + m + ", args: " + joinWithSpace(classNames(args))); } } catch (Exception __e) { throw rethrow(__e); } } static public boolean isStaticMethod(Method m) { return methodIsStatic(m); } static public Object[] massageArgsForVarArgsCall(Method m, Object[] args) { Class[] types = m.getParameterTypes(); int n = types.length - 1, nArgs = args.length; if (nArgs < n) return null; for (int i = 0; i < n; i++) if (!argumentCompatibleWithType(args[i], types[i])) return null; Class varArgType = types[n].getComponentType(); for (int i = n; i < nArgs; i++) if (!argumentCompatibleWithType(args[i], varArgType)) return null; Object[] newArgs = new Object[n + 1]; arraycopy(args, 0, newArgs, 0, n); Object[] varArgs = arrayOfType(varArgType, nArgs - n); arraycopy(args, n, varArgs, 0, nArgs - n); newArgs[n] = varArgs; return newArgs; } static public String joinWithComma(Collection c) { return join(", ", c); } static public String joinWithComma(String... c) { return join(", ", c); } static public List classNames(Collection l) { return getClassNames(l); } static public List classNames(Object[] l) { return getClassNames(Arrays.asList(l)); } static public boolean startsWithOneOf(String s, String... l) { for (String x : l) if (startsWith(s, x)) return true; return false; } static public boolean startsWithOneOf(String s, Matches m, String... l) { for (String x : l) if (startsWith(s, x, m)) return true; return false; } static public boolean isAGIBlueDomain(String domain) { return domainIsUnder(domain, theAGIBlueDomain()); } static public String hostNameFromURL(String url) { try { return new URL(url).getHost(); } catch (Exception __e) { throw rethrow(__e); } } static public ThreadLocal print_byThread() { synchronized (print_byThread_lock) { if (print_byThread == null) print_byThread = new ThreadLocal(); } return print_byThread; } static public AutoCloseable tempInterceptPrint(F1 f) { return tempSetThreadLocal(print_byThread(), f); } static volatile public boolean ping_pauseAll = false; static public int ping_sleep = 100; static volatile public boolean ping_anyActions = false; static public Map ping_actions = newWeakHashMap(); static public ThreadLocal ping_isCleanUpThread = new ThreadLocal(); static public boolean ping() { if (ping_pauseAll || ping_anyActions) ping_impl(true); return true; } static public boolean ping_impl(boolean okInCleanUp) { try { if (ping_pauseAll && !isAWTThread()) { do Thread.sleep(ping_sleep); while (ping_pauseAll); return true; } if (ping_anyActions) { if (!okInCleanUp && !isTrue(ping_isCleanUpThread.get())) failIfUnlicensed(); Object action = null; synchronized (ping_actions) { if (!ping_actions.isEmpty()) { action = ping_actions.get(currentThread()); if (action instanceof Runnable) ping_actions.remove(currentThread()); if (ping_actions.isEmpty()) ping_anyActions = false; } } if (action instanceof Runnable) ((Runnable) action).run(); else if (eq(action, "cancelled")) throw fail("Thread cancelled."); } return false; } catch (Exception __e) { throw rethrow(__e); } } static public A or(A a, A b) { return a != null ? a : b; } static public void rotateStringBuffer(StringBuffer buf, int max) { try { if (buf == null) return; synchronized (buf) { if (buf.length() <= max) return; try { int newLength = max / 2; int ofs = buf.length() - newLength; String newString = buf.substring(ofs); buf.setLength(0); buf.append("[...] ").append(newString); } catch (Exception e) { buf.setLength(0); } buf.trimToSize(); } } catch (Exception __e) { throw rethrow(__e); } } static public void rotateStringBuilder(StringBuilder buf, int max) { try { if (buf == null) return; synchronized (buf) { if (buf.length() <= max) return; try { int newLength = max / 2; int ofs = buf.length() - newLength; String newString = buf.substring(ofs); buf.setLength(0); buf.append("[...] ").append(newString); } catch (Exception e) { buf.setLength(0); } buf.trimToSize(); } } catch (Exception __e) { throw rethrow(__e); } } static public String formatSnippetIDOpt(String s) { return isSnippetID(s) ? formatSnippetID(s) : s; } static public String formatSnippetID(String id) { return "#" + parseSnippetID(id); } static public String formatSnippetID(long id) { return "#" + id; } static public Class getMainClass() { return mc(); } static public Class getMainClass(Object o) { try { if (o == null) return null; if (o instanceof Class && eq(((Class) o).getName(), "x30")) return (Class) o; ClassLoader cl = (o instanceof Class ? (Class) o : o.getClass()).getClassLoader(); return cl == null ? null : cl.loadClass("main"); } catch (Exception __e) { throw rethrow(__e); } } static public String getType(Object o) { return getClassName(o); } static public long getFileSize(String path) { return path == null ? 0 : new File(path).length(); } static public long getFileSize(File f) { return f == null ? 0 : f.length(); } static public Object pcallFunction(Object f, Object... args) { try { return callFunction(f, args); } catch (Throwable __e) { _handleException(__e); } return null; } static public int max(int a, int b) { return Math.max(a, b); } static public int max(int a, int b, int c) { return max(max(a, b), c); } static public long max(int a, long b) { return Math.max((long) a, b); } static public long max(long a, long b) { return Math.max(a, b); } static public double max(int a, double b) { return Math.max((double) a, b); } static public float max(float a, float b) { return Math.max(a, b); } static public double max(double a, double b) { return Math.max(a, b); } static public int max(Collection c) { int x = Integer.MIN_VALUE; for (int i : c) x = max(x, i); return x; } static public double max(double[] c) { if (c.length == 0) return Double.MIN_VALUE; double x = c[0]; for (int i = 1; i < c.length; i++) x = Math.max(x, c[i]); return x; } static public float max(float[] c) { if (c.length == 0) return Float.MAX_VALUE; float x = c[0]; for (int i = 1; i < c.length; i++) x = Math.max(x, c[i]); return x; } static public byte max(byte[] c) { byte x = -128; for (byte d : c) if (d > x) x = d; return x; } static public short max(short[] c) { short x = -0x8000; for (short d : c) if (d > x) x = d; return x; } static public int max(int[] c) { int x = Integer.MIN_VALUE; for (int d : c) if (d > x) x = d; return x; } static public A[] newObjectArrayOfSameType(A[] a, int n) { return (A[]) Array.newInstance(a.getClass().getComponentType(), n); } static public String getClassName(Object o) { return o == null ? "null" : o instanceof Class ? ((Class) o).getName() : o.getClass().getName(); } static public Throwable getExceptionCause(Throwable e) { Throwable c = e.getCause(); return c != null ? c : e; } static public String joinWithSpace(Iterable c) { return join(" ", c); } static public String joinWithSpace(String... c) { return join(" ", c); } static public boolean methodIsStatic(Method m) { return (m.getModifiers() & Modifier.STATIC) != 0; } static public boolean argumentCompatibleWithType(Object arg, Class type) { return arg == null ? !type.isPrimitive() : isInstanceX(type, arg); } static public void arraycopy(Object[] a, Object[] b) { if (a != null && b != null) arraycopy(a, 0, b, 0, Math.min(a.length, b.length)); } static public void arraycopy(Object src, int srcPos, Object dest, int destPos, int n) { if (n != 0) System.arraycopy(src, srcPos, dest, destPos, n); } static public A[] arrayOfType(Class type, int n) { return makeArray(type, n); } static public A[] arrayOfType(int n, Class type) { return arrayOfType(type, n); } public static String join(String glue, Iterable strings) { if (strings == null) return ""; if (strings instanceof Collection) { if (((Collection) strings).size() == 1) return str(first(((Collection) strings))); } StringBuilder buf = new StringBuilder(); Iterator i = strings.iterator(); if (i.hasNext()) { buf.append(i.next()); while (i.hasNext()) buf.append(glue).append(i.next()); } return buf.toString(); } public static String join(String glue, String... strings) { return join(glue, Arrays.asList(strings)); } static public String join(Iterable strings) { return join("", strings); } static public String join(Iterable strings, String glue) { return join(glue, strings); } public static String join(String[] strings) { return join("", strings); } static public List getClassNames(Collection l) { List out = new ArrayList(); if (l != null) for (Object o : l) out.add(o == null ? null : getClassName(o)); return out; } static public boolean domainIsUnder(String domain, String mainDomain) { return eqic(domain, mainDomain) || ewic(domain, "." + mainDomain); } static public String theAGIBlueDomain() { return "agi.blue"; } static public AutoCloseable tempSetThreadLocal(final ThreadLocal tl, A a) { if (tl == null) return null; final A prev = setThreadLocal(tl, a); return new AutoCloseable() { public String toString() { return "tl.set(prev);"; } public void close() throws Exception { tl.set(prev); } }; } static public boolean isAWTThread() { if (isAndroid()) return false; if (isHeadless()) return false; return isAWTThread_awt(); } static public boolean isAWTThread_awt() { return SwingUtilities.isEventDispatchThread(); } static public void failIfUnlicensed() { assertTrue("license off", licensed()); } static public Thread currentThread() { return Thread.currentThread(); } public static boolean isSnippetID(String s) { try { parseSnippetID(s); return true; } catch (RuntimeException e) { return false; } } public static long parseSnippetID(String snippetID) { long id = Long.parseLong(shortenSnippetID(snippetID)); if (id == 0) throw fail("0 is not a snippet ID"); return id; } static public Object callFunction(Object f, Object... args) { return callF(f, args); } static public boolean isInstanceX(Class type, Object arg) { if (type == boolean.class) return arg instanceof Boolean; if (type == int.class) return arg instanceof Integer; if (type == long.class) return arg instanceof Long; if (type == float.class) return arg instanceof Float; if (type == short.class) return arg instanceof Short; if (type == char.class) return arg instanceof Character; if (type == byte.class) return arg instanceof Byte; if (type == double.class) return arg instanceof Double; return type.isInstance(arg); } static public A[] makeArray(Class type, int n) { return (A[]) Array.newInstance(type, n); } static public Object first(Object list) { return first((Iterable) list); } static public A first(List list) { return empty(list) ? null : list.get(0); } static public A first(A[] bla) { return bla == null || bla.length == 0 ? null : bla[0]; } static public A first(Iterator i) { return i == null || !i.hasNext() ? null : i.next(); } static public A first(Iterable i) { if (i == null) return null; Iterator it = i.iterator(); return it.hasNext() ? it.next() : null; } static public Character first(String s) { return empty(s) ? null : s.charAt(0); } static public Character first(CharSequence s) { return empty(s) ? null : s.charAt(0); } static public Byte first(byte[] l) { return empty(l) ? null : l[0]; } static public boolean eqic(String a, String b) { if ((a == null) != (b == null)) return false; if (a == null) return true; return a.equalsIgnoreCase(b); } static public boolean eqic(char a, char b) { if (a == b) return true; char u1 = Character.toUpperCase(a); char u2 = Character.toUpperCase(b); if (u1 == u2) return true; return Character.toLowerCase(u1) == Character.toLowerCase(u2); } static public boolean ewic(String a, String b) { return endsWithIgnoreCase(a, b); } static public boolean ewic(String a, String b, Matches m) { return endsWithIgnoreCase(a, b, m); } static public A setThreadLocal(ThreadLocal tl, A value) { if (tl == null) return null; A old = tl.get(); tl.set(value); return old; } static volatile public boolean licensed_yes = true; static public boolean licensed() { if (!licensed_yes) return false; ping_okInCleanUp(); return true; } static public void licensed_off() { licensed_yes = false; } static public String shortenSnippetID(String snippetID) { if (snippetID.startsWith("#")) snippetID = snippetID.substring(1); String httpBlaBla = "http://tinybrain.de/"; if (snippetID.startsWith(httpBlaBla)) snippetID = snippetID.substring(httpBlaBla.length()); return "" + parseLong(snippetID); } static public String asString(Object o) { return o == null ? null : o.toString(); } static public boolean endsWithIgnoreCase(String a, String b) { int la = l(a), lb = l(b); return la >= lb && regionMatchesIC(a, la - lb, b, 0, lb); } static public boolean endsWithIgnoreCase(String a, String b, Matches m) { if (!endsWithIgnoreCase(a, b)) return false; m.m = new String[] { substring(a, 0, l(a) - l(b)) }; return true; } static public long parseLong(String s) { if (empty(s)) return 0; return Long.parseLong(dropSuffix("L", s)); } static public long parseLong(Object s) { return Long.parseLong((String) s); } static public boolean regionMatchesIC(String a, int offsetA, String b, int offsetB, int len) { return a != null && a.regionMatches(true, offsetA, b, offsetB, len); } static public String dropSuffix(String suffix, String s) { return s.endsWith(suffix) ? s.substring(0, l(s) - l(suffix)) : s; } final static public class _MethodCache { final public Class c; final public HashMap> cache = new HashMap(); public _MethodCache(Class c) { this.c = c; _init(); } public void _init() { Class _c = c; while (_c != null) { for (Method m : _c.getDeclaredMethods()) if (!isAbstract(m) && !reflection_isForbiddenMethod(m)) multiMapPut(cache, m.getName(), makeAccessible(m)); _c = _c.getSuperclass(); } for (Class intf : allInterfacesImplementedBy(c)) for (Method m : intf.getDeclaredMethods()) if (m.isDefault() && !reflection_isForbiddenMethod(m)) multiMapPut(cache, m.getName(), makeAccessible(m)); } public Method findMethod(String method, Object[] args) { try { List m = cache.get(method); if (m == null) return null; int n = m.size(); for (int i = 0; i < n; i++) { Method me = m.get(i); if (call_checkArgs(me, args, false)) return me; } return null; } catch (Exception __e) { throw rethrow(__e); } } public Method findStaticMethod(String method, Object[] args) { try { List m = cache.get(method); if (m == null) return null; int n = m.size(); for (int i = 0; i < n; i++) { Method me = m.get(i); if (isStaticMethod(me) && call_checkArgs(me, args, false)) return me; } return null; } catch (Exception __e) { throw rethrow(__e); } } } static public boolean isAbstract(Class c) { return (c.getModifiers() & Modifier.ABSTRACT) != 0; } static public boolean isAbstract(Method m) { return (m.getModifiers() & Modifier.ABSTRACT) != 0; } static public boolean reflection_isForbiddenMethod(Method m) { return m.getDeclaringClass() == Object.class && eqOneOf(m.getName(), "finalize", "clone", "registerNatives"); } static public void multiMapPut(Map> map, A a, B b) { List l = map.get(a); if (l == null) map.put(a, l = new ArrayList()); l.add(b); } static public Field makeAccessible(Field f) { try { f.setAccessible(true); } catch (Throwable e) { vmBus_send("makeAccessible_error", e, f); } return f; } static public Method makeAccessible(Method m) { try { m.setAccessible(true); } catch (Throwable e) { vmBus_send("makeAccessible_error", e, m); } return m; } static public Constructor makeAccessible(Constructor c) { try { c.setAccessible(true); } catch (Throwable e) { vmBus_send("makeAccessible_error", e, c); } return c; } static public Set allInterfacesImplementedBy(Class c) { if (c == null) return null; HashSet set = new HashSet(); allInterfacesImplementedBy_find(c, set); return set; } static public void allInterfacesImplementedBy_find(Class c, Set set) { if (c.isInterface() && !set.add(c)) return; do { for (Class intf : c.getInterfaces()) allInterfacesImplementedBy_find(intf, set); } while ((c = c.getSuperclass()) != null); } static public Method findMethod(Object o, String method, Object... args) { return findMethod_cached(o, method, args); } static public boolean findMethod_checkArgs(Method m, Object[] args, boolean debug) { Class[] types = m.getParameterTypes(); if (types.length != args.length) { if (debug) System.out.println("Bad parameter length: " + args.length + " vs " + types.length); return false; } for (int i = 0; i < types.length; i++) if (!(args[i] == null || isInstanceX(types[i], args[i]))) { if (debug) System.out.println("Bad parameter " + i + ": " + args[i] + " vs " + types[i]); return false; } return true; } static public boolean call_checkArgs(Method m, Object[] args, boolean debug) { Class[] types = m.getParameterTypes(); if (types.length != args.length) { if (debug) print("Bad parameter length: " + args.length + " vs " + types.length); return false; } for (int i = 0; i < types.length; i++) { Object arg = args[i]; if (!(arg == null ? !types[i].isPrimitive() : isInstanceX(types[i], arg))) { if (debug) print("Bad parameter " + i + ": " + arg + " vs " + types[i]); return false; } } return true; } static public Method findStaticMethod(Class c, String method, Object... args) { Class _c = c; while (c != null) { for (Method m : c.getDeclaredMethods()) { if (!m.getName().equals(method)) continue; if ((m.getModifiers() & Modifier.STATIC) == 0 || !findStaticMethod_checkArgs(m, args)) continue; return m; } c = c.getSuperclass(); } return null; } static public boolean findStaticMethod_checkArgs(Method m, Object[] args) { Class[] types = m.getParameterTypes(); if (types.length != args.length) return false; for (int i = 0; i < types.length; i++) if (!(args[i] == null || isInstanceX(types[i], args[i]))) return false; return true; } static public Method findMethod_cached(Object o, String method, Object... args) { try { if (o == null) return null; if (o instanceof Class) { _MethodCache cache = callOpt_getCache(((Class) o)); List methods = cache.cache.get(method); if (methods != null) for (Method m : methods) if (isStaticMethod(m) && findMethod_checkArgs(m, args, false)) return m; return null; } else { _MethodCache cache = callOpt_getCache(o.getClass()); List methods = cache.cache.get(method); if (methods != null) for (Method m : methods) if (findMethod_checkArgs(m, args, false)) return m; return null; } } catch (Exception __e) { throw rethrow(__e); } } }