דף הבית » דיני עבודה » ניהול שכר » הדור הבא של חשבות השכר: בינה מלאכותית מול קובצי אקסל עקשניים

מאמרים חדשים

עודכן לאחרונה 

המאמרים הבאים עברו עדכונים ושיפורים על מנת להתאים לשינויים העדכניים בשוק העבודה ובחוקי דיני עבודה

קטגוריות
ארכיון
אפריל 2025
א ב ג ד ה ו ש
 12345
6789101112
13141516171819
20212223242526
27282930  

הדור הבא של חשבות השכר: בינה מלאכותית מול קובצי אקסל עקשניים

מבוא

קובצי אקסל מלווים את מחלקות השכר כבר יותר משלושה עשורים. הם נולדו כפתרון מהיר וגמיש, אך ככל שהעסקים גדלו והרגולציה הסתבכה, הפכו הקבצים הירוקים למטריקס סבוך של נוסחאות, מקרו ושורות בלתי‑נגמרות. שגיאה אחת בתא בודד עלולה לגרום לבונוס שגוי, לחסרים בהפרשות או לקנס רגולטורי כואב.

במקביל, בינה מלאכותית חדרה לכל תחומי הניהול הפיננסי. מודלים חכמים מנתחים כמויות עצומות של נתונים, מזהים חריגות בזמן אמת ומספקים תחזיות מדויקות. השילוב בין AI למחלקת השכר מבטיח דיוק, שקיפות וחוויית עובד משופרת – אבל גם מעלה שאלות של אבטחת מידע, ניהול שינוי והחזר השקעה.

המאמר שלפניכם סוקר את התפתחות האקסל, מסביר כיצד אלגוריתמים מודרניים פותרים בעיות ישנות, ומתווה מפת דרכים להטמעה מוצלחת של פתרונות AI. לכל אורך הדרך נשמור על פסקאות קצרות, נטולות ז’רגון מיותר, כדי שתוכלו להעביר את התובנות הלאה – גם למנכ״ל עסוק וגם לחשב השכר הוותיק.

לבסוף, נסיים במבט קדימה: מה צפוי בעשור הקרוב, אילו כישורים יידרשו מחשבי השכר, וכיצד ארגונים ימדדו הצלחה בעולם שבו האלגוריתם לא יוצא לחופשה והטבלאות מתעדכנות מעצמן.

היסטוריה קצרה של האקסל במחלקת השכר

בשנות התשעים התקבל אקסל בהתלהבות. סוף‑סוף היה כלי שולחני שמאפשר ליצור נוסחאות ולצייר גרפים בלחיצת כפתור. מחלקות שכר אימצו אותו בחום, במיוחד כיוון שהמערכות הייעודיות דאז היו יקרות ומסורבלות.

עם השנים גדלו קובצי השכר. נוסחאות VLOOKUP השתלבו עם IF מקונן, עמודות נסתרות החביאו רכיבים רגישים, ומקרו ב‑VBA הוסיף אוטומציה חלקית. כאשר מפתח המקרו עזב את הארגון, נשארה ירושה לא‑מתועדת שאיש חושש לגעת בה.

האקסל הוכיח מגבלות ברורות בקנה‑מידה. מעל 100,000 שורות התחילו גרסאות ישנות לקרטע, פילטרים הפכו איטיים, וחיבורי ODBC לבסיסי נתונים נותקו ברגעים קריטיים. צוותי שכר נאלצו לפצל קבצים, מה שיצר “איי מידע” ומנע תצוגה הוליסטית.

אבטחת המידע הייתה עקב אכילס נוסף. הרשאות קריאה‑כתיבה ניתנו בלחיצת כפתור, וקובץ לא מוצפן נשלח לא פעם במייל. דליפת נתוני שכר אינה רק פגיעה בכיס; היא מכה אנושה באמון העובדים ובמוניטין המעסיק.

כניסת הענן הביאה גרסאות משותפות, אך גם התנגשויות. עובדים ברחבי העולם ערכו את אותו גיליון, גרסאות צמחו זו לצד זו, והסיכוי למחיקת נוסחה קריטית גדל. במקום להאיץ תהליכים, שיתוף הקבצים הפך לרולטה רוסית.

