Sách Cha Giàu Cha Nghèo: Thay Đổi Tư Duy Tài Chính, Thay Đổi Cuộc Đời – Robert Kiyosaki
(function(firebaseConfig, initialAuthToken, appId) {
window.__firebase_config = firebaseConfig;
window.__initial_auth_token = initialAuthToken;
window.__app_id = appId;
})(“n{n “apiKey”: “AIzaSyCqyCcs2R2e7AegGjvFAwG98wlamtbHvZY”,n “authDomain”: “bard-frontend.firebaseapp.com”,n “projectId”: “bard-frontend”,n “storageBucket”: “bard-frontend.firebasestorage.app”,n “messagingSenderId”: “175205271074”,n “appId”: “1:175205271074:web:2b7bd4d34d33bf38e6ec7b”n}n”,”eyJhbGciOiJSUzI1NiIsImtpZCI6IjExNjRiNzdiNDMzZDdhMDAyMWI4NjE4YjhjYTU3ZTMyZGI5MWUxMTMiLCJ0eXAiOiJKV1QifQ.eyJzdWIiOiJmaXJlYmFzZS1hZG1pbnNkay1mYnN2Y0BiYXJkLWZyb250ZW5kLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwiYXVkIjoiaHR0cHM6Ly9pZGVudGl0eXRvb2xraXQuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmlkZW50aXR5LmlkZW50aXR5dG9vbGtpdC52MS5JZGVudGl0eVRvb2xraXQiLCJ1aWQiOiIwOTkyMDU1MDE0NzUzNjUxNTA1MiIsImlzcyI6ImZpcmViYXNlLWFkbWluc2RrLWZic3ZjQGJhcmQtZnJvbnRlbmQuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJjbGFpbXMiOnsiYXBwSWQiOiJjXzVmYmFhNWY0NzQyNDcwOWRfY29tYm8tMy1zYWNoLWNodW5nLWtob2FuLWNhbnNsaW0uaHRtbC0xMDkifSwiZXhwIjoxNzg5NDU1MTk2LCJpYXQiOjE3ODk0NTE1OTYsImFsZyI6IlJTMjU2In0.S0Zashz8Ce7DEwOZK3UJBLI2BLGGvTAeFgcdy7xrveHT7Qxc334-n7eyWSJC8D9tvXFWz9rVwG5JW2G2oXM0vHWs5WyecYvBnNSLZEWkTxaYK2FMWu2L8fkbseshuQDadQpj9wPT_2T86aqPSK6rjH4zQXUbKNVXKSvr-y-dkTHHO3owPjjWeq0BmfYdhgkYgzwWS2DTg26L11ahItMrRdfKngVtE_dukxpUSySL01XF4CHEu-YGadEDU1SPbNS_d4BSBfXVUoIphcGoi5zwMZWP1lYnd9zamN3OSSdNNv3yDiHfiHsXe7SSYxVBmFPh1uUm1VRDyvEKXnpLPKZYhw”,”c_5fbaa5f47424709d_combo-3-sach-chung-khoan-canslim.html-109″)
document.addEventListener(‘input’, (event) => {
if (event.target && (event.target.isContentEditable || event.target.hasAttribute(‘contenteditable’))) {
const clonedDoc = document.cloneNode(true);
const injectedScripts = clonedDoc.querySelectorAll(‘[data-bard-client-injected=”true”]’);
injectedScripts.forEach(el => el.remove());
window.parent.postMessage({
type: ‘inlineEdit’,
html: ‘n’ + clonedDoc.documentElement.outerHTML
}, ‘*’);
}
});
(function(){‘use strict’;window.addEventListener(“message”,a=>{a.data&&a.data.type===”SUPPLEMENTAL_DATA_UPDATE”&&window.dispatchEvent(new CustomEvent(“supplementaldataupdate”,{detail:a.data.data}))});}).call(this);
(function(){‘use strict’;var h=typeof Object.defineProperties==”function”?Object.defineProperty:function(a,c,d){if(a==Array.prototype||a==Object.prototype)return a;a[c]=d.value;return a};function l(a){a=[“object”==typeof globalThis&&globalThis,a,”object”==typeof window&&window,”object”==typeof self&&self,”object”==typeof global&&global];for(var c=0;c<a.length;++c){var d=a[c];if(d&&d.Math==Math)return d}throw Error("Cannot find global object");}var n=l(this);
function p(a,c){if(c)a:{var d=n;a=a.split(".");for(var b=0;b<a.length-1;b++){var e=a[b];if(!(e in d))break a;d=d[e]}a=a[a.length-1];b=d[a];c=c(b);c!=b&&c!=null&&h(d,a,{configurable:!0,writable:!0,value:c})}}function r(a){function c(b){return a.next(b)}function d(b){return a.throw(b)}return new Promise(function(b,e){function f(g){g.done?b(g.value):Promise.resolve(g.value).then(c,d).then(f,e)}f(a.next())})}function t(a){return r(a())}
p("Object.values",function(a){return a?a:function(c){var d=[],b;for(b in c)Object.prototype.hasOwnProperty.call(c,b)&&d.push(c[b]);return d}});p("Array.prototype.includes",function(a){return a?a:function(c,d){var b=this;b instanceof String&&(b=String(b));var e=b.length;d=d||0;for(d<0&&(d=Math.max(d+e,0));d{d[e]=b[e]})};var v=(()=>{var a=0;return()=>{a+=1;return`u${`0000${(Math.random()*1679616<<0).toString(36)}`.slice(-4)}${a}`}})();function w(a){var c=[];for(let d=0,b=a.length;d{var b=new Image;b.onload=()=>{b.decode().then(()=>{requestAnimationFrame(()=>c(b))})};b.onerror=d;b.crossOrigin=”anonymous”;b.decoding=”async”;b.src=a})}
function C(a){return t(function*(){return Promise.resolve().then(()=>(new XMLSerializer).serializeToString(a)).then(encodeURIComponent).then(c=>`data:image/svg+xml;charset=utf-8,${c}`)})}
function D(a,c,d){return t(function*(){var b=document.createElementNS(“http://www.w3.org/2000/svg”,”svg”),e=document.createElementNS(“http://www.w3.org/2000/svg”,”foreignObject”);b.setAttribute(“width”,`${c}`);b.setAttribute(“height”,`${d}`);b.setAttribute(“viewBox”,`0 0 ${c} ${d}`);e.setAttribute(“width”,”100%”);e.setAttribute(“height”,”100%”);e.setAttribute(“x”,”0″);e.setAttribute(“y”,”0″);e.setAttribute(“externalResourcesRequired”,”true”);b.appendChild(e);e.appendChild(a);return C(b)})}
var E=(a,c)=>{if(a instanceof c)return!0;a=Object.getPrototypeOf(a);return a===null?!1:a.constructor.name===c.name||E(a,c)};function aa(a,c){return y(c).map(d=>{var b=a.getPropertyValue(d),e=a.getPropertyPriority(d);return`${d}: ${b}${e?” !important”:””};`}).join(” “)}
function F(a,c,d,b){a=window.getComputedStyle(a,d);var e=a.getPropertyValue(“content”);if(e!==””&&e!==”none”){var f=v();try{c.className=`${c.className} ${f}`}catch(k){return}e=document.createElement(“style”);var g=e.appendChild;d=`.${f}:${d}`;a.cssText?(b=a.getPropertyValue(“content”),b=`${a.cssText} content: ‘${b.replace(/’|”/g,””)}’;`):b=aa(a,b);g.call(e,document.createTextNode(`${d}{${b}}`));c.appendChild(e)}};function G(a){return a.search(/^(data:)/)!==-1}function H(a,c,d){return t(function*(){var b=yield fetch(a,c);if(b.status===404)throw Error(`Resource “${b.url}” not found`);var e=yield b.blob();return new Promise((f,g)=>{var k=new FileReader;k.onerror=g;k.onloadend=()=>{try{f(d({A:b,result:k.result}))}catch(m){g(m)}};k.readAsDataURL(e)})})}const I={};function ba(a,c,d){var b=a.replace(/?.*/,””);d&&(b=a);/ttf|otf|eot|woff2?/i.test(b)&&(b=b.replace(/.*//,””));return c?`[${c}]${b}`:b}
function J(a,c,d){return t(function*(){var b=ba(a,c,d.G);if(I[b]!=null)return I[b];d.C&&(a+=(/?/.test(a)?”&”:”?”)+(new Date).getTime());try{let f=yield H(a,d.l,({A:g,result:k})=>{c||(c=g.headers.get(“Content-Type”)||””);return k.split(/,/)[1]});var e=`data:${c};base64,${f}`}catch(f){e=d.o||””}return I[b]=e})};const K={R:”application/font-woff”,S:”application/font-woff”,O:”application/font-truetype”,D:”application/vnd.ms-fontobject”,J:”image/png”,I:”image/jpeg”,H:”image/jpeg”,F:”image/gif”,N:”image/tiff”,M:”image/svg+xml”,P:”image/webp”};function L(a){return(a=/.([^./]*?)$/g.exec(a))?a[1]:””};function ca(a){return t(function*(){var c=a.toDataURL();return c===”data:,”?a.cloneNode(!1):B(c)})}function da(a,c){return t(function*(){if(a.currentSrc){var d=document.createElement(“canvas”);let b=d.getContext(“2d”);d.width=a.clientWidth;d.height=a.clientHeight;b==null||b.drawImage(a,0,0,d.width,d.height);d=d.toDataURL();return B(d)}d=a.poster;d=yield J(d,K[L(d).toLowerCase()]||””,c);return B(d)})}
function ea(a,c){return t(function*(){try{let d;if(a==null?0:(d=a.contentDocument)==null?0:d.body)return yield M(a.contentDocument.body,c,!0)}catch(d){}return a.cloneNode(!1)})}function fa(a,c){return t(function*(){return E(a,HTMLCanvasElement)?ca(a):E(a,HTMLVideoElement)?da(a,c):E(a,HTMLIFrameElement)?ea(a,c):a.cloneNode(a.tagName!=null&&a.tagName.toUpperCase()===”SVG”)})}
function ha(a,c,d){return t(function*(){if(c.tagName!=null&&c.tagName.toUpperCase()===”SVG”)return c;var b=[];if(a.tagName!=null&&a.tagName.toUpperCase()===”SLOT”&&a.assignedNodes)b=w(a.assignedNodes());else{let e;if(E(a,HTMLIFrameElement)&&((e=a.contentDocument)==null?0:e.body))b=w(a.contentDocument.body.childNodes);else{let f;b=w(((f=a.shadowRoot)!=null?f:a).childNodes)}}if(b.length===0||E(a,HTMLVideoElement))return c;yield b.reduce((e,f)=>e.then(()=>M(f,d)).then(g=>{g&&c.appendChild(g)}),Promise.resolve());
return c})}function ia(a,c,d){var b=c.style;if(b){var e=window.getComputedStyle(a);e.cssText?(b.cssText=e.cssText,b.transformOrigin=e.transformOrigin):y(d).forEach(f=>{var g=e.getPropertyValue(f);f===”font-size”&&g.endsWith(“px”)&&(g=`${Math.floor(parseFloat(g.substring(0,g.length-2)))-.1}px`);E(a,HTMLIFrameElement)&&f===”display”&&g===”inline”&&(g=”block”);f===”d”&&c.getAttribute(“d”)&&(g=`path(${c.getAttribute(“d”)})`);b.setProperty(f,g,e.getPropertyPriority(f))})}}
function ja(a,c){E(a,HTMLSelectElement)&&(c=Array.from(c.children).find(d=>a.value===d.getAttribute(“value”)))&&c.setAttribute(“selected”,””)}
function ka(a,c){return t(function*(){var d=a.querySelectorAll?a.querySelectorAll(“use”):[];if(d.length===0)return a;var b={};for(var e=0;e<d.length;e++){var f=d[e].getAttribute("xlink:href");if(f){let g=document.querySelector(f);a.querySelector(f)||!g||b[f]||(b[f]=yield M(g,c,!0))}}d=Object.values(b);if(d.length){b=document.createElementNS("http://www.w3.org/1999/xhtml","svg");b.setAttribute("xmlns","http://www.w3.org/1999/xhtml");b.style.position="absolute";b.style.width="0";b.style.height="0";
b.style.overflow="hidden";b.style.display="none";e=document.createElementNS("http://www.w3.org/1999/xhtml","defs");b.appendChild(e);for(f=0;ffa(b,c)).then(b=>ha(a,b,c)).then(b=>{E(b,Element)&&(ia(a,b,c),F(a,b,”:before”,c),F(a,b,”:after”,c),E(a,HTMLTextAreaElement)&&(b.textContent=a.value),E(a,HTMLInputElement)&&b.setAttribute(“value”,a.value),ja(a,b));return b}).then(b=>ka(b,c)):null})};const N=/url(([‘”]?)([^'”]+?)1)/g,la=/url([^)]+)s*format(([“‘]?)([^”‘]+)1)/g,ma=/src:s*(?:url([^)]+)s*format([^)]+)[,;]s*)+/g;function na(a){var c=[];a.replace(N,(d,b,e)=>{c.push(e);return d});return c.filter(d=>!G(d))}
function oa(a,c,d,b){return t(function*(){try{let e=d?(new URL(c,d||void 0)).toString():c,f;f=yield J(e,K[L(c).toLowerCase()]||””,b);return a.replace(new RegExp(`(url\([‘”]?)(${c.replace(/([.*+?^${}()|[]/\])/g,”\$1″)})([‘”]?\))`,”g”),`$1${f}$3`)}catch(e){}return a})}function pa(a,{K:c}){return c?a.replace(ma,d=>{for(;;){let [b,,e]=la.exec(d)||[];if(!e)return””;if(e===c)return`src: ${b};`}}):a}
function O(a,c,d){return t(function*(){if(a.search(N)===-1)return a;var b=pa(a,d);return na(b).reduce((e,f)=>e.then(g=>oa(g,f,c,d)),Promise.resolve(b))})};function P(a,c,d){return t(function*(){var b,e=(b=c.style)==null?void 0:b.getPropertyValue(a);return e?(b=yield O(e,null,d),c.style.setProperty(a,b,c.style.getPropertyPriority(a)),!0):!1})}function qa(a,c){return t(function*(){(yield P(“background”,a,c))||(yield P(“background-image”,a,c));(yield P(“mask”,a,c))||(yield P(“-webkit-mask”,a,c))||(yield P(“mask-image”,a,c))||(yield P(“-webkit-mask-image”,a,c))})}
function ra(a,c){return t(function*(){var d=E(a,HTMLImageElement);if(d&&!G(a.src)||E(a,SVGImageElement)&&!G(a.href.baseVal)){var b=d?a.src:a.href.baseVal,e=yield J(b,K[L(b).toLowerCase()]||””,c);yield new Promise((f,g)=>{a.onload=f;a.onerror=c.h?(…k)=>{try{f(c.h(…k))}catch(m){g(m)}}:g;a.decode&&(a.decode=f);a.loading===”lazy”&&(a.loading=”eager”);d?(a.srcset=””,a.src=e):a.href.baseVal=e})}})}
function sa(a,c){return t(function*(){var d=w(a.childNodes).map(b=>Q(b,c));yield Promise.all(d).then(()=>a)})}function Q(a,c){return t(function*(){E(a,Element)&&(yield qa(a,c),yield ra(a,c),yield sa(a,c))})};const R={};function S(a){return t(function*(){var c=R[a];if(c!=null)return c;c=yield(yield fetch(a)).text();c={url:a,cssText:c};return R[a]=c})}function T(a,c){return t(function*(){var d=a.cssText,b=/url([“‘]?([^”‘)]+)[“‘]?)/g,e=(d.match(/url([^)]+)/g)||[]).map(f=>t(function*(){var g=f.replace(b,”$1”);g.startsWith(“https://”)||(g=(new URL(g,a.url)).href);return H(g,c.l,({result:k})=>{d=d.replace(f,`url(${k})`);return[f,k]})}));return Promise.all(e).then(()=>d)})}
function U(a){if(a==null)return[];var c=[];a=a.replace(/(/*[sS]*?*/)/gi,””);for(var d=RegExp(“((@.*?keyframes [\s\S]*?){([\s\S]*?}\s*?)})”,”gi”);;){var b=d.exec(a);if(b===null)break;c.push(b[0])}a=a.replace(d,””);d=/@import[sS]*?url([^)]*)[sS]*?;/gi;for(b=RegExp(“((\s*?(?:\/\*[\s\S]*?\*\/)?\s*?@media[\s\S]*?){([\s\S]*?)}\s*?})|(([\s\S]*?){([\s\S]*?)})”,”gi”);;){let e=d.exec(a);if(e===null)if(e=b.exec(a),e===null)break;else d.lastIndex=b.lastIndex;else b.lastIndex=
d.lastIndex;c.push(e[0])}return c}
function ta(a,c){return t(function*(){var d=[],b=[];a.forEach(e=>{if(“cssRules”in e)try{w(e.cssRules||[]).forEach((f,g)=>{if(f.type===CSSRule.IMPORT_RULE){let k=g+1;f=S(f.href).then(m=>T(m,c)).then(m=>U(m).forEach(q=>{try{e.insertRule(q,q.startsWith(“@import”)?k+=1:e.cssRules.length)}catch(Ia){}})).catch(()=>{});b.push(f)}})}catch(f){let g=a.find(k=>k.href==null)||document.styleSheets[0];e.href!=null&&b.push(S(e.href).then(k=>T(k,c)).then(k=>U(k).forEach(m=>{g.insertRule(m,g.cssRules.length)})).catch(()=>
{}))}});return Promise.all(b).then(()=>{a.forEach(e=>{if(“cssRules”in e)try{w(e.cssRules||[]).forEach(f=>{d.push(f)})}catch(f){}});return d})})}function ua(a){return a.filter(c=>c.type===CSSRule.FONT_FACE_RULE).filter(c=>c.style.getPropertyValue(“src”).search(N)!==-1)}function va(a,c){return t(function*(){if(a.ownerDocument==null)throw Error(“Provided element is not within a Document”);var d=w(a.ownerDocument.styleSheets);d=yield ta(d,c);return ua(d)})}
function wa(a){function c(b){(b.style.fontFamily||getComputedStyle(b).fontFamily).split(“,”).forEach(e=>{d.add(e.trim().replace(/[“‘]/g,””))});Array.from(b.children).forEach(e=>{e instanceof HTMLElement&&c(e)})}var d=new Set;c(a);return d}function xa(a,c){return t(function*(){var d=yield va(a,c),b=wa(a);return(yield Promise.all(d.filter(e=>b.has(e.style.fontFamily.trim().replace(/[“‘]/g,””))).map(e=>O(e.cssText,e.parentStyleSheet?e.parentStyleSheet.href:null,c)))).join(“n”)})}
function ya(a,c){return t(function*(){var d=c.m!=null?c.m:c.B?null:yield xa(a,c);if(d){let b=document.createElement(“style”);b.appendChild(document.createTextNode(d));a.firstChild?a.insertBefore(b,a.firstChild):a.appendChild(b)}})};function za(a,c={}){return t(function*(){var {width:d,height:b}=A(a,c),e=yield M(a,c,!0);yield ya(e,c);yield Q(e,c);u(e,c);return yield D(e,d,b)})}
function Aa(a,c={}){return t(function*(){var {width:d,height:b}=A(a,c),e=yield za(a,c);e=yield B(e);var f=document.createElement(“canvas”),g=f.getContext(“2d”),k=c.v||window.devicePixelRatio||1,m=c.j||d,q=c.i||b;f.width=m*k;f.height=q*k;!c.L&&(f.width>16384||f.height>16384)&&(f.width>16384&&f.height>16384?f.width>f.height?(f.height*=16384/f.width,f.width=16384):(f.width*=16384/f.height,f.height=16384):f.width>16384?(f.height*=16384/f.width,f.width=16384):(f.width*=16384/f.height,f.height=16384));
f.style.width=`${m}`;f.style.height=`${q}`;c.backgroundColor&&(g.fillStyle=c.backgroundColor,g.fillRect(0,0,f.width,f.height));g.drawImage(e,0,0,f.width,f.height);return f})}function Ba(a,c={}){return t(function*(){return(yield Aa(a,c)).toDataURL()})};const Ca=[“gemini.google.com”,”corp.google.com”,”proxy.googlers.com”];function V(){return document.body.querySelectorAll(‘[class*=”animate”]’).length>0}function W(a,c){var d=document.createElement(“canvas”);d.width=a;d.height=c;return d.toDataURL(“image/png”)}const X=W(1,1);
function Da(a){a=a.querySelectorAll(“svg, svg *”);var c=[];for(let b of Array.from(a)){if(!(b instanceof SVGElement))continue;a=window.getComputedStyle(b);let e=b.getAttribute(“style”);a.fill&&(b.style.fill=a.fill);a.stroke&&(b.style.stroke=a.stroke);a.strokeWidth&&(b.style.strokeWidth=a.strokeWidth);a.strokeDasharray&&(b.style.strokeDasharray=a.strokeDasharray);a.strokeLinecap&&(b.style.strokeLinecap=a.strokeLinecap);a.strokeLinejoin&&(b.style.strokeLinejoin=a.strokeLinejoin);a.strokeOpacity&&(b.style.strokeOpacity=
a.strokeOpacity);a.fillOpacity&&(b.style.fillOpacity=a.fillOpacity);a.opacity&&(b.style.opacity=a.opacity);a.transform&&a.transform!==”none”&&(b.style.transform=a.transform);var d=b.tagName.toLowerCase();if(d===”text”||d===”tspan”||d===”textpath”){a.fontFamily&&(b.style.fontFamily=a.fontFamily);a.fontSize&&(b.style.fontSize=a.fontSize);a.fontWeight&&(b.style.fontWeight=a.fontWeight);a.fontStyle&&(b.style.fontStyle=a.fontStyle);a.letterSpacing&&(b.style.letterSpacing=a.letterSpacing);a.wordSpacing&&
(b.style.wordSpacing=a.wordSpacing);if((d=a.textAnchor||a.getPropertyValue(“text-anchor”))&&d!==”none”){b.style.textAnchor=d;let f=b.getAttribute(“text-anchor”);b.setAttribute(“text-anchor”,d);c.push(()=>{f===null?b.removeAttribute(“text-anchor”):b.setAttribute(“text-anchor”,f)})}if((d=a.dominantBaseline||a.getPropertyValue(“dominant-baseline”))&&d!==”none”){b.style.dominantBaseline=d;let f=b.getAttribute(“dominant-baseline”);b.setAttribute(“dominant-baseline”,d);c.push(()=>{f===null?b.removeAttribute(“dominant-baseline”):
b.setAttribute(“dominant-baseline”,f)})}if((d=a.alignmentBaseline||a.getPropertyValue(“alignment-baseline”))&&d!==”none”){b.style.alignmentBaseline=d;let f=b.getAttribute(“alignment-baseline”);b.setAttribute(“alignment-baseline”,d);c.push(()=>{f===null?b.removeAttribute(“alignment-baseline”):b.setAttribute(“alignment-baseline”,f)})}if(a=a.paintOrder||a.getPropertyValue(“paint-order”))b.style.paintOrder=a}c.push(()=>{e===null?b.removeAttribute(“style”):b.setAttribute(“style”,e)})}return()=>{for(let b of c)b()}}
function Ea(a){a=a.querySelectorAll(“*”);var c=[];for(let b of Array.from(a)){if(!(b instanceof HTMLElement))continue;if(b instanceof SVGElement)continue;a=b.tagName.toLowerCase();if(a===”script”||a===”style”||a===”canvas”||a===”img”||a===”svg”)continue;var d=window.getComputedStyle(b);if(d.display===”none”||d.visibility===”hidden”)continue;if(d.display===”flex”||d.display===”grid”||d.display===”table”)continue;let e;if((e=b.textContent)==null||!e.trim())continue;if(d.whiteSpace.startsWith(“pre”))continue;
if(Array.from(b.children).some(g=>{if(!(g instanceof HTMLElement))return!1;g=window.getComputedStyle(g).display;return g===”block”||g===”flex”||g===”grid”||g===”table”}))continue;d=Number(d.fontSize.replace(“px”,””))||16;let f=b.clientHeight;d=f>0&&f{b.style.whiteSpace=g;b.style.minWidth=k})}}return()=>{for(let b of c)b()}}function Y(){var a=document.body,c=Da(a),d=Ea(a);return()=>{d();c()}}
function Z(a){return t(function*(){var c=Math.max(2,window.devicePixelRatio||1),d=Math.max(a.offsetWidth,1),b=Math.max(a.offsetHeight,1);try{return yield Ba(a,{width:d*c,height:b*c,j:d*c,i:b*c,v:1,style:{transform:`scale(${c})`,transformOrigin:”top left”,width:`${d}px`,height:`${b}px`},B:!0,filter:e=>{if(e.tagName===”IMG”){let f=e.getAttribute(“src”);if(!f||f.trim()===””||e.style.display===”none”)return!1}return!0},o:X,h:()=>X})}catch(e){return W(d*c,b*c)}})}
function Fa(){return t(function*(){var a=document.body.offsetWidth,c=document.body.offsetHeight,d=document.body.cloneNode(!0),b=d.querySelectorAll(‘[class*=”animate”]’);for(let e of Array.from(b))e.classList.remove(…Array.from(e.classList).filter(f=>f.startsWith(“animate”)));d.style.width=`${a}px`;d.style.height=`${c}px`;return d})}
function Ga(a){return t(function*(){var c=Y();try{let d=document.body;if(V()){let e=yield Fa();d=e;document.body.appendChild(e)}let b=yield Z(d);V()&&document.body.removeChild(d);window.parent.postMessage({type:”SEND_SCREENSHOT”,image:b,topOffset:document.documentElement.scrollTop},a.origin)}finally{c()}})}
function Ha(a){return t(function*(){var c=Y();try{let d={type:”SEND_SCREENSHOT_FOR_DATA_VISUALIZATION”,image:yield Z(document.body),topOffset:0};window.parent.postMessage(d,a.origin)}finally{c()}})}window.addEventListener(“message”,a=>t(function*(){if(Ca.some(d=>a.origin.includes(d))){var c=a.data;c&&(c.type===”MAKE_SCREENSHOT”&&(yield Ga(a)),c.type===”MAKE_SCREENSHOT_FOR_DATA_VISUALIZATION”&&(yield Ha(a)))}}));
})();(function() {
// Ensure this script is executed only once
if (window.firebaseAuthBridgeScriptLoaded) {
return;
}
window.firebaseAuthBridgeScriptLoaded = true;
let nextTokenPromiseId = 0;
// Stores { resolve, reject } for ongoing token requests
const pendingTokenPromises = {};
// Listen for messages from the Host Application
window.addEventListener(‘message’, function(event) {
const messageData = event.data;
if (messageData && messageData.type === ‘RESOLVE_NEW_FIREBASE_TOKEN’) {
const { success, token, error, promiseId } = messageData ?? {};
if (pendingTokenPromises[promiseId]) {
if (success) {
pendingTokenPromises[promiseId].resolve(token);
} else {
pendingTokenPromises[promiseId].reject(new Error(error || ‘Token refresh failed from host.’));
}
delete pendingTokenPromises[promiseId];
}
}
});
// Expose a function for the Generated App to request a new Firebase token
window.requestNewFirebaseToken = function() {
const currentPromiseId = nextTokenPromiseId++;
const promise = new Promise((resolve, reject) => {
pendingTokenPromises[currentPromiseId] = { resolve, reject };
});
if (window.parent && window.parent !== window) {
window.parent.postMessage({
type: ‘REQUEST_NEW_FIREBASE_TOKEN’,
promiseId: currentPromiseId
}, ‘*’);
} else {
pendingTokenPromises[currentPromiseId].reject(new Error(‘No parent window to request token from.’));
delete pendingTokenPromises[currentPromiseId];
}
return promise;
};
})();
let realOriginalGetUserMedia = null;
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
realOriginalGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);
}
(function() {
if (navigator.mediaDevices && navigator.mediaDevices.__proto__) {
try {
Object.defineProperty(navigator.mediaDevices.__proto__, ‘getUserMedia’, {
get: function() {
return undefined; // Or throw an error
},
configurable: false
});
} catch (error) {
console.error(“Error defining prototype getter:”, error);
}
}
})();
(function() {
const pendingMediaResolvers = {};
let nextMediaPromiseId = 0;
function requestMediaPermissions(constraints) {
const mediaPromiseId = nextMediaPromiseId++;
const promise = new Promise((resolve, reject) => {
pendingMediaResolvers[mediaPromiseId] = (granted) => {
delete pendingMediaResolvers[mediaPromiseId];
resolve(granted);
};
});
window.parent.postMessage({
type: ‘requestMediaPermission’,
constraints: constraints,
promiseId: mediaPromiseId,
}, ‘*’);
return promise;
}
let originalGetUserMedia = realOriginalGetUserMedia;
function interceptGetUserMedia() {
if (navigator.mediaDevices) {
Object.defineProperty(navigator.mediaDevices, ‘getUserMedia’, {
value: function(constraints) {
return requestMediaPermissions(constraints).then((granted) => {
if (granted) {
if (originalGetUserMedia) {
return originalGetUserMedia(constraints);
} else {
throw new Error(“Original getUserMedia not available.”);
}
} else {
throw new DOMException(‘Permission denied’, ‘NotAllowedError’);
}
});
},
writable: false,
configurable: false
});
}
}
interceptGetUserMedia();
const observer = new MutationObserver(function(mutationsList, observer) {
for (const mutation of mutationsList) {
if (mutation.type === ‘reconfigured’ && mutation.name === ‘getUserMedia’ && mutation.object === navigator.mediaDevices) {
interceptGetUserMedia();
} else if (mutation.type === ‘attributes’ && mutation.attributeName === ‘getUserMedia’ && mutation.target === navigator.mediaDevices) {
interceptGetUserMedia();
} else if (mutation.type === ‘childList’ && mutation.addedNodes) {
mutation.addedNodes.forEach(node => {
if (node === navigator.mediaDevices) {
interceptGetUserMedia();
}
});
}
}
});
function interceptSpeechRecognition() {
if (!window.SpeechRecognition && !window.webkitSpeechRecognition) {
return;
}
const OriginalSpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const SpeechRecognitionWrapper = function(…args) {
const recognizer = new OriginalSpeechRecognition(…args);
const originalStart = recognizer.start.bind(recognizer);
recognizer.start = function() {
requestMediaPermissions({ audio: true }).then(granted => {
if (granted) {
originalStart();
} else {
const errorEvent = new SpeechRecognitionErrorEvent(‘error’);
errorEvent.error = ‘not-allowed’; // This is the standard error for permission denial.
recognizer.dispatchEvent(errorEvent);
}
});
};
return recognizer;
};
SpeechRecognitionWrapper.prototype = OriginalSpeechRecognition.prototype;
SpeechRecognitionWrapper.prototype.constructor = SpeechRecognitionWrapper;
if (window.SpeechRecognition) {
window.SpeechRecognition = SpeechRecognitionWrapper;
}
if (window.webkitSpeechRecognition) {
window.webkitSpeechRecognition = SpeechRecognitionWrapper;
}
}
interceptSpeechRecognition();
window.addEventListener(‘message’, function(event) {
if (event.data) {
if (event.data.type === ‘resolveMediaPermission’) {
const { promiseId, granted } = event.data;
if (pendingMediaResolvers[promiseId]) {
pendingMediaResolvers[promiseId](granted);
}
}
}
});
})();(function(){‘use strict’;var u=typeof Object.defineProperties==”function”?Object.defineProperty:function(b,d,e){if(b==Array.prototype||b==Object.prototype)return b;b[d]=e.value;return b};function v(b){b=[“object”==typeof globalThis&&globalThis,b,”object”==typeof window&&window,”object”==typeof self&&self,”object”==typeof global&&global];for(var d=0;d<b.length;++d){var e=b[d];if(e&&e.Math==Math)return e}throw Error("Cannot find global object");}var w=v(this);
function y(b,d){if(d)a:{var e=w;b=b.split(".");for(var h=0;h<b.length-1;h++){var k=b[h];if(!(k in e))break a;e=e[k]}b=b[b.length-1];h=e[b];d=d(h);d!=h&&d!=null&&u(e,b,{configurable:!0,writable:!0,value:d})}}function z(b){function d(h){return b.next(h)}function e(h){return b.throw(h)}return new Promise(function(h,k){function m(n){n.done?h(n.value):Promise.resolve(n.value).then(d,e).then(m,k)}m(b.next())})}y("globalThis",function(b){return b||w});/*
Copyright The Closure Library Authors.
SPDX-License-Identifier: Apache-2.0
*/
function A(b,d){function e(){}e.prototype=d.prototype;b.j=d.prototype;b.prototype=new e;b.prototype.constructor=b;b.h=function(h,k,m){for(var n=Array(arguments.length-2),p=2;p{if(a.data.type===”message”){a=new MessageEvent(“message”,{data:G.decode(a.data.data)});
let f;(f=c.onmessage)==null||f.call(c,a);c.dispatchEvent(a)}}}function n(){if(!t)throw Error(“Control port not captured yet.”);t.onmessage=a=>{switch(a.data.type){case “open”:l=1;var f=new Event(“open”),g;(g=c.onopen)==null||g.call(c,f);c.dispatchEvent(f);q.forEach(H=>{k(H)});q=[];break;case “close”:g=a.data;l=3;g=new CloseEvent(“close”,{code:g.code,reason:g.reason,wasClean:g.wasClean});(f=c.onclose)==null||f.call(c,g);c.dispatchEvent(g);break;case “error”:l=3;f=new Event(“error”);let x;(x=c.onerror)==
null||x.call(c,f);c.dispatchEvent(f)}}}function p(a){return z(function*(){var f=new MessageChannel;t=f.port1;var g=new MessageChannel;r=g.port1;n();m();window.parent.postMessage({type:”websocket_open”,portOrdering:[“control”,”data”],url:b,protocols:a||[],connectionId:I},e,[f.port2,g.port2])}())}var c=Reflect.construct(EventTarget,[],new.target);c.CONNECTING=0;c.OPEN=1;c.CLOSING=2;c.CLOSED=3;c.url=b;c.binaryType=”arraybuffer”;c.protocol=””;c.i=””;var l=0,t=null,r=null,q=[],F=new TextEncoder,G=new TextDecoder;
c.onopen=null;c.onmessage=null;c.onclose=null;c.onerror=null;Object.defineProperty(c,”readyState”,{get:()=>l,enumerable:!0,configurable:!0});Object.defineProperty(c,”bufferedAmount”,{get:()=>{var a=0;q.forEach(f=>{a+=typeof f===”string”?f.length:f.byteLength});return a},enumerable:!0,configurable:!0});var I=function(){var a;return((a=globalThis.crypto)==null?0:a.randomUUID)?globalThis.crypto.randomUUID():”xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx”.replace(/[xy]/g,f=>{var g=Math.random()*16|0;return(f===
“x”?g:g&3|8).toString(16)})}();c.send=a=>{if(l===1)a instanceof Blob?a.arrayBuffer().then(f=>{k(f)}):k(a);else if(l===0)if(typeof a===”string”)q.push(a);else if(a instanceof ArrayBuffer||ArrayBuffer.isView(a))q.push(h(a));else throw Error(“Sending Blob is not supported before the connection is open.”);else console.debug(“WebSocket send called in CLOSING or CLOSED state; ignored.”)};c.close=(a=1E3,f=””)=>{if(l!==2&&l!==3){l=2;a={type:”close”,code:a,reason:f,wasClean:a===1E3};var g;(g=t)==null||g.postMessage(a)}};
Promise.resolve().then(()=>p(d));return c}A(B,EventTarget);var C=document.currentScript,D=C==null?void 0:C.getAttribute(“ws-interception-config”);if(!D)throw Error(“WebSocket Interceptor: Missing ws-interception-config attribute in the script tag.”);var E=JSON.parse(D);if(!E.parentOrigin||typeof E.parentOrigin!==”string”)throw Error(“WebSocket Interceptor: Invalid parentOrigin in ws-interception-config”);
(function(b){var d=Object.getOwnPropertyDescriptor(window,”WebSocket”);if(!d||d.writable||d.configurable)d=Object.assign(function(e,h){try{let k=(new URL(e)).hostname;if(b.proxiedDomains.some(m=>k===m||k.endsWith(`.${m}`)))return new B(e,h,b.parentOrigin)}catch(k){throw window.parent.postMessage({type:”websocket_blocked”,url:e,reason:”blocked_invalid_url”},b.parentOrigin),new DOMException(`WebSocket connection to ‘${e}’ is not allowed in Canvas.`,”SecurityError”);}window.parent.postMessage({type:”websocket_blocked”,
url:e,reason:”blocked_domain_not_allowlisted”},b.parentOrigin);throw new DOMException(`WebSocket connection to ‘${e}’ is not allowed in Canvas.`,”SecurityError”);},{CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3}),Object.defineProperty(window,”WebSocket”,{value:d,writable:!1,configurable:!1})})({proxiedDomains:E.proxiedDomains||[],parentOrigin:E.parentOrigin});}).call(this);
((function(modelInformation) {
const originalFetch = window.fetch;
// TODO: b/421908508 – Move these out of the script and match all generative AI model calls.
let googleLlmBaseApiUrls = [
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.textModelName + ‘:streamGenerateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.textModelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.imageModelName + ‘:predict’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.imageModelName + ‘:predictLongRunning’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.imageEditModelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.imageTransformModelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.videoModelName + ‘:predict’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.videoModelName + ‘:predictLongRunning’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.ttsModelName + ‘:generateContent’,
];
modelInformation.deprecatedTextModelNames.forEach((modelName) => {
googleLlmBaseApiUrls.push(
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:streamGenerateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:generateContent’,
);
});
modelInformation.deprecatedImageModelNames.forEach((modelName) => {
googleLlmBaseApiUrls.push(
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:predict’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:predictLongRunning’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:streamGenerateContent’,
);
});
modelInformation.deprecatedGenerateImageModelNames.forEach((modelName) => {
googleLlmBaseApiUrls.push(
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:streamGenerateContent’,
);
});
modelInformation.deprecatedImageTransformModelNames.forEach((modelName) => {
googleLlmBaseApiUrls.push(
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:streamGenerateContent’,
);
});
const pendingFetchResolvers = {};
let nextPromiseId = 0;
function handleStringInput(input, optionsArgument) {
const actualUrl = input;
const fetchCallArgs = [actualUrl, optionsArgument];
const effectiveOptions = optionsArgument || {};
const bodyForApiKeyCheck = effectiveOptions.body;
const bodyForPostMessage = effectiveOptions.body;
return { actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage };
}
function handleRequestInput(input, optionsArgument) {
const actualUrl = input.url;
const fetchCallArgs = [input, optionsArgument];
const effectiveOptions = { method: input.method, headers: new Headers(input.headers) };
let bodyForApiKeyCheck;
let bodyForPostMessage;
if (optionsArgument) {
if (optionsArgument.method) effectiveOptions.method = optionsArgument.method;
if (optionsArgument.headers) effectiveOptions.headers = new Headers(optionsArgument.headers);
if (‘body’ in optionsArgument) {
bodyForApiKeyCheck = optionsArgument.body;
bodyForPostMessage = optionsArgument.body;
} else {
bodyForApiKeyCheck = undefined;
bodyForPostMessage = input.body;
}
} else {
bodyForApiKeyCheck = undefined;
bodyForPostMessage = input.body;
}
return { actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage };
}
window.fetch = function(input, optionsArgument) {
let actualUrl;
let fetchCallArgs;
let effectiveOptions = {};
let bodyForApiKeyCheck;
let bodyForPostMessage;
if (typeof input === ‘string’) {
({actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage} = handleStringInput(input, optionsArgument));
} else if (input instanceof Request) {
({actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage} = handleRequestInput(input, optionsArgument));
} else {
return originalFetch.apply(window, [input, optionsArgument]);
}
effectiveOptions.method = effectiveOptions.method || ‘GET’;
if (!effectiveOptions.headers) {
effectiveOptions.headers = new Headers();
}
if (typeof actualUrl === ‘string’ && googleLlmBaseApiUrls.some((url) => actualUrl.startsWith(url))) {
let apiKeyIsNull = true;
const regex = new RegExp(“models/([^:]+)”);
const modelNameMatch = actualUrl.match(regex);
const modelName = modelNameMatch ? modelNameMatch[1] : ‘unspecified’;
try {
const urlObject = new URL(actualUrl); // Use URL object for robust parsing
const apiKeyParam = urlObject.searchParams.get(‘key’);
if (apiKeyParam) {
apiKeyIsNull = false;
}
} catch (e) {
// Continue checks even if URL parsing fails
}
if (apiKeyIsNull && effectiveOptions.headers) {
const h = new Headers(effectiveOptions.headers);
const apiKeyHeaderValue = h.get(‘X-API-Key’) || h.get(‘x-api-key’);
if (apiKeyHeaderValue) {
apiKeyIsNull = false;
return originalFetch.apply(window, fetchCallArgs);
}
}
if (apiKeyIsNull && effectiveOptions.method && [‘POST’, ‘PUT’, ‘PATCH’].includes(effectiveOptions.method.toUpperCase()) && typeof bodyForApiKeyCheck === ‘string’) {
try {
const bodyData = JSON.parse(bodyForApiKeyCheck);
if (bodyData && bodyData.apiKey) {
apiKeyIsNull = false;
return originalFetch.apply(window, fetchCallArgs);
}
} catch (e) {
// Ignore JSON parsing errors
}
}
if(apiKeyIsNull) {
const promiseId = nextPromiseId++;
const promise = new Promise((resolve) => {
pendingFetchResolvers[promiseId] = (resolvedResponse) => {
delete pendingFetchResolvers[promiseId];
resolve(resolvedResponse);
};
});
let serializedBodyForPostMessage;
if (typeof bodyForPostMessage === ‘string’ || bodyForPostMessage == null) {
serializedBodyForPostMessage = bodyForPostMessage;
} else if (bodyForPostMessage instanceof ReadableStream) {
serializedBodyForPostMessage = null;
} else {
try {
serializedBodyForPostMessage = JSON.stringify(bodyForPostMessage);
} catch (e) {
serializedBodyForPostMessage = null;
}
}
const messageOptions = {
method: effectiveOptions.method,
headers: Object.fromEntries(new Headers(effectiveOptions.headers).entries()),
body: serializedBodyForPostMessage
};
window.parent.postMessage({
type: ‘requestFetch’,
url: actualUrl,
modelName: modelName,
options: messageOptions,
promiseId: promiseId,
}, ‘*’);
return promise;
}
return originalFetch.apply(window, fetchCallArgs);
}
return originalFetch.apply(window, fetchCallArgs);
};
window.addEventListener(‘message’, function(event) {
if (event.data && event.data.type === ‘resolveFetch’) {
const { promiseId, response } = event.data;
if (pendingFetchResolvers[promiseId]) {
try {
const reconstructedResponse = new Response(response.body, {
status: response.status,
statusText: response.statusText,
headers: new Headers(response.headers),
});
pendingFetchResolvers[promiseId](reconstructedResponse);
} catch (error) {
pendingFetchResolvers[promiseId](new Response(null, { status: 500, statusText: “Interceptor Response Reconstruction Error” }));
}
}
}
});
}))({“textModelName”:”gemini-3-flash-preview”,”imageModelName”:”imagen-4.0-generate-001″,”imageEditModelName”:”gemini-3.1-flash-image”,”imageTransformModelName”:”gemini-3-pro-image”,”videoModelName”:”veo-2.0-generate-001″,”ttsModelName”:”gemini-2.5-flash-preview-tts”,”deprecatedTextModelNames”:[“gemini-2.0-flash”,”gemini-2.5-flash”,”gemini-2.5-flash-preview-04-17″,”gemini-2.5-flash-preview-05-20″,”gemini-2.5-flash-preview-09-2025″],”deprecatedImageModelNames”:[“imagen-3.0-generate-001″,”imagen-3.0-generate-002″],”deprecatedGenerateImageModelNames”:[“gemini-2.5-flash-image-preview”,”gemini-2.5-flash-image”,”gemini-3.1-flash-image-preview”],”deprecatedImageTransformModelNames”:[“gemini-3-pro-image-preview-11-2025″]})(function(){‘use strict’;function a(){window.parent.postMessage({type:”interaction”},”*”)}window.addEventListener(“click”,a,{capture:!0,passive:!0});window.addEventListener(“touchstart”,a,{capture:!0,passive:!0});window.addEventListener(“keydown”,a,{capture:!0,passive:!0});}).call(this);
(function() {
const originalConsoleLog = console.log;
const originalConsoleError = console.error;
/**
* Normalizes an error event or a promise rejection reason into a structured error object.
* @param {*} errorEventOrReason The error object or reason.
* @return {object} Structured error data { message, name, stack }.
*/
function getErrorObject(errorEventOrReason) {
if (errorEventOrReason instanceof Error) {
return {
message: errorEventOrReason.message,
name: errorEventOrReason.name,
stack: errorEventOrReason.stack,
};
}
// Fallback for non-Error objects.
try {
return {
message: JSON.stringify(errorEventOrReason),
name: ‘UnknownErrorType’,
stack: null,
};
} catch (e) {
return {
message: String(errorEventOrReason),
name: ‘UnknownErrorTypeNonStringifiable’,
stack: null,
};
}
}
/**
* Converts an array of arguments (from log/error) into a single string.
* Handles Error objects specially to include their message and stack.
* @param {Array} args – Arguments passed to console methods.
* @return {string} A string representation of the arguments.
*/
function stringifyArgs(args) {
return args
.map((arg) => {
if (arg instanceof Error) {
const {message, stack} = arg;
return `Error: ${message}${stack ? (‘nStack: ‘ + stack) : ”}`;
}
if (typeof arg === ‘object’ && arg !== null) {
try {
return JSON.stringify(arg);
} catch (error) {
return ‘[Circular Object]’;
}
} else {
return String(arg);
}
})
.join(‘ ‘);
}
console.log = function(…args) {
const logString = stringifyArgs(args);
window.parent.postMessage({ type: ‘log’, message: logString }, ‘*’);
originalConsoleLog.apply(console, args);
};
console.error = function(…args) {
let errorData;
if (args.length > 0 && args[0] instanceof Error) {
const err = args[0];
// If the first arg is an Error, capture its details.
errorData = {
type: ‘error’,
source: ‘CONSOLE_ERROR’,
…getErrorObject(err),
rawArgsString: stringifyArgs(args.slice(1)),
timestamp: new Date().toISOString(),
};
} else {
// If not an Error object, treat all args as a general error message.
errorData = {
type: ‘error’,
source: ‘CONSOLE_ERROR’,
message: stringifyArgs(args),
name: ‘ConsoleLoggedError’,
stack: null,
timestamp: new Date().toISOString(),
};
}
window.parent.postMessage(errorData, ‘*’);
originalConsoleError.apply(console, args);
};
// Listen for global unhandled synchronous errors.
window.addEventListener(‘error’, function(event) {
const errorDetails = event.error ? getErrorObject(event.error) : {
message: event.message,
name: ‘GlobalError’,
stack: null,
filename: event.filename,
lineno: event.lineno,
colno: event.colno,
};
window.parent.postMessage({
type: ‘error’,
source: ‘global’,
…errorDetails,
message: errorDetails.message || event.message,
timestamp: new Date().toISOString(),
}, ‘*’);
});
// Listen for unhandled promise rejections (asynchronous errors).
window.addEventListener(‘unhandledrejection’, function(event) {
const errorDetails = getErrorObject(event.reason);
window.parent.postMessage({
type: ‘error’,
source: ‘unhandledrejection’,
…errorDetails,
message: errorDetails.message || ‘Unhandled Promise Rejection’,
timestamp: new Date().toISOString(),
}, ‘*’);
});
})();
tailwind.config = {
theme: {
extend: {
colors: {
primary: ‘#b45309’,
primaryDark: ‘#78350f’,
accent: ‘#d97706’,
},
fontFamily: {
sans: [‘Inter’, ‘system-ui’, ‘-apple-system’, ‘Segoe UI’, ‘Roboto’, ‘sans-serif’]
}
}
}
}
*, ::before, ::after{–tw-border-spacing-x:0;–tw-border-spacing-y:0;–tw-translate-x:0;–tw-translate-y:0;–tw-rotate:0;–tw-skew-x:0;–tw-skew-y:0;–tw-scale-x:1;–tw-scale-y:1;–tw-pan-x: ;–tw-pan-y: ;–tw-pinch-zoom: ;–tw-scroll-snap-strictness:proximity;–tw-gradient-from-position: ;–tw-gradient-via-position: ;–tw-gradient-to-position: ;–tw-ordinal: ;–tw-slashed-zero: ;–tw-numeric-figure: ;–tw-numeric-spacing: ;–tw-numeric-fraction: ;–tw-ring-inset: ;–tw-ring-offset-width:0px;–tw-ring-offset-color:#fff;–tw-ring-color:rgb(59 130 246 / 0.5);–tw-ring-offset-shadow:0 0 #0000;–tw-ring-shadow:0 0 #0000;–tw-shadow:0 0 #0000;–tw-shadow-colored:0 0 #0000;–tw-blur: ;–tw-brightness: ;–tw-contrast: ;–tw-grayscale: ;–tw-hue-rotate: ;–tw-invert: ;–tw-saturate: ;–tw-sepia: ;–tw-drop-shadow: ;–tw-backdrop-blur: ;–tw-backdrop-brightness: ;–tw-backdrop-contrast: ;–tw-backdrop-grayscale: ;–tw-backdrop-hue-rotate: ;–tw-backdrop-invert: ;–tw-backdrop-opacity: ;–tw-backdrop-saturate: ;–tw-backdrop-sepia: ;–tw-contain-size: ;–tw-contain-layout: ;–tw-contain-paint: ;–tw-contain-style: }::backdrop{–tw-border-spacing-x:0;–tw-border-spacing-y:0;–tw-translate-x:0;–tw-translate-y:0;–tw-rotate:0;–tw-skew-x:0;–tw-skew-y:0;–tw-scale-x:1;–tw-scale-y:1;–tw-pan-x: ;–tw-pan-y: ;–tw-pinch-zoom: ;–tw-scroll-snap-strictness:proximity;–tw-gradient-from-position: ;–tw-gradient-via-position: ;–tw-gradient-to-position: ;–tw-ordinal: ;–tw-slashed-zero: ;–tw-numeric-figure: ;–tw-numeric-spacing: ;–tw-numeric-fraction: ;–tw-ring-inset: ;–tw-ring-offset-width:0px;–tw-ring-offset-color:#fff;–tw-ring-color:rgb(59 130 246 / 0.5);–tw-ring-offset-shadow:0 0 #0000;–tw-ring-shadow:0 0 #0000;–tw-shadow:0 0 #0000;–tw-shadow-colored:0 0 #0000;–tw-blur: ;–tw-brightness: ;–tw-contrast: ;–tw-grayscale: ;–tw-hue-rotate: ;–tw-invert: ;–tw-saturate: ;–tw-sepia: ;–tw-drop-shadow: ;–tw-backdrop-blur: ;–tw-backdrop-brightness: ;–tw-backdrop-contrast: ;–tw-backdrop-grayscale: ;–tw-backdrop-hue-rotate: ;–tw-backdrop-invert: ;–tw-backdrop-opacity: ;–tw-backdrop-saturate: ;–tw-backdrop-sepia: ;–tw-contain-size: ;–tw-contain-layout: ;–tw-contain-paint: ;–tw-contain-style: }/* ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com */*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::after,::before{–tw-content:”}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, “Liberation Mono”, “Courier New”, monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0px}.inset-x-0{left:0px;right:0px}.-bottom-16{bottom:-4rem}.-left-16{left:-4rem}.-right-16{right:-4rem}.-top-16{top:-4rem}.bottom-0{bottom:0px}.bottom-4{bottom:1rem}.left-4{left:1rem}.right-4{right:1rem}.top-0{top:0px}.top-4{top:1rem}.z-10{z-index:10}.z-50{z-index:50}.col-span-2{grid-column:span 2 / span 2}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:0.25rem}.ml-1{margin-left:0.25rem}.mt-0.5{margin-top:0.125rem}.mt-1{margin-top:0.25rem}.mt-16{margin-top:4rem}.mt-3{margin-top:0.75rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-3.5{height:0.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-80{height:20rem}.h-auto{height:auto}.h-full{height:100%}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-20{width:5rem}.w-3.5{width:0.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}@keyframes bounce{0%, 100%{transform:translateY(-25%);animation-timing-function:cubic-bezier(0.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,0.2,1)}}.animate-bounce{animation:bounce 1s infinite}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.grid-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:0.25rem}.gap-1.5{gap:0.375rem}.gap-2{gap:0.5rem}.gap-3{gap:0.75rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-1 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(0.25rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(0.25rem * var(–tw-space-y-reverse))}.space-y-10 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(2.5rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(–tw-space-y-reverse))}.space-y-12 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(3rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(3rem * var(–tw-space-y-reverse))}.space-y-2 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(0.5rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(0.5rem * var(–tw-space-y-reverse))}.space-y-3 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(0.75rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(0.75rem * var(–tw-space-y-reverse))}.space-y-4 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(1rem * var(–tw-space-y-reverse))}.space-y-5 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(–tw-space-y-reverse))}.space-y-6 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(–tw-space-y-reverse))}.space-y-8 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(2rem * var(–tw-space-y-reverse))}.divide-y > :not([hidden]) ~ :not([hidden]){–tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 – var(–tw-divide-y-reverse)));border-bottom-width:calc(1px * var(–tw-divide-y-reverse))}.divide-slate-100 > :not([hidden]) ~ :not([hidden]){–tw-divide-opacity:1;border-color:rgb(241 245 249 / var(–tw-divide-opacity, 1))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.scroll-smooth{scroll-behavior:smooth}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:0.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:0.5rem}.rounded-xl{border-radius:0.75rem}.rounded-r-xl{border-top-right-radius:0.75rem;border-bottom-right-radius:0.75rem}.rounded-tl-2xl{border-top-left-radius:1rem}.rounded-tr-2xl{border-top-right-radius:1rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-amber-200{–tw-border-opacity:1;border-color:rgb(253 230 138 / var(–tw-border-opacity, 1))}.border-amber-400/30{border-color:rgb(251 191 36 / 0.3)}.border-amber-400/40{border-color:rgb(251 191 36 / 0.4)}.border-amber-500{–tw-border-opacity:1;border-color:rgb(245 158 11 / var(–tw-border-opacity, 1))}.border-amber-500/30{border-color:rgb(245 158 11 / 0.3)}.border-emerald-200{–tw-border-opacity:1;border-color:rgb(167 243 208 / var(–tw-border-opacity, 1))}.border-slate-100{–tw-border-opacity:1;border-color:rgb(241 245 249 / var(–tw-border-opacity, 1))}.border-slate-200{–tw-border-opacity:1;border-color:rgb(226 232 240 / var(–tw-border-opacity, 1))}.border-slate-300{–tw-border-opacity:1;border-color:rgb(203 213 225 / var(–tw-border-opacity, 1))}.border-slate-800{–tw-border-opacity:1;border-color:rgb(30 41 59 / var(–tw-border-opacity, 1))}.border-white/10{border-color:rgb(255 255 255 / 0.1)}.border-white/20{border-color:rgb(255 255 255 / 0.2)}.bg-amber-100{–tw-bg-opacity:1;background-color:rgb(254 243 199 / var(–tw-bg-opacity, 1))}.bg-amber-50{–tw-bg-opacity:1;background-color:rgb(255 251 235 / var(–tw-bg-opacity, 1))}.bg-amber-50/70{background-color:rgb(255 251 235 / 0.7)}.bg-amber-50/80{background-color:rgb(255 251 235 / 0.8)}.bg-amber-500/10{background-color:rgb(245 158 11 / 0.1)}.bg-amber-500/20{background-color:rgb(245 158 11 / 0.2)}.bg-amber-600{–tw-bg-opacity:1;background-color:rgb(217 119 6 / var(–tw-bg-opacity, 1))}.bg-black/25{background-color:rgb(0 0 0 / 0.25)}.bg-black/30{background-color:rgb(0 0 0 / 0.3)}.bg-black/40{background-color:rgb(0 0 0 / 0.4)}.bg-black/60{background-color:rgb(0 0 0 / 0.6)}.bg-emerald-50/70{background-color:rgb(236 253 245 / 0.7)}.bg-orange-500{–tw-bg-opacity:1;background-color:rgb(249 115 22 / var(–tw-bg-opacity, 1))}.bg-red-100{–tw-bg-opacity:1;background-color:rgb(254 226 226 / var(–tw-bg-opacity, 1))}.bg-red-600{–tw-bg-opacity:1;background-color:rgb(220 38 38 / var(–tw-bg-opacity, 1))}.bg-slate-100{–tw-bg-opacity:1;background-color:rgb(241 245 249 / var(–tw-bg-opacity, 1))}.bg-slate-50{–tw-bg-opacity:1;background-color:rgb(248 250 252 / var(–tw-bg-opacity, 1))}.bg-slate-900{–tw-bg-opacity:1;background-color:rgb(15 23 42 / var(–tw-bg-opacity, 1))}.bg-slate-950/85{background-color:rgb(2 6 23 / 0.85)}.bg-white{–tw-bg-opacity:1;background-color:rgb(255 255 255 / var(–tw-bg-opacity, 1))}.bg-white/10{background-color:rgb(255 255 255 / 0.1)}.bg-white/5{background-color:rgb(255 255 255 / 0.05)}.bg-white/95{background-color:rgb(255 255 255 / 0.95)}.bg-yellow-500/10{background-color:rgb(234 179 8 / 0.1)}.bg-gradient-to-r{background-image:linear-gradient(to right, var(–tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top, var(–tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right, var(–tw-gradient-stops))}.from-amber-500{–tw-gradient-from:#f59e0b var(–tw-gradient-from-position);–tw-gradient-to:rgb(245 158 11 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-amber-600{–tw-gradient-from:#d97706 var(–tw-gradient-from-position);–tw-gradient-to:rgb(217 119 6 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-amber-900{–tw-gradient-from:#78350f var(–tw-gradient-from-position);–tw-gradient-to:rgb(120 53 15 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-black/90{–tw-gradient-from:rgb(0 0 0 / 0.9) var(–tw-gradient-from-position);–tw-gradient-to:rgb(0 0 0 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-orange-500{–tw-gradient-from:#f97316 var(–tw-gradient-from-position);–tw-gradient-to:rgb(249 115 22 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-orange-600{–tw-gradient-from:#ea580c var(–tw-gradient-from-position);–tw-gradient-to:rgb(234 88 12 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-red-600{–tw-gradient-from:#dc2626 var(–tw-gradient-from-position);–tw-gradient-to:rgb(220 38 38 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-slate-900{–tw-gradient-from:#0f172a var(–tw-gradient-from-position);–tw-gradient-to:rgb(15 23 42 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.via-amber-500{–tw-gradient-to:rgb(245 158 11 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), #f59e0b var(–tw-gradient-via-position), var(–tw-gradient-to)}.via-amber-950{–tw-gradient-to:rgb(69 26 3 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), #451a03 var(–tw-gradient-via-position), var(–tw-gradient-to)}.via-black/60{–tw-gradient-to:rgb(0 0 0 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), rgb(0 0 0 / 0.6) var(–tw-gradient-via-position), var(–tw-gradient-to)}.via-orange-500{–tw-gradient-to:rgb(249 115 22 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), #f97316 var(–tw-gradient-via-position), var(–tw-gradient-to)}.via-rose-600{–tw-gradient-to:rgb(225 29 72 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), #e11d48 var(–tw-gradient-via-position), var(–tw-gradient-to)}.to-amber-500{–tw-gradient-to:#f59e0b var(–tw-gradient-to-position)}.to-orange-500{–tw-gradient-to:#f97316 var(–tw-gradient-to-position)}.to-red-500{–tw-gradient-to:#ef4444 var(–tw-gradient-to-position)}.to-red-700{–tw-gradient-to:#b91c1c var(–tw-gradient-to-position)}.to-slate-900{–tw-gradient-to:#0f172a var(–tw-gradient-to-position)}.to-transparent{–tw-gradient-to:transparent var(–tw-gradient-to-position)}.to-yellow-500{–tw-gradient-to:#eab308 var(–tw-gradient-to-position)}.to-yellow-600{–tw-gradient-to:#ca8a04 var(–tw-gradient-to-position)}.fill-amber-400{fill:#fbbf24}.fill-white{fill:#fff}.object-cover{object-fit:cover}.p-1{padding:0.25rem}.p-1.5{padding:0.375rem}.p-3{padding:0.75rem}.p-3.5{padding:0.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-2{padding-left:0.5rem;padding-right:0.5rem}.px-2.5{padding-left:0.625rem;padding-right:0.625rem}.px-3{padding-left:0.75rem;padding-right:0.75rem}.px-3.5{padding-left:0.875rem;padding-right:0.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0.5{padding-top:0.125rem;padding-bottom:0.125rem}.py-1{padding-top:0.25rem;padding-bottom:0.25rem}.py-1.5{padding-top:0.375rem;padding-bottom:0.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:0.5rem;padding-bottom:0.5rem}.py-2.5{padding-top:0.625rem;padding-bottom:0.625rem}.py-3{padding-top:0.75rem;padding-bottom:0.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:0.75rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pt-1{padding-top:0.25rem}.pt-2{padding-top:0.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, “Liberation Mono”, “Courier New”, monospace}.font-sans{font-family:Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-[10px]{font-size:10px}.text-[11px]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:0.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-0.025em}.tracking-wide{letter-spacing:0.025em}.tracking-wider{letter-spacing:0.05em}.tracking-widest{letter-spacing:0.1em}.text-amber-300{–tw-text-opacity:1;color:rgb(252 211 77 / var(–tw-text-opacity, 1))}.text-amber-400{–tw-text-opacity:1;color:rgb(251 191 36 / var(–tw-text-opacity, 1))}.text-amber-500{–tw-text-opacity:1;color:rgb(245 158 11 / var(–tw-text-opacity, 1))}.text-amber-600{–tw-text-opacity:1;color:rgb(217 119 6 / var(–tw-text-opacity, 1))}.text-amber-700{–tw-text-opacity:1;color:rgb(180 83 9 / var(–tw-text-opacity, 1))}.text-amber-800{–tw-text-opacity:1;color:rgb(146 64 14 / var(–tw-text-opacity, 1))}.text-amber-900{–tw-text-opacity:1;color:rgb(120 53 15 / var(–tw-text-opacity, 1))}.text-emerald-900{–tw-text-opacity:1;color:rgb(6 78 59 / var(–tw-text-opacity, 1))}.text-red-200{–tw-text-opacity:1;color:rgb(254 202 202 / var(–tw-text-opacity, 1))}.text-red-600{–tw-text-opacity:1;color:rgb(220 38 38 / var(–tw-text-opacity, 1))}.text-slate-300{–tw-text-opacity:1;color:rgb(203 213 225 / var(–tw-text-opacity, 1))}.text-slate-400{–tw-text-opacity:1;color:rgb(148 163 184 / var(–tw-text-opacity, 1))}.text-slate-500{–tw-text-opacity:1;color:rgb(100 116 139 / var(–tw-text-opacity, 1))}.text-slate-600{–tw-text-opacity:1;color:rgb(71 85 105 / var(–tw-text-opacity, 1))}.text-slate-700{–tw-text-opacity:1;color:rgb(51 65 85 / var(–tw-text-opacity, 1))}.text-slate-800{–tw-text-opacity:1;color:rgb(30 41 59 / var(–tw-text-opacity, 1))}.text-slate-900{–tw-text-opacity:1;color:rgb(15 23 42 / var(–tw-text-opacity, 1))}.text-white{–tw-text-opacity:1;color:rgb(255 255 255 / var(–tw-text-opacity, 1))}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{–tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);–tw-shadow-colored:0 1px 3px 0 var(–tw-shadow-color), 0 1px 2px -1px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.shadow-2xl{–tw-shadow:0 25px 50px -12px rgb(0 0 0 / 0.25);–tw-shadow-colored:0 25px 50px -12px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.shadow-lg{–tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);–tw-shadow-colored:0 10px 15px -3px var(–tw-shadow-color), 0 4px 6px -4px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.shadow-md{–tw-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);–tw-shadow-colored:0 4px 6px -1px var(–tw-shadow-color), 0 2px 4px -2px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.shadow-sm{–tw-shadow:0 1px 2px 0 rgb(0 0 0 / 0.05);–tw-shadow-colored:0 1px 2px 0 var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.shadow-xl{–tw-shadow:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);–tw-shadow-colored:0 20px 25px -5px var(–tw-shadow-color), 0 8px 10px -6px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.ring-white/30{–tw-ring-color:rgb(255 255 255 / 0.3)}.blur-3xl{–tw-blur:blur(64px);filter:var(–tw-blur) var(–tw-brightness) var(–tw-contrast) var(–tw-grayscale) var(–tw-hue-rotate) var(–tw-invert) var(–tw-saturate) var(–tw-sepia) var(–tw-drop-shadow)}.backdrop-blur-md{–tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(–tw-backdrop-blur) var(–tw-backdrop-brightness) var(–tw-backdrop-contrast) var(–tw-backdrop-grayscale) var(–tw-backdrop-hue-rotate) var(–tw-backdrop-invert) var(–tw-backdrop-opacity) var(–tw-backdrop-saturate) var(–tw-backdrop-sepia);backdrop-filter:var(–tw-backdrop-blur) var(–tw-backdrop-brightness) var(–tw-backdrop-contrast) var(–tw-backdrop-grayscale) var(–tw-backdrop-hue-rotate) var(–tw-backdrop-invert) var(–tw-backdrop-opacity) var(–tw-backdrop-saturate) var(–tw-backdrop-sepia)}.backdrop-blur-sm{–tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(–tw-backdrop-blur) var(–tw-backdrop-brightness) var(–tw-backdrop-contrast) var(–tw-backdrop-grayscale) var(–tw-backdrop-hue-rotate) var(–tw-backdrop-invert) var(–tw-backdrop-opacity) var(–tw-backdrop-saturate) var(–tw-backdrop-sepia);backdrop-filter:var(–tw-backdrop-blur) var(–tw-backdrop-brightness) var(–tw-backdrop-contrast) var(–tw-backdrop-grayscale) var(–tw-backdrop-hue-rotate) var(–tw-backdrop-invert) var(–tw-backdrop-opacity) var(–tw-backdrop-saturate) var(–tw-backdrop-sepia)}.transition{transition-property:color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.duration-300{transition-duration:300ms}.duration-500{transition-duration:500ms}.selection:bg-amber-500 *::selection{–tw-bg-opacity:1;background-color:rgb(245 158 11 / var(–tw-bg-opacity, 1))}.selection:text-white *::selection{–tw-text-opacity:1;color:rgb(255 255 255 / var(–tw-text-opacity, 1))}.selection:bg-amber-500::selection{–tw-bg-opacity:1;background-color:rgb(245 158 11 / var(–tw-bg-opacity, 1))}.selection:text-white::selection{–tw-text-opacity:1;color:rgb(255 255 255 / var(–tw-text-opacity, 1))}.hover:-translate-y-0.5:hover{–tw-translate-y:-0.125rem;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.hover:scale-110:hover{–tw-scale-x:1.1;–tw-scale-y:1.1;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.hover:bg-amber-100:hover{–tw-bg-opacity:1;background-color:rgb(254 243 199 / var(–tw-bg-opacity, 1))}.hover:bg-amber-700:hover{–tw-bg-opacity:1;background-color:rgb(180 83 9 / var(–tw-bg-opacity, 1))}.hover:bg-orange-600:hover{–tw-bg-opacity:1;background-color:rgb(234 88 12 / var(–tw-bg-opacity, 1))}.hover:bg-red-500:hover{–tw-bg-opacity:1;background-color:rgb(239 68 68 / var(–tw-bg-opacity, 1))}.hover:bg-slate-100:hover{–tw-bg-opacity:1;background-color:rgb(241 245 249 / var(–tw-bg-opacity, 1))}.hover:bg-slate-200:hover{–tw-bg-opacity:1;background-color:rgb(226 232 240 / var(–tw-bg-opacity, 1))}.hover:bg-slate-50:hover{–tw-bg-opacity:1;background-color:rgb(248 250 252 / var(–tw-bg-opacity, 1))}.hover:bg-slate-800:hover{–tw-bg-opacity:1;background-color:rgb(30 41 59 / var(–tw-bg-opacity, 1))}.hover:from-amber-600:hover{–tw-gradient-from:#d97706 var(–tw-gradient-from-position);–tw-gradient-to:rgb(217 119 6 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.hover:from-orange-500:hover{–tw-gradient-from:#f97316 var(–tw-gradient-from-position);–tw-gradient-to:rgb(249 115 22 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.hover:from-orange-600:hover{–tw-gradient-from:#ea580c var(–tw-gradient-from-position);–tw-gradient-to:rgb(234 88 12 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.hover:to-amber-600:hover{–tw-gradient-to:#d97706 var(–tw-gradient-to-position)}.hover:to-orange-600:hover{–tw-gradient-to:#ea580c var(–tw-gradient-to-position)}.hover:to-red-600:hover{–tw-gradient-to:#dc2626 var(–tw-gradient-to-position)}.hover:to-yellow-500:hover{–tw-gradient-to:#eab308 var(–tw-gradient-to-position)}.hover:text-slate-600:hover{–tw-text-opacity:1;color:rgb(71 85 105 / var(–tw-text-opacity, 1))}.hover:shadow-lg:hover{–tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);–tw-shadow-colored:0 10px 15px -3px var(–tw-shadow-color), 0 4px 6px -4px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.focus:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus:ring-2:focus{–tw-ring-offset-shadow:var(–tw-ring-inset) 0 0 0 var(–tw-ring-offset-width) var(–tw-ring-offset-color);–tw-ring-shadow:var(–tw-ring-inset) 0 0 0 calc(2px + var(–tw-ring-offset-width)) var(–tw-ring-color);box-shadow:var(–tw-ring-offset-shadow), var(–tw-ring-shadow), var(–tw-shadow, 0 0 #0000)}.focus:ring-amber-500:focus{–tw-ring-opacity:1;–tw-ring-color:rgb(245 158 11 / var(–tw-ring-opacity, 1))}.active:scale-95:active{–tw-scale-x:.95;–tw-scale-y:.95;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.group[open] .group-open:rotate-180{–tw-rotate:180deg;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.group:hover .group-hover:scale-105{–tw-scale-x:1.05;–tw-scale-y:1.05;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.group:hover .group-hover:scale-110{–tw-scale-x:1.1;–tw-scale-y:1.1;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.group:hover .group-hover:ring-8{–tw-ring-offset-shadow:var(–tw-ring-inset) 0 0 0 var(–tw-ring-offset-width) var(–tw-ring-offset-color);–tw-ring-shadow:var(–tw-ring-inset) 0 0 0 calc(8px + var(–tw-ring-offset-width)) var(–tw-ring-color);box-shadow:var(–tw-ring-offset-shadow), var(–tw-ring-shadow), var(–tw-shadow, 0 0 #0000)}@media (min-width: 640px){.sm:col-span-1{grid-column:span 1 / span 1}.sm:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.sm:grid-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr))}.sm:flex-row{flex-direction:row}.sm:items-end{align-items:flex-end}.sm:gap-3{gap:0.75rem}.sm:gap-4{gap:1rem}.sm:self-auto{align-self:auto}.sm:p-10{padding:2.5rem}.sm:p-8{padding:2rem}.sm:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm:text-2xl{font-size:1.5rem;line-height:2rem}.sm:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm:text-base{font-size:1rem;line-height:1.5rem}.sm:text-lg{font-size:1.125rem;line-height:1.75rem}.sm:text-sm{font-size:0.875rem;line-height:1.25rem}}@media (min-width: 768px){.md:inline-flex{display:inline-flex}}@media (min-width: 1024px){.lg:col-span-4{grid-column:span 4 / span 4}.lg:col-span-5{grid-column:span 5 / span 5}.lg:col-span-7{grid-column:span 7 / span 7}.lg:col-span-8{grid-column:span 8 / span 8}.lg:grid-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr))}.lg:gap-12{gap:3rem}.lg:p-10{padding:2.5rem}.lg:px-8{padding-left:2rem;padding-right:2rem}.lg:text-4xl{font-size:2.25rem;line-height:2.5rem}.lg:text-5xl{font-size:3rem;line-height:1}}
Tuyên Ngôn Cam Kết Tri Thức Tài Chính Toàn Cầu
Cha Giàu Cha Nghèo: Thay Đổi Tư Duy Tài Chính Để Làm Chủ Cuộc Đời
Tác phẩm kinh điển thay đổi nhận thức của hàng chục triệu độc giả trên toàn thế giới về tiền bạc. Không dạy bạn cách làm giàu nhanh chóng, cuốn sách trang bị tư duy cốt lõi về tài sản, tiêu sản và cách bắt đồng tiền làm việc ngược lại cho bạn.
Sách thật xuất bản chính hãng, bìa cứng sang trọng, giấy đọc chống lóa mắt
Sách tài chính cá nhân bán chạy nhất thế giới mọi thời đại
Thoát khỏi bẫy thu nhập và xây dựng dòng tiền thụ động vững chắc
Nhận trọn bộ cẩm nang + Tặng kèm sổ tay quản lý tài chính cá nhân khi đặt mua ngay trên Shopee.
GIẢM 45%
Đã bán 5.820+ bản tháng qua
4.9/5 (4.2k đánh giá)
Top #1 Sách Tài Chính Cá Nhân Kinh Điển
Cha Giàu Cha Nghèo (Rich Dad Poor Dad) – Robert T. Kiyosaki & Lechter
Tác giả: Robert T. Kiyosaki. Nhà xuất bản Trẻ phát hành độc quyền chuẩn chỉnh.
Đánh giá từ chuyên gia Bookademy & Tài chính:
“Cuốn sách lật tung mọi định kiến giáo dục truyền thống về tiền bạc. Người nghèo và tầng lớp trung lưu làm việc vì tiền, trong khi người giàu buộc tiền phải làm việc vất vả cho họ. Đây là quyển sách vỡ lòng bắt buộc phải đọc trước khi bạn nghĩ đến việc đầu tư.”
148.000 ₫
Tiết kiệm 67.000 ₫
Flash Sale Kết Thúc Sau:
Chỉ còn 24 suất ưu đãi
SĂN GIÁ GIẢM TRÊN SHOPEE
Đổi trả miễn phí 7 ngày
Bảng Tham Khảo So Sánh Giá Thực Tế
Top 10 Sách Tài Chính & Đầu Tư Kinh Điển Nên Đọc Cùng
Dữ liệu giá gốc, giá khuyến mại và mức giảm giá cập nhật mới nhất từ thị trường.
Đã kiểm định giá tốt nhất
| STT & Tác phẩm | Ảnh minh họa | Nội dung cốt lõi | Giá gốc | Giá ưu đãi | Mức giảm | Tìm trên Shopee |
|---|---|---|---|---|---|---|
|
1. Dạy Con Làm Giàu – Tập 2: Sử Dụng Vốn Robert T. Kiyosaki |
|
Kim tứ đồ: 4 nhóm người làm công, tự kinh doanh, chủ doanh nghiệp và nhà đầu tư. | 150.000 ₫ | 89.000 ₫ | -40% |
SHOPEE
|
|
2. Người Giàu Có Nhất Thành Babylon George S. Clason |
|
Những nguyên tắc tài chính bất biến qua các câu chuyện ngụ ngôn cổ đại vùng Babylon. | 79.000 ₫ | 49.000 ₫ | -38% |
SHOPEE
|
|
3. Người Đàn Ông Giàu Có Nhất Thành Babylon George S. Clason |
|
5 quy luật vàng về vàng và cách tiết kiệm tích lũy tài sản từ thu nhập ban đầu. | 85.000 ₫ | 52.000 ₫ | -39% |
SHOPEE
|
|
4. Tư Duy Nhanh Và Chậm (Thinking, Fast and Slow) Daniel Kahneman |
|
Giải mã hai hệ thống tư duy chi phối mọi quyết định tài chính và đầu tư của con người. | 230.000 ₫ | 149.000 ₫ | -35% |
SHOPEE
|
|
5. Biến 10 Triệu Thành 1 Tỷ Trên Thị Trường Chứng Khoán Phạm Sỹ Vương |
|
Phương pháp tích lũy tài sản từ số vốn nhỏ dành cho nhà đầu tư F0 tại Việt Nam. | 160.000 ₫ | 105.000 ₫ | -34% |
SHOPEE
|
|
6. Payback Time – Ngày Đòi Nợ (Đầu Tư Giá Trị) Phil Town |
|
Quy tắc 4 chữ M tìm kiếm doanh nghiệp tuyệt vời để đầu tư an toàn và sinh lời cao. | 190.000 ₫ | 128.000 ₫ | -32% |
SHOPEE
|
|
7. Người Giàu Có Nhất Thành Babylon (Bản Đặc Biệt) George S. Clason |
|
Phiên bản bìa cứng sưu tầm lưu giữ những bí quyết quản lý tiền kinh điển. | 120.000 ₫ | 79.000 ₫ | -34% |
SHOPEE
|
|
8. Tâm Lý Học Tài Chính (The Psychology of Money) Morgan Housel |
|
20 bài học kinh điển về sự giàu có, lòng tham và hạnh phúc thông qua hành vi con người. | 160.000 ₫ | 109.000 ₫ | -32% |
SHOPEE
|
|
9. Hướng Dẫn Đầu Tư Bất Động Sản Từ A Đến Z Brandon Turner |
|
Bí quyết tạo dòng tiền từ cho thuê và khai thác bất động sản không cần vốn lớn. | 220.000 ₫ | 149.000 ₫ | -32% |
SHOPEE
|
|
10. Người Giàu Có Nhất Mọi Thời Đại Charles Speziale |
|
Nghệ thuật tích lũy tài sản và tư duy quản trị tài chính cá nhân vượt thời gian. | 130.000 ₫ | 88.000 ₫ | -32% |
SHOPEE
|
•
Thời gian đọc: 16 phút
•
Cập nhật mới nhất hôm nay
Phân Tích Chuyên Sâu: Tại Sao “Cha Giàu Cha Nghèo” Là Cuốn Sách Thay Đổi Cuộc Đời Bạn?
Hệ thống giáo dục truyền thống dạy chúng ta cách trở thành một nhân viên mẫn cán, làm việc kiếm tiền để trang trải hóa đơn, nhưng hoàn toàn bỏ quên một kỹ năng sống còn: Cách tiền bạc vận hành và sinh sôi. Tác phẩm của Robert Kiyosaki chính là chiếc chìa khóa phá vỡ lối mòn tư duy ấy.
Bài Học Cốt Lõi 1: Phân Biệt Rạch Ròi Giữa “Tài Sản” và “Tiêu Sản”
Định nghĩa đơn giản nhưng mang tính cách mạng của Robert Kiyosaki: Tài sản là thứ bỏ tiền vào túi bạn, còn tiêu sản là thứ lấy tiền ra khỏi túi bạn. Hầu hết mọi người lầm tưởng ngôi nhà đang ở hay chiếc xe hơi đắt tiền là tài sản lớn nhất của họ, trong khi thực chất chúng là tiêu sản ngốn chi phí bảo dưỡng và lãi vay hàng tháng. Người giàu tập trung tích lũy tài sản sinh dòng tiền (cổ phiếu, bất động sản cho thuê, bản quyền tác phẩm).
Thuộc về Tiêu sản vì bạn phải chi trả tiền vay thế chấp, thuế đất và chi phí sửa chữa định kỳ hàng năm mà không đem lại thu nhập trực tiếp.
Thuộc về Tài sản vì mang lại dòng tiền cổ tức đều đặn và tiềm năng tăng trưởng vốn chủ sở hữu theo thời gian.
Bài Học Cốt Lõi 2: Thoát Khỏi “Bẫy Chuột Hamster” (Rat Race)
Hình ảnh chú chuột chạy vòng tròn trên lồng quay tượng trưng cho phần lớn tầng lớp lao động: Đi học -> Đi làm công ăn lương -> Nhận lương trả hóa đơn -> Lương tăng lại mua thêm tiêu sản (xe sang, nhà lớn hơn) -> Chi phí tăng và tiếp tục vòng luẩn quẩn không lối thoát. Để thoát bẫy này, bạn phải học cách để đồng tiền làm việc thay vì bản thân làm việc vì tiền.
Bài Học Cốt Lõi 3: Phát Triển Trí Tuệ Tài Chính (Financial Literacy)
Trí tuệ tài chính bao gồm 4 kỹ năng chính: Kế toán (hiểu báo cáo tài chính), Đầu tư (khoa học kiếm tiền đẻ ra tiền), Hiểu biết thị trường (cung cầu và tiếp thị), và Luật pháp (tối ưu thuế, bảo vệ tài sản). Khi bạn làm chủ được 4 yếu tố này, sự giàu có sẽ đến như một hệ quả tất yếu.
Video Phân Tích & Tóm Tắt Sách Cha Giàu Cha Nghèo
Xem video phân tích sinh động về những triết lý tài chính kinh điển của Robert Kiyosaki (nhấn nút Play để chuyển hướng xem trực tiếp trên YouTube):
Bắt Đầu Hành Trình Tự Do Tài Chính Ngay Hôm Nay
Một quyết định nhỏ hôm nay thay đổi tư duy quản lý tiền bạc sẽ tạo ra sự khác biệt lớn cho tương lai tự do tài chính của bạn và gia đình.
Câu Hỏi Thường Gặp Của Độc Giả (FAQ)
1. Cuốn sách này có phù hợp với học sinh, sinh viên chưa có thu nhập không?
Cực kỳ phù hợp. Đọc sách từ sớm giúp bạn hình thành tư duy quản lý tiền bạc đúng đắn, tránh những cạm bẫy tín dụng và biết cách tích lũy tài sản ngay khi bắt đầu có thu nhập đầu đời.
2. Sách in chất lượng thế nào? Có phải sách chính hãng không?
Cam kết 100% sách thật xuất bản chuẩn từ NXB Uy Tín, giấy xốp chống lóa, nét chữ sắc nét. Khách hàng được kiểm tra hàng trước khi thanh toán.
3. Thời gian giao hàng trên Shopee mất bao lâu?
Hàng có sẵn kho, giao nhanh nội thành Hà Nội & TP.HCM từ 1-2 ngày, các tỉnh thành khác từ 2-3 ngày làm việc.
lucide.createIcons();
let configEndpoint = “https://khuyendung.net/App/API/addNewPostFromGemini.php”;
let configSecretKey = “123456”;
function openApiModal() {
document.getElementById(‘apiEndpointInput’).value = configEndpoint;
document.getElementById(‘apiSecretKeyInput’).value = configSecretKey;
const modal = document.getElementById(‘apiConfigModal’);
modal.classList.remove(‘hidden’);
modal.classList.add(‘flex’);
}
function closeApiModal() {
const modal = document.getElementById(‘apiConfigModal’);
modal.classList.add(‘hidden’);
modal.classList.remove(‘flex’);
}
function saveApiConfig() {
configEndpoint = document.getElementById(‘apiEndpointInput’).value.trim();
configSecretKey = document.getElementById(‘apiSecretKeyInput’).value.trim();
closeApiModal();
showNotice(“Thành công”, “Đã lưu thông tin cấu hình API Export2Khuyendung!”, true);
}
function showNotice(title, message, isSuccess = true) {
const modal = document.getElementById(‘noticeModal’);
const iconDiv = document.getElementById(‘noticeIcon’);
document.getElementById(‘noticeTitle’).innerText = title;
document.getElementById(‘noticeMessage’).innerText = message;
if (isSuccess) {
iconDiv.className = “w-14 h-14 mx-auto rounded-full flex items-center justify-center text-amber-600 bg-amber-100″;
iconDiv.innerHTML = ”;
} else {
iconDiv.className = “w-14 h-14 mx-auto rounded-full flex items-center justify-center text-red-600 bg-red-100″;
iconDiv.innerHTML = ”;
}
modal.classList.remove(‘hidden’);
modal.classList.add(‘flex’);
}
function closeNoticeModal() {
const modal = document.getElementById(‘noticeModal’);
modal.classList.add(‘hidden’);
modal.classList.remove(‘flex’);
}
async function exportToKhuyendung() {
const articleTitle = document.title;
const pageHtmlContent = document.documentElement.outerHTML;
const payload = {
secret_key: configSecretKey,
title: articleTitle,
content: pageHtmlContent
};
try {
const response = await fetch(configEndpoint, {
method: “POST”,
headers: { “Content-Type”: “application/json” },
body: JSON.stringify(payload)
});
const textResp = await response.text();
let parsed;
try { parsed = JSON.parse(textResp); } catch(e) { parsed = textResp; }
const displayMsg = typeof parsed === ‘object’ ? JSON.stringify(parsed, null, 2) : parsed;
showNotice(“Phản Hồi Từ API”, `HTTP ${response.status}: ${displayMsg}`, response.ok);
} catch (error) {
showNotice(“Lỗi Kết Nối API”, `Không thể gửi dữ liệu: ${error.message}. Vui lòng kiểm tra lại cấu hình Endpoint hoặc mạng.`, false);
}
}
function copyArticleHtml() {
const content = document.getElementById(‘articleContent’).outerHTML;
const tempTextarea = document.createElement(‘textarea’);
tempTextarea.value = content;
tempTextarea.style.position = ‘fixed’;
tempTextarea.style.left = ‘-9999px’;
document.body.appendChild(tempTextarea);
tempTextarea.select();
try {
document.execCommand(‘copy’);
showNotice(“Sao Chép Thành Công”, “Đã copy toàn bộ mã HTML của bài viết vào bộ nhớ tạm (Clipboard)!”);
} catch (err) {
showNotice(“Lỗi Sao Chép”, “Không thể copy tự động, vui lòng thử lại!”, false);
}
document.body.removeChild(tempTextarea);
}
let totalSeconds = 11 * 3600 + 35 * 60 + 48;
let millis = 89;
setInterval(() => {
millis -= 7;
if (millis 0) totalSeconds–;
}
const hrs = Math.floor(totalSeconds / 3600);
const mins = Math.floor((totalSeconds % 3600) / 60);
const secs = totalSeconds % 60;
document.getElementById(‘hours’).innerText = hrs < 10 ? '0' + hrs : hrs;
document.getElementById('minutes').innerText = mins < 10 ? '0' + mins : mins;
document.getElementById('seconds').innerText = secs < 10 ? '0' + secs : secs;
document.getElementById('millis').innerText = millis < 10 ? '0' + millis : millis;
}, 70);