const sleep = ms => new Promise(r=>setTimeout(r,ms)); const propsOf = el => { for (const k of Object.keys(el)) if (k.startsWith('__reactProps$')) return el[k]; return null; }; const fire = (el) => { let t = el; for (let i=0;i<8&&t;i++){const q=propsOf(t); if(q&&typeof q.onClick==='function'){q.onClick({target:t,currentTarget:t,stopPropagation(){},preventDefault(){},nativeEvent:{},button:0,detail:1});return true;} t=t.parentElement;} return false; }; // report radio states with their labels const groups=[]; for (const lab of document.querySelectorAll('span[class*="ratio-label_"]')) { if (lab.offsetParent===null) continue; const row = lab.parentElement; const opts=[]; for (const inp of row.querySelectorAll('input[type=radio]')) { const sp = inp.closest('label') || inp.parentElement; opts.push({t:(sp.innerText||'').trim(), on: inp.checked}); } groups.push({name:(lab.innerText||'').trim(), opts}); } return {groups};