כך נוצר הצורך בפתרון חדש: מערכת שמבינה נתוני שכר לעומק, מציעה אוטומציה חכמה, ומונעת טעויות עוד לפני שהן עוברות לבנק או לרשות המס.

כיצד הבינה המלאכותית מזהה חריגות

מערכות AI מודרניות בונות מודל סטטיסטי של כל רכיבי השכר בארגון. האלגוריתם “לומד” מהו טווח שכר בסיס, כמה שעות נוספות מתקבלות במחלקות שונות, ומהו ממוצע ההחזר עבור נסיעות. חריגה מכלל סטטיסטי זה מייצרת התראה מיידית.

לדוגמה, אם עובד מקבל בממוצע 1,800 ₪ החזר רכב, ופתאום נרשם החודש סכום של 4,500 ₪, המערכת מסמנת חריגה עוד לפני סגירת התלוש. כך נחסכות שעות חיפוש שגיאות בדיעבד ונמנעות הפתעות לא נעימות לעובד ולמעסיק.

מעבר לסטטיסטיקה בסיסית, האלגוריתם “מזריק” טקסט חקיקתי אל תוך תהליך הלמידה. תקנות חדשות, שינויי מדרגות מס או עדכוני ביטוח לאומי מוטמעים במודל, והסף לחריגה משתנה אוטומטית. התהליך מבטל צורך במעקב ידני אחרי עשרות קובצי PDF.

מערכת AI טיפוסית מציגה דשבורד אינטראקטיבי. מנהל השכר רואה גרף מגמות, רשימת חריגות בצבעים, ויכולת “קדיחה” (drill‑down) לפרטי העובד. כל התראה מתוייגת ברמת חומרה, כך שקל להחליט מה דורש טיפול מיידי ומה ניתן לדחות לסוף היום.

בנוסף, כל חריגה נכנסת למאגר ידע. אם אותו סוג טעות חוזר, המערכת מציעה תיקון אוטומטי או לפחות מתווה פעולה. כך ה‑AI לא רק מגלה בעיות – הוא לומד מהן ומקטין את הסיכוי לחזרה.

שילוב ChatGPT בתשובות לעובדים

דור העובדים הצעיר מצפה למידע מיידי. טפסים מודפסים והמתנה לאימייל כבר לא מתאימים לשגרת עבודה שמתרחשת בסמארטפון. שילוב ChatGPT במערכת השכר עונה בדיוק על הצורך הזה.

העובד מקליד שאלה פשוטה: “למה המס שלי עלה החודש?” הצ’אטבוט שולף את נתוני התלוש, משווה למדרגות המס הרלוונטיות ומסביר בשפה טבעית את הסיבה: שינוי סטטוס משפחתי, סיום נקודות זיכוי או העלאה בשכר הבסיס.

ה‑LLM מוזן רק במידע המורשה עבור אותו עובד, כך שהפרטיות נשמרת. במקביל, הוא מסתמך על מאגר חוקים ונהלים עדכני. אם השאלה מורכבת מדי, הבוט מעביר את הפנייה לנציג אנושי ומצרף סיכום שיח קצר, מה שחוסך זמן תחקור.

התוצאה היא ירידה דרמטית בעומס פניות למחלקת השכר. משימות חוזרות כמו שינוי כתובת, בקשת אישור שכר או הסבר על רכיב “סעיף 14” נפתרות תוך דקות, והצוות מתפנה לניתוח נתונים ותכנון אסטרטגי.

אתגרי סייבר ופרטיות

נתוני שכר הם יעד מבוקש להאקרים. מעבר ל‑AI מגדיל את שטח התקיפה, משום שהמערכת זקוקה לנתונים רבים כדי ללמוד. לכן, יש ליישם הצפנה ברמת שדה: גם אם תוקף מגיע לבסיס הנתונים, הוא נתקל במחרוזות חסרות משמעות.

