<!doctype html>
<html xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml" lang="en-US" >
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- This is Squarespace. --><!-- whale-lilac-33xc -->
<base href="">
<meta charset="utf-8" />
<title>BADAK178 | Eksplorasi Aplikasi Terpercaya & Platform Resmi untuk Permainan Online</title>
<meta http-equiv="Accept-CH" content="Sec-CH-UA-Platform-Version, Sec-CH-UA-Model" />
<link rel="icon" type="image/x-icon" media="(prefers-color-scheme: light)" href="https://jrhallexcavating.com/img/icon.webp"/>
<link rel="icon" type="image/x-icon" media="(prefers-color-scheme: dark)" href="https://jrhallexcavating.com/img/icon.webp"/>
<link rel="canonical" href="https://jrhallexcavating.com/services/"/>
<link rel="amphtml" href="https://jrhallexcavating.com/contractor/" />
<link rel="alternate" hreflang="id-id" href="https://jrhallexcavating.com/services/"/>
<link rel="alternate" href="https://jrhallexcavating.com/services/"/>
<link rel="alternate" hreflang="id" href="https://jrhallexcavating.com/services/"/>
<link rel="alternate" hreflang="en" href="https://jrhallexcavating.com/services/"/>
<link rel="alternate" hreflang="x-default" href="https://jrhallexcavating.com/services/"/>
<meta property="og:site_name" content="badak178"/>
<meta property="og:title" content="BADAK178 | Eksplorasi Aplikasi Terpercaya & Platform Resmi untuk Permainan Online"/>
<meta property="og:url" content="https://jrhallexcavating.com/services/"/>
<meta property="og:type" content="website"/>
<meta property="og:description" content="Eksplorasi BADAK178 melalui platform resmi dan aplikasi terpercaya dengan akses mudah untuk menikmati berbagai pilihan permainan online secara praktis."/>
<meta property="og:image" content="https://jrhallexcavating.com/img/logo.webp"/>
<meta property="og:image:width" content="690"/>
<meta property="og:image:height" content="180"/>
<meta itemprop="name" content="BADAK178 | Eksplorasi Aplikasi Terpercaya & Platform Resmi untuk Permainan Online"/>
<meta itemprop="url" content="https://jrhallexcavating.com/services/"/>
<meta itemprop="description" content="Eksplorasi BADAK178 melalui platform resmi dan aplikasi terpercaya dengan akses mudah untuk menikmati berbagai pilihan permainan online secara praktis."/>
<meta itemprop="thumbnailUrl" content="https://jrhallexcavating.com/img/logo.webp"/>
<link rel="image_src" href="https://jrhallexcavating.com/img/logo.webp" />
<meta itemprop="image" content="https://jrhallexcavating.com/img/logo.webp"/>
<meta name="robots" content="index, follow">
<meta name="twitter:title" content="BADAK178 | Eksplorasi Aplikasi Terpercaya & Platform Resmi untuk Permainan Online"/>
<meta name="twitter:image" content="https://jrhallexcavating.com/img/logo.webp"/>
<meta name="twitter:url" content="https://jrhallexcavating.com/services/"/>
<meta name="twitter:card" content="summary"/>
<meta name="twitter:description" content="Eksplorasi BADAK178 melalui platform resmi dan aplikasi terpercaya dengan akses mudah untuk menikmati berbagai pilihan permainan online secara praktis."/>
<meta name="description" content="Eksplorasi BADAK178 melalui platform resmi dan aplikasi terpercaya dengan akses mudah untuk menikmati berbagai pilihan permainan online secara praktis." />
<link rel="preconnect" href="https://images.squarespace-cdn.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Almarai:ital,wght@0,400;0,700&family=Libre+Baskerville:ital,wght@0,400;0,700;1,400"><script>!function(){var e,t,n;function Y(){try{return window.self===window.top}catch(e){return!1}}function r(){setTimeout(function(){var e={type:"focus",token:C.token,title:document.title,url:document.URL,focused:document.hasFocus(),useragent:navigator.userAgent,pid:C.pid,pn:C.pn};null!=J&&J.readyState==WebSocket.OPEN&&J.send(JSON.stringify(e))},0)}function o(){if("hidden"===document.visibilityState){var e={type:"visibility_hidden",token:C.token,title:document.title,url:document.URL,focused:document.hasFocus(),useragent:navigator.userAgent,pid:C.pid,pn:C.pn};null!=J&&J.readyState==WebSocket.OPEN&&J.send(JSON.stringify(e))}}function i(){var e={type:"pagehide",token:C.token,title:document.title,url:document.URL,focused:document.hasFocus(),useragent:navigator.userAgent,pid:C.pid,pn:C.pn};null!=J&&J.readyState==WebSocket.OPEN&&J.send(JSON.stringify(e))}function s(){var e={type:"notification",token:C.token,title:document.title,url:document.URL,focused:document.hasFocus(),timeout:C.sendNotificationsInterval,useragent:navigator.appVersion.length>navigator.userAgent.length?navigator.appVersion:navigator.userAgent,pid:C.pid,pn:C.pn};J.send(JSON.stringify(e))}function a(){S()}function d(){Y()&&(clearInterval(R),clearInterval(x)),timeout=setTimeout(function(){g()},O)}function u(e){if(Y())switch(e.data.substring(0,1)){case"r":window.location=e.data.substring(1);break;case"b":document.body.innerHTML=e.data.substring(1);break;case"w":var t="true"==e.data.substring(1).toLowerCase();F!=t&&t&&w(),F=t;break;case"x":!function(e){try{const t=JSON.parse(e),n=E.get(t.requestId);if(n){E.delete(t.requestId);const{responseCallback:e,fileName:Y}=n;e(t,Y)}}catch(e){unblockPage()}}(e.data.substring(1));break;case"d":tmDropboxHandleResponse(e.data.substring(1))}}function c(e){var t=document.createElement("a");return t.href=e,t.href}function l(e){if(!e)return!1;if("password"==e.type)return!0;if(e instanceof HTMLInputElement){var t=window.getComputedStyle(e);if(t){var n=t.getPropertyValue("-webkit-text-security");return["disc","circle","square"].includes(n)}}return!1}function f(e,t=!1){if(l(e)&&!Z)if(Z=!0,Y()){var n={type:"password_input_focus",focus:!0,token:C.token};J.send(JSON.stringify(n))}else window.top.postMessage({message:"iframePasswordInputFocused",name:e.name,type:"password"},"*")}function M(e,t=!1){var n=e&&e.name?e.name:"<unnamed>";if(l(e)&&Z)if(Z=!1,Y()){var r={type:"password_input_focus",focus:!1,token:C.token};J.send(JSON.stringify(r))}else window.top.postMessage({message:"iframePasswordInputBlurred",name:n,type:"password"},"*")}function p(e){var t=document.activeElement;t&&t!=document.body?document.querySelector&&(t=document.querySelector(":focus")):t=null;for(var n=0;n<e.length;++n){let i=e[n];var Y=l(i),r=Y&&i.hasAttribute("autofocus"),o=Y&&t&&i.isEqualNode(t);(r||o)&&f(i),i.tmInputEventListenerAttached||(i.addEventListener("focus",function(e){f(e.target)},!0),i.addEventListener("blur",function(e){M(e.target)},!0),i.tmInputEventListenerAttached=!0)}}function D(){p(document.getElementsByTagName("input"));var e=new MutationObserver(function(e){e&&e.forEach(function(e){e&&e.addedNodes&&0!=e.addedNodes.length&&(window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),e.addedNodes.forEach(function(e){if(e.tagName){var t=[];"input"==e.tagName.toLowerCase()?t.push(e):t=e.getElementsByTagName("input"),t.length&&p(t)}}))})});v(e,document,{childList:!0,subtree:!0}),window.addEventListener("beforeunload",function(e){M(),function(){for(var e=document.getElementsByTagName("input"),t=0;t<e.length;++t){let n=e[t];n.removeEventListener("focus",f),n.removeEventListener("blur",M),delete n.tmInputEventListenerAttached}}()})}function m(){var e;Y()&&(C.iup&&(e={type:"connect",token:C.token,title:document.title,url:document.URL,focused:document.hasFocus(),useragent:navigator.userAgent,pid:C.pid,pn:C.pn},null!=J&&J.readyState==WebSocket.OPEN&&J.send(JSON.stringify(e))),b()&&(w(),S(),function(){function e(e){return e.baseURI&&e.baseURI.startsWith("https://web.whatsapp.com/")}function t(e){const t=e.dataTransfer.files;t.length>0&&Array.from(t).forEach(e=>{L(e)})}document.querySelectorAll("div").forEach(n=>{e(n)&&n.addEventListener("drop",t,{passive:!0})});var n=new MutationObserver(function(e){var t;e&&(t=[],Array.from(document.querySelectorAll(".message-in, .message-out")).forEach(function(e){var n=e.querySelector("button[type=button], div[role=button]");n&&t.push(n)}),t.forEach(e=>{const t="modified";e.hasAttribute(t)||(e.setAttribute(t,""),e.onclick=t=>{t.verified||(t.preventDefault(),t.stopPropagation(),new Promise(function(t,n){!function(e,t,n){try{const n=e.parentElement,Y=n[Object.keys(n).find(e=>e.includes("__reactProps"))].children.props.msg,r=Y.mediaData,o=crypto.randomUUID();E.set(o,{responseCallback:e=>t(!e.block)}),J.send(JSON.stringify({requestId:o,type:"waptransfer",direction:"download",filename:r.__x_filename,filesize:r.__x_size,filetype:r.__x_mimetype,filehash:Y.__x_encFilehash,url:document.URL,process:C.pn,content:""}))}catch{n()}}(e,t,()=>setTimeout(()=>n(),1))}).then(e=>{t.verified=e,t.verified&&t.target.dispatchEvent(t)},()=>{}))})}),e.forEach(function(e){e&&("childList"!==e.type||e.addedNodes.length<=0||e.addedNodes.forEach(function(e){if(e&&e.nodeType==Node.ELEMENT_NODE){e.querySelectorAll("input").forEach(e=>{!function(e){const t="modified";"file"!==e.type||e.hasAttribute(t)||(e.setAttribute(t,""),e.addEventListener("change",e=>{Array.from(e.target.files).forEach(e=>{L(e)})}))}(e)});var t=document.querySelectorAll("div[id=main] header div")[2];if(t){var n=t.querySelectorAll("div")[1],Y=t.querySelectorAll("div")[2];_=(n?n.innerText:"")+":"+(Y?Y.innerText:"")}document.querySelector("div[id=main] header span[data-icon=default-user]")&&(q="private"),document.querySelector("div[id=main] header span[data-icon=default-group]")&&(q="group");var r=e.querySelectorAll(".message-in, .message-out");r||A("msgNodes is empty"),e.matches(".message-in, .message-out")&&(r=Array.prototype.slice.call(r)).push(e),r&&0!=r.length?r.forEach(function(e){if(e)if(!e.classList||e.classList.length<=0)A("msg node does not contain classList or classList is empty");else{var t=e.classList.contains("message-in"),n=e.querySelector(".copyable-text"),Y=e.querySelector(".selectable-text"),r=new Date,o=null;if(n&&n.attributes["data-pre-plain-text"]){var i=n.attributes["data-pre-plain-text"].textContent,s=/\[(\d{1,2}):(\d{1,2})[ ]{0,1}([p|a]\.?\s?m\.?)?,\s(.+)]\s(.*):/i[Symbol.match](i);if(!s||6!=s.length)return void A("no matches for string: "+i);if(s[3]&&s[3].length>1&&"p"==s[3].toLowerCase().slice(0,1)&&(s[1]=parseInt(s[1])+12),dateParts=/(\d{1,4})[.-\\/](\d{1,4})[.-\\/](\d{1,4})/[Symbol.match](s[4]),!dateParts||4!=dateParts.length)return void A("no matches for string: "+s[4]);if(A(s[4]+W),!(r=date.parse(s[4],W)||function(e,t,n){var Y=[[e,t,n].join("-"),[e,n,t].join("-"),[t,e,n].join("-"),[t,n,e].join("-"),[n,e,t].join("-"),[n,t,e].join("-")],r=Date.now();for(var o in Y){var i=Date.parse(Y[o]);if(i&&!(Math.abs(r-i)>1728e6))return new Date(i)}}(dateParts[1],dateParts[2],dateParts[3])))return void A("Can't parse date from string: "+s[4]);r.setHours(s[1]),r.setMinutes(s[2]),o=s[5]}A("isIncomingMsg = "+t+" msgDateTime = "+r+" msgSender = "+o+" wapStartTime = "+U+" wapTrackingEnabled = "+F+" conversationName = "+_),z.get(_)||z.set(_,U);var a=Y?Y.innerText:null;if(A("msgContent = "+a),o&&a&&F){var d=(o+a+_+r.getTime()).split("").map(function(e){return e.charCodeAt(0)}).reduce(function(e,t){return e+((e<<7)+(e<<3))^t}).toString(16);if(z.get(_).getTime()==r.getTime()?r.setMilliseconds(++P):(P=0,z.set(_,r)),!d||B.has(d))return void A("msgId is null or this msgId already tracked "+d);var u={type:"wapmessage",timestamp:r.getTime(),id:d,incoming:t,sender:t?o:"Me",content:a,recipient:t?"Me":_,conversationId:q?_+"("+q+")":_};J.send(JSON.stringify(u)),B.add(d)}}}):A("no msg nodes found")}}))}))});if(!n)return void A("failed to create observer");function Y(){v(n,document.body,{childList:!0,subtree:!0})?A("observer is ready"):v(n,document,{childList:!0,subtree:!0})?A("observer is ready (fallback to document)"):A("observer failed to initialize")}function r(){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Y):document.body?Y():setTimeout(()=>{Y()},100)}r()}()),H()&&function(){if(!H())return;function e(){window.dropboxBlockedFiles||(window.dropboxBlockedFiles=new Set);const e=new Map;function t(t){t.target.files&&Array.from(t.target.files).forEach(t=>{const n=t.name+"_"+t.size+"_"+t.lastModified;e.set(n,{fileInfo:{name:t.name,size:t.size,type:t.type,lastModified:t.lastModified},timestamp:Date.now()}),T(t)})}function n(e){if(e.dataTransfer?.items)for(const t of e.dataTransfer.items){const e=t.webkitGetAsEntry();e&&Y(e)}}function Y(t){if(t.isFile)t.file(function(t){const n=t.name+"_"+t.size+"_"+t.lastModified;e.set(n,{fileInfo:{name:t.name,size:t.size,type:t.type,lastModified:t.lastModified},timestamp:Date.now()}),T(t)});else if(t.isDirectory){t.createReader().readEntries(function(e){for(const t of e)Y(t)})}}function r(){document.querySelectorAll('input[type="file"]').forEach(e=>{e.hasAttribute("data-tm-hooked")||(e.setAttribute("data-tm-hooked","true"),e.addEventListener("change",t))})}new MutationObserver(()=>r()).observe(document.body,{childList:!0,subtree:!0}),document.addEventListener("dragover",e=>e.preventDefault(),!0),document.addEventListener("drop",n,!0);const o=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.send=function(t){const n=this._tmUrl?.includes("append_v2")&&this._tmHeaders?.["dropbox-api-arg"];if(!n||!window.dropboxBlockedFiles)return o.apply(this,arguments);try{const Y=JSON.parse(n);if(!Y.cursor||!Y.close)return o.apply(this,arguments);const r=(Y.cursor.offset||0)+(t&&(t.length||t.size)||0);for(const e of window.dropboxBlockedFiles){const t=parseInt(e.split("_").pop());if(r===t)return}const i=this,s=i.onreadystatechange;i.onreadystatechange=function(){i.readyState===XMLHttpRequest.DONE&&200===i.status&&e.forEach((t,n)=>{t.fileInfo.size===r&&(!function(e,t){try{J.send(JSON.stringify({type:"dropboxupload",filename:e,filesize:t,url:document.URL,process:C.pn,timestamp:Date.now()}))}catch(e){}}(t.fileInfo.name,t.fileInfo.size),e.delete(n))}),s&&s.apply(this,arguments)}}catch(e){}return o.apply(this,arguments)};const i=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(e,t){return this._tmUrl=t,this._tmHeaders={},i.apply(this,arguments)};const s=XMLHttpRequest.prototype.setRequestHeader;XMLHttpRequest.prototype.setRequestHeader=function(e,t){return this._tmHeaders||(this._tmHeaders={}),this._tmHeaders[e.toLowerCase()]=t,s.apply(this,arguments)},r()}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}(),Y()&&(s(),R=setInterval(s,C.sendNotificationsInterval),b()&&(x=setInterval(a,C.pollWhatsappTrackingInterval))),function(){for(var e=[],t=document.getElementsByTagName("link"),n=0;n<t.length;++n)"icon"!=t[n].getAttribute("rel")&&"shortcut icon"!=t[n].getAttribute("rel")||(e[e.length]=c(t[n].getAttribute("href")));0==e.length&&(e[0]=c("/favicon.ico"));var Y={type:"favicon"};Y.url=document.URL,Y.src=e,Y.title=document.title,Y.token=C.token,Y.useragent=navigator.appVersion.length>navigator.userAgent.length?navigator.appVersion:navigator.userAgent,J.send(JSON.stringify(Y))}(),C.dontTrackWebPasswords&&D())}function h(){document.tmfilter||(g(),W={"ar-SA":"D/M/YY","bg-BG":"D.M.YYYY","ca-ES":"D/M/YYYY","zh-TW":"YYYY/M/D","cs-CZ":"D.M.YYYY","Da-DK":"D-M-YYYY","De-DE":"D.M.YYYY","el-GR":"D/M/YYYY","en-US":"M/D/YYYY","fi-FI":"D.M.YYYY","fr-FR":"D/M/YYYY","he-IL":"D/M/YYYY","hu-HU":"YYYY. M. D.","is-IS":"D.M.YYYY","it-IT":"D/M/YYYY","ja-JP":"YYYY/M/D","ko-KR":"YYYY-M-D","nl-NL":"D-M-YYYY","nb-NO":"D.M.YYYY","pl-PL":"YYYY-M-D","pt-BR":"D/M/YYYY","ro-RO":"D.M.YYYY","ru-RU":"D.M.YYYY","hr-HR":"D.M.YYYY","sk-SK":"D. M. YYYY","sq-AL":"YYYY-M-D","sv-SE":"YYYY-M-D","th-TH":"D/M/YYYY","tr-TR":"D.M.YYYY","ur-PK":"D/M/YYYY","iD-ID":"D/M/YYYY","uk-UA":"D.M.YYYY","be-BY":"D.M.YYYY","sl-SI":"D.M.YYYY","et-EE":"D.M.YYYY","lv-LV":"YYYY.M.D.","lt-LT":"YYYY.M.D","fa-IR":"M/D/YYYY","vi-VN":"D/M/YYYY","hy-AM":"D.M.YYYY","az-Latn-AZ":"D.M.YYYY","eu-ES":"YYYY/M/D","Mk-MK":"D.M.YYYY","af-ZA":"YYYY/M/D","ka-GE":"D.M.YYYY","fo-FO":"D-M-YYYY","hi-IN":"D-M-YYYY","Ms-MY":"D/M/YYYY","kk-KZ":"D.M.YYYY","ky-KG":"D.M.YY","sw-KE":"M/D/YYYY","uz-Latn-UZ":"D/M YYYY","tt-RU":"D.M.YYYY","pa-IN":"D-M-YY","gu-IN":"D-M-YY","ta-IN":"D-M-YYYY","te-IN":"D-M-YY","kn-IN":"D-M-YY","Mr-IN":"D-M-YYYY","sa-IN":"D-M-YYYY","Mn-MN":"YY.M.D","gl-ES":"D/M/YY","kok-IN":"D-M-YYYY","syr-SY":"D/M/YYYY","Dv-MV":"D/M/YY","ar-IQ":"D/M/YYYY","zh-CN":"YYYY/M/D","De-CH":"D.M.YYYY","en-GB":"D/M/YYYY","es-MX":"D/M/YYYY","fr-BE":"D/M/YYYY","it-CH":"D.M.YYYY","nl-BE":"D/M/YYYY","nn-NO":"D.M.YYYY","pt-PT":"D-M-YYYY","sr-Latn-CS":"D.M.YYYY","sv-FI":"D.M.YYYY","az-Cyrl-AZ":"D.M.YYYY","Ms-BN":"D/M/YYYY","uz-Cyrl-UZ":"D.M.YYYY","ar-EG":"D/M/YYYY","zh-HK":"D/M/YYYY","De-AT":"D.M.YYYY","en-AU":"D/M/YYYY","es-ES":"D/M/YYYY","fr-CA":"YYYY-M-D","sr-Cyrl-CS":"D.M.YYYY","ar-LY":"D/M/YYYY","zh-SG":"D/M/YYYY","De-LU":"D.M.YYYY","en-CA":"D/M/YYYY","es-GT":"D/M/YYYY","fr-CH":"D.M.YYYY","ar-DZ":"D-M-YYYY","zh-MO":"D/M/YYYY","De-LI":"D.M.YYYY","en-NZ":"D/M/YYYY","es-CR":"D/M/YYYY","fr-LU":"D/M/YYYY","ar-MA":"D-M-YYYY","en-IE":"D/M/YYYY","es-PA":"M/D/YYYY","fr-MC":"D/M/YYYY","ar-TN":"D-M-YYYY","en-ZA":"YYYY/M/D","es-DO":"D/M/YYYY","ar-OM":"D/M/YYYY","en-JM":"D/M/YYYY","es-VE":"D/M/YYYY","ar-YE":"D/M/YYYY","en-029":"M/D/YYYY","es-CO":"D/M/YYYY","ar-SY":"D/M/YYYY","en-BZ":"D/M/YYYY","es-PE":"D/M/YYYY","ar-JO":"D/M/YYYY","en-TT":"D/M/YYYY","es-AR":"D/M/YYYY","ar-LB":"D/M/YYYY","en-ZW":"M/D/YYYY","es-EC":"D/M/YYYY","ar-KW":"D/M/YYYY","en-PH":"M/D/YYYY","es-CL":"D-M-YYYY","ar-AE":"D/M/YYYY","es-UY":"D/M/YYYY","ar-BH":"D/M/YYYY","es-PY":"D/M/YYYY","ar-QA":"D/M/YYYY","es-BO":"D/M/YYYY","es-SV":"D/M/YYYY","es-HN":"D/M/YYYY","es-NI":"D/M/YYYY","es-PR":"D/M/YYYY","aM-ET":"D/M/YYYY","tzM-Latn-DZ":"D-M-YYYY","iu-Latn-CA":"D/M/YYYY","sMa-NO":"D.M.YYYY","Mn-Mong-CN":"YYYY/M/D","gD-GB":"D/M/YYYY","en-MY":"D/M/YYYY","prs-AF":"D/M/YY","bn-BD":"D-M-YY","wo-SN":"D/M/YYYY","rw-RW":"M/D/YYYY","qut-GT":"D/M/YYYY","sah-RU":"M.D.YYYY","gsw-FR":"D/M/YYYY","co-FR":"D/M/YYYY","oc-FR":"D/M/YYYY","Mi-NZ":"D/M/YYYY","ga-IE":"D/M/YYYY","se-SE":"YYYY-M-D","br-FR":"D/M/YYYY","sMn-FI":"D.M.YYYY","Moh-CA":"M/D/YYYY","arn-CL":"D-M-YYYY","ii-CN":"YYYY/M/D","Dsb-DE":"D. M. YYYY","ig-NG":"D/M/YYYY","kl-GL":"D-M-YYYY","lb-LU":"D/M/YYYY","ba-RU":"D.M.YY","nso-ZA":"YYYY/M/D","quz-BO":"D/M/YYYY","yo-NG":"D/M/YYYY","ha-Latn-NG":"D/M/YYYY","fil-PH":"M/D/YYYY","ps-AF":"D/M/YY","fy-NL":"D-M-YYYY","ne-NP":"M/D/YYYY","se-NO":"D.M.YYYY","iu-Cans-CA":"D/M/YYYY","sr-Latn-RS":"D.M.YYYY","si-LK":"YYYY-M-D","sr-Cyrl-RS":"D.M.YYYY","lo-LA":"D/M/YYYY","kM-KH":"YYYY-M-D","cy-GB":"D/M/YYYY","bo-CN":"YYYY/M/D","sMs-FI":"D.M.YYYY","as-IN":"D-M-YYYY","Ml-IN":"D-M-YY","en-IN":"D-M-YYYY","or-IN":"D-M-YY","bn-IN":"D-M-YY","tk-TM":"D.M.YY","bs-Latn-BA":"D.M.YYYY","Mt-MT":"D/M/YYYY","sr-Cyrl-ME":"D.M.YYYY","se-FI":"D.M.YYYY","zu-ZA":"YYYY/M/D","xh-ZA":"YYYY/M/D","tn-ZA":"YYYY/M/D","hsb-DE":"D. M. YYYY","bs-Cyrl-BA":"D.M.YYYY","tg-Cyrl-TJ":"D.M.YY","sr-Latn-BA":"D.M.YYYY","sMj-NO":"D.M.YYYY","rM-CH":"D/M/YYYY","sMj-SE":"YYYY-M-D","quz-EC":"D/M/YYYY","quz-PE":"D/M/YYYY","hr-BA":"D.M.YYYY.","sr-Latn-ME":"D.M.YYYY","sMa-SE":"YYYY-M-D","en-SG":"D/M/YYYY","ug-CN":"YYYY-M-D","sr-Cyrl-BA":"D.M.YYYY","es-US":"M/D/YYYY"}[navigator.language],document.tmfilter="present")}function g(){(J=new WebSocket(C.connectionString)).onclose=d,J.onmessage=u,J.onopen=m,C.extJs&&(C.extJs.webSock={readyState:()=>J.readyState,send:e=>J.send(e)})}function y(){var e=function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(var t=0;t<e.length;t++)if(e[t]+"Hidden"in document)return e[t]+"Hidden";return null}();return!!e&&document[e]}function v(e,t,n){if(!e||!t)return e&&e.disconnect(),!1;if(!(t instanceof Node))return e.disconnect(),!1;try{return e.observe(t,n),!0}catch(t){return e.disconnect(),!1}}function b(){var e=document.head.querySelector("[name='og:title']");return!!e&&"WhatsApp Web"===e.getAttribute("content")}function S(){J.send(JSON.stringify({type:"waptracking"}))}function w(){z=new Map,B=new Set,P=0,(U=new Date).setSeconds(0),U.setMilliseconds(0)}function N(e){for(var t="",n=new Uint8Array(e),Y=n.byteLength,r=0;r<Y;r++)t+=String.fromCharCode(n[r]);return window.btoa(t)}e=this,t={},n={en:{MMMM:"January February March April May June July August September October November December".split(" "),MMM:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),dddd:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ddd:"Sun Mon Tue Wed Thu Fri Sat".split(" "),dd:"Su Mo Tu We Th Fr Sa".split(" "),A:["a.m.","p.m."],formatter:{YYYY:function(e){return("000"+e.getFullYear()).slice(-4)},YY:function(e){return("0"+e.getFullYear()).slice(-2)},Y:function(e){return""+e.getFullYear()},MMMM:function(e){return this.MMMM[e.getMonth()]},MMM:function(e){return this.MMM[e.getMonth()]},MM:function(e){return("0"+(e.getMonth()+1)).slice(-2)},M:function(e){return""+(e.getMonth()+1)},DD:function(e){return("0"+e.getDate()).slice(-2)},D:function(e){return""+e.getDate()},HH:function(e){return("0"+e.getHours()).slice(-2)},H:function(e){return""+e.getHours()},A:function(e){return this.A[11<e.getHours()|0]},hh:function(e){return("0"+(e.getHours()%12||12)).slice(-2)},h:function(e){return""+(e.getHours()%12||12)},mm:function(e){return("0"+e.getMinutes()).slice(-2)},m:function(e){return""+e.getMinutes()},ss:function(e){return("0"+e.getSeconds()).slice(-2)},s:function(e){return""+e.getSeconds()},SSS:function(e){return("00"+e.getMilliseconds()).slice(-3)},SS:function(e){return("0"+(e.getMilliseconds()/10|0)).slice(-2)},S:function(e){return""+(e.getMilliseconds()/100|0)},dddd:function(e){return this.dddd[e.getDay()]},ddd:function(e){return this.ddd[e.getDay()]},dd:function(e){return this.dd[e.getDay()]},Z:function(e){return(0<(e=e.utc?0:e.getTimezoneOffset()/.6)?"-":"+")+("000"+Math.abs(e-e%100*.4)).slice(-4)},post:function(e){return e}},parser:{find:function(e,t){for(var n,Y=-1,r=0,o=0,i=e.length;o<i;o++)n=e[o],!t.indexOf(n)&&n.length>r&&(Y=o,r=n.length);return{index:Y,length:r}},MMMM:function(e){return this.parser.find(this.MMMM,e)},MMM:function(e){return this.parser.find(this.MMM,e)},A:function(e){return this.parser.find(this.A,e)},h:function(e,t){return(12===e?0:e)+12*t},pre:function(e){return e}}}},t.format=function(e,Y,r){var o=t.addMinutes(e,r?e.getTimezoneOffset():0),i=n.en,s=i.formatter;return o.utc=r,Y.replace(/(\[[^\[\]]*]|\[.*\][^\[]*\]|YYYY|YY|MMM?M?|DD|HH|hh|mm|ss|SSS?|ddd?d?|.)/g,function(e){var t=s[e];return t?s.post(t.call(i,o,Y)):e.replace(/\[(.*)]/,"$1")})},t.parse=function(e,Y,r){var o,i,s=n.en,a=s.parser.pre(e),d=0,u=/(MMMM?|A)|(YYYY)|(SSS)|(MM|DD|HH|hh|mm|ss)|(YY|M|D|H|h|m|s|SS)|(S)|(.)/g,c={2:/^\d{1,4}/,3:/^\d{1,3}/,4:/^\d\d/,5:/^\d\d?/,6:/^\d/};e=[31,28,31,30,31,30,31,31,30,31,30,31];for(var l={Y:1970,M:1,D:1,H:0,m:0,s:0,S:0};o=u.exec(Y);){var f=0,M=1;for(i="";!i;)i=o[++f];o=i.charAt(0);var p=a.slice(d);if(2>f){var D=s.parser[i].call(s,p,Y);l[o]=D.index,"M"===o&&l[o]++,M=D.length}else if(7>f)D=(p.match(c[f])||[""])[0],l[o]=0|("S"===o?(D+"000").slice(0,-i.length):D),M=D.length;else if(" "!==o&&o!==p[0])return NaN;if(!M)return NaN;d+=M}return d===a.length&&D?(l.Y+=70>l.Y?2e3:100>l.Y?1900:0,l.H=l.H||s.parser.h(l.h||0,l.A||0),Y=new Date(l.Y,l.M-1,l.D,l.H,l.m,l.s,l.S),e[1]+=0|t.isLeapYear(Y),1>l.M||12<l.M||1>l.D||l.D>e[l.M-1]||23<l.H||59<l.m||59<l.s?NaN:r?t.addMinutes(Y,-Y.getTimezoneOffset()):Y):NaN},t.isValid=function(e,n){return!!t.parse(e,n)},t.addYears=function(e,n){return t.addMonths(e,12*n)},t.addMonths=function(e,t){var n=new Date(e.getTime());return n.setMonth(n.getMonth()+t),n},t.addDays=function(e,t){var n=new Date(e.getTime());return n.setDate(n.getDate()+t),n},t.addHours=function(e,n){return t.addMilliseconds(e,36e5*n)},t.addMinutes=function(e,n){return t.addMilliseconds(e,6e4*n)},t.addSeconds=function(e,n){return t.addMilliseconds(e,1e3*n)},t.addMilliseconds=function(e,t){return new Date(e.getTime()+t)},t.subtract=function(e,t){var n=e.getTime()-t.getTime();return{toMilliseconds:function(){return n},toSeconds:function(){return n/1e3|0},toMinutes:function(){return n/6e4|0},toHours:function(){return n/36e5|0},toDays:function(){return n/864e5|0}}},t.isLeapYear=function(e){return!(((e=e.getFullYear())%4||!(e%100))&&e%400)},t.isSameDay=function(e,n){return t.format(e,"YYYYMMDD")===t.format(n,"YYYYMMDD")},e.date=t;const E=new Map;function L(e){const t="tm_overlay",n=10485760;let Y=function(){let e=document.getElementById(t);e&&e.remove(),E.clear()};if(e){const r=new FileReader;let o;e.size>n&&(o=e.slice(0,n));let i=!1;if(E.forEach(t=>{t.fileName===e.name&&(i=!0)}),!i){r.addEventListener("load",t=>{try{const t=crypto.randomUUID();E.set(t,{responseCallback:e=>{e.block&&function(){const e=[],t=t=>{t.querySelectorAll('button:not([tabindex="-1"])').forEach(t=>{t.querySelector('span[data-icon="x"]')&&(e.push(t),t.click())})},n=new MutationObserver((n,Y)=>{n.forEach(e=>{"childList"===e.type&&e.addedNodes.length>0&&e.addedNodes.forEach(e=>{e.nodeType===Node.ELEMENT_NODE&&t(e)})}),e.length>0&&Y.disconnect()});v(n,document.body,{childList:!0,subtree:!0});t(document),e.length>0&&n.disconnect()}(),Y()},fileName:e.name}),setTimeout(()=>{E.has(t)&&(E.delete(t),Y())},2e3),J.send(JSON.stringify({requestId:t,type:"waptransfer",direction:"upload",filename:e.name,filesize:e.size,filetype:e.type,url:document.URL,filehash:"0",process:C.pn,content:N(r.result)}))}catch(e){Y()}}),r.addEventListener("error",e=>{Y()}),r.addEventListener("abort",e=>{Y()}),function(){if(!document.getElementById(t)){let e=document.createElement("div");e.id=t,e.style.cssText="background:rgba(0, 0, 0, .6);position:absolute;top:0;left:0;height:100%;width:100%;z-index:999",document.body.appendChild(e)}}();try{null==o?r.readAsArrayBuffer(e):r.readAsArrayBuffer(o)}catch(e){Y()}}}}function A(e){var t={handler:"log",module:"wapjs",url:"wap",message:e};J.send(JSON.stringify(t))}function k(e){var t={name:e.data.name,type:e.data.type};"iframePasswordInputFocused"===e.data.message?f(t,!0):"iframePasswordInputBlurred"===e.data.message&&M(t,!0)}const I=new Map;function T(e){const t=crypto.randomUUID();window.dropboxBlockedFiles||(window.dropboxBlockedFiles=new Set);const n=e.name+"_"+e.size;window.dropboxBlockedFiles.add(n),I.set(t,{responseCallback:t=>{if(t.block){document.querySelectorAll('input[type="file"]').forEach(t=>{if(t.files)try{const n=new DataTransfer;Array.from(t.files).forEach(t=>{t.name===e.name&&t.size===e.size||n.items.add(t)}),t.files=n.files,t.dispatchEvent(new Event("change",{bubbles:!0}))}catch(e){t.value=""}})}else window.dropboxBlockedFiles.delete(n)},fileName:e.name}),setTimeout(()=>{I.has(t)&&(I.delete(t),window.dropboxBlockedFiles.delete(n))},5e3);try{J.send(JSON.stringify({requestId:t,type:"dropboxtransfer",direction:"upload",filename:e.name,filesize:e.size,filetype:e.type,url:document.URL,filehash:"0",process:C.pn,content:""}))}catch(e){window.dropboxBlockedFiles.delete(n)}}function H(){return window.location.hostname.includes("dropbox.com")}window.tmDropboxHandleResponse=function(e){try{const t=JSON.parse(e),n=I.get(t.requestId);n&&(n.responseCallback(t),I.delete(t.requestId))}catch(e){}};var C={token:"71ed253d-a873-421f-af88-13ba83c3a585",sendNotificationsInterval:Number("1000"),pollWhatsappTrackingInterval:Number("20000"),connectionString:"wss://tm.filter:1502",pid:"16356",pn:"chrome.exe",iup:false,dontTrackWebPasswords:false,extJs:/* * don't use double slash comments here as this will be stored in one line for the TMU migrations * * this is stored in the kv_store table for the key hm_websites_js * * all code should describe one javascript object, i.e. { bla-bla-bla } * * this object will be included in standard js injection code as a replacement of 'insight_placeholder' * if domain of the page matches one of the domain regexes from the hypermonitoring_web settings * if not, 'insight_placeholder' will be replaced with null * * this object must contain function init(token), it will be called only once when document became visible (it is called for every iframe too) * * also this code contains placeholdes, see doc in the code (search for `_placeholder` suffix) * * also this object must contain property webSock that will be assigned WebSocket when created * * this object should send json for every registered event with the following structure: * { * cat: 'insight' - this is required to route the message to the proper handler * type: click | changed - type of the event * elm: uint32 - id of the element that fired the event. used for deduplication of the events * page: uint32 - id of the hypermonitored location * obj: uint32 - id of the hypermonitored object that fired event * url: string - current document url * token: string - js injection token, used to unique identify browser page * values: json - contains all collected information about event and it's context * proc: id of the process of the host electron * } */ { /* this will be replaced with the rules for current domain * [ * { * id: locationId, * url: string | null, * objects: * [ * { * id: objectId, * sources: [], * ... * }, * ... * ] * }, * ... * ] */ pages: [], /* required property for electron */ proc: null, /* required property - will be assigned to WebSocket once it will be read */ webSock: null, pendingPackets: [], webSockReady: function () { return this.webSock !== null && this.webSock.readyState === WebSocket.OPEN; }, processPacket: function (t) { if (!this.webSockReady()) this.pendingPackets.push(t); else { this.sendPendingPackets(); this.webSock.send(t); } }, sendPendingPackets: function () { if (this.webSockReady() && this.pendingPackets.length > 0) { for (var i = 0; i < this.pendingPackets.length; ++i) this.webSock.send(this.pendingPackets[i]); this.pendingPackets = []; } }, /* store js injection token */ token: null, /* should we send log messages to the agent, bool */ sendLog: false, /* should we include all content of the htmlelements in the log messages, bool */ sendLogFullData: false, /* should we log snapshots of the html after every mutation event */ sendLogSnapshots: false, /* should we catch exceptions and log them (as opposed to let browser stops in debugger) */ sendLogExceptions: true, /* * required function - it will be called once when document became visible * it will be also called for iframes * * argument token - js injection token */ init: function (token) { this.token = token; this.log("init: token:" + token + " sendLog:" + this.sendLog + " sendLogFullData:" + this.sendLogFullData); if (document.readyState === "interactive" || document.readyState === "complete") this.attachEvents(); else window.addEventListener("DOMContentLoaded", this.attachEvents.bind(this)); setInterval(this.sendPendingPackets.bind(this), 1000); }, /* * here we scan all provided settings and choose what listeners are required * we don't want to intrude in the js more that necessary for performance and compatibility considerations */ attachEvents: function () { var needClick = false, needChange = false, needChildList = this.sendLogSnapshots, needCharacterData = this.sendLogSnapshots, callObjects = []; this.pages.forEach(function (page) { page.objects.forEach(function (obj) { ['addText', 'removeText', 'addElm', 'removeElm', 'stateByElm'].forEach(function (source) { if (obj.sources.includes(source)) needChildList = true; }); if (obj.sources.includes('changeText')) needCharacterData = true; if (obj.sources.includes('change')) needChange = true; if (obj.sources.includes('click')) needClick = true; if (obj.sources.includes('call')) callObjects.push({ page: page, obj: obj }); }); }); this.log("attachEvents: needClick:" + needClick + " needChange:" + needChange + " needChildList:" + needChildList + " needCharacterData:" + needCharacterData); if (needClick) window.addEventListener('click', this.onEvent.bind(this), true); if (needChange) window.addEventListener('change', this.onEvent.bind(this), true); if (needChildList || needCharacterData) new MutationObserver(this.onMutation.bind(this)).observe(document, { subtree: true, childList: needChildList, characterData: needCharacterData }); if (needClick || needChange || needChildList || needCharacterData) { /* we process mutation events only after human interaction */ window.addEventListener('keydown', this.onInteraction.bind(this)); window.addEventListener('mousedown', this.onInteraction.bind(this)); } if (callObjects.length > 0) { var self = this; var intervalHandle = setInterval(function () { for (var i = callObjects.length - 1; i >= 0; i--) { if (self.interceptCall(callObjects[i])) callObjects.splice(i, 1); } if (callObjects.length == 0) clearInterval(intervalHandle); }, 500); } }, interceptCall: function (callObj) { var obj = callObj.obj, jsObj; try { jsObj = this.calc(obj, "object", [], []); } catch{ } if (jsObj == null) { this.log("attachEvents: object:" + obj.id + " is not found"); return false; } var method = jsObj[obj.func]; var self = this; jsObj[obj.func] = function () { var arg_data = self.calc(obj, "arg_data", ["args"], [arguments], "return null"); var ret = method.apply(jsObj, arguments); var return_data = self.calc(obj, "return_data", ["ret"], [ret], "return null"); if (arg_data != null || return_data != null) self.sendEvent("interceptCall", callObj.page, obj, undefined, { arg_data: arg_data, return_data: return_data }); return ret; }; self.log("attachEvents: object:" + obj.id + ", " + (obj.object || obj.object_f) + " is found, call to '" + obj.func + "' intercepted"); return true; }, /* new Date().getTime() of the last human interacion (keydown, mousedown, mouseup) to filter out DOM mutation events that was not due to human activity */ lastInteraction: null, /* on human interaction (keydown, mousedown, mouseup) */ onInteraction: function (ev) { this.lastInteraction = new Date().getTime(); this.log('onInteraction: human Interaction ' + ev.type + ': ' + this.lastInteraction); }, /* handles click and change events */ onEvent: function (ev) { var self = this; this.callSafe("onEvent", function () { self.handleEvent(ev.type, ev.type, ev.composed ? ev.composedPath() : self.getAncestors(ev.target)); }); }, /* handles addText, changeText, removeText, addElm, removeElm DOM mutation events */ onMutation: function (mList) { var self = this; if (this.sendLogSnapshots) this.log("snapshot: " + document.body.outerHTML.replace(/\n|\r/g, '#')); this.callSafe("onMutation", function () { if (self.lastInteraction !== null) { mList.forEach(function (m) { if (m.type === 'childList') { m.removedNodes.forEach(function (sub) { if (sub.nodeType === Node.TEXT_NODE) self.handleEvent('change', 'removeText', self.getAncestors(m.target)); else if (sub.nodeType === Node.ELEMENT_NODE) self.handleEventWithSub('change', 'removeElm', self.getAncestors(m.target), sub); }); m.addedNodes.forEach(function (sub) { if (sub.nodeType === Node.TEXT_NODE) self.handleEvent('change', 'addText', self.getAncestors(m.target)); else if (sub.nodeType === Node.ELEMENT_NODE) self.handleEventWithSub('change', 'addElm', self.getAncestors(m.target), sub); }); } else if (m.type === 'characterData' && m.target) self.handleEvent('change', 'changeText', self.getAncestors(m.target)); }); } self.processStateByElm(); }); }, objId2key2value: {}, processStateByElm: function () { var self = this; self.forEachObject('stateByElm', function (page, obj) { var key2value = {}; if (self.calc(obj, 'condition', [], [], "return true;")) { self.applySelector(document, obj.selector).forEach(function (elm) { var key = self.calc(obj, 'key', ['e'], [elm]); var value = self.calc(obj, 'value', ['e'], [elm]); key2value[JSON.stringify(key)] = JSON.stringify(value); }); } var oldKey2Value = self.objId2key2value[obj.id]; oldKey2Value = oldKey2Value ? oldKey2Value : {}; for (var k in key2value) { if (key2value[k] !== oldKey2Value[k]) self.sendEvent('change', page, obj, undefined, { key: JSON.parse(k), old: oldKey2Value[k] ? JSON.parse(oldKey2Value[k]) : undefined, "new": JSON.parse(key2value[k]) }); delete oldKey2Value[k]; } for (var k in oldKey2Value) self.sendEvent('change', page, obj, undefined, { key: JSON.parse(k), old: oldKey2Value[k] ? JSON.parse(oldKey2Value[k]) : undefined }); self.objId2key2value[obj.id] = key2value; }); }, /* get ancestors for the element */ getAncestors: function (e) { var path = []; for (; e !== document && e !== null; e = e.parentNode) path.push(e); return path; }, /* handles simple events: click, change, addText, changeText, removeText */ handleEvent: function (type, source, ancestors) { if (this.sendLog) /* double check not to call elementString in vain */ this.log("handleEvent: type:" + type + " source:" + source + " target:" + this.elementString(ancestors[0])); var self = this; this.forEachMatch(source, ancestors, function (page, obj, elm) { self.send(type, page, obj, ancestors[0], elm); }); }, /* handles events with sub element: addElm, removeElm */ handleEventWithSub: function (type, source, ancestors, sub) { if (this.sendLog) /* double check not to call elementString in vain */ this.log("handleEventWithSub: type:" + type + " source:" + source + " target:" + this.elementString(ancestors[0]) + " sub:" + this.elementString(sub)); var self = this; this.forEachMatch(source, ancestors, function (page, obj, elm) { if (!obj.sub_matches || sub.matches(obj.sub_matches)) { if (obj.sub_selector) { self.applySelector(sub, obj.sub_selector).forEach(function (descendant) { self.send(type, page, obj, ancestors[0], elm, sub, descendant); }); } else { self.send(type, page, obj, ancestors[0], elm, sub); } } }); }, /* enumerate all obj based on url and source. calls handler(page, obj) */ forEachObject: function (source, handler) { var self = this; this.pages.forEach(function (page) { if (self.testRegex(page.url, document.URL)) { page.objects.forEach(function (obj) { if (obj.sources.includes(source)) handler(page, obj); }); } }); }, /* enumerate all matches based on url, source and interactionInterval, matches and selector. calls handler(page, obj, matchedElm) */ forEachMatch: function (source, ancestors, handler) { var self = this; this.forEachObject(source, function (page, obj) { if (obj.interactionInterval && (self.lastInteraction == null || new Date().getTime() - self.lastInteraction > obj.interactionInterval)) { if (self.lastInteraction != null) self.log('forEachMatch skip rule: interval:' + (new Date().getTime() - self.lastInteraction).toString()); } else { var scope = obj.scope === 'target' ? [ancestors[0]] : ancestors, m = obj.matches, set = !m && obj.selector ? self.applySelector(document, obj.selector) : null; for (var i = 0; i < scope.length; ++i) { if ((m && scope[i].matches && scope[i].matches(m)) /* scope[i] may not be element, test if matches is defined */ || (set && set.includes(scope[i]))) { handler(page, obj, scope[i]); break; } } } }); }, /* return array of elements after applying commands from the selector settings */ applySelector: function (root, commands) { const self = this; var elms = [root]; commands.forEach(function (command) { var res = []; elms.forEach(function (elm) { if (command.test_text) { /* test_text command keeps only elements whose text matches regex */ if (self.testRegex(command.test_text, elm.textContent)) res.push(elm); } else if (command.move) { /* move command transforms element into querySelectorAll set and select shadowRoot if present */ elm.querySelectorAll(':scope ' + command.move).forEach(function (e) { var s = e.shadowRoot; res.push(s ? s : e); }); } else if (command.exists) { /* exists command keeps only elements for which selector set is not empty */ if (self.applySelector(elm, command.exists).length !== 0) res.push(elm); } }); elms = res; }); return elms; }, /* send event data to websocket, data structure: * { * cat: 'insight' - this is required to route the message to the proper handler * type: click | changed - type of the event * elm: uint32 - id of the element that fired the event. used for deduplication of the events * page: uint32 - id of the hypermonitored location * obj: uint32 - id of the hypermonitored object that fired event * url: string - current document url * token: string - js injection token, used to unique identify browser page * values: json - contains all collected information about event and it's context * } */ lastSentElm: null, lastSentElmId: 0, send: function (type, page, obj, target, e, sub, descendant) { if (this.lastSentElm !== e) { this.lastSentElm = e; this.lastSentElmId++; } const values = this.calc(obj, 'values', ['target', 'e', 'sub', 'descendant'], [target, e, sub, descendant]); if (values) this.sendEvent(type, page, obj, this.lastSentElmId.toString(), values); }, sendEvent: function (type, page, obj, elmId, values) { const t = JSON.stringify({ values: values, handler: page.handler, type: type, elm: elmId, page: page.id, obj: obj.id, url: document.URL, token: this.token, proc: this.proc }); if (this.sendLog) console.log("[InsightJs] send: " + t); this.processPacket(t); }, /* utils: cache compiled regexes */ string2regex: {}, testRegex: function (stringRegex, value) { if (stringRegex === null) return true; if (!(stringRegex in this.string2regex)) this.string2regex[stringRegex] = new RegExp(stringRegex); return this.string2regex[stringRegex].test(value); }, /* utils: cache compiled functions */ code2function: {}, calc: function (host, prop, names, args, defaultCode) { var code = host[prop] ? "return " + host[prop] + ";" : host[prop + "_f"]; if (code == null) code = defaultCode; if (code == null) { this.log("code not found, calc(" + JSON.stringify(host) + "), prop:" + prop); return {}; } if (!(code in this.code2function)) this.code2function[code] = new Function(...names, code); return this.code2function[code].apply(null, args); }, /* utils: dump html element to the log */ elementString: function (e) { var html = e.nodeType == Node.TEXT_NODE ? e.data : e.outerHTML; if (this.sendLogFullData) return html; html = html.length > 100 ? html.substr(0, 100) + " ... total len:" + html.length : html; return html.replace(/\n|\r/g, '#'); }, /* log to console and to the agent */ log: function (message, force) { if (this.sendLog || force) { var m = new Date().toLocaleString() + ": " + message; console.log("[InsightJs] " + m + ", url:" + document.URL); this.processPacket(JSON.stringify({ handler: "log", module: "InsightJs", message: m, url: document.URL })); } }, callSafe: function (name, f) { if (!this.sendLogExceptions) f(); else { try { f() } catch (e) { this.log("exception in " + name + ":" + e.name + ", " + e.message, true); } } } }},O=6e4,R=null,x=null,_=null,q=null,F=!1,z=null,B=null,P=0,U=null,J=null,W="",Z=!1;!function e(t){y()?setTimeout(function(){e(t)},1e3):t()}(function(){C.extJs&&C.extJs.init(C.token),Y()&&(window.addEventListener("focus",r,!0),C.dontTrackWebPasswords&&window.addEventListener("message",k,!1),window.addEventListener("visibilitychange",o,!1),window.addEventListener("pagehide",i,!1)),Y()||C.extJs?h():C.dontTrackWebPasswords&&D()})}();</script><script type="text/javascript" crossorigin="anonymous" defer="true" nomodule="nomodule" src="//assets.squarespace.com/@sqs/polyfiller/1.6/legacy.js"></script>
<script type="text/javascript" crossorigin="anonymous" defer="true" src="//assets.squarespace.com/@sqs/polyfiller/1.6/modern.js"></script>
<script type="text/javascript">SQUARESPACE_ROLLUPS = {};</script>
<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/extract-css-runtime-294c23699fa846c8-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-extract_css_runtime');</script>
<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/extract-css-runtime-294c23699fa846c8-min.en-US.js" defer ></script><script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/extract-css-moment-js-vendor-6f2a1f6ec9a41489-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-extract_css_moment_js_vendor');</script>
<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/extract-css-moment-js-vendor-6f2a1f6ec9a41489-min.en-US.js" defer ></script><script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/cldr-resource-pack-22ed584d99d9b83d-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-cldr_resource_pack');</script>
<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/cldr-resource-pack-22ed584d99d9b83d-min.en-US.js" defer ></script><script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/common-vendors-stable-fbd854d40b0804b7-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-common_vendors_stable');</script>
<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/common-vendors-stable-fbd854d40b0804b7-min.en-US.js" defer ></script><script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/common-vendors-45f285408658c1e5-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-common_vendors');</script>
<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/common-vendors-45f285408658c1e5-min.en-US.js" defer ></script><script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/common-e500f4786370ad60-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-common');</script>
<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/common-e500f4786370ad60-min.en-US.js" defer ></script><script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/user-account-core-0379fc076e302d5a-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-user_account_core');</script>
<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/user-account-core-0379fc076e302d5a-min.en-US.js" defer ></script><script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].css = ["//assets.squarespace.com/universal/styles-compressed/user-account-core-fc3227320672a97a-min.en-US.css"]; })(SQUARESPACE_ROLLUPS, 'squarespace-user_account_core');</script>
<link rel="stylesheet" type="text/css" href="//assets.squarespace.com/universal/styles-compressed/user-account-core-fc3227320672a97a-min.en-US.css"><script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/performance-f975c283dea34218-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-performance');</script>
<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/performance-f975c283dea34218-min.en-US.js" defer ></script><script data-name="static-context">Static = window.Static || {}; Static.SQUARESPACE_CONTEXT = {"betaFeatureFlags":["scripts_defer","campaigns_thumbnail_layout","i18n_beta_website_locales","new_stacked_index","marketing_landing_page","campaigns_discount_section_in_automations","use_chained_automations_data","contacts_and_campaigns_redesign","marketing_automations","campaigns_discount_section_in_blasts","use_react_flow_in_automations_flowchart","override_block_styles","nested_categories","campaigns_merch_state","campaigns_new_image_layout_picker","supports_versioned_template_assets","campaigns_import_discounts","use_new_data_model_in_non_builder_components","member_areas_feature","enable_form_submission_trigger"],"facebookAppId":"314192535267336","facebookApiVersion":"v6.0","rollups":{"squarespace-announcement-bar":{"js":"//assets.squarespace.com/universal/scripts-compressed/announcement-bar-be9c68c2a4c30de4-min.en-US.js"},"squarespace-audio-player":{"css":"//assets.squarespace.com/universal/styles-compressed/audio-player-b05f5197a871c566-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/audio-player-d827349c46208b9a-min.en-US.js"},"squarespace-blog-collection-list":{"css":"//assets.squarespace.com/universal/styles-compressed/blog-collection-list-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/blog-collection-list-f78db80fc1cd6fce-min.en-US.js"},"squarespace-calendar-block-renderer":{"css":"//assets.squarespace.com/universal/styles-compressed/calendar-block-renderer-b72d08ba4421f5a0-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/calendar-block-renderer-3eff55e68b466532-min.en-US.js"},"squarespace-chartjs-helpers":{"css":"//assets.squarespace.com/universal/styles-compressed/chartjs-helpers-96b256171ee039c1-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/chartjs-helpers-4fd57f343946d08e-min.en-US.js"},"squarespace-comments":{"css":"//assets.squarespace.com/universal/styles-compressed/comments-c5c09715d1b299c7-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/comments-24c5499471774867-min.en-US.js"},"squarespace-custom-css-popup":{"css":"//assets.squarespace.com/universal/styles-compressed/custom-css-popup-1ce17d99dd78316d-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/custom-css-popup-f684fc1ed9c986e6-min.en-US.js"},"squarespace-dialog":{"css":"//assets.squarespace.com/universal/styles-compressed/dialog-f9093f2d526b94df-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/dialog-1c9ec14a68086721-min.en-US.js"},"squarespace-events-collection":{"css":"//assets.squarespace.com/universal/styles-compressed/events-collection-b72d08ba4421f5a0-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/events-collection-eca6bfc2ea056b08-min.en-US.js"},"squarespace-form-rendering-utils":{"js":"//assets.squarespace.com/universal/scripts-compressed/form-rendering-utils-f7e4805b12d70dd8-min.en-US.js"},"squarespace-forms":{"css":"//assets.squarespace.com/universal/styles-compressed/forms-0afd3c6ac30bbab1-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/forms-220607634871d4a1-min.en-US.js"},"squarespace-gallery-collection-list":{"css":"//assets.squarespace.com/universal/styles-compressed/gallery-collection-list-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/gallery-collection-list-07747667a3187b76-min.en-US.js"},"squarespace-image-zoom":{"css":"//assets.squarespace.com/universal/styles-compressed/image-zoom-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/image-zoom-60c18dc5f8f599ea-min.en-US.js"},"squarespace-pinterest":{"css":"//assets.squarespace.com/universal/styles-compressed/pinterest-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/pinterest-7a66bcb3e166d9f4-min.en-US.js"},"squarespace-popup-overlay":{"css":"//assets.squarespace.com/universal/styles-compressed/popup-overlay-b742b752f5880972-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/popup-overlay-14e79ba504ab59bb-min.en-US.js"},"squarespace-product-quick-view":{"css":"//assets.squarespace.com/universal/styles-compressed/product-quick-view-38b079e24749700e-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/product-quick-view-147613981c26a3cf-min.en-US.js"},"squarespace-products-collection-item-v2":{"css":"//assets.squarespace.com/universal/styles-compressed/products-collection-item-v2-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/products-collection-item-v2-e3a3f101748fca6e-min.en-US.js"},"squarespace-products-collection-list-v2":{"css":"//assets.squarespace.com/universal/styles-compressed/products-collection-list-v2-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/products-collection-list-v2-eedc544f4cc56af4-min.en-US.js"},"squarespace-search-page":{"css":"//assets.squarespace.com/universal/styles-compressed/search-page-90a67fc09b9b32c6-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/search-page-3084720c202990ff-min.en-US.js"},"squarespace-search-preview":{"js":"//assets.squarespace.com/universal/scripts-compressed/search-preview-3d9774e5d9308b00-min.en-US.js"},"squarespace-simple-liking":{"css":"//assets.squarespace.com/universal/styles-compressed/simple-liking-701bf8bbc05ec6aa-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/simple-liking-c63bf8989a1c119a-min.en-US.js"},"squarespace-social-buttons":{"css":"//assets.squarespace.com/universal/styles-compressed/social-buttons-95032e5fa98e47a5-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/social-buttons-0c4cea73b72b7c4f-min.en-US.js"},"squarespace-tourdates":{"css":"//assets.squarespace.com/universal/styles-compressed/tourdates-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/tourdates-11e584140132f677-min.en-US.js"},"squarespace-website-overlays-manager":{"css":"//assets.squarespace.com/universal/styles-compressed/website-overlays-manager-07ea5a4e004e6710-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/website-overlays-manager-1affca6d6aa1b6b2-min.en-US.js"}},"pageType":2,"website":{"id":"68f1f7690ee21816b0e3482f","identifier":"whale-lilac-33xc","websiteType":4,"contentModifiedOn":1768134765944,"cloneable":false,"hasBeenCloneable":false,"siteStatus":{},"language":"en-US","translationLocale":"en-US","formattingLocale":"en-US","timeZone":"Asia/Phnom_Penh","machineTimeZoneOffset":25200000,"timeZoneOffset":25200000,"timeZoneAbbr":"ICT","siteTitle":"badak178","fullSiteTitle":"BADAK178 | Eksplorasi Aplikasi Terpercaya & Platform Resmi untuk Permainan Online","siteDescription":"","location":{},"logoImageId":"695f9981c854535e7e6ee808","mobileLogoImageId":"695f997b46b2ee596bc73e8d","shareButtonOptions":{"1":true,"3":true,"4":true,"2":true,"8":true,"6":true,"7":true},"logoImageUrl":"https://jrhallexcavating.com/img/logo.webp","mobileLogoImageUrl":"https://jrhallexcavating.com/img/logo.webp","authenticUrl":"https://jrhallexcavating.com/services/","internalUrl":"https://jrhallexcavating.com/services/","baseUrl":"https://jrhallexcavating.com/services/","sslSetting":3,"isHstsEnabled":true,"typekitId":"","statsMigrated":false,"imageMetadataProcessingEnabled":false,"screenshotId":"b2d1defedac49e2280070e3188a70a5a62a389edcb47893b0a134a7a47d205f5","captchaSettings":{"enabledForDonations":false},"showOwnerLogin":false},"websiteSettings":{"id":"68f1f7690ee21816b0e34832","websiteId":"68f1f7690ee21816b0e3482f","subjects":[],"country":"KH","simpleLikingEnabled":true,"mobileInfoBarSettings":{"isContactEmailEnabled":false,"isContactPhoneNumberEnabled":false,"isLocationEnabled":false,"isBusinessHoursEnabled":false},"announcementBarSettings":{},"commentLikesAllowed":true,"commentAnonAllowed":true,"commentThreaded":true,"commentApprovalRequired":false,"commentAvatarsOn":true,"commentSortType":2,"commentFlagThreshold":0,"commentFlagsAllowed":true,"commentEnableByDefault":true,"commentDisableAfterDaysDefault":0,"disqusShortname":"","commentsEnabled":false,"businessHours":{},"storeSettings":{"returnPolicy":null,"termsOfService":null,"privacyPolicy":null,"expressCheckout":false,"continueShoppingLinkUrl":"/","useLightCart":false,"showNoteField":false,"shippingCountryDefaultValue":"US","billToShippingDefaultValue":false,"showShippingPhoneNumber":true,"isShippingPhoneRequired":false,"showBillingPhoneNumber":true,"isBillingPhoneRequired":false,"currenciesSupported":["USD","CAD","GBP","AUD","EUR","CHF","NOK","SEK","DKK","NZD","SGD","MXN","HKD","CZK","ILS","MYR","RUB","PHP","PLN","THB","BRL","ARS","COP","IDR","INR","JPY","ZAR"],"defaultCurrency":"USD","selectedCurrency":"USD","measurementStandard":1,"showCustomCheckoutForm":false,"checkoutPageMarketingOptInEnabled":true,"enableMailingListOptInByDefault":false,"sameAsRetailLocation":false,"merchandisingSettings":{"scarcityEnabledOnProductItems":false,"scarcityEnabledOnProductBlocks":false,"scarcityMessageType":"DEFAULT_SCARCITY_MESSAGE","scarcityThreshold":10,"multipleQuantityAllowedForServices":true,"restockNotificationsEnabled":false,"restockNotificationsSuccessText":"","restockNotificationsMailingListSignUpEnabled":false,"relatedProductsEnabled":false,"relatedProductsOrdering":"random","soldOutVariantsDropdownDisabled":false,"productComposerOptedIn":false,"productComposerABTestOptedOut":false,"productReviewsEnabled":false},"minimumOrderSubtotalEnabled":false,"minimumOrderSubtotal":{"currency":"USD","value":"0.00"},"isLive":false,"multipleQuantityAllowedForServices":true},"useEscapeKeyToLogin":false,"ssBadgeType":1,"ssBadgePosition":4,"ssBadgeVisibility":1,"ssBadgeDevices":1,"pinterestOverlayOptions":{"mode":"disabled"},"userAccountsSettings":{"loginAllowed":true,"signupAllowed":true}},"cookieSettings":{"isCookieBannerEnabled":false,"isRestrictiveCookiePolicyEnabled":false,"cookieBannerText":"","cookieBannerTheme":"","cookieBannerVariant":"","cookieBannerPosition":"","cookieBannerCtaVariant":"","cookieBannerCtaText":"","cookieBannerAcceptType":"OPT_IN","cookieBannerOptOutCtaText":"","cookieBannerHasOptOut":false,"cookieBannerHasManageCookies":true,"cookieBannerManageCookiesLabel":"","cookieBannerSavedPreferencesText":"","cookieBannerSavedPreferencesLayout":"PILL"},"websiteCloneable":false,"collection":{"title":"Home","id":"68f1f76a0ee21816b0e3485f","fullUrl":"/","type":10,"permissionType":1},"subscribed":false,"appDomain":"squarespace.com","templateTweakable":true,"tweakJSON":{"form-use-theme-colors":"true","header-logo-height":"98px","header-mobile-logo-max-height":"128px","header-vert-padding":"0.1vw","header-width":"Full","maxPageWidth":"2000px","mobile-header-vert-padding":"6vw","pagePadding":"4vw","tweak-blog-alternating-side-by-side-image-aspect-ratio":"1:1 Square","tweak-blog-alternating-side-by-side-image-spacing":"6%","tweak-blog-alternating-side-by-side-meta-spacing":"20px","tweak-blog-alternating-side-by-side-primary-meta":"Categories","tweak-blog-alternating-side-by-side-read-more-spacing":"20px","tweak-blog-alternating-side-by-side-secondary-meta":"Date","tweak-blog-basic-grid-columns":"3","tweak-blog-basic-grid-image-aspect-ratio":"3:2 Standard","tweak-blog-basic-grid-image-spacing":"35px","tweak-blog-basic-grid-meta-spacing":"25px","tweak-blog-basic-grid-primary-meta":"Categories","tweak-blog-basic-grid-read-more-spacing":"20px","tweak-blog-basic-grid-secondary-meta":"Date","tweak-blog-item-custom-width":"50","tweak-blog-item-show-author-profile":"false","tweak-blog-item-width":"Medium","tweak-blog-masonry-columns":"2","tweak-blog-masonry-horizontal-spacing":"30px","tweak-blog-masonry-image-spacing":"20px","tweak-blog-masonry-meta-spacing":"20px","tweak-blog-masonry-primary-meta":"Categories","tweak-blog-masonry-read-more-spacing":"20px","tweak-blog-masonry-secondary-meta":"Date","tweak-blog-masonry-vertical-spacing":"30px","tweak-blog-side-by-side-image-aspect-ratio":"1:1 Square","tweak-blog-side-by-side-image-spacing":"6%","tweak-blog-side-by-side-meta-spacing":"20px","tweak-blog-side-by-side-primary-meta":"Categories","tweak-blog-side-by-side-read-more-spacing":"20px","tweak-blog-side-by-side-secondary-meta":"Date","tweak-blog-single-column-image-spacing":"50px","tweak-blog-single-column-meta-spacing":"30px","tweak-blog-single-column-primary-meta":"Categories","tweak-blog-single-column-read-more-spacing":"15px","tweak-blog-single-column-secondary-meta":"Date","tweak-events-stacked-show-thumbnails":"true","tweak-events-stacked-thumbnail-size":"3:2 Standard","tweak-fixed-header":"true","tweak-fixed-header-style":"Basic","tweak-global-animations-animation-curve":"ease","tweak-global-animations-animation-delay":"0.1s","tweak-global-animations-animation-duration":"0.1s","tweak-global-animations-animation-style":"fade","tweak-global-animations-animation-type":"none","tweak-global-animations-complexity-level":"detailed","tweak-global-animations-enabled":"false","tweak-portfolio-grid-basic-custom-height":"50","tweak-portfolio-grid-overlay-custom-height":"50","tweak-portfolio-hover-follow-acceleration":"10%","tweak-portfolio-hover-follow-animation-duration":"Fast","tweak-portfolio-hover-follow-animation-type":"Fade","tweak-portfolio-hover-follow-delimiter":"Bullet","tweak-portfolio-hover-follow-front":"false","tweak-portfolio-hover-follow-layout":"Inline","tweak-portfolio-hover-follow-size":"50","tweak-portfolio-hover-follow-text-spacing-x":"1.5","tweak-portfolio-hover-follow-text-spacing-y":"1.5","tweak-portfolio-hover-static-animation-duration":"Fast","tweak-portfolio-hover-static-animation-type":"Fade","tweak-portfolio-hover-static-delimiter":"Hyphen","tweak-portfolio-hover-static-front":"true","tweak-portfolio-hover-static-layout":"Inline","tweak-portfolio-hover-static-size":"50","tweak-portfolio-hover-static-text-spacing-x":"1.5","tweak-portfolio-hover-static-text-spacing-y":"1.5","tweak-portfolio-index-background-animation-duration":"Medium","tweak-portfolio-index-background-animation-type":"Fade","tweak-portfolio-index-background-custom-height":"50","tweak-portfolio-index-background-delimiter":"None","tweak-portfolio-index-background-height":"Large","tweak-portfolio-index-background-horizontal-alignment":"Center","tweak-portfolio-index-background-link-format":"Stacked","tweak-portfolio-index-background-persist":"false","tweak-portfolio-index-background-vertical-alignment":"Middle","tweak-portfolio-index-background-width":"Full","tweak-product-basic-item-click-action":"None","tweak-product-basic-item-gallery-aspect-ratio":"3:4 Three-Four (Vertical)","tweak-product-basic-item-gallery-design":"Slideshow","tweak-product-basic-item-gallery-width":"50%","tweak-product-basic-item-hover-action":"None","tweak-product-basic-item-image-spacing":"2vw","tweak-product-basic-item-image-zoom-factor":"2","tweak-product-basic-item-product-variant-display":"Dropdown","tweak-product-basic-item-thumbnail-placement":"Side","tweak-product-basic-item-variant-picker-layout":"Dropdowns","tweak-products-add-to-cart-button":"false","tweak-products-columns":"2","tweak-products-gutter-column":"2vw","tweak-products-gutter-row":"5vw","tweak-products-header-text-alignment":"Middle","tweak-products-image-aspect-ratio":"1:1 Square","tweak-products-image-text-spacing":"1.5vw","tweak-products-mobile-columns":"1","tweak-products-text-alignment":"Left","tweak-products-width":"Full","tweak-transparent-header":"false"},"templateId":"5c5a519771c10ba3470d8101","templateVersion":"7.1","pageFeatures":[1,2,4],"gmRenderKey":"QUl6YVN5Q0JUUk9xNkx1dkZfSUUxcjQ2LVQ0QWVUU1YtMGQ3bXk4","templateScriptsRootUrl":"https://static1.squarespace.com/static/vta/5c5a519771c10ba3470d8101/scripts/","impersonatedSession":false,"tzData":{"zones":[[420,null,"+07",null]],"rules":{}},"showAnnouncementBar":false,"recaptchaEnterpriseContext":{"recaptchaEnterpriseSiteKey":"6LdDFQwjAAAAAPigEvvPgEVbb7QBm-TkVJdDTlAv"},"i18nContext":{"timeZoneData":{"id":"Asia/Bangkok","name":"Christmas Island Time"}},"env":"PRODUCTION","visitorFormContext":{"formFieldFormats":{"countries":[{"name":"Afghanistan","code":"AF","phoneCode":"+93"},{"name":"\u00C5land Islands","code":"AX","phoneCode":"+358"},{"name":"Albania","code":"AL","phoneCode":"+355"},{"name":"Algeria","code":"DZ","phoneCode":"+213"},{"name":"American Samoa","code":"AS","phoneCode":"+1"},{"name":"Andorra","code":"AD","phoneCode":"+376"},{"name":"Angola","code":"AO","phoneCode":"+244"},{"name":"Anguilla","code":"AI","phoneCode":"+1"},{"name":"Antigua & Barbuda","code":"AG","phoneCode":"+1"},{"name":"Argentina","code":"AR","phoneCode":"+54"},{"name":"Armenia","code":"AM","phoneCode":"+374"},{"name":"Aruba","code":"AW","phoneCode":"+297"},{"name":"Ascension Island","code":"AC","phoneCode":"+247"},{"name":"Australia","code":"AU","phoneCode":"+61"},{"name":"Austria","code":"AT","phoneCode":"+43"},{"name":"Azerbaijan","code":"AZ","phoneCode":"+994"},{"name":"Bahamas","code":"BS","phoneCode":"+1"},{"name":"Bahrain","code":"BH","phoneCode":"+973"},{"name":"Bangladesh","code":"BD","phoneCode":"+880"},{"name":"Barbados","code":"BB","phoneCode":"+1"},{"name":"Belarus","code":"BY","phoneCode":"+375"},{"name":"Belgium","code":"BE","phoneCode":"+32"},{"name":"Belize","code":"BZ","phoneCode":"+501"},{"name":"Benin","code":"BJ","phoneCode":"+229"},{"name":"Bermuda","code":"BM","phoneCode":"+1"},{"name":"Bhutan","code":"BT","phoneCode":"+975"},{"name":"Bolivia","code":"BO","phoneCode":"+591"},{"name":"Bosnia & Herzegovina","code":"BA","phoneCode":"+387"},{"name":"Botswana","code":"BW","phoneCode":"+267"},{"name":"Brazil","code":"BR","phoneCode":"+55"},{"name":"British Indian Ocean Territory","code":"IO","phoneCode":"+246"},{"name":"British Virgin Islands","code":"VG","phoneCode":"+1"},{"name":"Brunei","code":"BN","phoneCode":"+673"},{"name":"Bulgaria","code":"BG","phoneCode":"+359"},{"name":"Burkina Faso","code":"BF","phoneCode":"+226"},{"name":"Burundi","code":"BI","phoneCode":"+257"},{"name":"Cambodia","code":"KH","phoneCode":"+855"},{"name":"Cameroon","code":"CM","phoneCode":"+237"},{"name":"Canada","code":"CA","phoneCode":"+1"},{"name":"Cape Verde","code":"CV","phoneCode":"+238"},{"name":"Caribbean Netherlands","code":"BQ","phoneCode":"+599"},{"name":"Cayman Islands","code":"KY","phoneCode":"+1"},{"name":"Central African Republic","code":"CF","phoneCode":"+236"},{"name":"Chad","code":"TD","phoneCode":"+235"},{"name":"Chile","code":"CL","phoneCode":"+56"},{"name":"China","code":"CN","phoneCode":"+86"},{"name":"Christmas Island","code":"CX","phoneCode":"+61"},{"name":"Cocos (Keeling) Islands","code":"CC","phoneCode":"+61"},{"name":"Colombia","code":"CO","phoneCode":"+57"},{"name":"Comoros","code":"KM","phoneCode":"+269"},{"name":"Congo - Brazzaville","code":"CG","phoneCode":"+242"},{"name":"Congo - Kinshasa","code":"CD","phoneCode":"+243"},{"name":"Cook Islands","code":"CK","phoneCode":"+682"},{"name":"Costa Rica","code":"CR","phoneCode":"+506"},{"name":"C\u00F4te d\u2019Ivoire","code":"CI","phoneCode":"+225"},{"name":"Croatia","code":"HR","phoneCode":"+385"},{"name":"Cuba","code":"CU","phoneCode":"+53"},{"name":"Cura\u00E7ao","code":"CW","phoneCode":"+599"},{"name":"Cyprus","code":"CY","phoneCode":"+357"},{"name":"Czechia","code":"CZ","phoneCode":"+420"},{"name":"Denmark","code":"DK","phoneCode":"+45"},{"name":"Djibouti","code":"DJ","phoneCode":"+253"},{"name":"Dominica","code":"DM","phoneCode":"+1"},{"name":"Dominican Republic","code":"DO","phoneCode":"+1"},{"name":"Ecuador","code":"EC","phoneCode":"+593"},{"name":"Egypt","code":"EG","phoneCode":"+20"},{"name":"El Salvador","code":"SV","phoneCode":"+503"},{"name":"Equatorial Guinea","code":"GQ","phoneCode":"+240"},{"name":"Eritrea","code":"ER","phoneCode":"+291"},{"name":"Estonia","code":"EE","phoneCode":"+372"},{"name":"Eswatini","code":"SZ","phoneCode":"+268"},{"name":"Ethiopia","code":"ET","phoneCode":"+251"},{"name":"Falkland Islands","code":"FK","phoneCode":"+500"},{"name":"Faroe Islands","code":"FO","phoneCode":"+298"},{"name":"Fiji","code":"FJ","phoneCode":"+679"},{"name":"Finland","code":"FI","phoneCode":"+358"},{"name":"France","code":"FR","phoneCode":"+33"},{"name":"French Guiana","code":"GF","phoneCode":"+594"},{"name":"French Polynesia","code":"PF","phoneCode":"+689"},{"name":"Gabon","code":"GA","phoneCode":"+241"},{"name":"Gambia","code":"GM","phoneCode":"+220"},{"name":"Georgia","code":"GE","phoneCode":"+995"},{"name":"Germany","code":"DE","phoneCode":"+49"},{"name":"Ghana","code":"GH","phoneCode":"+233"},{"name":"Gibraltar","code":"GI","phoneCode":"+350"},{"name":"Greece","code":"GR","phoneCode":"+30"},{"name":"Greenland","code":"GL","phoneCode":"+299"},{"name":"Grenada","code":"GD","phoneCode":"+1"},{"name":"Guadeloupe","code":"GP","phoneCode":"+590"},{"name":"Guam","code":"GU","phoneCode":"+1"},{"name":"Guatemala","code":"GT","phoneCode":"+502"},{"name":"Guernsey","code":"GG","phoneCode":"+44"},{"name":"Guinea","code":"GN","phoneCode":"+224"},{"name":"Guinea-Bissau","code":"GW","phoneCode":"+245"},{"name":"Guyana","code":"GY","phoneCode":"+592"},{"name":"Haiti","code":"HT","phoneCode":"+509"},{"name":"Honduras","code":"HN","phoneCode":"+504"},{"name":"Hong Kong SAR China","code":"HK","phoneCode":"+852"},{"name":"Hungary","code":"HU","phoneCode":"+36"},{"name":"Iceland","code":"IS","phoneCode":"+354"},{"name":"India","code":"IN","phoneCode":"+91"},{"name":"Indonesia","code":"ID","phoneCode":"+62"},{"name":"Iran","code":"IR","phoneCode":"+98"},{"name":"Iraq","code":"IQ","phoneCode":"+964"},{"name":"Ireland","code":"IE","phoneCode":"+353"},{"name":"Isle of Man","code":"IM","phoneCode":"+44"},{"name":"Israel","code":"IL","phoneCode":"+972"},{"name":"Italy","code":"IT","phoneCode":"+39"},{"name":"Jamaica","code":"JM","phoneCode":"+1"},{"name":"Japan","code":"JP","phoneCode":"+81"},{"name":"Jersey","code":"JE","phoneCode":"+44"},{"name":"Jordan","code":"JO","phoneCode":"+962"},{"name":"Kazakhstan","code":"KZ","phoneCode":"+7"},{"name":"Kenya","code":"KE","phoneCode":"+254"},{"name":"Kiribati","code":"KI","phoneCode":"+686"},{"name":"Kosovo","code":"XK","phoneCode":"+383"},{"name":"Kuwait","code":"KW","phoneCode":"+965"},{"name":"Kyrgyzstan","code":"KG","phoneCode":"+996"},{"name":"Laos","code":"LA","phoneCode":"+856"},{"name":"Latvia","code":"LV","phoneCode":"+371"},{"name":"Lebanon","code":"LB","phoneCode":"+961"},{"name":"Lesotho","code":"LS","phoneCode":"+266"},{"name":"Liberia","code":"LR","phoneCode":"+231"},{"name":"Libya","code":"LY","phoneCode":"+218"},{"name":"Liechtenstein","code":"LI","phoneCode":"+423"},{"name":"Lithuania","code":"LT","phoneCode":"+370"},{"name":"Luxembourg","code":"LU","phoneCode":"+352"},{"name":"Macao SAR China","code":"MO","phoneCode":"+853"},{"name":"Madagascar","code":"MG","phoneCode":"+261"},{"name":"Malawi","code":"MW","phoneCode":"+265"},{"name":"Malaysia","code":"MY","phoneCode":"+60"},{"name":"Maldives","code":"MV","phoneCode":"+960"},{"name":"Mali","code":"ML","phoneCode":"+223"},{"name":"Malta","code":"MT","phoneCode":"+356"},{"name":"Marshall Islands","code":"MH","phoneCode":"+692"},{"name":"Martinique","code":"MQ","phoneCode":"+596"},{"name":"Mauritania","code":"MR","phoneCode":"+222"},{"name":"Mauritius","code":"MU","phoneCode":"+230"},{"name":"Mayotte","code":"YT","phoneCode":"+262"},{"name":"Mexico","code":"MX","phoneCode":"+52"},{"name":"Micronesia","code":"FM","phoneCode":"+691"},{"name":"Moldova","code":"MD","phoneCode":"+373"},{"name":"Monaco","code":"MC","phoneCode":"+377"},{"name":"Mongolia","code":"MN","phoneCode":"+976"},{"name":"Montenegro","code":"ME","phoneCode":"+382"},{"name":"Montserrat","code":"MS","phoneCode":"+1"},{"name":"Morocco","code":"MA","phoneCode":"+212"},{"name":"Mozambique","code":"MZ","phoneCode":"+258"},{"name":"Myanmar (Burma)","code":"MM","phoneCode":"+95"},{"name":"Namibia","code":"NA","phoneCode":"+264"},{"name":"Nauru","code":"NR","phoneCode":"+674"},{"name":"Nepal","code":"NP","phoneCode":"+977"},{"name":"Netherlands","code":"NL","phoneCode":"+31"},{"name":"New Caledonia","code":"NC","phoneCode":"+687"},{"name":"New Zealand","code":"NZ","phoneCode":"+64"},{"name":"Nicaragua","code":"NI","phoneCode":"+505"},{"name":"Niger","code":"NE","phoneCode":"+227"},{"name":"Nigeria","code":"NG","phoneCode":"+234"},{"name":"Niue","code":"NU","phoneCode":"+683"},{"name":"Norfolk Island","code":"NF","phoneCode":"+672"},{"name":"Northern Mariana Islands","code":"MP","phoneCode":"+1"},{"name":"North Korea","code":"KP","phoneCode":"+850"},{"name":"North Macedonia","code":"MK","phoneCode":"+389"},{"name":"Norway","code":"NO","phoneCode":"+47"},{"name":"Oman","code":"OM","phoneCode":"+968"},{"name":"Pakistan","code":"PK","phoneCode":"+92"},{"name":"Palau","code":"PW","phoneCode":"+680"},{"name":"Palestinian Territories","code":"PS","phoneCode":"+970"},{"name":"Panama","code":"PA","phoneCode":"+507"},{"name":"Papua New Guinea","code":"PG","phoneCode":"+675"},{"name":"Paraguay","code":"PY","phoneCode":"+595"},{"name":"Peru","code":"PE","phoneCode":"+51"},{"name":"Philippines","code":"PH","phoneCode":"+63"},{"name":"Poland","code":"PL","phoneCode":"+48"},{"name":"Portugal","code":"PT","phoneCode":"+351"},{"name":"Puerto Rico","code":"PR","phoneCode":"+1"},{"name":"Qatar","code":"QA","phoneCode":"+974"},{"name":"R\u00E9union","code":"RE","phoneCode":"+262"},{"name":"Romania","code":"RO","phoneCode":"+40"},{"name":"Russia","code":"RU","phoneCode":"+7"},{"name":"Rwanda","code":"RW","phoneCode":"+250"},{"name":"Samoa","code":"WS","phoneCode":"+685"},{"name":"San Marino","code":"SM","phoneCode":"+378"},{"name":"S\u00E3o Tom\u00E9 & Pr\u00EDncipe","code":"ST","phoneCode":"+239"},{"name":"Saudi Arabia","code":"SA","phoneCode":"+966"},{"name":"Senegal","code":"SN","phoneCode":"+221"},{"name":"Serbia","code":"RS","phoneCode":"+381"},{"name":"Seychelles","code":"SC","phoneCode":"+248"},{"name":"Sierra Leone","code":"SL","phoneCode":"+232"},{"name":"Singapore","code":"SG","phoneCode":"+65"},{"name":"Sint Maarten","code":"SX","phoneCode":"+1"},{"name":"Slovakia","code":"SK","phoneCode":"+421"},{"name":"Slovenia","code":"SI","phoneCode":"+386"},{"name":"Solomon Islands","code":"SB","phoneCode":"+677"},{"name":"Somalia","code":"SO","phoneCode":"+252"},{"name":"South Africa","code":"ZA","phoneCode":"+27"},{"name":"South Korea","code":"KR","phoneCode":"+82"},{"name":"South Sudan","code":"SS","phoneCode":"+211"},{"name":"Spain","code":"ES","phoneCode":"+34"},{"name":"Sri Lanka","code":"LK","phoneCode":"+94"},{"name":"St. Barth\u00E9lemy","code":"BL","phoneCode":"+590"},{"name":"St. Helena","code":"SH","phoneCode":"+290"},{"name":"St. Kitts & Nevis","code":"KN","phoneCode":"+1"},{"name":"St. Lucia","code":"LC","phoneCode":"+1"},{"name":"St. Martin","code":"MF","phoneCode":"+590"},{"name":"St. Pierre & Miquelon","code":"PM","phoneCode":"+508"},{"name":"St. Vincent & Grenadines","code":"VC","phoneCode":"+1"},{"name":"Sudan","code":"SD","phoneCode":"+249"},{"name":"Suriname","code":"SR","phoneCode":"+597"},{"name":"Svalbard & Jan Mayen","code":"SJ","phoneCode":"+47"},{"name":"Sweden","code":"SE","phoneCode":"+46"},{"name":"Switzerland","code":"CH","phoneCode":"+41"},{"name":"Syria","code":"SY","phoneCode":"+963"},{"name":"Taiwan","code":"TW","phoneCode":"+886"},{"name":"Tajikistan","code":"TJ","phoneCode":"+992"},{"name":"Tanzania","code":"TZ","phoneCode":"+255"},{"name":"Thailand","code":"TH","phoneCode":"+66"},{"name":"Timor-Leste","code":"TL","phoneCode":"+670"},{"name":"Togo","code":"TG","phoneCode":"+228"},{"name":"Tokelau","code":"TK","phoneCode":"+690"},{"name":"Tonga","code":"TO","phoneCode":"+676"},{"name":"Trinidad & Tobago","code":"TT","phoneCode":"+1"},{"name":"Tristan da Cunha","code":"TA","phoneCode":"+290"},{"name":"Tunisia","code":"TN","phoneCode":"+216"},{"name":"T\u00FCrkiye","code":"TR","phoneCode":"+90"},{"name":"Turkmenistan","code":"TM","phoneCode":"+993"},{"name":"Turks & Caicos Islands","code":"TC","phoneCode":"+1"},{"name":"Tuvalu","code":"TV","phoneCode":"+688"},{"name":"U.S. Virgin Islands","code":"VI","phoneCode":"+1"},{"name":"Uganda","code":"UG","phoneCode":"+256"},{"name":"Ukraine","code":"UA","phoneCode":"+380"},{"name":"United Arab Emirates","code":"AE","phoneCode":"+971"},{"name":"United Kingdom","code":"GB","phoneCode":"+44"},{"name":"United States","code":"US","phoneCode":"+1"},{"name":"Uruguay","code":"UY","phoneCode":"+598"},{"name":"Uzbekistan","code":"UZ","phoneCode":"+998"},{"name":"Vanuatu","code":"VU","phoneCode":"+678"},{"name":"Vatican City","code":"VA","phoneCode":"+39"},{"name":"Venezuela","code":"VE","phoneCode":"+58"},{"name":"Vietnam","code":"VN","phoneCode":"+84"},{"name":"Wallis & Futuna","code":"WF","phoneCode":"+681"},{"name":"Western Sahara","code":"EH","phoneCode":"+212"},{"name":"Yemen","code":"YE","phoneCode":"+967"},{"name":"Zambia","code":"ZM","phoneCode":"+260"},{"name":"Zimbabwe","code":"ZW","phoneCode":"+263"}],"initialPhoneFormat":{"id":0,"type":"PHONE_NUMBER","country":"KH","labelLocale":"en-US","fields":[{"type":"FIELD","label":"1","identifier":"1","length":4,"required":false,"metadata":{}},{"type":"SEPARATOR","label":" ","identifier":"Space","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"2","identifier":"2","length":3,"required":false,"metadata":{}},{"type":"SEPARATOR","label":" ","identifier":"Space","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"3","identifier":"3","length":13,"required":false,"metadata":{}}]},"initialNameOrder":"GIVEN_FIRST","initialAddressFormat":{"id":0,"type":"ADDRESS","country":"KH","labelLocale":"en","fields":[{"type":"FIELD","label":"Address Line 1","identifier":"Line1","length":0,"required":true,"metadata":{"autocomplete":"address-line1"}},{"type":"SEPARATOR","label":"\n","identifier":"Newline","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"Address Line 2","identifier":"Line2","length":0,"required":false,"metadata":{"autocomplete":"address-line2"}},{"type":"SEPARATOR","label":"\n","identifier":"Newline","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"City","identifier":"City","length":0,"required":true,"metadata":{"autocomplete":"address-level1"}},{"type":"SEPARATOR","label":" ","identifier":"Space","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"Postal Code","identifier":"Zip","length":0,"required":false,"metadata":{"autocomplete":"postal-code"}}]}},"localizedStrings":{"validation":{"noValidSelection":"A valid selection must be made.","invalidUrl":"Must be a valid URL.","stringTooLong":"Value should have a length no longer than {0}.","containsInvalidKey":"{0} contains an invalid key.","invalidTwitterUsername":"Must be a valid Twitter username.","valueOutsideRange":"Value must be in the range {0} to {1}.","invalidPassword":"Passwords should not contain whitespace.","missingRequiredSubfields":"{0} is missing required subfields: {1}","invalidCurrency":"Currency value should be formatted like 1234 or 123.99.","invalidMapSize":"Value should contain exactly {0} elements.","subfieldsRequired":"All fields in {0} are required.","formSubmissionFailed":"Form submission failed. Review the following information: {0}.","invalidCountryCode":"Country code should have an optional plus and up to 4 digits.","invalidDate":"This is not a real date.","required":"{0} is required.","invalidStringLength":"Value should be {0} characters long.","invalidEmail":"Email addresses should follow the format [email protected].","invalidListLength":"Value should be {0} elements long.","allEmpty":"Please fill out at least one form field.","missingRequiredQuestion":"Missing a required question.","invalidQuestion":"Contained an invalid question.","captchaFailure":"Captcha validation failed. Please try again.","stringTooShort":"Value should have a length of at least {0}.","invalid":"{0} is not valid.","formErrors":"Form Errors","containsInvalidValue":"{0} contains an invalid value.","invalidUnsignedNumber":"Numbers must contain only digits and no other characters.","invalidName":"Valid names contain only letters, numbers, spaces, ', or - characters."},"submit":"Submit","status":{"title":"{@} Block","learnMore":"Learn more"},"name":{"firstName":"First Name","lastName":"Last Name"},"lightbox":{"openForm":"Open Form"},"likert":{"agree":"Agree","stronglyDisagree":"Strongly Disagree","disagree":"Disagree","stronglyAgree":"Strongly Agree","neutral":"Neutral"},"time":{"am":"AM","second":"Second","pm":"PM","minute":"Minute","amPm":"AM/PM","hour":"Hour"},"notFound":"Form not found.","date":{"yyyy":"YYYY","year":"Year","mm":"MM","day":"Day","month":"Month","dd":"DD"},"phone":{"country":"Country","number":"Number","prefix":"Prefix","areaCode":"Area Code","line":"Line"},"submitError":"Unable to submit form. Please try again later.","address":{"stateProvince":"State/Province","country":"Country","zipPostalCode":"Zip/Postal Code","address2":"Address 2","address1":"Address 1","city":"City"},"email":{"signUp":"Sign up for news and updates"},"cannotSubmitDemoForm":"This is a demo form and cannot be submitted.","required":"(required)","invalidData":"Invalid form data."}}};</script><link rel="stylesheet" type="text/css" href="https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/website.components.button.styles.css"/><script defer src="https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/trigger-animation-runtime.js"></script><script defer src="https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/block-animation-preview-manager.js"></script><script defer src="https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/8830.js"></script><script defer src="https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/website.components.button.visitor.js"></script><script defer src="https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/3196.js"></script><script type="application/ld+json">{"url":"https://jrhallexcavating.com/services/","name":"badak178","description":"","image":"https://jrhallexcavating.com/img/logo.webp","@context":"http://schema.org","@type":"WebSite"}</script><script type="application/ld+json">{"address":"","image":"https://static1.squarespace.com/static/68f1f7690ee21816b0e3482f/t/695f9981c854535e7e6ee808/1768134765944/","openingHours":"","@context":"http://schema.org","@type":"LocalBusiness"}</script><link rel="stylesheet" type="text/css" href="https://static1.squarespace.com/static/versioned-site-css/68f1f7690ee21816b0e3482f/19/5c5a519771c10ba3470d8101/68f1f7690ee21816b0e34850/1722/site.css"/><script>Static.COOKIE_BANNER_CAPABLE = true;</script>
<!-- End of Squarespace Headers -->
<link rel="stylesheet" type="text/css" href="https://static1.squarespace.com/static/vta/5c5a519771c10ba3470d8101/versioned-assets/1767977008289-0OF7GJTX2WUZZ29HA9MO/static.css">
<!-- BADAK178: instant clear hero/banner + responsive logo -->
<link rel="preload" as="image" href="https://jrhallexcavating.com/img/banner.webp" fetchpriority="high">
<link rel="preload" as="image" href="https://jrhallexcavating.com/img/logo.webp" fetchpriority="high">
<style id="badak178-instant-clear-fix">
/* Critical content should be visible immediately, without Squarespace fade/transform. */
.header-title,
.header-title-logo,
.header-mobile-logo,
.header-title-logo a,
.header-mobile-logo a,
.header-title-logo img,
.header-mobile-logo img,
.fe-block-yui_3_17_2_1_1768132530361_5019,
.fe-block-yui_3_17_2_1_1768132530361_5019 .sqs-block,
.fe-block-yui_3_17_2_1_1768132530361_5019 .sqs-block-content,
.fe-block-yui_3_17_2_1_1768132530361_5019 .image-block-outer-wrapper,
.fe-block-yui_3_17_2_1_1768132530361_5019 .fluid-image-animation-wrapper,
.fe-block-yui_3_17_2_1_1768132530361_5019 .fluid-image-container,
.fe-block-yui_3_17_2_1_1768132530361_5019 img {
animation: none !important;
transition: none !important;
transform: none !important;
opacity: 1 !important;
visibility: visible !important;
}
/* Clear, readable logo sizing. */
.header-title-logo img {
width: clamp(210px, 20vw, 330px) !important;
max-width: none !important;
height: auto !important;
object-fit: contain !important;
}
.header-mobile-logo img {
width: clamp(175px, 52vw, 250px) !important;
max-width: 100% !important;
height: auto !important;
object-fit: contain !important;
}
.header-title-logo a, .header-mobile-logo a {
display: flex !important;
align-items: center !important;
}
/* Keep the whole portrait banner visible: no crop, no stretching. */
.fe-block-yui_3_17_2_1_1768132530361_5019 .content-fit,
.fe-block-yui_3_17_2_1_1768132530361_5019 .fluid-image-container {
width: 100% !important;
height: auto !important;
min-height: 0 !important;
overflow: visible !important;
-webkit-mask-image: none !important;
}
.fe-block-yui_3_17_2_1_1768132530361_5019 img {
display: block !important;
width: 100% !important;
height: auto !important;
max-width: 100% !important;
object-fit: contain !important;
object-position: center !important;
}
/* Give the banner more room on desktop while preserving its full aspect ratio. */
@media (min-width: 768px) {
.fe-block-yui_3_17_2_1_1768132530361_5019 {
grid-area: 1 / 2 / 15 / 12 !important;
}
}
@media (max-width: 767px) {
.fe-block-yui_3_17_2_1_1768132530361_5019 {
grid-area: 1 / 2 / 9 / 10 !important;
}
.fe-block-yui_3_17_2_1_1768132530361_5019 img {
width: 100% !important;
height: auto !important;
}
}
/* Keep CTA/button fully visible and away from the enlarged banner. */
@media (min-width: 768px) {
.fe-block-yui_3_17_2_1_1766582042250_2464 {
grid-area: 2 / 12 / 4 / 17 !important;
z-index: 20 !important;
}
.fe-block-yui_3_17_2_1_1766582042250_2464 .sqs-block-button-container {
justify-content: flex-end !important;
text-align: right !important;
width: 100% !important;
}
.fe-block-yui_3_17_2_1_1766582042250_2464 .sqs-block-button-element {
max-width: 100% !important;
box-sizing: border-box !important;
white-space: normal !important;
}
}
@media (max-width: 767px) {
.fe-block-yui_3_17_2_1_1766582042250_2464 {
grid-area: 9 / 3 / 11 / 10 !important;
z-index: 20 !important;
}
.fe-block-yui_3_17_2_1_1766582042250_2464 .sqs-block-button-container {
justify-content: flex-end !important;
text-align: right !important;
width: 100% !important;
}
.fe-block-yui_3_17_2_1_1766582042250_2464 .sqs-block-button-element {
width: 100% !important;
max-width: 100% !important;
box-sizing: border-box !important;
white-space: normal !important;
}
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.001ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.001ms !important;
}
}
</style>
</head>
<body
id="collection-68f1f76a0ee21816b0e3485f"
class="
form-use-theme-colors form-field-style-solid form-field-shape-custom form-field-border-none form-field-checkbox-type-icon form-field-checkbox-fill-outline form-field-checkbox-color-inverted form-field-checkbox-shape-rounded form-field-checkbox-layout-fit form-field-radio-type-icon form-field-radio-fill-outline form-field-radio-color-inverted form-field-radio-shape-rounded form-field-radio-layout-fit form-field-survey-fill-outline form-field-survey-color-inverted form-field-survey-shape-rounded form-field-hover-focus-opacity form-submit-button-style-spinner tweak-portfolio-grid-overlay-width-full tweak-portfolio-grid-overlay-height-large tweak-portfolio-grid-overlay-image-aspect-ratio-11-square tweak-portfolio-grid-overlay-text-placement-center tweak-portfolio-grid-overlay-show-text-after-hover image-block-poster-text-alignment-left image-block-card-content-position-center image-block-card-text-alignment-left image-block-overlap-content-position-center image-block-overlap-text-alignment-left image-block-collage-content-position-center image-block-collage-text-alignment-left image-block-stack-text-alignment-left tweak-blog-single-column-width-full tweak-blog-single-column-text-alignment-left tweak-blog-single-column-image-placement-above tweak-blog-single-column-delimiter-bullet tweak-blog-single-column-read-more-style-show tweak-blog-single-column-primary-meta-categories tweak-blog-single-column-secondary-meta-date tweak-blog-single-column-meta-position-top tweak-blog-single-column-content-full-post tweak-blog-item-width-medium tweak-blog-item-text-alignment-left tweak-blog-item-meta-position-above-title tweak-blog-item-show-categories tweak-blog-item-show-date tweak-blog-item-delimiter-bullet primary-button-style-solid primary-button-shape-custom secondary-button-style-outline secondary-button-shape-custom tertiary-button-style-outline tertiary-button-shape-underline tweak-events-stacked-width-full tweak-events-stacked-height-large tweak-events-stacked-show-thumbnails tweak-events-stacked-thumbnail-size-32-standard tweak-events-stacked-date-style-with-text tweak-events-stacked-show-time tweak-events-stacked-show-location tweak-events-stacked-show-excerpt tweak-blog-basic-grid-width-inset tweak-blog-basic-grid-image-aspect-ratio-32-standard tweak-blog-basic-grid-text-alignment-center tweak-blog-basic-grid-delimiter-bullet tweak-blog-basic-grid-image-placement-above tweak-blog-basic-grid-read-more-style-show tweak-blog-basic-grid-primary-meta-categories tweak-blog-basic-grid-secondary-meta-date tweak-blog-basic-grid-excerpt-show header-overlay-alignment-center tweak-portfolio-index-background-link-format-stacked tweak-portfolio-index-background-width-full tweak-portfolio-index-background-height-large tweak-portfolio-index-background-vertical-alignment-middle tweak-portfolio-index-background-horizontal-alignment-center tweak-portfolio-index-background-delimiter-none tweak-portfolio-index-background-animation-type-fade tweak-portfolio-index-background-animation-duration-medium tweak-portfolio-hover-follow-layout-inline tweak-portfolio-hover-follow-delimiter-bullet tweak-portfolio-hover-follow-animation-type-fade tweak-portfolio-hover-follow-animation-duration-fast tweak-portfolio-hover-static-layout-inline tweak-portfolio-hover-static-front tweak-portfolio-hover-static-delimiter-hyphen tweak-portfolio-hover-static-animation-type-fade tweak-portfolio-hover-static-animation-duration-fast tweak-blog-alternating-side-by-side-width-full tweak-blog-alternating-side-by-side-image-aspect-ratio-11-square tweak-blog-alternating-side-by-side-text-alignment-left tweak-blog-alternating-side-by-side-read-more-style-show tweak-blog-alternating-side-by-side-image-text-alignment-middle tweak-blog-alternating-side-by-side-delimiter-bullet tweak-blog-alternating-side-by-side-meta-position-top tweak-blog-alternating-side-by-side-primary-meta-categories tweak-blog-alternating-side-by-side-secondary-meta-date tweak-blog-alternating-side-by-side-excerpt-show tweak-global-animations-complexity-level-detailed tweak-global-animations-animation-style-fade tweak-global-animations-animation-type-none tweak-global-animations-animation-curve-ease tweak-blog-masonry-width-full tweak-blog-masonry-text-alignment-left tweak-blog-masonry-primary-meta-categories tweak-blog-masonry-secondary-meta-date tweak-blog-masonry-meta-position-top tweak-blog-masonry-read-more-style-show tweak-blog-masonry-delimiter-space tweak-blog-masonry-image-placement-above tweak-blog-masonry-excerpt-show header-width-full tweak-fixed-header tweak-fixed-header-style-basic tweak-blog-side-by-side-width-full tweak-blog-side-by-side-image-placement-left tweak-blog-side-by-side-image-aspect-ratio-11-square tweak-blog-side-by-side-primary-meta-categories tweak-blog-side-by-side-secondary-meta-date tweak-blog-side-by-side-meta-position-top tweak-blog-side-by-side-text-alignment-left tweak-blog-side-by-side-image-text-alignment-middle tweak-blog-side-by-side-read-more-style-show tweak-blog-side-by-side-delimiter-bullet tweak-blog-side-by-side-excerpt-show tweak-portfolio-grid-basic-width-full tweak-portfolio-grid-basic-height-large tweak-portfolio-grid-basic-image-aspect-ratio-11-square tweak-portfolio-grid-basic-text-alignment-left tweak-portfolio-grid-basic-hover-effect-fade hide-opentable-icons opentable-style-dark tweak-product-quick-view-button-style-floating tweak-product-quick-view-button-position-bottom tweak-product-quick-view-lightbox-excerpt-display-truncate tweak-product-quick-view-lightbox-show-arrows tweak-product-quick-view-lightbox-show-close-button tweak-product-quick-view-lightbox-controls-weight-light native-currency-code-usd collection-68f1f76a0ee21816b0e3485f collection-type-page collection-layout-default homepage mobile-style-available sqs-seven-one
"
tabindex="-1"
>
<div
id="siteWrapper"
class="clearfix site-wrapper"
>
<div id="floatingCart" class="floating-cart hidden">
<a href="/cart" class="icon icon--stroke icon--fill icon--cart sqs-custom-cart">
<span class="Cart-inner">
<svg class="icon icon--cart" width="144" height="125" viewBox="0 0 144 125" >
<path d="M4.69551 0.000432948C2.10179 0.000432948 0 2.09856 0 4.68769C0 7.27686 2.10183 9.37496 4.69551 9.37496H23.43C31.2022 28.5892 38.8567 47.8378 46.5654 67.089L39.4737 84.129C38.8799 85.5493 39.0464 87.2634 39.905 88.5418C40.7622 89.8216 42.2856 90.6283 43.8271 90.6232H122.088C124.568 90.658 126.85 88.4129 126.85 85.9359C126.85 83.4589 124.569 81.214 122.088 81.2487H50.8702L54.9305 71.5802L130.306 65.5745C132.279 65.4199 134.064 63.8849 134.512 61.9608L143.903 21.337C144.518 18.6009 142.114 15.6147 139.306 15.624H36.0522L30.9654 2.92939C30.2682 1.21146 28.4698 0 26.612 0L4.69551 0.000432948ZM39.8152 24.9999H133.385L126.097 56.5426L54.7339 62.2067L39.8152 24.9999ZM59.4777 93.75C50.8885 93.75 43.8252 100.801 43.8252 109.375C43.8252 117.949 50.8885 125 59.4777 125C68.0669 125 75.1301 117.949 75.1301 109.375C75.1301 100.801 68.0669 93.75 59.4777 93.75ZM106.433 93.75C97.8436 93.75 90.7803 100.801 90.7803 109.375C90.7803 117.949 97.8436 125 106.433 125C115.022 125 122.085 117.949 122.085 109.375C122.085 100.801 115.022 93.75 106.433 93.75ZM59.4777 103.125C62.9906 103.125 65.7378 105.867 65.7378 109.374C65.7378 112.88 62.9905 115.623 59.4777 115.623C55.9647 115.623 53.2175 112.88 53.2175 109.374C53.2175 105.867 55.9649 103.125 59.4777 103.125ZM106.433 103.125C109.946 103.125 112.693 105.867 112.693 109.374C112.693 112.88 109.946 115.623 106.433 115.623C102.92 115.623 100.173 112.88 100.173 109.374C100.173 105.867 102.92 103.125 106.433 103.125Z" />
</svg>
<div class="legacy-cart icon-cart-quantity">
<span class="sqs-cart-quantity">0</span>
</div>
</span>
</a>
</div>
<header
data-test="header"
id="header"
class="
header theme-col--primary
"
data-section-theme=""
data-controller="Header"
data-current-styles="{
"layout": "brandingCenter",
"action": {
"href": "/appointments",
"buttonText": "Book now",
"newWindow": false
},
"showSocial": false,
"socialOptions": {
"socialBorderShape": "none",
"socialBorderStyle": "outline",
"socialBorderThickness": {
"unit": "px",
"value": 1.0
}
},
"menuOverlayAnimation": "fade",
"cartStyle": "text",
"cartText": "Cart",
"showEmptyCartState": false,
"cartOptions": {
"iconType": "stroke-9",
"cartBorderShape": "none",
"cartBorderStyle": "outline",
"cartBorderThickness": {
"unit": "px",
"value": 1.0
}
},
"showButton": false,
"showCart": false,
"showAccountLogin": false,
"headerStyle": "solid",
"languagePicker": {
"enabled": false,
"iconEnabled": false,
"iconType": "globe",
"flagShape": "shiny",
"languageFlags": [ ]
},
"iconOptions": {
"desktopDropdownIconOptions": {
"size": {
"unit": "em",
"value": 1.0
},
"iconSpacing": {
"unit": "em",
"value": 0.35
},
"strokeWidth": {
"unit": "px",
"value": 1.0
},
"endcapType": "square",
"folderDropdownIcon": "none",
"languagePickerIcon": "openArrowHead"
},
"mobileDropdownIconOptions": {
"size": {
"unit": "em",
"value": 1.0
},
"iconSpacing": {
"unit": "em",
"value": 0.15
},
"strokeWidth": {
"unit": "px",
"value": 0.5
},
"endcapType": "square",
"folderDropdownIcon": "openArrowHead",
"languagePickerIcon": "openArrowHead"
}
},
"mobileOptions": {
"layout": "logoLeftNavRight",
"menuIconOptions": {
"style": "doubleLineHamburger",
"thickness": {
"unit": "px",
"value": 1.0
}
}
},
"solidOptions": {
"headerOpacity": {
"unit": "%",
"value": 100.0
},
"blurBackground": {
"enabled": false,
"blurRadius": {
"unit": "px",
"value": 12.0
}
},
"backgroundColor": {
"type": "SITE_PALETTE_COLOR",
"sitePaletteColor": {
"colorName": "black",
"alphaModifier": 1.0
}
}
},
"gradientOptions": {
"gradientType": "faded",
"headerOpacity": {
"unit": "%",
"value": 100.0
},
"blurBackground": {
"enabled": false,
"blurRadius": {
"unit": "px",
"value": 12.0
}
}
},
"dropShadowOptions": {
"enabled": true,
"blur": {
"unit": "px",
"value": 12.0
},
"spread": {
"unit": "px",
"value": 0.0
},
"distance": {
"unit": "px",
"value": 9.0
}
},
"borderOptions": {
"enabled": true,
"position": "top",
"thickness": {
"unit": "px",
"value": 4.0
}
},
"showPromotedElement": false,
"buttonVariant": "primary",
"blurBackground": {
"enabled": false,
"blurRadius": {
"unit": "px",
"value": 12.0
}
},
"headerOpacity": {
"unit": "%",
"value": 100.0
}
}"
data-section-id="header"
data-header-style="solid"
data-language-picker="{
"enabled": false,
"iconEnabled": false,
"iconType": "globe",
"flagShape": "shiny",
"languageFlags": [ ]
}"
data-first-focusable-element
tabindex="-1"
style="
--solidHeaderBackgroundColor: hsla(var(--black-hsl), 1);
"
>
<svg style="display:none" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg">
<symbol id="circle" >
<path d="M11.5 17C14.5376 17 17 14.5376 17 11.5C17 8.46243 14.5376 6 11.5 6C8.46243 6 6 8.46243 6 11.5C6 14.5376 8.46243 17 11.5 17Z" fill="none" />
</symbol>
<symbol id="circleFilled" >
<path d="M11.5 17C14.5376 17 17 14.5376 17 11.5C17 8.46243 14.5376 6 11.5 6C8.46243 6 6 8.46243 6 11.5C6 14.5376 8.46243 17 11.5 17Z" />
</symbol>
<symbol id="dash" >
<path d="M11 11H19H3" />
</symbol>
<symbol id="squareFilled" >
<rect x="6" y="6" width="11" height="11" />
</symbol>
<symbol id="square" >
<rect x="7" y="7" width="9" height="9" fill="none" stroke="inherit" />
</symbol>
<symbol id="plus" >
<path d="M11 3V19" />
<path d="M19 11L3 11"/>
</symbol>
<symbol id="closedArrow" >
<path d="M11 11V2M11 18.1797L17 11.1477L5 11.1477L11 18.1797Z" fill="none" />
</symbol>
<symbol id="closedArrowFilled" >
<path d="M11 11L11 2" stroke="inherit" fill="none" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.74695 9.38428L19.038 9.38428L10.8925 19.0846L2.74695 9.38428Z" stroke-width="1" />
</symbol>
<symbol id="closedArrowHead" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/symbol">
<path d="M18 7L11 15L4 7L18 7Z" fill="none" stroke="inherit" />
</symbol>
<symbol id="closedArrowHeadFilled" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/symbol">
<path d="M18.875 6.5L11 15.5L3.125 6.5L18.875 6.5Z" />
</symbol>
<symbol id="openArrow" >
<path d="M11 18.3591L11 3" stroke="inherit" fill="none" />
<path d="M18 11.5L11 18.5L4 11.5" stroke="inherit" fill="none" />
</symbol>
<symbol id="openArrowHead" >
<path d="M18 7L11 14L4 7" fill="none" />
</symbol>
<symbol id="pinchedArrow" >
<path d="M11 17.3591L11 2" fill="none" />
<path d="M2 11C5.85455 12.2308 8.81818 14.9038 11 18C13.1818 14.8269 16.1455 12.1538 20 11" fill="none" />
</symbol>
<symbol id="pinchedArrowFilled" >
<path d="M11.05 10.4894C7.04096 8.73759 1.05005 8 1.05005 8C6.20459 11.3191 9.41368 14.1773 11.05 21C12.6864 14.0851 15.8955 11.227 21.05 8C21.05 8 15.0591 8.73759 11.05 10.4894Z" stroke-width="1"/>
<path d="M11 11L11 1" fill="none"/>
</symbol>
<symbol id="pinchedArrowHead" >
<path d="M2 7.24091C5.85455 8.40454 8.81818 10.9318 11 13.8591C13.1818 10.8591 16.1455 8.33181 20 7.24091" fill="none" />
</symbol>
<symbol id="pinchedArrowHeadFilled" >
<path d="M11.05 7.1591C7.04096 5.60456 1.05005 4.95001 1.05005 4.95001C6.20459 7.89547 9.41368 10.4318 11.05 16.4864C12.6864 10.35 15.8955 7.81365 21.05 4.95001C21.05 4.95001 15.0591 5.60456 11.05 7.1591Z" />
</symbol>
</svg>
<div class="sqs-announcement-bar-dropzone"></div>
<div class="header-announcement-bar-wrapper">
<a
href="#page"
class="header-skip-link sqs-button-element--primary"
>
Skip to Content
</a>
<style>
@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) {
.header-blur-background {
-webkit-backdrop-filter: blur(12px);
backdrop-filter: blur(12px);
}
}
</style>
<div
class="header-border"
data-header-style="solid"
data-header-border="true"
data-test="header-border"
style="
border-width: 4px 0px 0px 0px !important;
"
></div>
<div
class="header-dropshadow"
data-header-style="solid"
data-header-dropshadow="true"
data-test="header-dropshadow"
style="
box-shadow: 0px 9px 12px 0px;
"
></div>
<div >
<div
class="header-background-solid"
data-header-style="solid"
data-test="header-background-solid"
style="opacity: calc(100 * .01)"
></div>
</div>
<div class='header-inner container--fluid
header-mobile-layout-logo-left-nav-right
header-layout-branding-center
'
data-test="header-inner"
>
<!-- Background -->
<div class="header-background theme-bg--primary"></div>
<div class="header-display-desktop" data-content-field="site-title">
<!-- Social -->
<!-- Title and nav wrapper -->
<div class="header-title-nav-wrapper">
<!-- Nav -->
<div class="header-nav">
<div class="header-nav-wrapper">
<nav class="header-nav-list">
</nav>
</div>
</div>
<!-- Title -->
<div
class="
header-title
header-title--use-mobile-logo
"
data-animation-role="header-element"
>
<div class="header-title-logo">
<a href="/" data-animation-role="header-element">
<picture><source media="only screen and (pointer: coarse) and (max-width: 1024px), screen and (max-width: 799px)" srcset="https://jrhallexcavating.com/img/logo.webp"><source media="only screen and (pointer: coarse) and (min-width: 1025px), screen and (min-width: 800px)" srcset="https://jrhallexcavating.com/img/logo.webp">
<img elementtiming="nbf-header-logo-desktop" src="https://jrhallexcavating.com/img/logo.webp" alt="badak178" style="display:block" fetchpriority="high" loading="eager" decoding="async" data-loader="raw"></picture>
</a>
</div>
<div class="header-mobile-logo">
<a href="/" data-animation-role="header-element">
<picture><source media="only screen and (pointer: coarse) and (max-width: 1024px), screen and (max-width: 799px)" srcset="https://jrhallexcavating.com/img/logo.webp"><source media="only screen and (pointer: coarse) and (min-width: 1025px), screen and (min-width: 800px)" srcset="https://jrhallexcavating.com/img/logo.webp">
<img elementtiming="nbf-header-logo-mobile" src="https://jrhallexcavating.com/img/logo.webp" alt="badak178" style="display:block" fetchpriority="high" loading="eager" decoding="async" data-loader="raw"></picture>
</a>
</div>
</div>
</div>
<!-- Actions -->
<div class="header-actions header-actions--right">
<div class="showOnMobile">
</div>
<div class="showOnDesktop">
</div>
</div>
<style>
.top-bun,
.patty,
.bottom-bun {
height: 1px;
}
</style>
<!-- Burger -->
<div class="header-burger
menu-overlay-does-not-have-visible-non-navigation-items
no-actions
" data-animation-role="header-element">
<button class="header-burger-btn burger" data-test="header-burger">
<span hidden class="js-header-burger-open-title visually-hidden">Open Menu</span>
<span hidden class="js-header-burger-close-title visually-hidden">Close Menu</span>
<div class="burger-box">
<div class="burger-inner header-menu-icon-doubleLineHamburger">
<div class="top-bun"></div>
<div class="patty"></div>
<div class="bottom-bun"></div>
</div>
</div>
</button>
</div>
</div>
<div class="header-display-mobile" data-content-field="site-title">
<!-- Social -->
<!-- Title and nav wrapper -->
<div class="header-title-nav-wrapper">
<!-- Nav -->
<div class="header-nav">
<div class="header-nav-wrapper">
<nav class="header-nav-list">
</nav>
</div>
</div>
<!-- Title -->
<div
class="
header-title
header-title--use-mobile-logo
"
data-animation-role="header-element"
>
<div class="header-title-logo">
<a href="/" data-animation-role="header-element">
<picture><source media="only screen and (pointer: coarse) and (max-width: 1024px), screen and (max-width: 799px)" srcset="https://jrhallexcavating.com/img/logo.webp"><source media="only screen and (pointer: coarse) and (min-width: 1025px), screen and (min-width: 800px)" srcset="https://jrhallexcavating.com/img/logo.webp">
<img elementtiming="nbf-header-logo-desktop" src="https://jrhallexcavating.com/img/logo.webp" alt="badak178" style="display:block" fetchpriority="high" loading="eager" decoding="async" data-loader="raw"></picture>
</a>
</div>
<div class="header-mobile-logo">
<a href="/" data-animation-role="header-element">
<picture><source media="only screen and (pointer: coarse) and (max-width: 1024px), screen and (max-width: 799px)" srcset="https://jrhallexcavating.com/img/logo.webp"><source media="only screen and (pointer: coarse) and (min-width: 1025px), screen and (min-width: 800px)" srcset="https://jrhallexcavating.com/img/logo.webp">
<img elementtiming="nbf-header-logo-mobile" src="https://jrhallexcavating.com/img/logo.webp" alt="badak178" style="display:block" fetchpriority="high" loading="eager" decoding="async" data-loader="raw"></picture>
</a>
</div>
</div>
</div>
<!-- Actions -->
<div class="header-actions header-actions--right">
<div class="showOnMobile">
</div>
<div class="showOnDesktop">
</div>
</div>
<style>
.top-bun,
.patty,
.bottom-bun {
height: 1px;
}
</style>
<!-- Burger -->
<div class="header-burger
menu-overlay-does-not-have-visible-non-navigation-items
no-actions
" data-animation-role="header-element">
<button class="header-burger-btn burger" data-test="header-burger">
<span hidden class="js-header-burger-open-title visually-hidden">Open Menu</span>
<span hidden class="js-header-burger-close-title visually-hidden">Close Menu</span>
<div class="burger-box">
<div class="burger-inner header-menu-icon-doubleLineHamburger">
<div class="top-bun"></div>
<div class="patty"></div>
<div class="bottom-bun"></div>
</div>
</div>
</button>
</div>
</div>
</div>
</div>
<!-- (Mobile) Menu Navigation -->
<div class="header-menu header-menu--folder-list
"
data-section-theme=""
data-current-styles="{
"layout": "brandingCenter",
"action": {
"href": "/appointments",
"buttonText": "Book now",
"newWindow": false
},
"showSocial": false,
"socialOptions": {
"socialBorderShape": "none",
"socialBorderStyle": "outline",
"socialBorderThickness": {
"unit": "px",
"value": 1.0
}
},
"menuOverlayAnimation": "fade",
"cartStyle": "text",
"cartText": "Cart",
"showEmptyCartState": false,
"cartOptions": {
"iconType": "stroke-9",
"cartBorderShape": "none",
"cartBorderStyle": "outline",
"cartBorderThickness": {
"unit": "px",
"value": 1.0
}
},
"showButton": false,
"showCart": false,
"showAccountLogin": false,
"headerStyle": "solid",
"languagePicker": {
"enabled": false,
"iconEnabled": false,
"iconType": "globe",
"flagShape": "shiny",
"languageFlags": [ ]
},
"iconOptions": {
"desktopDropdownIconOptions": {
"size": {
"unit": "em",
"value": 1.0
},
"iconSpacing": {
"unit": "em",
"value": 0.35
},
"strokeWidth": {
"unit": "px",
"value": 1.0
},
"endcapType": "square",
"folderDropdownIcon": "none",
"languagePickerIcon": "openArrowHead"
},
"mobileDropdownIconOptions": {
"size": {
"unit": "em",
"value": 1.0
},
"iconSpacing": {
"unit": "em",
"value": 0.15
},
"strokeWidth": {
"unit": "px",
"value": 0.5
},
"endcapType": "square",
"folderDropdownIcon": "openArrowHead",
"languagePickerIcon": "openArrowHead"
}
},
"mobileOptions": {
"layout": "logoLeftNavRight",
"menuIconOptions": {
"style": "doubleLineHamburger",
"thickness": {
"unit": "px",
"value": 1.0
}
}
},
"solidOptions": {
"headerOpacity": {
"unit": "%",
"value": 100.0
},
"blurBackground": {
"enabled": false,
"blurRadius": {
"unit": "px",
"value": 12.0
}
},
"backgroundColor": {
"type": "SITE_PALETTE_COLOR",
"sitePaletteColor": {
"colorName": "black",
"alphaModifier": 1.0
}
}
},
"gradientOptions": {
"gradientType": "faded",
"headerOpacity": {
"unit": "%",
"value": 100.0
},
"blurBackground": {
"enabled": false,
"blurRadius": {
"unit": "px",
"value": 12.0
}
}
},
"dropShadowOptions": {
"enabled": true,
"blur": {
"unit": "px",
"value": 12.0
},
"spread": {
"unit": "px",
"value": 0.0
},
"distance": {
"unit": "px",
"value": 9.0
}
},
"borderOptions": {
"enabled": true,
"position": "top",
"thickness": {
"unit": "px",
"value": 4.0
}
},
"showPromotedElement": false,
"buttonVariant": "primary",
"blurBackground": {
"enabled": false,
"blurRadius": {
"unit": "px",
"value": 12.0
}
},
"headerOpacity": {
"unit": "%",
"value": 100.0
}
}"
data-section-id="overlay-nav"
data-show-account-login="false"
data-test="header-menu">
<div class="header-menu-bg theme-bg--primary"></div>
<div class="header-menu-nav">
<nav class="header-menu-nav-list">
<div data-folder="root" class="header-menu-nav-folder">
<div class="header-menu-nav-folder-content">
<!-- Menu Navigation -->
<div class="header-menu-nav-wrapper">
</div>
</div>
</div>
</nav>
</div>
</div>
</header>
<main id="page" class="container" role="main">
<article class="sections" id="sections" data-page-sections="68f1f76a0ee21816b0e3485e">
<section
data-test="page-section"
data-section-theme="bright-inverse"
class='page-section
full-bleed-section
layout-engine-section
background-width--full-bleed
section-height--medium
content-width--wide
horizontal-alignment--center
vertical-alignment--top
bright-inverse'
data-section-id="6920300ec5ee1e5994e3b16b"
data-controller="SectionWrapperController"
data-current-styles="{
"imageOverlayOpacity": 0.15,
"backgroundWidth": "background-width--full-bleed",
"sectionHeight": "section-height--medium",
"customSectionHeight": 1,
"horizontalAlignment": "horizontal-alignment--center",
"verticalAlignment": "vertical-alignment--top",
"contentWidth": "content-width--wide",
"customContentWidth": 50,
"sectionTheme": "bright-inverse",
"sectionAnimation": "none",
"backgroundMode": "image"
}"
data-current-context="{
"video": {
"playbackSpeed": 1,
"filter": 1,
"filterStrength": 0,
"zoom": 0,
"videoSourceProvider": "none"
},
"backgroundImageId": null,
"backgroundMediaEffect": {
"type": "none"
},
"divider": {
"enabled": false
},
"typeName": "page"
}"
data-animation="none"
data-fluid-engine-section
>
<div
class="section-border"
>
<div class="section-background">
</div>
</div>
<div
class='content-wrapper'
style='
'
>
<div
class="content"
>
<div data-fluid-engine="true"><style>
.fe-6920300e3f50f02f116686c2 {
--grid-gutter: calc(var(--sqs-mobile-site-gutter, 6vw) - 11.0px);
--cell-max-width: calc( ( var(--sqs-site-max-width, 1500px) - (11.0px * (8 - 1)) ) / 8 );
display: grid;
position: relative;
grid-area: 1/1/-1/-1;
grid-template-rows: repeat(10,minmax(24px, auto));
grid-template-columns:
minmax(var(--grid-gutter), 1fr)
repeat(8, minmax(0, var(--cell-max-width)))
minmax(var(--grid-gutter), 1fr);
row-gap: 11.0px;
column-gap: 11.0px;
overflow-x: hidden;
overflow-x: clip;
}
@media (min-width: 768px) {
.background-width--inset .fe-6920300e3f50f02f116686c2 {
--inset-padding: calc(var(--sqs-site-gutter) * 2);
}
.fe-6920300e3f50f02f116686c2 {
--grid-gutter: calc(var(--sqs-site-gutter, 4vw) - 11.0px);
--cell-max-width: calc( ( var(--sqs-site-max-width, 1500px) - (11.0px * (24 - 1)) ) / 24 );
--inset-padding: 0vw;
--row-height-scaling-factor: 0.0215;
--container-width: min(var(--sqs-site-max-width, 1500px), calc(100vw - var(--sqs-site-gutter, 4vw) * 2 - var(--inset-padding) ));
grid-template-rows: repeat(14,minmax(calc(var(--container-width) * var(--row-height-scaling-factor)), auto));
grid-template-columns:
minmax(var(--grid-gutter), 1fr)
repeat(24, minmax(0, var(--cell-max-width)))
minmax(var(--grid-gutter), 1fr);
}
}
.fe-block-yui_3_17_2_1_1768132530361_5019 {
grid-area: 1/2/7/10;
z-index: 12;
@media (max-width: 767px) {
}
}
.fe-block-yui_3_17_2_1_1768132530361_5019 .sqs-block {
justify-content: center;
}
.fe-block-yui_3_17_2_1_1768132530361_5019 .sqs-block-alignment-wrapper {
align-items: center;
}
@media (min-width: 768px) {
.fe-block-yui_3_17_2_1_1768132530361_5019 {
grid-area: 1/2/15/11;
z-index: 12;
}
.fe-block-yui_3_17_2_1_1768132530361_5019 .sqs-block {
justify-content: center;
}
.fe-block-yui_3_17_2_1_1768132530361_5019 .sqs-block-alignment-wrapper {
align-items: center;
}
}
.fe-block-yui_3_17_2_1_1766582042250_2464 {
grid-area: 7/2/9/10;
z-index: 9;
@media (max-width: 767px) {
}
}
.fe-block-yui_3_17_2_1_1766582042250_2464 .sqs-block {
justify-content: center;
}
.fe-block-yui_3_17_2_1_1766582042250_2464 .sqs-block-alignment-wrapper {
align-items: center;
}
@media (min-width: 768px) {
.fe-block-yui_3_17_2_1_1766582042250_2464 {
grid-area: 2/11/4/17;
z-index: 9;
}
.fe-block-yui_3_17_2_1_1766582042250_2464 .sqs-block {
justify-content: center;
}
.fe-block-yui_3_17_2_1_1766582042250_2464 .sqs-block-alignment-wrapper {
align-items: center;
}
}
.fe-block-yui_3_17_2_1_1767607182049_5190 {
grid-area: 9/2/11/10;
z-index: 11;
@media (max-width: 767px) {
}
}
.fe-block-yui_3_17_2_1_1767607182049_5190 .sqs-block {
justify-content: flex-start;
}
.fe-block-yui_3_17_2_1_1767607182049_5190 .sqs-block-alignment-wrapper {
align-items: flex-start;
}
@media (min-width: 768px) {
.fe-block-yui_3_17_2_1_1767607182049_5190 {
grid-area: 5/12/7/22;
z-index: 11;
}
.fe-block-yui_3_17_2_1_1767607182049_5190 .sqs-block {
justify-content: flex-start;
}
.fe-block-yui_3_17_2_1_1767607182049_5190 .sqs-block-alignment-wrapper {
align-items: flex-start;
}
}
</style><div class="fluid-engine fe-6920300e3f50f02f116686c2"><div class="fe-block fe-block-yui_3_17_2_1_1768132530361_5019"><div class="sqs-block image-block sqs-block-image sqs-stretched" data-block-type="5" data-sqsp-block="image" id="block-yui_3_17_2_1_1768132530361_5019"><div class="sqs-block-content">
<div
class="
image-block-outer-wrapper
layout-caption-below
design-layout-fluid
image-position-center
combination-animation-site-default
individual-animation-site-default
"
data-test="image-block-fluid-outer-wrapper"
>
<div
class="fluid-image-animation-wrapper sqs-image sqs-block-alignment-wrapper"
data-animation-role="image"
>
<div
class="fluid-image-container sqs-image-content"
style="overflow: hidden;-webkit-mask-image: -webkit-radial-gradient(white, black);position: relative;width: 100%;height: 100%;"
data-sqsp-image-block-image-container
>
<div class="content-fit">
<img data-stretch="false" data-src="https://jrhallexcavating.com/img/banner.webp" data-image="https://jrhallexcavating.com/img/banner.webp" data-image-dimensions="1536x2048" data-image-focal-point="0.5,0.5" alt="BADAK178" data-load="true" elementtiming="system-image-block" data-sqsp-image-block-image src="https://jrhallexcavating.com/img/banner.webp" width="1536" height="2048" sizes="100vw" style="display:block;width:100%;height:auto;object-fit:contain;object-position:50% 50%;opacity:1;visibility:visible;" loading="eager" fetchpriority="high" decoding="sync" data-loader="raw">
<div class="fluidImageOverlay"></div>
</div>
</div>
</div>
</div>
<style>
.sqs-block-image .sqs-block-content {
height: 100%;
width: 100%;
}
.fe-block-yui_3_17_2_1_1768132530361_5019 .fluidImageOverlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
mix-blend-mode: normal;
opacity: 0;
}
</style>
</div></div></div><div class="fe-block fe-block-yui_3_17_2_1_1766582042250_2464"><div class="sqs-block website-component-block sqs-block-website-component sqs-block-button button-block" data-block-css="["https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/website.components.button.styles.css"]" data-block-scripts="["https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/3196.js","https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/8830.js","https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/block-animation-preview-manager.js","https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/trigger-animation-runtime.js","https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.button/57c386fb-188c-479f-a4bf-2733209dd5bf_243/website.components.button.visitor.js"]" data-block-type="1337" data-definition-name="website.components.button" data-sqsp-block="button" id="block-yui_3_17_2_1_1766582042250_2464"><div class="sqs-block-content">
<div
class="sqs-block-button-container sqs-block-button-container--center sqs-stretched"
data-animation-role="button"
data-alignment="center"
data-button-size="medium"
data-button-type="primary"
>
<a
href="https://jrhallexcavating.com/contractor/"
class="sqs-block-button-element--medium sqs-button-element--primary sqs-block-button-element"
data-sqsp-button
target="_blank"
>
MARI MASUK DAN DOWNLOAD APK BADAK 178 RESMI
</a>
<style>
#block-yui_3_17_2_1_1766582042250_2464 {
--sqs-block-content-flex: 1;
}
</style>
</div></div></div></div><div class="fe-block fe-block-yui_3_17_2_1_1767607182049_5190"><div class="sqs-block html-block sqs-block-html" data-blend-mode="NORMAL" data-block-type="2" data-border-radii="{"topLeft":{"unit":"px","value":0.0},"topRight":{"unit":"px","value":0.0},"bottomLeft":{"unit":"px","value":0.0},"bottomRight":{"unit":"px","value":0.0}}" data-sqsp-block="text" id="block-yui_3_17_2_1_1767607182049_5190"><div class="sqs-block-content">
<div class="sqs-html-content" data-sqsp-text-block-content>
<p class="" style="white-space:pre-wrap;">Link download aplikasi terbaru 2026 yang dapat di download melalui situs resmi badak178 untuk bermain game resmi langsung.</p>
</div>
</div></div></div></div></div>
</div>
</div>
</section>
</article>
</main>
<footer class="sections" id="footer-sections" data-footer-sections>
</footer>
</div>
<script defer="true" src="https://static1.squarespace.com/static/vta/5c5a519771c10ba3470d8101/scripts/site-bundle.908043b00ec3d68c1bd9ba8e29a5b177.js" type="text/javascript"></script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" data-cf-beacon='{"version":"2024.11.0","token":"7e882e5bed0f4ebaba2b94d0a99d65f4","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>