let COLOR_CODE='#b034d9'; let API_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRlVGltZSI6MTc0OTU1MjI5Mzc0MSwidV9pZCI6IjUxMS0xNzQ5NTUyMjkzNzQxIiwicF9pZCI6MiwidHlwZSI6ImNvbnZlcnNhdGlvblVzZXIiLCJhX2lkIjoiMSIsImlhdCI6MTc0OTU1MjI5M30.9RCALteUWyUTVMl2-SEovOkbZDeFRX5GsV-DyuDi6dA'; let host = 'https://chat.pura-ai.com'; let chatbotName='511'; let welcomeMessage='Hello and welcome to 511 Digital Marketing. I am your digital marketing specialist today. It is great to connect with you. '; let botLogo='data:image/webp;base64,UklGRgwQAABXRUJQVlA4WAoAAAAIAAAA+QAA+QAAVlA4ICwPAABwSACdASr6APoAPkkkkEUioiGTuTyAKASEpu4XHOABmms//hPyZ8GyhPRP7F+vn9q/6P+s+dGrP0P7q/tzzRCBPVP2S/G/3H9yf8P7OXsj+8P3AP0Y/x/90/cH+k/EZ/ZvYR5gP6f/av+P/mvei/w37Ae5X/CeoB/Zf8B/4/WZ9hH91fYA/YP0s//L/qP/L8nP7R/t98DH6yf8f8///x9AG+heNP7d2qf3LlcJZFhb7H/p/7P6B94PAC/FP5n/gvy34ObUvMI7lf7LwW9TtUYj99V3+j/ZfzufSf/t9wj+Y/2//p+sd7AP3G9lH9pCQnVVVVVVVVVVVUwh4//YnleRtauMHcKciIiIiC8ELVP3ap/ylMNdfv4vkl7sTlTRd3d2309S4rsayDXQ/iS8TdTUSqcxur0URvcDOpTV0oCwuqqlBd4Suvklz6QF3UKuVM9sFFXmCbU6v+1vqQK/nCu090rHKbE6u2REKrdXPdrFzR2fG0xBvsGX9Mc/uWRKbtMi/ng9arg9m14e7fLyz+eg0y9PQ5ohmeZlPBIGkdfNONhMNNLLPu3H+IFiMWCt3XtgW4yTSDpAA30xRtlDp4V8jxuZUiEvYnk0W4dw+wFn+MlihIQx29mL8AQRYvot9W2L+cta47ip+3zy7g/zzuBxPH+Kw/xwV7CiIiImu2EMaK4davg6zMzMzIvo3ZFEEiIiIiIh7Lo9Y2qqqqqqfebdnCyIox1xAQk+3qy7u7u7uyFbJfCQGKSS4bd3d3d3d3d3d3d3d3d3d3d3XgAA/vnEoACl5efXHTuNbMHvvwwOajLxwmHDmYz6KTGsgt7Jb25uyDWvYP6zgXZqG5gHG0R9YJOAEl0bpxx1CXA5yCbfEPDA7Zu7ies/8WV1hrzgSm0iXiFiLQZGyl8GmMhLqi4YC2acyUUs9lWT48pjkhs4hsOnmXD7NmzXqMDoUaXcGvq1BwZ5/GeF+c70g3p7VsytJYZdYfvWSoaoAwLP/gjn/deIvNd0+PhIDBh48qxtcp74hkxsUtWNfFigs3M2q5lniI7rbUb1r0wJC19fXqbhRO87ZRp4y8Z2hnUKUNfR4B6miWEV6FA3Vj5LqmJ80r9hRBEmaG24xywrNMPlLGG21ka96R9GfNYTS0UZgnGGJWlon7h0mJsjncHAImRXOI3YMBhnDvNFRooacMCOExkEpPLYHdQH7/Ysd1NXpg29NRcm3bsTG0NQ2VhRBsbkLOXxtaqfyB0FYVIAW8y6lE9lTH33Ed87ZbVsqfX6jvRSxpK1/v6W09euY7vP7msdd4M2U3MHThG2b/A7bT55EBAiTkWFfKBsYlyXeKacJBtQLl97IPnMQI+rOgYFDOPwd9DTH8+vBP/IRbxFh4qrzQtO19cWDDcKw3+TCvWIkcFCvVKU+DmlFTvTSaCkkXmjybsOSbKUwxLD088ZA0K4Eo0u7a62/cgVVbUXn6rXmvyhc8KTOUG3HNSspLGXrTQrCnheUQKGIwUUpiOVRIchaiQk88NZ0FcVk+l76x4UvijyBuVbvyTL392hOC4dOzns252+Sb63dURaC5PmJ2dx7Z87018/92b8mwoCpct3XqOLlyh3mj6mc52C3xW13i8NqTQ7w66wApYMOtWyOkmAz54S9xeLPBaBGu8ROzW06bDXbsw4RAjBOcxnOqhoV2ZBwFgrpxJWfET/T8N8KV0EE8QeqIKGYEZwAEyPFa8NcJ/7NuzT7spSCC9q0feqkSRTfonQ4WnlukS9GvaN12pnLDXboIon0gsoyNgE/qEicfXHrv+mfE4vJgC43Ydem8FD3qBgHnqGDiV2uNrcKUv2FuFxNTWki7eLNdrNwq6QGMP+c0XmgHxvYfBxMdBtlhkqZ+P999Rp0Vn1PcE6YAr5Xwy++iyXU/xt6JNXP/HsLTywUyq6s8wl/n8lYqJY9+4KKwDX5HxotMkAUa+s5w84W3nMioynzReJYY3ugkN1eb0+8apUn+UXggir8TphcQwlxdX32HnCMroaPu7VFQ9bks110uZKAEvXFwK2t5bUPnS1FXm7Utr/hoTBHsiuUjQSL1GLK3FYo6h2QEdu5FEAZMObh7rKCrYnZE5/u8ha7jtPO0Bn+i4e4IQuBkVKRe81H+zz7/3ZBK/8+bBKL/IrFyNajoGOvlhGEcDWhLykRe83xFthGoOE+zoa0tV1TyH8AImFYRoFvgquEXAl2fkr/mS13h5Ob37BrmQxEWnF1F5NaQbfPR4FrrkPnwj2zvfue1FA9otdJKJDORKgo/QmIdOZyViQlGxfaun/Ax3dhTvJtvl1ELLpaAf+2Lrih833TUls+ozncgfPS4i0dYS1Rc6iTiDSWg/SoyuEXF1b8P7YbvDFeihuL1Ogvm2UcBv3892/1BtNo5LTbw2bfpgLinD5ry0VifLv4eFb89vnaLqDGL3XsAqpCuJD43pIhsPnXDAnJzY/n+6ea9UDhmL9Wzfeyai0B8p1tWXXP37Krto6kUbHNbD/HB6DTkdoPH0S+JDhRhL1JF151CBCzbQfRpbdXX5JtV75v1LrZd6FbFwCdqY/vNGr1TBaXDzhp+nE9KduTehvnL5U31Y855O8w/MnH6L+pON/LlbmHO1nnVu0LjlX4gms9UtoqLP+dEe6/hgBnOsGJJALcAunJ84Y8vuZ+Rr0iFsU24ALbNw0LqZNL1r7aeocqsdHT/Z0MuoM7/QylgygAfoguDf91ttpKloXkpLc4SfwLnDAAZCnveFyjoQkhJDVa2ytxz8w8BOjynncQr0JlFCuEHAsXy8gpxjpB5ZALw+LDCEEE9zMIYib63yexW5EtX8EsIEstP1b68GvgVu0XoeudiVIEtRWyuIavVvTNJ4VyAluNbQQZMR7R3KSbcojyWUiPCCJv9dk+Xf2QBHtnP0Oz9J93MLw0DeHMtXokk7V6T6Xuavs9sfLUDF6Ngv49hf7GEkw25OXvyrmBAAkFRXiYROpT7pRHeVuCaxoDgyFbAH6Q+ew4Eg04gpXXZnn6C+vUrMPkx0bL9EePZ5bJGlISzDpVv4IyPTZKRFFubL4XCEpTb9CQG1uUOnliIwtmwYSN/qVPJF/YLnCcYF9nnNpjTo+wLOXQCI+mJ+ehOJfePW+j7xRo8eU1Lr9SPgH17pxxwD+QI57ddiAp013lCzsTB2A4HoWQQ6ZAASnpgMbY6F1EwXW9bze1MHe1Q7XTdvz7val0qYt/SRFOTUffQ/QXcfMsCRUEc7MlA0jO7Bhu/04MJg1brzwIWK5sKyczWaKsMj3vIGDuQEy/yJbHvcMW38hyWsPIESFmvYyJ0SbJObVuNwPGLa8dNmnWjI3X5+sm6znanwW/E/ksX8pgFkqIJ9FaoIITtG25nOViOJKsU/1nN4/EqwkGF7C4w5pM+EzSFzYqNt4cbZbgXLSSos0DeaoG9Ds7EVaCHZOggwij6dwJ0Drqbi6Dzg6OJE3LAr45e3txHAmhz8YxcusA58rbqq+2nU7yCSxWQHBU55E5zenUH+QirhMYGAcD26CzTPw1M/+l1ZqqXwgPJPo4MrnWDOkP+MDmeMHv924KQFKpP+r98VVBFLsmm+wP+YBKt5FkAt4XU/3kkV3aHs3zeziXkfX+XS8PRcdQ36aH8b2Gz7FOqZTZG5mcjWK6KUB7V7YYtlTxNx5fFtx/G4e5MlzlpmXWMi2cvDGcUYj4DXHyQ3YoFWvTlDhMStTZKtyMJTY39k/MuKDIUz1BpcUFMndcYyHor9pDBcgXHKZVwWmkC1CGUtqezpfr1fbq6ZW99w/yWZ23Z0O4IL7IZcPqlIYyKxQSFb/y+cHZsbh5dHTZY2wVS6wLBaI7fOSRei0pk8JBt96Cl7YpZUaEFu1AGrgYrhgnyGTIy/o9KeKFJcaqim3g1x1v9bzEZzmAXWJEYtYDbco3Ep5kQDXY8EZuligph+jzdEl8yhu698luyBT2753mdxFvNoB+1z0dqVkoWC4ewq1jYAJG2j2LIxbJJ2eanLi4kU9JLU8eywEO597ubjxLjnceLlyIeZgWuRktVKowwOg+uVvENMEwPbHj4ADdRoWCrV1L2O9BzqD7BWL7SiV/TuYskTGqvLI9zV61dJhvjvz2SyTrN/0BBad+QWwNLyWwjAyG8vl1Jz26xXwYWt0OOAjbmOL3p4/6NqTGC1wYRRCXoRSjPON0Nv+CLSDMld1aKweeWHRHT4Mj8Boazx+hGjr1OCTQy4iScCTX93UOl3Ce7LtX/hy0wc6BQGTlwUBPqyPVvBv1TfdkXR3uMLaUn7Th1zX9uaWUSx/DNYAipQ6FFdkbTPw2uZgl+W+xL3CdayShl4Ki0P5Su+fATg1UP1nYoui7RuugFG8u23IrSyuSh3AbWvhNviJfrNOXBB++iCuosNACqX2fkjOa5yVAkTyQOw813BcGxy4L+hvKoB7Sgqu9cc+LVaSb7hwhQyvQVN2kaH88x9FpASzjhy6u3ZvaatymHtcWccWeltbIwc7D3LOCNHEccFUniCn3OLPVexkKIhY9CyA3o0hO9sPSv2byrRgagkONAPAiK1oteybljyYpa3pEAas9F8CxLihHPlykOrbCji1f62FOP/htpQeGiGE5KHxr068LXS/Bs3rXHwuCCPdvTDvjcMRmgtolELt5eEEgMa0wf7lZznNTdxT5/u63ec3U2U0tFqHjcU8PglMsVZp+/0YA91aj3VLBv0LOxpCIjfFu/WBqgbMr256l6ix9rdqfDrnVPPHZJZ4JT1gXeBWzxW2wSb5Lmpf10IbqUGSF/2/9IAACa42PRxfhftUCQBZDIdRDpL+pmPVeq+kAAAAJ1aN7kZ5jNlcF5K7a4YDK0lcOAdBj146kUCB1L/xV8d7em665LtXhl/UJ8i5MAGpKC8qwB8Q+NdXOtIBlfbp6twksccvQdGcdl5ArkI1sCG/+VhwNTQwav6SXgfUOH6WQSFXibz8NrLB1bPnBjYCyIfCQDzaeP6GNai9VwddidvxuAnS3oOyAS4DxRX6HnN7+VbAyACPUrmDubgn4pcfH4Q46VVnDNGLt9zvKTfkv5ChAt348fvDKzNXtz48xhgHu/SMWahNHx5fT2ZFyIhBEl3SLWT/zhInnprsTl7OT0Xop2ElUN7mAtwYTy2VqP+gtjUaB/QMW79gVyvh3LbCdnaGEq3OAAAAAAAAAEVYSUa6AAAARXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAAAvGQEA6AMAAC8ZAQDoAwAABgAAkAcABAAAADAyMTABkQcABAAAAAECAwAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAAPoAAAADoAQAAQAAAPoAAAAAAAAA';window.onload = function () { renderChatBot() localStorage.removeItem('chatbot-tok') // if (localStorage.getItem('chatbot-tok')) { // API_KEY = localStorage.getItem('chatbot-tok') // } else { // localStorage.setItem('chatbot-tok', API_KEY) // } // console.log(localStorage.getItem('chatbot-tok')) } var socket; let chatType = 'agent' let createChatLi,openExternalPage1, chatbotToggler, closeBtn, refreshBtn, chatbox, chatInput, sendChatBtn, isEmoticons = false, branchListData = [], formVariableList, projectListData = [], productListData = [], utm_params; let userMessage = null; let puraBotSlideIndex = 1; let carosalImageList = [] async function renderChatBot() { console.log('start') let newDiv = document.createElement('div'); newDiv.id = 'webChatBot' document.body.appendChild(newDiv); var script = document.createElement('script'); script.src = `${host}/socket.io/socket.io.js`; document.head.appendChild(script); setTimeout(() => { console.log('hi') createChatBot(); loadEmoticons(); }, 1000) setTimeout(() => { loadTriggerKey() }, 2000) let url = new URL(window.location.href); utm_params = url.searchParams.toString() } let aiCount = 0 function createChatBot() { let htmlData = `
mode_comment close
Chat with
${chatbotName}
close
` let dat = document.getElementById('webChatBot') dat.innerHTML = htmlData chatbotToggler = document.querySelector(".chatbot-toggler"); closeBtn = document.querySelector(".close-btn"); refreshBtn = document.querySelector(".refresh-btn") chatbox = document.querySelector(".chatbox"); chatboxUserForm = document.querySelector(".chatbox .userform"); chatInput = document.querySelector(".chat-input textarea"); sendChatBtn = document.querySelector(".chat-input .sent-btn"); if (localStorage.getItem('chatbot_token')) { API_KEY = localStorage.getItem('chatbot_token') } else { localStorage.setItem('chatbot_token',API_KEY) } // Variable to store user's message // const API_KEY = "PASTE-YOUR-API-KEY"; // Paste your API key here const inputInitHeight = chatInput.scrollHeight; createChatLi = (message, className) => { // Create a chat
  • element with passed message and className const chatLi = document.createElement("li"); chatLi.classList.add("chat", `${className}`); let chatContent = className === "outgoing" ? `

    ` : ` support_agent

    `; chatLi.innerHTML = chatContent; chatLi.querySelector("p").innerHTML = message; return chatLi; // return chat
  • element } const generateResponse = (chatElement) => { const API_URL = `${host}/aiChat`; const messageElement = chatElement.querySelector("p"); // Define the properties and message for the API request const requestOptions = { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `${API_KEY}` }, body: JSON.stringify({ message: userMessage, }) } // Send POST request to API, get response and set the reponse as paragraph text fetch(API_URL, requestOptions).then(res => res.json()).then(data => { messageElement.textContent = data.message; }).catch(() => { messageElement.classList.add("error"); messageElement.textContent = "Oops! Something went wrong. Please try again."; }).finally(() => chatbox.scrollTo(0, chatbox.scrollHeight)); } const handleChat = () => { userMessage = chatInput.value.trim(); console.log('handleChat',userMessage,chatType)// Get user entered message and remove extra whitespace if (!userMessage) return; // Clear the input textarea and set its height to default chatInput.value = ""; // chatInput.style.height = `${inputInitHeight}px`; conversationalBot(userMessage) } chatInput.addEventListener("input", () => { // Adjust the height of the input textarea based on its content chatInput.style.height = `${inputInitHeight}px`; chatInput.style.height = `${chatInput.scrollHeight}px`; }); window.addEventListener("message", function (event) { console.log('sd', event) let eventData = JSON.parse(event.data) // if (event.origin !== "http://localhost:9000") return; if (eventData.type === "appointment_submitted") { console.log(" Appointment was submitted!"); chatbox.appendChild(createChatLi(eventData.data.userMsg, "outgoing")); chatbox.appendChild(createChatLi(eventData.data.agentMsg, "incoming")); chatbox.scrollTo(0, chatbox.scrollHeight); } }); chatInput.addEventListener("keydown", (e) => { // If Enter key is pressed without Shift key and the window // width is greater than 800px, handle the chat if (e.key === "Enter" && !e.shiftKey && window.innerWidth > 800) { e.preventDefault(); handleChat(); } }); sendChatBtn.addEventListener("click", handleChat); closeBtn.addEventListener("click", () => document.body.classList.remove("show-chatbot")); refreshBtn.addEventListener("click", () => { reloadChat() }) chatbotToggler.addEventListener("click", () => document.body.classList.toggle("show-chatbot")); } function openExternalPage(url) { console.log('openExternalPage',url) window.open(url,'_blank') } function showHideEmoticon() { if (isEmoticons) { document.getElementById('emoticonsContainer').style.display = 'none'; isEmoticons = false } else { document.getElementById('emoticonsContainer').style.display = 'flex'; isEmoticons = true } } function appendMessage(emoticon) { let val = chatInput.value.trim() chatInput.value = val + ' ' + emoticon } function reloadChat() { let htmlData = `
  • ${welcomeMessage}

  • ` document.querySelector('.chatbox').innerHTML = null loadTriggerKey() } function loadTriggerKey() { console.log('flex') fetch(host + '/conversationWebChatUserHistory', { method: "GET", headers: { "Content-Type": "application/json", "Authorization": `${API_KEY}` } }).then(res => res.json()).then(data => { console.log('data', data) if (data.user) { document.getElementById('textBoxData').style.display = "flex"; document.getElementById('chatbox-userform').style.display = 'none' } else { document.getElementById('textBoxData').style.display = "none"; document.getElementById('chatbox-userform').style.display = '' } let chat = data.message for (let i = 0; i < chat.length; i++){ if (chat[i].messageFrom == 'whatsapp') { chatbox.appendChild(createChatLi(chat[i].message, "outgoing")); } else { chatbox.appendChild(createChatLi(chat[i].message, "incoming")); } } chatbox.scrollTo(0, chatbox.scrollHeight); }).catch(() => { }).finally(() => chatbox.scrollTo(0, chatbox.scrollHeight)); } async function submitForm() { let name = document.getElementById('botuser-name').value || '' let email = document.getElementById('botuser-email').value || '' let mobile = document.getElementById('botuser-mobile').value || '' console.log('asa', name, email, mobile) if (!name) { document.getElementById("name-error").textContent = "Name is required."; return } if (!email) { document.getElementById("email-error").textContent = "Email is required."; return } if (!mobile) { document.getElementById("mobile-error").textContent = "Mobile Number is required."; return } let userInfo ={name,email,mobile} fetch(host + '/conversationWebChatUserformAdd', { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `${API_KEY}` }, body: JSON.stringify({ userDetails: JSON.stringify(userInfo), }) }).then(res => res.json()).then(data => { console.log('data', data) if (data.status === 'success') { // chatbox.appendChild(createChatLi('welcome', "incoming")); document.getElementById('textBoxData').style.display = "flex"; document.getElementById('chatbox-userform').style.display = 'none' } chatbox.scrollTo(0, chatbox.scrollHeight); }).catch(() => { }).finally(() => chatbox.scrollTo(0, chatbox.scrollHeight)); } async function conversationalBot(message) { try { chatbox.appendChild(createChatLi(message, "outgoing")); chatbox.scrollTo(0, chatbox.scrollHeight); console.log('message', message) let incomingChatLi setTimeout(() => { // Display "Thinking..." message while waiting for the response incomingChatLi = createChatLi("Thinking...🤔", "incoming"); chatbox.appendChild(incomingChatLi); chatbox.scrollTo(0, chatbox.scrollHeight); console.log('think') }, 600); fetch(host + '/webConversationBot', { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `${API_KEY}`, utm_params }, body: JSON.stringify({ message: message, }) }).then(res => res.json()).then(data => { const messageElement = incomingChatLi.querySelector("p"); messageElement.innerHTML = data.message; // chatbox.appendChild(createChatLi(data.message, "incoming")); // chatbox.scrollTo(0, chatbox.scrollHeight); }).catch(() => { }).finally(() => chatbox.scrollTo(0, chatbox.scrollHeight)); } catch (err) { console.log(err) } } function removeElementsByClass(className) { const elements = document.getElementsByClassName(className); while (elements.length > 0) { elements[0].parentNode.removeChild(elements[0]); } } function connectAgent() { aiCount = 0 chatType = 'agent' createSocket() } function createSocket() { socket = io(`${host}/webuser`, { auth: { token: API_KEY, }, }); aiCount = 0; chatType = 'agent'; socket.on('messageFromAgent', (message) => { let messageData = JSON.parse(message) chatbox.appendChild(createChatLi(messageData.message, "incoming")); chatbox.scrollTo(0, chatbox.scrollHeight); }) } function loadEmoticons() { let codeList = [128512, 128513, 128514, 128515, 128516, 128517, 128518, 128519, 128520, 128521, 128522, 128523, 128524, 128525, 128526, 128527, 128528, 128529, 128530, 128531, 128532, 128533, 128534, 128535, 128536, 128537, 128538, 128539, 128540, 128541, 128542, 128543, 128544, 128545, 128546, 128547, 128548, 128549, 128550, 128551, 128552, 128553, 128554, 128555, 128556, 128557, 128558, 128559, 128560, 128561, 128562, 128563, 128564, 128565, 128566, 128567, 128577, 128578, 128579, 128580, 129296, 129297, 129298, 129299, 129300, 129301, 129303, 129312, 129314, 129315, 129316, 129317, 129319, 129320, 129321, 129322, 129323, 129325, 129326, 129327, 129392, 129393, 129395, 129396, 129397, 129398, 129402, 129488, 128568, 128569, 128570, 128571, 128572, 128573, 128574, 128575, 128576, 128584, 128585, 128586, 128127, 128128, 129324, 9995, 128075, 128400, 128406, 129306, 9757, 128070, 128071, 128072, 128073, 128405, 9994, 128074, 128077, 128078, 129307, 129308, 9996, 128076, 129295, 129304, 129305, 129310, 129311, 9997, 128079, 128080, 128133, 129309, 129309, 129330, 129331, 128110, 128111, 128112, 128114, 128115, 128119, 128120, 128372, 128373, 128129, 128130, 128131, 129332, 129333, 128106, 128107, 128108, 128109, 128143, 128145, 129328, 129329, 128100, 128101, 128102, 128103, 128104, 128105, 128113, 128116, 128117, 128118, 128378, 129485, 129486, 129489, 129490, 129491, 129492, 129493, 129494, 129495, 129496, 129456, 129457, 129458, 129459, 128134, 128135, 128581, 128582, 128583, 128587, 128588, 128589, 128590, 128591, 129318, 129329, 129335, 129487, 128584, 128585, 128586, 128172, 128173, 128488, 128489, 128490, 128491, 128492, 128493, 128494, 128495, 128496, 128497, 128498, 127877, 128121, 128122, 128123, 128124, 128125, 128126, 128127, 128128, 129302, 129313, 129334, 129464, 129465, 129497, 129498, 129499, 129500, 129501, 129502, 129503, 128064, 128065, 128066, 128067, 128068, 128069, 128099, 128170, 129460, 129461, 129462, 129463, 129467, 129468, 129469, 129470, 129471, 129504, 129505, 128140, 128146, 128147, 128148, 128149, 128150, 128151, 128152, 128153, 128154, 128155, 128156, 128157, 128158, 128159, 128420, 129293, 129294, 128132, 128133, 128136, 128137, 128138, 128139, 128141, 128142, 128164, 128169, 128171, 128186, 128187, 128188, 128189, 128190, 128191, 128192, 128193, 128194, 128195, 128196, 128197, 128198, 128199, 128200, 128201, 128202, 128203, 128204, 128205, 128206, 128207, 128208, 128209, 128210, 128211, 128212, 128213, 128214, 128215, 128216, 128217, 128218, 128219, 128220, 128221, 128222, 128223, 128224, 128225, 128226, 128227, 128228, 128229, 128240, 128267, 128268, 128391, 128392, 128393, 128394, 128395, 128396, 128397, 128241, 128242, 128243, 128244, 128245, 128246, 128379, 128380, 128381, 128382, 128383, 128384, 128385, 128228, 128229, 128230, 128231, 128232, 128233, 128234, 128235, 128236, 128237, 128238, 128239, 128240, 128386, 128387, 128388, 128389, 128390, 128336, 128337, 128338, 128339, 128340, 128341, 128342, 128343, 128344, 128345, 128346, 128347, 128348, 128349, 128350, 128351, 128352, 128353, 128354, 128355, 128356, 128357, 128358, 128359, 128421, 128424, 128433, 128434, 128444, 128450, 128451, 128452, 128465, 128466, 128467, 128476, 128477, 128478, 128481, 128483, 128499, 9970, 9971, 9978, 9981, 127755, 128506, 128507, 128508, 128509, 128510, 128511, 9962, 127968, 127969, 127970, 127971, 127972, 127973, 127974, 127975, 127976, 127977, 127978, 127979, 127980, 127981, 127982, 127983, 127984, 128331, 128332, 128333, 128725, 127956, 127957, 127958, 127959, 127960, 127961, 127962, 127963, 127964, 127965, 127966, 127967, 128506, 128640, 128641, 128642, 128643, 128644, 128645, 128646, 128647, 128648, 128649, 128650, 128651, 128652, 128653, 128654, 128655, 128656, 128657, 128658, 128659, 128660, 128661, 128662, 128663, 128664, 128665, 128666, 128667, 128668, 128669, 128670, 128671, 128672, 128673, 128674, 128675, 128676, 9940, 128677, 128678, 128679, 128680, 128681, 128682, 128683, 128684, 128685, 128686, 128687, 128688, 128689, 128690, 128691, 128692, 128693, 128694, 128695, 128696, 128697, 128698, 128699, 128700, 128701, 128702, 128703, 128704, 128705, 128706, 128707, 128708, 128709, 128710, 128711, 128712, 128713, 128714, 128715, 128716, 128717, 128718, 128719, 128720, 128721, 128722, 128723, 128724, 128726, 128727, 128728, 128729, 128730, 128731, 128732, 128733, 128734, 128735, 128736, 128737, 128738, 128739, 128740, 128741, 128742, 128743, 128744, 128745, 128746, 128747, 128748, 128749, 128750, 128751, 128752, 128753, 128754, 128755, 128756, 128757, 128758, 128759, 128760, 128761, 128762, 128763, 128764, 128765, 128766, 128767, 128000, 128001, 128002, 128003, 128004, 128005, 128006, 128007, 128008, 128009, 128010, 128011, 128012, 128013, 128014, 128015, 128016, 128017, 128018, 128019, 128020, 128021, 128022, 128023, 128024, 128025, 128026, 128027, 128028, 128029, 128030, 128031, 128032, 128033, 128034, 128035, 128036, 128037, 128038, 128039, 128040, 128041, 128042, 128043, 128044, 128045, 128046, 128047, 128048, 128049, 128050, 128051, 128052, 128053, 128054, 128055, 128056, 128057, 128058, 128059, 128060, 128061, 128062, 128063, 128375, 128376, 129408, 129409, 129410, 129411, 129412, 129413, 129414, 129415, 129416, 129417, 129418, 129419, 129420, 129421, 129422, 129423, 129424, 129425, 129426, 129427, 129428, 129429, 129430, 129431, 129432, 129433, 129434, 129435, 129436, 129437, 129438, 129439, 129440, 129441, 129442, 129443, 129444, 129445, 129446, 129447, 129448, 129449, 129450, 129451, 129452, 129453, 129454, 129455, 9749, 127861, 127862, 127863, 127864, 127865, 127866, 127867, 127868, 127870, 127994, 129346, 129347, 129371, 129380, 129475, 129481, 129482, 127789, 127790, 127791, 127828, 127829, 127830, 127831, 127832, 127833, 127834, 127835, 127836, 127837, 127838, 127839, 127840, 127841, 127842, 127843, 127844, 127845, 127846, 127847, 127848, 127849, 127850, 127851, 127852, 127853, 127854, 127855, 127856, 127857, 127858, 127859, 127871, 129360, 129363, 129366, 129367, 129368, 129369, 129370, 129372, 129374, 129375, 129376, 129377, 129379, 129381, 129383, 129384, 129385, 129386, 129387, 129390, 129391, 129472, 129473, 129478, 129479, 129480, 127798, 127805, 127806, 127813, 127814, 129361, 129362, 129364, 129365, 129382, 129388, 129476, 129477, 127860, 127869, 128298, 129348, 129378, 129474] let htmlData = '' for (let i = 0; i < codeList.length; i++) { htmlData += `

    &#${codeList[i]};

    ` } document.getElementById('emoticonsContainer').innerHTML = htmlData }