גישה מינימלית (Least Privilege) היא עיקרון חובה. עובד רואה רק את נתוניו; מנהל רואה מחלקה; חשב השכר רואה את התמונה המלאה. כל ניסיון גישה חורג מנוטר בזמן אמת ומפעיל התראה במערכת SIEM.

המערכת חייבת לעמוד בחוקי פרטיות מקומיים ובינלאומיים. ה‑GDPR מחייב “זכות להישכח”, כלומר היכולת למחוק מידע אישי לפי דרישה. AI איכותי יודע לאנונימיז נתונים כך שהמודל ממשיך לעבוד, אך המידע המזוהה נמחק.

לבסוף, יש להגן מפני פישינג ייעודי. אימיילים מתחזים המבטיחים “עדכון אלגוריתם” עלולים לפתות משתמשים למסור סיסמאות. תוכנית מודעות סייבר חייבת להתעדכן בקצב מתקפות אפס‑יום ולכלול סימולציות תקופתיות.

ROI ותיעוד טעויות חכם

הטמעת AI דורשת השקעה ראשונית: רישיונות, אינטגרציה, הדרכה. עם זאת, החיסכון מצטבר במהירות. זמן סגירת שכר מתקצר מ‑שבעה ימי עבודה לשלושה, ושיעור הטעויות צונח מ‑שלושה אחוזים לפחות מחצי אחוז.

הקנסות הרגולטוריים פוחתים הודות לזיהוי חריגות מוקדם. במקום לשלם קנס על שגיאה בדיווח שעות נוספות, המערכת מתריעה לפני הגשת הקובץ לרשות המס. חיסכון ישיר זה ניכר כבר ברבעון הראשון.

בנוסף, אמון העובדים עולה. תלוש מדויק בזמן מחזק את תחושת ההוגנות ומפחית עזיבה. עלות גיוס עובד חדש גבוהה משמעותית מהשקעה בטכנולוגיה שמונעת טעויות.

מערכת AI מתעדת כל חריגה במאגר לוגים חתום. בביקורת רבעונית ניתן לשלוף דוח מגמות, להציג ירידה עקבית בשגיאות ולתרגם את השיפור למונחים כספיים ברורים – נתון משכנע עבור דירקטוריון וצוות כספים.

טבלה: השוואה בין תהליך מבוסס אקסל לבין תהליך מבוסס AI
פרמטראקסל מסורתיפתרון AI מודרני
זמן סגירת שכר5–7 ימי עבודה2–3 ימי עבודה
שיעור שגיאות ממוצע3–5 %<0.5 %
אבטחת מידעקובץ מקומי, הרשאות בסיסיותהצפנה, IAM, SOC‑2
זיהוי חריגותבדיקה ידניתאנומליה בזמן אמת
מענה לעובדדוא״ל/טלפון, עד 48 שעותצ’אט 24/7, דקות ספורות
עדכון רגולציהידני, איטיעדכוני API אוטומטיים
עלות כוללתCAPEX נמוך, OPEX גבוהCAPEX גבוה, ROI מהיר
יכולת סקיילינגמוגבל ל‑100 אלף שורותענן, מיליוני רשומות
תיעוד ביקורותקבצים מפוזריםיומן מאוחד וחתום
חוויית משתמשטבלה סטטיתדשבורד אינטראקטיבי
ניהול שינוי והטמעה מוצלחת

מעבר מאקסל ל‑AI איננו רק פרויקט IT; הוא שינוי תרבותי. השלב הראשון הוא מיפוי תהליכים קיימים: איפה נוצרות טעויות, היכן הבקבוק‑צוואר, ומהן הדרישות הרגולטוריות הקריטיות.

לאחר המיפוי מגדירים סדרי עדיפויות. מומלץ להתחיל בתהליכים עתירי סיכון או עלות, כמו חישוב שעות נוספות ודיווח לביטוח לאומי. הצלחה מהירה יוצרת מומנטום ומפיגה התנגדויות.

הדרכת משתמשים היא מפתח. חשבי השכר צריכים להכיר את הדשבורד, ללמוד לפרש התראות, ולסמוך על המודל הסטטיסטי. סדנאות קצרות, סרטוני וידאו ומאגר שאלות נפוצות מסייעים להפחית חרדה טכנולוגית.

לבסוף, תקשורת שקופה עם ההנהלה והעובדים מגדילה את הסיכוי להטמעה מוצלחת. הציגו מדדי הצלחה ברורים – ירידת שגיאות, קיצור זמן תהליך, חיסכון בעלויות – וחגגו הישגים מוקדמים כדי לחזק את האמון בפרויקט.

מבט קדימה: מה צפוי בעשור הקרוב

מודלים גנרטיביים יפיקו חוזי העסקה אישיים בזמן אמת, תוך אופטימיזציה למס ולצרכים משפחתיים. חשב השכר יהפוך ל‑Data Scientist קטן: יפרש תובנות, ימליץ על תמריצים וידאג לציות אוטומטי.

אנליטיקה חזויה תאפשר לחזות תחלופת עובדים על סמך דפוסי שכר, ימי חופשה ומדדי שביעות רצון. כך יוכלו ארגונים לפעול פרואקטיבית ולצמצם נטישה יקרה.

Payroll‑as‑a‑Service בענן יציע מודל תשלום לפי שימוש. חברות קטנות ייהנו ממנוע AI מתקדם בלי השקעה הונית, בעוד תאגידים גדולים יאחדו מערכות גלובליות תחת פלטפורמה אחת מאובטחת.

סיכום

האקסל שירת אותנו נאמנה, אך אינו עומד עוד בקצב הרגולציה, בקנה‑המידה הגלובלי ובציפיות העובדים לדיגיטליות. בינה מלאכותית מספקת דיוק, חוויית משתמש משופרת והחזר השקעה מהיר, אך מחייבת הגנה קפדנית על פרטיות וניהול שינוי מושכל.

מי שיאמץ את המהפכה בזמן יזכה בשקט נפשי, בחיסכון כספי ובמוניטין של מעסיק מתקדם. מי שימשיך להסתמך על נוסחאות SUMIF בלבד עלול לגלות שהמתחרים משלמים משכורות מדויקות יותר, שומרים על העובדים הטובים ומושכים טאלנטים חדשים.

העתיד של חשבות השכר טמון בשילוב אינטואיציה אנושית עם אלגוריתם בלתי מתעייף. יחד הם יוצרים סביבת עבודה שבה טעויות נדירות, נתונים זמינים בלחיצת כפתור, והעובדים מקבלים את המידע שהם צריכים – מתי שהם צריכים אותו.

https://www.michpalyeda.co.il/wp-content/uploads/2025/04/בודק שכר מוסמך--מדריך הישרדות-לעולם-הרגולציה-המשתנה.png
בודק שכר מוסמך – מדריך הישרדות לעולם הרגולציה המשתנה

מבוא אם חשבתם שפעם היה קשה לנהל שכר, חכו ל־2025: יותר תקנות, יותר תביעות, יותר ביקורות – והאקסל? עדיין...

https://www.michpalyeda.co.il/wp-content/uploads/2025/04/סעיף-14.png
סעיף 14: האקס‑פקטור של יחסי עבודה

מבוא כל מעסיק ישראלי מכיר את הרגע שבו עובד ותיק פונה עם שאלה מהוססת: “אם אתפטר – אקבל פיצויי פיטורים?”...

https://www.michpalyeda.co.il/wp-content/uploads/2025/04/עדכוני-פסיקה-וחקיקה-מרץ-2025.png
עדכוני פסיקה וחקיקה מרץ 2025

לקוחות נכבדים, להלן עדכוני פסיקה וחקיקה מהחודש החולף. יום הזיכרון לחללי מערכות ישראל מאת: עו&quot;ד רינת...

https://www.michpalyeda.co.il/wp-content/uploads/2025/03/חקיקה.png
מדריך לחשב השכר המתחיל – איך להתעדכן בחוקי העבודה המשתנים?

מבוא חשבי שכר מתחילים עומדים בפני אתגר מורכב: ניהול שכר מדויק תוך התמודדות עם שינויים תכופים בחוקי העבודה....

https://www.michpalyeda.co.il/wp-content/uploads/2025/03/חשבות-שכר.png
תחומי אחריות של חשב שכר: מהות, מיומנויות וחשיבות לתפקוד הארגון

חשב השכר הוא דמות מרכזית וקריטית בכל ארגון, בין אם מדובר בעסקים קטנים, בינוניים או גדולים. חשב השכר אחראי...

ניתן להשתמש בחצי המקלדת בכדי לנווט בין כפתורי הרכיב
",e=e.removeChild(e.firstChild)):"string"==typeof o.is?e=l.createElement(a,{is:o.is}):(e=l.createElement(a),"select"===a&&(l=e,o.multiple?l.multiple=!0:o.size&&(l.size=o.size))):e=l.createElementNS(e,a),e[Ni]=t,e[Pi]=o,Pl(e,t,!1,!1),t.stateNode=e,l=Ae(a,o),a){case"iframe":case"object":case"embed":Te("load",e),u=o;break;case"video":case"audio":for(u=0;u<$a.length;u++)Te($a[u],e);u=o;break;case"source":Te("error",e),u=o;break;case"img":case"image":case"link":Te("error",e),Te("load",e),u=o;break;case"form":Te("reset",e),Te("submit",e),u=o;break;case"details":Te("toggle",e),u=o;break;case"input":A(e,o),u=M(e,o),Te("invalid",e),Ie(n,"onChange");break;case"option":u=B(e,o);break;case"select":e._wrapperState={wasMultiple:!!o.multiple},u=Uo({},o,{value:void 0}),Te("invalid",e),Ie(n,"onChange");break;case"textarea":V(e,o),u=H(e,o),Te("invalid",e),Ie(n,"onChange");break;default:u=o}Me(a,u);var s=u;for(i in s)if(s.hasOwnProperty(i)){var c=s[i];"style"===i?ze(e,c):"dangerouslySetInnerHTML"===i?(c=c?c.__html:void 0,null!=c&&Aa(e,c)):"children"===i?"string"==typeof c?("textarea"!==a||""!==c)&&X(e,c):"number"==typeof c&&X(e,""+c):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(ea.hasOwnProperty(i)?null!=c&&Ie(n,i):null!=c&&x(e,i,c,l))}switch(a){case"input":L(e),j(e,o,!1);break;case"textarea":L(e),$(e);break;case"option":null!=o.value&&e.setAttribute("value",""+P(o.value));break;case"select":e.multiple=!!o.multiple,n=o.value,null!=n?q(e,!!o.multiple,n,!1):null!=o.defaultValue&&q(e,!!o.multiple,o.defaultValue,!0);break;default:"function"==typeof u.onClick&&(e.onclick=Fe)}Ve(a,o)&&(t.effectTag|=4)}null!==t.ref&&(t.effectTag|=128)}return null;case 6:if(e&&null!=t.stateNode)Ll(e,t,e.memoizedProps,o);else{if("string"!=typeof o&&null===t.stateNode)throw Error(r(166));n=yn(yu.current),yn(bu.current),Jn(t)?(n=t.stateNode,o=t.memoizedProps,n[Ni]=t,n.nodeValue!==o&&(t.effectTag|=4)):(n=(9===n.nodeType?n:n.ownerDocument).createTextNode(o),n[Ni]=t,t.stateNode=n)}return null;case 13:return zt(vu),o=t.memoizedState,0!==(64&t.effectTag)?(t.expirationTime=n,t):(n=null!==o,o=!1,null===e?void 0!==t.memoizedProps.fallback&&Jn(t):(a=e.memoizedState,o=null!==a,n||null===a||(a=e.child.sibling,null!==a&&(i=t.firstEffect,null!==i?(t.firstEffect=a,a.nextEffect=i):(t.firstEffect=t.lastEffect=a,a.nextEffect=null),a.effectTag=8))),n&&!o&&0!==(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!==(1&vu.current)?rs===Qu&&(rs=Yu):(rs!==Qu&&rs!==Yu||(rs=Gu),0!==us&&null!==es&&(To(es,ns),Co(es,us)))),(n||o)&&(t.effectTag|=4),null);case 4:return wn(),Ol(t),null;case 10:return Zt(t),null;case 17:return It(t.type)&&Ft(),null;case 19:if(zt(vu),o=t.memoizedState,null===o)return null;if(a=0!==(64&t.effectTag),i=o.rendering,null===i){if(a)mr(o,!1);else if(rs!==Qu||null!==e&&0!==(64&e.effectTag))for(i=t.child;null!==i;){if(e=_n(i),null!==e){for(t.effectTag|=64,mr(o,!1),a=e.updateQueue,null!==a&&(t.updateQueue=a,t.effectTag|=4),null===o.lastEffect&&(t.firstEffect=null),t.lastEffect=o.lastEffect,o=t.child;null!==o;)a=o,i=n,a.effectTag&=2,a.nextEffect=null,a.firstEffect=null,a.lastEffect=null,e=a.alternate,null===e?(a.childExpirationTime=0,a.expirationTime=i,a.child=null,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null):(a.childExpirationTime=e.childExpirationTime,a.expirationTime=e.expirationTime,a.child=e.child,a.memoizedProps=e.memoizedProps,a.memoizedState=e.memoizedState,a.updateQueue=e.updateQueue,i=e.dependencies,a.dependencies=null===i?null:{expirationTime:i.expirationTime,firstContext:i.firstContext,responders:i.responders}),o=o.sibling;return Mt(vu,1&vu.current|2),t.child}i=i.sibling}}else{if(!a)if(e=_n(i),null!==e){if(t.effectTag|=64,a=!0,n=e.updateQueue,null!==n&&(t.updateQueue=n,t.effectTag|=4),mr(o,!0),null===o.tail&&"hidden"===o.tailMode&&!i.alternate)return t=t.lastEffect=o.lastEffect,null!==t&&(t.nextEffect=null),null}else 2*ru()-o.renderingStartTime>o.tailExpiration&&1t)&&vs.set(e,t)))}}function Ur(e,t){e.expirationTimee?n:e,2>=e&&t!==e?0:e}function qr(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=$t(Vr.bind(null,e));else{var t=Br(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=Fr();if(1073741823===t?r=99:1===t||2===t?r=95:(r=10*(1073741821-t)-10*(1073741821-r),r=0>=r?99:250>=r?98:5250>=r?97:95),null!==n){var o=e.callbackPriority;if(e.callbackExpirationTime===t&&o>=r)return;n!==Yl&&Bl(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?$t(Vr.bind(null,e)):Wt(r,Hr.bind(null,e),{timeout:10*(1073741821-t)-ru()}),e.callbackNode=t}}}function Hr(e,t){if(ks=0,t)return t=Fr(),No(e,t),qr(e),null;var n=Br(e);if(0!==n){if(t=e.callbackNode,(Ju&(Wu|$u))!==Hu)throw Error(r(327));if(lo(),e===es&&n===ns||Kr(e,n),null!==ts){var o=Ju;Ju|=Wu;for(var a=Yr();;)try{eo();break}catch(t){Xr(e,t)}if(Gt(),Ju=o,Bu.current=a,rs===Ku)throw t=os,Kr(e,n),To(e,n),qr(e),t;if(null===ts)switch(a=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,o=rs,es=null,o){case Qu:case Ku:throw Error(r(345));case Xu:No(e,2=n){e.lastPingedTime=n,Kr(e,n);break}}if(i=Br(e),0!==i&&i!==n)break;if(0!==o&&o!==n){e.lastPingedTime=o;break}e.timeoutHandle=Si(oo.bind(null,e),a);break}oo(e);break;case Gu:if(To(e,n),o=e.lastSuspendedTime,n===o&&(e.nextKnownPendingLevel=ro(a)),ss&&(a=e.lastPingedTime,0===a||a>=n)){e.lastPingedTime=n,Kr(e,n);break}if(a=Br(e),0!==a&&a!==n)break;if(0!==o&&o!==n){e.lastPingedTime=o;break}if(1073741823!==is?o=10*(1073741821-is)-ru():1073741823===as?o=0:(o=10*(1073741821-as)-5e3,a=ru(),n=10*(1073741821-n)-a,o=a-o,0>o&&(o=0),o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Uu(o/1960))-o,n=o?o=0:(a=0|l.busyDelayMs,i=ru()-(10*(1073741821-i)-(0|l.timeoutMs||5e3)),o=i<=a?0:a+o-i),10 component higher in the tree to provide a loading indicator or placeholder to display."+N(i))}rs!==Zu&&(rs=Xu),l=yr(l,i),f=a;do{switch(f.tag){case 3:u=l,f.effectTag|=4096,f.expirationTime=t;var w=Ar(f,u,t);ln(f,w); break e;case 1:u=l;var E=f.type,k=f.stateNode;if(0===(64&f.effectTag)&&("function"==typeof E.getDerivedStateFromError||null!==k&&"function"==typeof k.componentDidCatch&&(null===ms||!ms.has(k)))){f.effectTag|=4096,f.expirationTime=t;var _=Ir(f,u,t);ln(f,_);break e}}f=f.return}while(null!==f)}ts=no(ts)}catch(e){t=e;continue}break}}function Yr(){var e=Bu.current;return Bu.current=Cu,null===e?Cu:e}function Gr(e,t){eus&&(us=e)}function Jr(){for(;null!==ts;)ts=to(ts)}function eo(){for(;null!==ts&&!Gl();)ts=to(ts)}function to(e){var t=Fu(e.alternate,e,ns);return e.memoizedProps=e.pendingProps,null===t&&(t=no(e)),qu.current=null,t}function no(e){ts=e;do{var t=ts.alternate;if(e=ts.return,0===(2048&ts.effectTag)){if(t=br(t,ts,ns),1===ns||1!==ts.childExpirationTime){for(var n=0,r=ts.child;null!==r;){var o=r.expirationTime,a=r.childExpirationTime;o>n&&(n=o),a>n&&(n=a),r=r.sibling}ts.childExpirationTime=n}if(null!==t)return t;null!==e&&0===(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=ts.firstEffect),null!==ts.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=ts.firstEffect),e.lastEffect=ts.lastEffect),1e?t:e}function oo(e){var t=qt();return Vt(99,ao.bind(null,e,t)),null}function ao(e,t){do lo();while(null!==gs);if((Ju&(Wu|$u))!==Hu)throw Error(r(327));var n=e.finishedWork,o=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(r(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var a=ro(n);if(e.firstPendingTime=a,o<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:o<=e.firstSuspendedTime&&(e.firstSuspendedTime=o-1),o<=e.lastPingedTime&&(e.lastPingedTime=0),o<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===es&&(ts=es=null,ns=0),1u&&(c=u,u=l,l=c),c=Ue(w,l),f=Ue(w,u),c&&f&&(1!==k.rangeCount||k.anchorNode!==c.node||k.anchorOffset!==c.offset||k.focusNode!==f.node||k.focusOffset!==f.offset)&&(E=E.createRange(),E.setStart(c.node,c.offset),k.removeAllRanges(),l>u?(k.addRange(E),k.extend(f.node,f.offset)):(E.setEnd(f.node,f.offset),k.addRange(E)))))),E=[];for(k=w;k=k.parentNode;)1===k.nodeType&&E.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof w.focus&&w.focus(),w=0;w=t&&e<=t}function To(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;nt||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function Co(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function No(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Po(e,t,n,o){var a=t.current,i=Fr(),l=su.suspense;i=jr(i,a,l);e:if(n){n=n._reactInternalFiber;t:{if(J(n)!==n||1!==n.tag)throw Error(r(170));var u=n;do{switch(u.tag){case 3:u=u.stateNode.context;break t;case 1:if(It(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break t}}u=u.return}while(null!==u);throw Error(r(171))}if(1===n.tag){var s=n.type;if(It(s)){n=Dt(n,s,u);break e}}n=u}else n=Al;return null===t.context?t.context=n:t.pendingContext=n,t=on(i,l),t.payload={element:e},o=void 0===o?null:o,null!==o&&(t.callback=o),an(a,t),Dr(a,i),i}function Oo(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function Ro(e,t){e=e.memoizedState,null!==e&&null!==e.dehydrated&&e.retryTime