{"id":11750,"date":"2026-10-08T07:14:55","date_gmt":"2026-10-08T07:14:55","guid":{"rendered":"https:\/\/elahlya.net\/main\/?page_id=11750"},"modified":"2026-10-08T11:03:09","modified_gmt":"2026-10-08T11:03:09","slug":"school-library","status":"publish","type":"page","link":"https:\/\/elahlya.net\/main\/school-library\/","title":{"rendered":"\u0645\u0648\u0627\u0636\u064a\u0639 \u0648\u0627\u0645\u062a\u062d\u0627\u0646\u0627\u062a"},"content":{"rendered":"\n<!-- Elahlya educational library. Replace the API key placeholder with a browser key restricted to the school site and Google Drive API. -->\n<section id=\"elahlya-library\" dir=\"rtl\" lang=\"ar\" aria-label=\"\u0645\u0648\u0627\u0636\u064a\u0639 \u0648\u0627\u0645\u062a\u062d\u0627\u0646\u0627\u062a\">\n  <style>\n    #elahlya-library { --el-navy:#102953; --el-blue:#1762e8; --el-ink:#193252; --el-muted:#65758c; --el-border:#e2e9f2; --el-surface:#f5f8fc; color:var(--el-ink); font-family:Tahoma,Arial,sans-serif; font-size:15px; line-height:1.65; margin:24px auto; max-width:1240px; background:#fff; border:1px solid var(--el-border); border-radius:24px; box-shadow:0 12px 40px rgba(16,41,83,.06); overflow:hidden; isolation:isolate; text-align:right; }\n    #elahlya-library, #elahlya-library * { box-sizing:border-box; }\n    #elahlya-library [hidden] { display:none !important; }\n    #elahlya-library h2, #elahlya-library h3, #elahlya-library p { margin:0; }\n    #elahlya-library button, #elahlya-library input, #elahlya-library select { font:inherit; }\n    #elahlya-library button { cursor:pointer; }\n    #elahlya-library button, #elahlya-library a, #elahlya-library input, #elahlya-library select { -webkit-tap-highlight-color:transparent; }\n    #elahlya-library button:focus-visible, #elahlya-library a:focus-visible, #elahlya-library input:focus-visible, #elahlya-library select:focus-visible { outline:3px solid #78aaff; outline-offset:4px; }\n    #elahlya-library button:disabled { cursor:wait; opacity:.55; }\n    #elahlya-library svg { width:20px; height:20px; flex-shrink:0; display:block; }\n    #elahlya-library .el-sr { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }\n    #elahlya-library .el-hero { display:flex; align-items:center; gap:18px; min-height:90px; padding:12px 32px; border-bottom:1px solid #e1ebfb; background:linear-gradient(115deg,#fff 0%,#eef5ff 100%); color:var(--el-navy); }\n    #elahlya-library .el-hero-copy { flex:1; min-width:0; }\n    #elahlya-library .el-hero-title-row { display:flex; align-items:center; justify-content:space-between; gap:10px 16px; flex-wrap:wrap; }\n    #elahlya-library .el-home-link { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:44px; padding:8px 11px; border:1px solid #c9daf5; border-radius:9px; background:#fff; color:var(--el-navy); font-size:11px; font-weight:700; text-decoration:none; white-space:nowrap; }\n    #elahlya-library .el-home-link, #elahlya-library .el-home-link span, #elahlya-library .el-home-link svg { color:var(--el-navy)!important; }\n    #elahlya-library .el-home-link svg { width:16px; height:16px; }\n    #elahlya-library .el-home-link:hover { background:#eaf2ff; text-decoration:none; }\n    #elahlya-library .el-hero h2 { color:var(--el-navy); font-size:25px; font-weight:700; line-height:1.3; letter-spacing:-.4px; }\n    #elahlya-library .el-hero p { color:var(--el-muted); margin-top:4px; font-size:12px; line-height:1.5; }\n    #elahlya-library .el-illustration { flex:0 0 76px; width:76px; height:62px; opacity:.8; }\n    #elahlya-library .el-body { padding:26px 32px 22px; }\n    #elahlya-library .el-entry-nav { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:18px; }\n    #elahlya-library .el-entry-modes { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; flex:1; min-width:0; }\n    #elahlya-library .el-entry { display:flex; align-items:center; justify-content:center; gap:9px; flex:1; min-width:0; min-height:58px; padding:10px 14px; border:1px solid #dbe6f4; border-radius:12px; color:#375574; background:#f5f8fc; font-size:15px; font-weight:700; }\n    #elahlya-library .el-entry[aria-pressed=\"true\"] { color:#fff; background:#215682; border-color:#215682; box-shadow:0 4px 12px rgba(33,86,130,.12); }\n    #elahlya-library .el-entry:hover { border-color:#71a1ca; }\n    #elahlya-library .el-entry svg { width:24px; height:24px; flex-shrink:0; }\n    #elahlya-library .el-entrance { display:flex; align-items:center; justify-content:center; gap:7px; min-height:44px; padding:8px 12px; border:1px solid #dbe6f4; border-radius:10px; color:#375574; background:#fff; font-size:12px; font-weight:700; }\n    #elahlya-library .el-entrance:hover, #elahlya-library .el-entrance[aria-pressed=\"true\"] { color:#215682; background:#edf5fc; border-color:#a9c7e2; }\n    #elahlya-library .el-path-row { display:flex; gap:18px; align-items:center; margin-bottom:12px; }\n    #elahlya-library .el-path-row[hidden] { display:none; }\n    #elahlya-library .el-breadcrumbs { display:flex; align-items:center; gap:7px; flex-wrap:wrap; min-width:0; margin:0; padding:0; list-style:none; font-size:12px; }\n    #elahlya-library .el-breadcrumbs li { display:flex; align-items:center; gap:7px; min-width:0; max-width:100%; }\n    #elahlya-library .el-breadcrumbs button { border:0; background:none; color:var(--el-muted); min-height:44px; padding:4px 0; text-align:right; overflow-wrap:anywhere; }\n    #elahlya-library .el-breadcrumbs button:hover { color:var(--el-blue); }\n    #elahlya-library .el-breadcrumbs .el-current { color:var(--el-navy); font-weight:700; overflow-wrap:anywhere; }\n    #elahlya-library .el-breadcrumbs svg { width:13px; height:13px; color:#98a6b8; }\n    #elahlya-library .el-refresh { display:inline-flex; align-items:center; justify-content:center; gap:7px; color:var(--el-muted); padding:7px 10px; background:#fff; border:1px solid var(--el-border); border-radius:9px; font-size:12px; white-space:nowrap; flex-shrink:0; }\n    #elahlya-library .el-refresh:hover { color:var(--el-blue); background:#f6f9ff; border-color:#c7d9fa; }\n    #elahlya-library .el-refresh { width:46px; height:46px; padding:10px; }\n    #elahlya-library .el-refresh span { display:none; }\n    #elahlya-library .el-refresh svg { width:16px; height:16px; }\n    #elahlya-library .el-toolbar { display:flex; align-items:center; gap:12px; padding:14px; background:var(--el-surface); border:1px solid #e9eef5; border-radius:14px; }\n    #elahlya-library .el-search { min-width:0; flex:1; position:relative; display:flex; align-items:center; }\n    #elahlya-library .el-search > svg { position:absolute; right:14px; color:#8091a9; width:19px; height:19px; pointer-events:none; }\n    #elahlya-library .el-search input { width:100%; min-width:0; height:46px; padding:10px 43px 10px 38px; background:#fff; border:1px solid var(--el-border); border-radius:10px; color:var(--el-ink); font-size:13px; }\n    #elahlya-library .el-search input::placeholder { color:#7b899d; opacity:1; }\n    #elahlya-library .el-clear { position:absolute; left:1px; width:44px; height:44px; display:grid; place-items:center; background:none; border:0; padding:5px; border-radius:6px; color:var(--el-muted); }\n    #elahlya-library .el-clear svg { width:17px; height:17px; }\n    #elahlya-library .el-sort { width:162px; height:46px; color:#405572; background:#fff; border:1px solid var(--el-border); border-radius:10px; padding:8px 11px; font-size:12px; flex-shrink:0; }\n    #elahlya-library .el-search-submit { height:46px; min-width:56px; padding:8px 13px; background:#215682; color:#fff; border:1px solid #215682; border-radius:10px; font-size:12px; font-weight:700; }\n    #elahlya-library .el-search-submit:hover { background:#193f61; }\n    #elahlya-library .el-view { display:flex; align-items:center; gap:3px; padding:4px; border:1px solid var(--el-border); border-radius:10px; background:#fff; flex-shrink:0; }\n    #elahlya-library .el-view button { width:44px; height:44px; display:grid; place-items:center; border:0; border-radius:7px; background:transparent; color:#8190a5; }\n    #elahlya-library .el-view button[aria-pressed=\"true\"] { color:var(--el-blue); background:#eaf2ff; }\n    #elahlya-library .el-view button:hover { color:var(--el-blue); }\n    #elahlya-library .el-search-hint { color:#7b899d; font-size:11px; margin:7px 5px 0; }\n    #elahlya-library .el-search-notice { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:12px; padding:9px 12px; border:1px solid #dce9f6; background:#f2f7fc; border-radius:9px; color:#516981; font-size:12px; }\n    #elahlya-library .el-search-notice.el-partial { color:#745620; background:#fff8eb; border-color:#eddbb9; }\n    #elahlya-library .el-search-notice button { flex-shrink:0; min-height:44px; padding:7px 10px; border:1px solid currentColor; border-radius:7px; background:transparent; color:inherit; font-size:11px; font-weight:700; }\n    #elahlya-library .el-shared-link { display:inline-flex; align-items:center; gap:8px; min-height:44px; margin-top:12px; padding:8px 12px; border:1px solid #c7e4df; border-radius:9px; background:#eff8f5; color:#277469; font-size:12px; font-weight:700; text-align:right; }\n    #elahlya-library .el-shared-link:hover { background:#e3f3ee; }\n    #elahlya-library .el-content-head { display:flex; gap:20px; justify-content:space-between; align-items:flex-end; margin:27px 0 18px; }\n    #elahlya-library .el-heading-wrap { min-width:0; }\n    #elahlya-library .el-content-head h3 { color:var(--el-navy); font-size:19px; line-height:1.6; font-weight:700; overflow-wrap:anywhere; }\n    #elahlya-library .el-content-head h3:focus { outline:none; }\n    #elahlya-library .el-count { color:var(--el-muted); font-size:12px; margin-top:3px; }\n    #elahlya-library .el-filters { display:flex; align-items:center; gap:5px; flex-shrink:0; }\n    #elahlya-library .el-filters button { color:var(--el-muted); min-height:44px; padding:6px 12px; background:transparent; border:1px solid transparent; border-radius:20px; font-size:12px; white-space:nowrap; }\n    #elahlya-library .el-filters button:hover { color:var(--el-blue); background:#f4f8ff; }\n    #elahlya-library .el-filters button[aria-pressed=\"true\"] { color:var(--el-blue); background:#edf4ff; border-color:#dce9ff; font-weight:700; }\n    #elahlya-library .el-results { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin:0; padding:0; list-style:none; }\n    #elahlya-library .el-results > li { min-width:0; }\n    #elahlya-library .el-card { position:relative; display:flex; flex-direction:column; align-items:stretch; width:100%; height:100%; min-height:135px; padding:17px; border:1px solid var(--el-border); border-radius:13px; background:#fff; text-decoration:none; color:var(--el-ink); text-align:right; transition:border-color .16s,box-shadow .16s,transform .16s; }\n    #elahlya-library .el-card:hover { color:var(--el-ink); border-color:#b5d0ff; box-shadow:0 7px 20px rgba(23,98,232,.07); transform:translateY(-2px); }\n    #elahlya-library .el-card.el-folder { border-inline-start:3px solid var(--el-accent); background:linear-gradient(130deg,var(--el-tint),#fff 78%); }\n    #elahlya-library .el-card.el-folder:hover { border-inline-start-color:var(--el-accent); }\n    #elahlya-library .el-card.el-folder .el-type-icon { background:var(--el-icon-tint); color:var(--el-accent); }\n    #elahlya-library .el-card.el-folder .el-card-arrow { color:var(--el-accent); }\n    #elahlya-library .el-folder { background:linear-gradient(145deg,#f5f9ff,#fff); border-color:#dce7f6; }\n    #elahlya-library .el-card-top { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; }\n    #elahlya-library .el-type-icon { width:46px; height:46px; border-radius:12px; display:grid; place-items:center; background:#edf4ff; color:#2d76e8; flex-shrink:0; }\n    #elahlya-library .el-type-icon svg { width:27px; height:27px; }\n    #elahlya-library .el-type-icon.el-pdf { color:#d95e65; background:#fff0f1; }\n    #elahlya-library .el-type-icon.el-document { color:#3b79d2; background:#edf4ff; }\n    #elahlya-library .el-type-icon.el-sheet { color:#32967c; background:#eaf7f1; }\n    #elahlya-library .el-type-icon.el-slides { color:#bd8b35; background:#fff6e3; }\n    #elahlya-library .el-type-icon.el-image { color:#9168cb; background:#f3edfb; }\n    #elahlya-library .el-type-icon.el-video, #elahlya-library .el-type-icon.el-audio { color:#8d6ed0; background:#f2eefb; }\n    #elahlya-library .el-type-icon.el-file { color:#75849c; background:#f0f3f8; }\n    #elahlya-library .el-type-icon.el-form { color:#8062be; background:#f1ecfa; }\n    #elahlya-library .el-card-arrow { color:#a0b0c6; width:16px; height:16px; }\n    #elahlya-library .el-card:hover .el-card-arrow { color:var(--el-blue); }\n    #elahlya-library .el-card-main { min-width:0; flex:1; }\n    #elahlya-library .el-name { display:block; font-size:14px; font-weight:700; line-height:1.75; overflow-wrap:anywhere; unicode-bidi:plaintext; }\n    #elahlya-library .el-meta { display:flex; gap:7px; align-items:center; flex-wrap:wrap; margin-top:6px; color:var(--el-muted); font-size:11px; }\n    #elahlya-library .el-meta-dot { width:3px; height:3px; border-radius:50%; background:#b8c2d0; }\n    #elahlya-library .el-card-path { margin-top:10px; color:#697d96; font-size:10px; line-height:1.7; overflow-wrap:anywhere; unicode-bidi:plaintext; }\n    #elahlya-library .el-file-name { color:var(--el-ink); text-decoration:none; }\n    #elahlya-library .el-file-name:hover { color:#215682; text-decoration:underline; }\n    #elahlya-library .el-file-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:10px; }\n    #elahlya-library .el-file-actions a { display:inline-flex; align-items:center; justify-content:center; min-height:44px; min-width:50px; padding:7px 11px; border:1px solid #dce6f2; border-radius:8px; color:#315c81; background:#f3f7fc; text-decoration:none; font-size:11px; font-weight:700; }\n    #elahlya-library .el-file-actions a:hover { color:#1c4568; background:#e7f0fa; border-color:#bcd2e8; }\n    #elahlya-library .el-file-actions .el-file-download { background:#fff; }\n    #elahlya-library .el-shortcut { display:inline-flex; gap:4px; align-items:center; }\n    #elahlya-library .el-shortcut svg { width:11px; height:11px; }\n    #elahlya-library .el-list-head { display:grid; grid-template-columns:minmax(0,1fr) 100px 150px 124px; gap:16px; padding:11px 18px; color:#8490a3; font-size:11px; border-bottom:1px solid var(--el-border); }\n    #elahlya-library .el-list .el-results { display:flex; flex-direction:column; gap:0; border:1px solid var(--el-border); border-radius:12px; overflow:hidden; }\n    #elahlya-library .el-list .el-results > li + li { border-top:1px solid #edf1f6; }\n    #elahlya-library .el-list .el-card { display:grid; grid-template-columns:minmax(0,1fr) 100px 150px 124px; gap:16px; align-items:center; border:0; border-radius:0; min-height:82px; padding:15px 18px; box-shadow:none; background:#fff; }\n    #elahlya-library .el-list .el-card:hover { transform:none; background:#f6f9ff; }\n    #elahlya-library .el-list .el-card-top { display:contents; }\n    #elahlya-library .el-list .el-type-icon { grid-column:1; grid-row:1; width:39px; height:39px; border-radius:10px; }\n    #elahlya-library .el-list .el-type-icon svg { width:23px; height:23px; }\n    #elahlya-library .el-list .el-card-main { grid-column:1; grid-row:1; padding-right:53px; }\n    #elahlya-library .el-list .el-card-arrow { grid-column:4; grid-row:1; }\n    #elahlya-library .el-list .el-name { font-size:13px; }\n    #elahlya-library .el-list .el-meta { grid-column:2; grid-row:1; margin:0; }\n    #elahlya-library .el-list .el-card-path { grid-column:3; grid-row:1; margin:0; font-size:11px; }\n    #elahlya-library .el-list .el-file-actions { grid-column:4; grid-row:1; margin:0; gap:6px; }\n    #elahlya-library .el-list .el-card:not(.el-folder) .el-card-arrow { display:none; }\n    #elahlya-library .el-state { display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:270px; text-align:center; gap:10px; padding:36px 20px; background:#fbfcfe; border:1px dashed #dce5f2; border-radius:14px; }\n    #elahlya-library .el-state-icon { display:grid; place-items:center; width:62px; height:62px; margin-bottom:4px; border-radius:18px; color:#548be1; background:#edf4ff; }\n    #elahlya-library .el-state-icon svg { width:30px; height:30px; }\n    #elahlya-library .el-state-title { font-size:16px; color:var(--el-navy); font-weight:700; }\n    #elahlya-library .el-state-copy { color:var(--el-muted); font-size:12px; line-height:1.85; max-width:430px; }\n    #elahlya-library .el-state-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:9px; margin-top:6px; }\n    #elahlya-library .el-action { display:inline-flex; align-items:center; justify-content:center; gap:7px; padding:9px 15px; border:1px solid #d7e4f8; border-radius:9px; background:#fff; color:var(--el-blue); text-decoration:none; font-size:12px; font-weight:700; }\n    #elahlya-library .el-action-primary { color:#fff; background:var(--el-blue); border-color:var(--el-blue); }\n    #elahlya-library .el-action:hover { filter:brightness(.96); }\n    #elahlya-library .el-loading .el-state-icon svg { animation:el-library-spin 1.3s linear infinite; }\n    @keyframes el-library-spin { to { transform:rotate(360deg); } }\n    @media (max-width:760px) {\n      #elahlya-library { border-radius:18px; margin:16px auto; }\n      #elahlya-library .el-hero { padding:12px 24px; }\n      #elahlya-library .el-body { padding:22px; }\n      #elahlya-library .el-results { grid-template-columns:repeat(2,minmax(0,1fr)); }\n      #elahlya-library .el-toolbar { flex-wrap:wrap; gap:10px; }\n      #elahlya-library .el-search { flex:1 1 calc(100% - 68px); }\n      #elahlya-library .el-sort { flex:1; width:80px; min-width:0; }\n      #elahlya-library .el-content-head { align-items:flex-start; flex-direction:column; gap:12px; }\n      #elahlya-library .el-list-head, #elahlya-library .el-list .el-card { grid-template-columns:minmax(0,1fr) 100px 18px; gap:10px; }\n      #elahlya-library .el-list-head span:nth-child(3) { display:none; }\n      #elahlya-library .el-list .el-card-path { grid-column:1; grid-row:2; padding-right:53px; margin:0; }\n      #elahlya-library .el-list .el-card-arrow { grid-column:3; }\n      #elahlya-library .el-list .el-file-actions { grid-column:1 \/ -1; grid-row:3; padding-right:53px; }\n    }\n    @media (max-width:480px) {\n      #elahlya-library { border-radius:14px; font-size:14px; }\n      #elahlya-library .el-hero { min-height:0; padding:14px 16px; }\n      #elahlya-library .el-illustration { display:none; }\n      #elahlya-library .el-hero h2 { font-size:22px; }\n      #elahlya-library .el-hero p { font-size:12px; }\n      #elahlya-library .el-body { padding:20px 14px 17px; }\n      #elahlya-library .el-entry-nav { align-items:stretch; flex-wrap:wrap; gap:8px; margin-bottom:14px; }\n      #elahlya-library .el-entry-modes { flex-basis:100%; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }\n      #elahlya-library .el-entry { min-height:55px; padding:8px; font-size:13px; gap:6px; }\n      #elahlya-library .el-entry svg { width:21px; height:21px; }\n      #elahlya-library .el-entry[data-el=\"entrance\"] { grid-column:1 \/ -1; }\n      #elahlya-library .el-search-notice { flex-wrap:wrap; gap:5px; }\n      #elahlya-library .el-path-row { align-items:flex-start; gap:10px; margin-bottom:17px; }\n      #elahlya-library .el-breadcrumbs { font-size:11px; }\n      #elahlya-library .el-refresh { padding:7px; }\n      #elahlya-library .el-refresh span { display:none; }\n      #elahlya-library .el-toolbar { padding:10px; }\n      #elahlya-library .el-search input { font-size:12px; }\n      #elahlya-library .el-results { grid-template-columns:minmax(0,1fr); gap:11px; }\n      #elahlya-library .el-card { padding:16px; min-height:126px; }\n      #elahlya-library .el-content-head { margin-top:23px; }\n      #elahlya-library .el-filters { gap:2px; width:100%; }\n      #elahlya-library .el-filters button { padding:6px 11px; }\n      #elahlya-library .el-list-head { display:none; }\n      #elahlya-library .el-list .el-card { grid-template-columns:minmax(0,1fr) 16px; padding:14px 12px; gap:6px; }\n      #elahlya-library .el-list .el-card-main { padding-right:49px; }\n      #elahlya-library .el-list .el-card-arrow { grid-column:2; grid-row:1 \/ span 2; }\n      #elahlya-library .el-list .el-meta { grid-column:1; grid-row:2; padding-right:49px; }\n      #elahlya-library .el-list .el-card-path { grid-column:1; grid-row:3; padding-right:49px; }\n      #elahlya-library .el-list .el-file-actions { grid-column:1 \/ -1; grid-row:4; padding-right:49px; }\n      #elahlya-library .el-list .el-type-icon { grid-row:1 \/ span 2; }\n    }\n    @media (prefers-reduced-motion:reduce) { #elahlya-library .el-card { transition:none; } #elahlya-library .el-loading .el-state-icon svg { animation:none; } }\n  <\/style>\n\n  <header class=\"el-hero\">\n    <div class=\"el-hero-copy\">\n      <div class=\"el-hero-title-row\"><h2>\u0645\u0648\u0627\u0636\u064a\u0639 \u0648\u0627\u0645\u062a\u062d\u0627\u0646\u0627\u062a<\/h2><a class=\"el-home-link\" href=\"https:\/\/elahlya.net\/main\/\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" aria-hidden=\"true\"><path d=\"M5 12h14m-6-6 6 6-6 6\"\/><\/svg><span>\u0627\u0644\u0639\u0648\u062f\u0629 \u0644\u0644\u0631\u0626\u064a\u0633\u064a\u0629<\/span><\/a><\/div>\n      <p>\u0627\u062e\u062a\u0631 \u0627\u0644\u062a\u062e\u0635\u0635 \u0623\u0648 \u0627\u0644\u0635\u0641\u060c \u0623\u0648 \u0627\u0628\u062d\u062b \u0639\u0646 \u0645\u0627\u062f\u0629.<\/p>\n    <\/div>\n    <svg class=\"el-illustration\" viewBox=\"0 0 210 170\" fill=\"none\" aria-hidden=\"true\">\n      <circle cx=\"105\" cy=\"86\" r=\"73\" fill=\"#326CC3\" fill-opacity=\".2\"\/><circle cx=\"173\" cy=\"32\" r=\"5\" fill=\"#9EC7FF\"\/><path d=\"M30 48h10m-5-5v10M177 124h10m-5-5v10\" stroke=\"#90B7F1\" stroke-width=\"2\" stroke-linecap=\"round\"\/>\n      <rect x=\"44\" y=\"127\" width=\"125\" height=\"12\" rx=\"5\" fill=\"#6299E6\"\/><rect x=\"58\" y=\"110\" width=\"105\" height=\"17\" rx=\"4\" fill=\"#D8E8FF\"\/><path d=\"M70 115h81\" stroke=\"#A6C8F6\" stroke-width=\"2\"\/><rect x=\"50\" y=\"91\" width=\"113\" height=\"19\" rx=\"4\" fill=\"#91BCF7\"\/><path d=\"M61 98h87\" stroke=\"#3D79CE\" stroke-width=\"2\"\/>\n      <path d=\"M105 50c-18-11-38-11-58-5v57c19-5 39-4 58 7V50Z\" fill=\"#fff\"\/><path d=\"M105 50c18-11 38-11 58-5v57c-19-5-39-4-58 7V50Z\" fill=\"#E6F0FF\"\/><path d=\"M105 50v59\" stroke=\"#8BB8F4\" stroke-width=\"2\"\/><path d=\"M58 59c10-2 21-1 31 3M58 70c10-2 21-1 31 3M58 81c10-2 21-1 31 3M119 61c10-3 21-4 32-2M119 72c10-3 21-4 32-2M119 83c10-3 21-4 32-2\" stroke=\"#AECDF8\" stroke-width=\"3\" stroke-linecap=\"round\"\/>\n      <path d=\"M147 43v26l-6-4-6 4V43\" fill=\"#F4C779\"\/><circle cx=\"42\" cy=\"118\" r=\"3\" fill=\"#A9C9F8\"\/>\n    <\/svg>\n  <\/header>\n  <div class=\"el-body\">\n    <nav class=\"el-entry-nav\" aria-label=\"\u0645\u062f\u0627\u062e\u0644 \u0627\u0644\u0645\u0643\u062a\u0628\u0629\">\n      <div class=\"el-entry-modes\" role=\"group\" aria-label=\"\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u062a\u0635\u0641\u0651\u062d\">\n        <button class=\"el-entry\" type=\"button\" data-el-mode=\"subjects\" aria-pressed=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"M12 5c-3-2-6-2-9-1v15c3-1 6-1 9 1 3-2 6-2 9-1V4c-3-1-6-1-9 1Zm0 0v15\"\/><\/svg><span>\u0645\u0648\u0627\u062f \u062d\u0633\u0628 \u0627\u0644\u062a\u062e\u0635\u0635<\/span><\/button>\n        <button class=\"el-entry\" type=\"button\" data-el-mode=\"grades\" aria-pressed=\"false\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"m3 8 9-5 9 5-9 5-9-5Zm4 3v5c3 3 7 3 10 0v-5M21 8v8\"\/><\/svg><span>\u0645\u0648\u0627\u062f \u062d\u0633\u0628 \u0627\u0644\u0635\u0641<\/span><\/button>\n        <button class=\"el-entry\" type=\"button\" data-el=\"entrance\" aria-pressed=\"false\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"M8 4h9a2 2 0 0 1 2 2v14H8M8 8H3m3-3L3 8l3 3M11 9h5m-5 4h5m-5 4h3\"\/><\/svg><span>\u0645\u0648\u0627\u062f \u0627\u0645\u062a\u062d\u0627\u0646\u0627\u062a \u0627\u0644\u062f\u062e\u0648\u0644<\/span><\/button>\n      <\/div>\n    <\/nav>\n    <div class=\"el-path-row\" data-el=\"path-row\" hidden>\n      <nav aria-label=\"\u0645\u0633\u0627\u0631 \u0627\u0644\u062a\u0635\u0641\u0651\u062d\"><ol class=\"el-breadcrumbs\" data-el=\"breadcrumbs\"><\/ol><\/nav>\n    <\/div>\n    <form class=\"el-toolbar\" data-el=\"search-form\" role=\"search\">\n      <div class=\"el-search\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><circle cx=\"10.5\" cy=\"10.5\" r=\"6.5\"\/><path d=\"m16 16 4.5 4.5\"\/><\/svg>\n        <label class=\"el-sr\" for=\"el-library-search\">\u0627\u0644\u0628\u062d\u062b \u0641\u064a \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0643\u0627\u0645\u0644\u0629<\/label>\n        <input id=\"el-library-search\" data-el=\"search\" type=\"search\" placeholder=\"\u0627\u0628\u062d\u062b \u0639\u0646 \u0645\u0627\u062f\u0629\u2026\" autocomplete=\"off\" aria-describedby=\"el-library-search-hint\">\n        <button class=\"el-clear\" type=\"button\" data-el=\"clear\" aria-label=\"\u0645\u0633\u062d \u0627\u0644\u0628\u062d\u062b\" hidden><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"m6 6 12 12M18 6 6 18\"\/><\/svg><\/button>\n      <\/div>\n      <button class=\"el-search-submit\" type=\"submit\">\u0628\u062d\u062b<\/button>\n      <label class=\"el-sr\" for=\"el-library-sort\">\u062a\u0631\u062a\u064a\u0628 \u0627\u0644\u0645\u0648\u0627\u062f<\/label>\n      <select class=\"el-sort\" id=\"el-library-sort\" data-el=\"sort\"><option value=\"name\">\u0627\u0644\u0627\u0633\u0645: \u0623\u2013\u064a<\/option><option value=\"newest\">\u0627\u0644\u0623\u062d\u062f\u062b \u0623\u0648\u0644\u064b\u0627<\/option><option value=\"oldest\">\u0627\u0644\u0623\u0642\u062f\u0645 \u0623\u0648\u0644\u064b\u0627<\/option><\/select>\n      <div class=\"el-view\" role=\"group\" aria-label=\"\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0639\u0631\u0636\">\n        <button type=\"button\" data-el-view=\"grid\" aria-label=\"\u0639\u0631\u0636 \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062a\" aria-pressed=\"true\" title=\"\u0639\u0631\u0636 \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062a\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><rect x=\"4\" y=\"4\" width=\"6\" height=\"6\" rx=\"1.2\"\/><rect x=\"14\" y=\"4\" width=\"6\" height=\"6\" rx=\"1.2\"\/><rect x=\"4\" y=\"14\" width=\"6\" height=\"6\" rx=\"1.2\"\/><rect x=\"14\" y=\"14\" width=\"6\" height=\"6\" rx=\"1.2\"\/><\/svg><\/button>\n        <button type=\"button\" data-el-view=\"list\" aria-label=\"\u0639\u0631\u0636 \u0627\u0644\u0642\u0627\u0626\u0645\u0629\" aria-pressed=\"false\" title=\"\u0639\u0631\u0636 \u0627\u0644\u0642\u0627\u0626\u0645\u0629\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"M9 6h11M9 12h11M9 18h11\"\/><rect x=\"4\" y=\"5\" width=\"2\" height=\"2\" rx=\".5\"\/><rect x=\"4\" y=\"11\" width=\"2\" height=\"2\" rx=\".5\"\/><rect x=\"4\" y=\"17\" width=\"2\" height=\"2\" rx=\".5\"\/><\/svg><\/button>\n      <\/div>\n      <button class=\"el-refresh\" type=\"button\" data-el=\"refresh\" aria-label=\"\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0648\u0627\u062f\" title=\"\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0648\u0627\u062f\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"M20 7v5h-5M4 17v-5h5\"\/><path d=\"M6 7a7 7 0 0 1 12-1l2 2M4 16l2 2a7 7 0 0 0 12-1\"\/><\/svg><span>\u062a\u062d\u062f\u064a\u062b<\/span><\/button>\n    <\/form>\n    <p class=\"el-search-hint\" id=\"el-library-search-hint\">\u0627\u0644\u0628\u062d\u062b \u064a\u0634\u0645\u0644 \u0623\u0633\u0645\u0627\u0621 \u0627\u0644\u0645\u0648\u0627\u062f \u0648\u0627\u0644\u0623\u0642\u0633\u0627\u0645 \u0641\u064a \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0643\u0627\u0645\u0644\u0629.<\/p>\n    <div class=\"el-search-notice\" data-el=\"search-notice\" hidden><p data-el=\"search-progress\"><\/p><button type=\"button\" data-el=\"retry-search\" hidden>\u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0628\u062d\u062b<\/button><\/div>\n    <button class=\"el-shared-link\" type=\"button\" data-el=\"shared-link\" hidden><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"M12 5c-3-2-6-2-9-1v15c3-1 6-1 9 1 3-2 6-2 9-1V4c-3-1-6-1-9 1Zm0 0v15\"\/><\/svg><span data-el=\"shared-link-label\">\u0645\u0648\u0627\u062f \u0645\u0634\u062a\u0631\u0643\u0629<\/span><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" aria-hidden=\"true\"><path d=\"M19 12H5m6-6-6 6 6 6\"\/><\/svg><\/button>\n    <div class=\"el-content-head\">\n      <div class=\"el-heading-wrap\"><h3 data-el=\"heading\" tabindex=\"-1\">\u062c\u0645\u064a\u0639 \u0627\u0644\u0645\u0648\u0627\u062f \u0627\u0644\u062a\u0639\u0644\u064a\u0645\u064a\u0629<\/h3><p class=\"el-count\" data-el=\"count\">\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0643\u062a\u0628\u0629\u2026<\/p><\/div>\n      <div class=\"el-filters\" data-el=\"filters\" role=\"group\" aria-label=\"\u062a\u0635\u0641\u064a\u0629 \u0627\u0644\u0645\u062d\u062a\u0648\u0649\" hidden><button type=\"button\" data-el-filter=\"all\" aria-pressed=\"true\">\u0627\u0644\u0643\u0644<\/button><button type=\"button\" data-el-filter=\"folders\" aria-pressed=\"false\">\u0627\u0644\u0623\u0642\u0633\u0627\u0645<\/button><button type=\"button\" data-el-filter=\"files\" aria-pressed=\"false\">\u0627\u0644\u0645\u0648\u0627\u062f<\/button><\/div>\n    <\/div>\n    <div data-el=\"content\" aria-busy=\"true\">\n      <div class=\"el-list-head\" data-el=\"list-head\" hidden aria-hidden=\"true\"><span>\u0627\u0644\u0627\u0633\u0645<\/span><span>\u0627\u0644\u0645\u062d\u062a\u0648\u0649<\/span><span>\u0627\u0644\u0645\u0633\u0627\u0631<\/span><span><\/span><\/div>\n      <ul class=\"el-results\" data-el=\"results\" aria-label=\"\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u0642\u0633\u0645\" hidden><\/ul>\n      <div class=\"el-state el-loading\" data-el=\"state\"><div class=\"el-state-icon\" data-el=\"state-icon\"><\/div><p class=\"el-state-title\" data-el=\"state-title\">\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0643\u062a\u0628\u0629<\/p><p class=\"el-state-copy\" data-el=\"state-copy\">\u064a\u0631\u062c\u0649 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631\u2026<\/p><div class=\"el-state-actions\" data-el=\"state-actions\" hidden><button class=\"el-action el-action-primary\" type=\"button\" data-el=\"retry\">\u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629<\/button><\/div><\/div>\n    <\/div>\n    <div class=\"el-sr\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" data-el=\"announcement\"><\/div>\n  <\/div>\n  <script>\n(function () {\n  'use strict';\n  \/* DOM-free Google Drive graph index. Paths include the root and the file's parent. *\/\nfunction createLibrarySearchIndex(options) {\n  const FOLDER = 'application\/vnd.google-apps.folder';\n  const SHORTCUT = 'application\/vnd.google-apps.shortcut';\n  if (!options || !options.root || typeof options.root.id !== 'string' || !options.root.id || typeof options.listFolder !== 'function') {\n    throw new TypeError('A root folder and listFolder function are required.');\n  }\n  const limit = Number.isFinite(options.concurrency) ? Math.max(1, Math.floor(options.concurrency)) : 3;\n  const copyNode = function (node) { return { id: node.id, name: node.name, ...(node.resourceKey ? { resourceKey: node.resourceKey } : {}) }; };\n  const root = copyNode({ ...options.root, name: options.root.name || 'Library' });\n  const empty = function () { return { entries: [], failures: [], complete: false, cancelled: false, scannedFolders: 0 }; };\n  let state = empty();\n  let running = null;\n\n  function snapshot(source = state) {\n    return {\n      entries: source.entries.map(function (entry) { return { file: entry.file, path: entry.path.map(copyNode) }; }),\n      failures: source.failures.map(function (failure) { return { folder: copyNode(failure.folder), reason: failure.reason }; }),\n      complete: source.complete,\n      cancelled: source.cancelled,\n      scannedFolders: source.scannedFolders\n    };\n  }\n  function publish(source) {\n    if (source === state && typeof options.onProgress === 'function') {\n      try { options.onProgress(snapshot(source)); } catch (_) { \/* Observers cannot break traversal. *\/ }\n    }\n  }\n  function finish(run, cancelled, announce = true) {\n    if (run.done) return;\n    run.done = true;\n    run.state.cancelled = cancelled;\n    run.state.complete = !cancelled && run.state.failures.length === 0;\n    run.queue.length = 0;\n    if (run.externalSignal) run.externalSignal.removeEventListener('abort', run.onAbort);\n    if (running === run) running = null;\n    if (cancelled) run.controller.abort();\n    if (announce) publish(run.state);\n    run.resolve(snapshot(run.state));\n  }\n  function folderNode(file) {\n    if (file.mimeType === FOLDER) return copyNode(file);\n    const target = file.mimeType === SHORTCUT && file.shortcutDetails;\n    if (target && target.targetMimeType === FOLDER && typeof target.targetId === 'string' && target.targetId) {\n      return copyNode({ id: target.targetId, name: file.name, resourceKey: target.targetResourceKey });\n    }\n    return null;\n  }\n  function failureReason(error) {\n    const status = error && error.status;\n    if (status === 401 || status === 403) return 'Folder access denied.';\n    if (status === 404) return 'Folder not found.';\n    return 'Unable to scan this folder. Please retry.';\n  }\n  function pump(run) {\n    if (run.done) return;\n    while (!run.done && Math.sign(limit - run.active) === 1 && run.head !== run.queue.length) {\n      const task = run.queue[run.head++];\n      run.active++;\n      Promise.resolve().then(function () {\n        if (!run.done) return options.listFolder(copyNode(task.folder), run.controller.signal);\n      }).then(function (files) {\n        if (run.done) return;\n        if (!Array.isArray(files)) throw new TypeError('Folder listing must be an array.');\n        run.state.scannedFolders++;\n        for (const file of files) {\n          if (!file || typeof file.id !== 'string' || !file.id) continue;\n          if (!run.files.has(file.id)) {\n            run.files.add(file.id);\n            run.state.entries.push({ file, path: task.path });\n          }\n          const child = folderNode(file);\n          if (!child) continue;\n          const known = run.folders.get(child.id);\n          if (known) {\n            if (!known.resourceKey && child.resourceKey) known.resourceKey = child.resourceKey;\n            continue;\n          }\n          run.folders.set(child.id, child);\n          run.queue.push({ folder: child, path: task.path.concat(child) });\n        }\n      }).catch(function (error) {\n        if (run.done) return;\n        if (error && error.name === 'AbortError') {\n          finish(run, true);\n          return;\n        }\n        run.state.failures.push({ folder: task.folder, reason: failureReason(error) });\n      }).then(function () {\n        if (run.done) return;\n        run.active--;\n        if (run.active === 0 && run.head === run.queue.length) finish(run, false);\n        else {\n          publish(run.state);\n          pump(run);\n        }\n      });\n    }\n  }\n  function build(signal) {\n    if (running) finish(running, true, false);\n    state = empty();\n    return new Promise(function (resolve) {\n      const first = copyNode(root);\n      const run = {\n        state, resolve, done: false, active: 0, head: 0,\n        controller: new AbortController(), externalSignal: signal,\n        folders: new Map([[first.id, first]]), files: new Set(),\n        queue: [{ folder: first, path: [first] }]\n      };\n      run.onAbort = function () { finish(run, true); };\n      running = run;\n      if (signal && signal.aborted) { finish(run, true); return; }\n      if (signal) signal.addEventListener('abort', run.onAbort, { once: true });\n      publish(run.state);\n      pump(run);\n    });\n  }\n  function clear() {\n    if (running) finish(running, true, false);\n    state = empty();\n    publish(state);\n  }\n  return { build, getSnapshot: function () { return snapshot(); }, clear };\n}\n\n  function initializeElahlyaLibrary() {\n    var root = document.getElementById('elahlya-library');\n    if (!root || root.dataset.elInitialized === 'true') return;\n    root.dataset.elInitialized = 'true';\n    var CONFIG = {\n      API_KEY: 'AIzaSyBOrM4AoTMWm30fAMg__tOyzO0JwtS2DKI',\n      ROOT_ID: '1045PeCeodp8REfT-pBtGJRh74cyanr33',\n      SHARED_FOLDER_ID: '1qrdPHjV3XiYzkG4ow5IpzTJDouMdC5Nz',\n      ENTRANCE_FOLDER_ID: '1V1C4CVLKWh1ulPBkwSz9F9DE51cJgzAQ'\n    };\n    var FOLDER = 'application\/vnd.google-apps.folder';\n    var SHORTCUT = 'application\/vnd.google-apps.shortcut';\n    var FORM = 'application\/vnd.google-apps.form';\n    var ROOT_NODE = {id:CONFIG.ROOT_ID,name:'\u0645\u0648\u0627\u0636\u064a\u0639 \u0648\u0627\u0645\u062a\u062d\u0627\u0646\u0627\u062a',resourceKey:''};\n    var SHARED_NODE = {id:CONFIG.SHARED_FOLDER_ID,name:'\u0645\u0648\u0627\u062f \u062d\u0633\u0628 \u0627\u0644\u062a\u062e\u0635\u0635',resourceKey:''};\n    var ENTRANCE_NODE = {id:CONFIG.ENTRANCE_FOLDER_ID,name:'\u0645\u0648\u0627\u062f \u0627\u0645\u062a\u062d\u0627\u0646\u0627\u062a \u0627\u0644\u062f\u062e\u0648\u0644',resourceKey:''};\n    var refs = {};\n    root.querySelectorAll('[data-el]').forEach(function (node) { refs[node.getAttribute('data-el')] = node; });\n    var state = {\n      path:[ROOT_NODE,SHARED_NODE], mode:'subjects', files:[], filter:'all', view:'grid', query:'',\n      loading:false, failed:false, browseReady:false, browseVersion:0, browseController:null,\n      searchVersion:0, searchController:null, indexBusy:false, indexFinished:false, snapshot:null,\n      sharedSubjects:null, sharedMatch:null, searchTimer:null\n    };\n    var collator = new Intl.Collator('ar',{numeric:true,sensitivity:'base'});\n    var numberFormat = new Intl.NumberFormat('ar');\n    var allowedOrigins = new Set(['https:\/\/drive.google.com','https:\/\/docs.google.com','https:\/\/sheets.google.com','https:\/\/slides.google.com','https:\/\/forms.google.com','https:\/\/forms.gle']);\n    var iconParts = {\n      book:[['path',{d:'M12 5c-3-2-6-2-9-1v15c3-1 6-1 9 1 3-2 6-2 9-1V4c-3-1-6-1-9 1Zm0 0v15'}]],\n      document:[['path',{d:'M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9l-6-6Zm0 0v6h6M8 13h8m-8 4h6'}]],\n      pdf:[['path',{d:'M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9l-6-6Zm0 0v6h6M8 16h8'}]],\n      sheet:[['rect',{x:4,y:3,width:16,height:18,rx:2}],['path',{d:'M4 9h16M4 15h16M10 9v12'}]],\n      slides:[['rect',{x:3,y:4,width:18,height:13,rx:2}],['path',{d:'M8 21l4-4 4 4M8 9h8m-8 4h5'}]],\n      image:[['rect',{x:3,y:3,width:18,height:18,rx:2}],['circle',{cx:8,cy:8,r:1.5}],['path',{d:'m3 17 5-5 4 4 4-6 5 7'}]],\n      video:[['rect',{x:3,y:5,width:13,height:14,rx:2}],['path',{d:'m16 10 5-3v10l-5-3'}]],\n      audio:[['path',{d:'M9 18V5l11-2v13M9 8l11-2'}],['circle',{cx:6,cy:18,r:3}],['circle',{cx:17,cy:16,r:3}]],\n      file:[['path',{d:'M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9l-6-6Zm0 0v6h6'}]],\n      form:[['rect',{x:5,y:3,width:14,height:18,rx:2}],['path',{d:'M9 8h6m-6 4h6m-6 4h3'}]],\n      math:[['rect',{x:4,y:3,width:16,height:18,rx:2}],['path',{d:'M7 7h10M8 11v4m-2-2h4m4 0h4M7 18h3m4 0h3'}]],\n      language:[['path',{d:'M3 5h12M9 3v2M5 5c1 6 4 9 9 11M12 5c-1 6-4 9-9 11M14 21l4-10 4 10m-7-3h6'}]],\n      history:[['circle',{cx:12,cy:12,r:9}],['path',{d:'M12 7v5l3 2'}]],\n      civics:[['path',{d:'m3 8 9-5 9 5H3Zm2 0v10m5-10v10m4-10v10m5-10v10M3 21h18M3 18h18'}]],\n      religion:[['path',{d:'M12 5c-3-2-6-2-9-1v15c3-1 6-1 9 1 3-2 6-2 9-1V4c-3-1-6-1-9 1Zm0 0v15M6 9h3m6 0h3'}]],\n      search:[['circle',{cx:10.5,cy:10.5,r:6.5}],['path',{d:'m16 16 4.5 4.5'}]],\n      refresh:[['path',{d:'M20 7v5h-5M4 17v-5h5M6 7a7 7 0 0 1 12-1l2 2M4 16l2 2a7 7 0 0 0 12-1'}]],\n      arrow:[['path',{d:'M19 12H5m6-6-6 6 6 6'}]],\n      external:[['path',{d:'M14 3h7v7m0-7L10 14M10 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-5'}]],\n      error:[['circle',{cx:12,cy:12,r:9}],['path',{d:'M12 7v6m0 4h.01'}]]\n    };\n    function svg(name,className) {\n      var ns = 'http:\/\/www.w3.org\/2000\/svg';\n      var node = document.createElementNS(ns,'svg');\n      node.setAttribute('viewBox','0 0 24 24'); node.setAttribute('fill','none');\n      node.setAttribute('stroke','currentColor'); node.setAttribute('stroke-width','1.7');\n      node.setAttribute('stroke-linecap','round'); node.setAttribute('stroke-linejoin','round');\n      node.setAttribute('aria-hidden','true');\n      if (className) node.setAttribute('class',className);\n      (iconParts[name] || iconParts.file).forEach(function (part) {\n        var child = document.createElementNS(ns,part[0]);\n        Object.keys(part[1]).forEach(function (key) { child.setAttribute(key,String(part[1][key])); });\n        node.appendChild(child);\n      });\n      return node;\n    }\n    function element(tag,className,text) {\n      var node = document.createElement(tag);\n      if (className) node.className = className;\n      if (text !== undefined) node.textContent = text;\n      return node;\n    }\n    function validId(value) { return typeof value === 'string' && \/^[A-Za-z0-9_-]+$\/.test(value); }\n    function normalize(value) {\n      return String(value || '').normalize('NFKD').replace(\/[\\u064b-\\u065f\\u0670\\u0640]\/g,'').replace(\/[\u0623\u0625\u0622]\/g,'\u0627').replace(\/\u0649\/g,'\u064a').toLocaleLowerCase('ar').replace(\/\\s+\/g,' ').trim();\n    }\n    function currentFolder() { return state.path[state.path.length - 1]; }\n    function target(file) {\n      var shortcut = file.mimeType === SHORTCUT && file.shortcutDetails;\n      if (shortcut && validId(shortcut.targetId)) return {id:shortcut.targetId,mimeType:shortcut.targetMimeType,resourceKey:shortcut.targetResourceKey || ''};\n      return {id:file.id,mimeType:file.mimeType,resourceKey:file.resourceKey || ''};\n    }\n    function isFolder(file) { return target(file).mimeType === FOLDER; }\n    function folderNode(file) { var item = target(file); return {id:item.id,name:file.name || '\u0642\u0633\u0645',resourceKey:item.resourceKey}; }\n    function gradeRank(name) {\n      var value = normalize(name).replace(\/[\u0660-\u0669]\/g,function (digit) { return String('\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669'.indexOf(digit)); }).replace(\/^(\u0627\u0644\u0635\u0641|\u0635\u0641|grade)\\s*\/,'');\n      if (\/^(10|\u0627\u0644\u0639\u0627\u0634\u0631|\u0639\u0627\u0634\u0631)$\/.test(value)) return 10;\n      if (\/^(11|\u0627\u0644\u062d\u0627\u062f\u064a \u0639\u0634\u0631|\u062d\u0627\u062f\u064a \u0639\u0634\u0631)$\/.test(value)) return 11;\n      if (\/^(12|\u0627\u0644\u062b\u0627\u0646\u064a \u0639\u0634\u0631|\u062b\u0627\u0646\u064a \u0639\u0634\u0631)$\/.test(value)) return 12;\n      return 100;\n    }\n    function subjectStyle(name) {\n      var value = normalize(name);\n      var subjects = [\n        {names:['\u0631\u064a\u0627\u0636\u064a\u0627\u062a','\u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0627\u062a'],icon:'math',palette:0},\n        {names:['english','\u0627\u0646\u062c\u0644\u064a\u0632\u064a','\u0627\u0644\u0627\u0646\u062c\u0644\u064a\u0632\u064a\u0629'],icon:'language',palette:1},\n        {names:['\u05e2\u05d1\u05e8\u05d9\u05ea','\u0639\u0628\u0631\u064a','\u0627\u0644\u0639\u0628\u0631\u064a\u0629'],icon:'language',palette:2},\n        {names:['\u0639\u0631\u0628\u064a','\u0627\u0644\u0639\u0631\u0628\u064a\u0629','\u0644\u063a\u0629 \u0639\u0631\u0628\u064a\u0629'],icon:'language',palette:3},\n        {names:['\u062f\u064a\u0646','\u0627\u0644\u062f\u064a\u0646','\u062a\u0631\u0628\u064a\u0629 \u062f\u064a\u0646\u064a\u0629'],icon:'religion',palette:4},\n        {names:['\u062a\u0627\u0631\u064a\u062e','\u0627\u0644\u062a\u0627\u0631\u064a\u062e'],icon:'history',palette:5},\n        {names:['\u0645\u062f\u0646\u064a\u0627\u062a','\u0627\u0644\u0645\u062f\u0646\u064a\u0627\u062a'],icon:'civics',palette:1}\n      ];\n      var match = subjects.find(function (subject) { return subject.names.some(function (label) { return normalize(label) === value; }); });\n      var hash = Array.from(value).reduce(function (sum,character) { return sum + character.codePointAt(0); },0);\n      var palettes = [\n        ['#386baf','#f3f7fd','#e8f0fc'],['#298678','#f1f9f6','#e3f3ed'],['#8b69b5','#f7f3fc','#eee6f8'],\n        ['#b66a62','#fcf5f4','#faeae6'],['#b18a37','#fcf9f1','#f7efd9'],['#467e9a','#f2f8fb','#e5f1f7']\n      ];\n      return {icon:match ? match.icon : 'book',colors:palettes[match ? match.palette : hash % palettes.length]};\n    }\n    function typeInfo(file) {\n      var mime = target(file).mimeType || '';\n      if (mime === FOLDER) return {icon:subjectStyle(file.name).icon,kind:'folder',label:''};\n      if (mime === FORM) return {icon:'form',kind:'form',label:'\u0646\u0645\u0648\u0630\u062c'};\n      if (mime === 'application\/pdf') return {icon:'pdf',kind:'pdf',label:'PDF'};\n      if (\/document|word|text\\\/\/.test(mime)) return {icon:'document',kind:'document',label:'\u0645\u0633\u062a\u0646\u062f'};\n      if (\/spreadsheet|excel\/.test(mime)) return {icon:'sheet',kind:'sheet',label:'\u062c\u062f\u0648\u0644'};\n      if (\/presentation|powerpoint\/.test(mime)) return {icon:'slides',kind:'slides',label:'\u0639\u0631\u0636 \u062a\u0642\u062f\u064a\u0645\u064a'};\n      if (\/^image\\\/\/.test(mime)) return {icon:'image',kind:'image',label:'\u0635\u0648\u0631\u0629'};\n      if (\/^video\\\/\/.test(mime)) return {icon:'video',kind:'video',label:'\u0641\u064a\u062f\u064a\u0648'};\n      if (\/^audio\\\/\/.test(mime)) return {icon:'audio',kind:'audio',label:'\u0635\u0648\u062a'};\n      return {icon:'file',kind:'file',label:'\u0645\u0644\u0641'};\n    }\n    function safeUrl(value) {\n      try { var url = new URL(value); return allowedOrigins.has(url.origin) && !url.username && !url.password ? url.href : ''; } catch (_) { return ''; }\n    }\n    function safeFileUrl(file) {\n      var known = safeUrl(file.webViewLink);\n      if (file.mimeType !== SHORTCUT && known) return known;\n      var item = target(file);\n      if (!validId(item.id)) return '';\n      var url = new URL('https:\/\/drive.google.com\/file\/d\/' + encodeURIComponent(item.id) + '\/view');\n      if (item.resourceKey) url.searchParams.set('resourcekey',item.resourceKey);\n      return url.href;\n    }\n    function safeDownloadUrl(file) {\n      if (file.mimeType === SHORTCUT || \/^application\\\/vnd\\.google-apps\\.\/.test(file.mimeType || '')) return '';\n      try {\n        var url = new URL(file.webContentLink);\n        return ['https:\/\/drive.google.com','https:\/\/drive.usercontent.google.com','https:\/\/docs.googleusercontent.com'].includes(url.origin) && !url.username && !url.password ? url.href : '';\n      } catch (_) { return ''; }\n    }\n    function sizeLabel(file) {\n      var size = Number(file.size);\n      if (!Number.isFinite(size) || Math.sign(size) !== 1) return '';\n      var unit = Math.min(3,Math.floor(Math.log(size) \/ Math.log(1024)));\n      return new Intl.NumberFormat('ar',{maximumFractionDigits:1}).format(size \/ Math.pow(1024,unit)) + ' ' + ['\u0628\u0627\u064a\u062a','KB','MB','GB'][unit];\n    }\n    function configured() { return Boolean(CONFIG.API_KEY && !CONFIG.API_KEY.startsWith('__')); }\n    function updateModes() {\n      root.querySelectorAll('[data-el-mode]').forEach(function (button) { button.setAttribute('aria-pressed',String(button.getAttribute('data-el-mode') === state.mode)); });\n      refs.entrance.setAttribute('aria-pressed',String(state.mode === 'entrance'));\n    }\n    function breadcrumbs() {\n      refs['path-row'].hidden = state.path.length === 1;\n      refs.breadcrumbs.replaceChildren();\n      state.path.forEach(function (folder,index) {\n        var li = element('li');\n        if (index) li.appendChild(svg('arrow'));\n        if (index === state.path.length - 1) {\n          var current = element('span','el-current',folder.name); current.setAttribute('aria-current','page'); li.appendChild(current);\n        } else {\n          var button = element('button','',folder.name); button.type = 'button';\n          button.addEventListener('click',function () { navigate(state.path.slice(0,index + 1)); }); li.appendChild(button);\n        }\n        refs.breadcrumbs.appendChild(li);\n      });\n      refs.heading.textContent = state.query ? '\u0646\u062a\u0627\u0626\u062c \u0627\u0644\u0628\u062d\u062b' : state.path.length === 1 ? '\u0645\u0648\u0627\u062f \u062d\u0633\u0628 \u0627\u0644\u0635\u0641' : currentFolder().name;\n      updateModes();\n    }\n    function showState(kind,title,copy,icon,retry) {\n      refs.results.hidden = true; refs['list-head'].hidden = true; refs.state.hidden = false;\n      refs.state.classList.toggle('el-loading',kind === 'loading');\n      refs['state-icon'].replaceChildren(svg(icon)); refs['state-title'].textContent = title;\n      refs['state-copy'].textContent = copy; refs['state-actions'].hidden = !retry;\n    }\n    function announce(message) { refs.announcement.textContent = message; }\n    function setView(view) {\n      state.view = view === 'list' ? 'list' : 'grid'; root.classList.toggle('el-list',state.view === 'list');\n      root.querySelectorAll('[data-el-view]').forEach(function (button) { button.setAttribute('aria-pressed',String(button.getAttribute('data-el-view') === state.view)); });\n      refs['list-head'].hidden = state.view !== 'list' || refs.results.hidden;\n      try { localStorage.setItem('elahlya-library:view',state.view); } catch (_) {}\n    }\n    function makeCard(entry) {\n      var file = entry.file, folder = isFolder(file), info = typeInfo(file);\n      var card = element(folder ? 'button' : 'div','el-card' + (folder ? ' el-folder' : ''));\n      var href = folder ? '' : safeFileUrl(file);\n      if (folder) {\n        card.type = 'button';\n        var colors = subjectStyle(file.name).colors;\n        card.style.setProperty('--el-accent',colors[0]); card.style.setProperty('--el-tint',colors[1]); card.style.setProperty('--el-icon-tint',colors[2]);\n        card.addEventListener('click',function () { navigate(entry.path.concat(folderNode(file))); });\n      }\n      var top = element('div','el-card-top');\n      var icon = element('span','el-type-icon el-' + info.kind); icon.appendChild(svg(info.icon)); top.appendChild(icon);\n      top.appendChild(svg(folder ? 'arrow' : 'external','el-card-arrow')); card.appendChild(top);\n      var main = element('div','el-card-main');\n      var name = element(folder || !href ? 'span' : 'a','el-name' + (!folder ? ' el-file-name' : ''),file.name || '\u0628\u0644\u0627 \u0639\u0646\u0648\u0627\u0646');\n      if (!folder && href) { name.href = href; name.target = '_blank'; name.rel = 'noopener noreferrer'; }\n      main.appendChild(name); card.appendChild(main);\n      if (!folder) {\n        var meta = element('div','el-meta',info.label), size = sizeLabel(file);\n        if (size) { meta.appendChild(element('span','el-meta-dot')); meta.appendChild(element('span','',size)); }\n        card.appendChild(meta);\n      }\n      if (state.query) card.appendChild(element('div','el-card-path',entry.path.map(function (node) { return node.name; }).join(' \/ ')));\n      var hint = folder ? ' \u2014 \u0641\u062a\u062d \u0627\u0644\u0642\u0633\u0645' : info.kind === 'form' ? ' \u2014 \u0641\u062a\u062d \u0627\u0644\u0646\u0645\u0648\u0630\u062c \u0641\u064a \u0646\u0627\u0641\u0630\u0629 \u062c\u062f\u064a\u062f\u0629' : ' \u2014 \u0641\u062a\u062d \u0641\u064a \u0646\u0627\u0641\u0630\u0629 \u062c\u062f\u064a\u062f\u0629';\n      if (folder) card.setAttribute('aria-label',(file.name || '\u0628\u0644\u0627 \u0639\u0646\u0648\u0627\u0646') + (state.query ? '\u060c ' + entry.path.map(function (node) { return node.name; }).join('\u060c ') : '') + hint);\n      else {\n        var actions = element('div','el-file-actions');\n        if (href) {\n          var open = element('a','el-file-open',info.kind === 'form' ? '\u0641\u062a\u062d \u0627\u0644\u0646\u0645\u0648\u0630\u062c' : '\u0641\u062a\u062d');\n          open.href = href; open.target = '_blank'; open.rel = 'noopener noreferrer';\n          open.setAttribute('aria-label',(file.name || '\u0628\u0644\u0627 \u0639\u0646\u0648\u0627\u0646') + hint); actions.appendChild(open);\n        }\n        var downloadUrl = safeDownloadUrl(file);\n        if (downloadUrl) {\n          var download = element('a','el-file-download','\u062a\u0646\u0632\u064a\u0644'); download.href = downloadUrl; download.target = '_blank'; download.rel = 'noopener noreferrer';\n          download.setAttribute('aria-label','\u062a\u0646\u0632\u064a\u0644 ' + (file.name || '\u0627\u0644\u0645\u0644\u0641')); actions.appendChild(download);\n        }\n        if (actions.childNodes.length) card.appendChild(actions);\n      }\n      return card;\n    }\n    function render() {\n      breadcrumbs(); refs.clear.hidden = !refs.search.value;\n      refs['search-notice'].hidden = !state.query;\n      refs['search-notice'].classList.toggle('el-partial',Boolean(state.query && state.snapshot && state.snapshot.failures.length));\n      refs['retry-search'].hidden = !(state.query && state.indexFinished && state.snapshot && state.snapshot.failures.length);\n      if (!state.query && (state.loading || state.failed)) return;\n      var snapshot = state.snapshot;\n      var entries = state.query ? snapshot ? snapshot.entries : [] : state.files.map(function (file) { return {file:file,path:state.path}; });\n      if (state.query) {\n        entries = entries.filter(function (entry) { return normalize(entry.file.name).includes(state.query); });\n        refs['search-progress'].textContent = state.indexBusy ? '\u062c\u0627\u0631\u064d \u0627\u0644\u0628\u062d\u062b \u0641\u064a \u0627\u0644\u0645\u0643\u062a\u0628\u0629\u2026' + (snapshot && snapshot.failures.length ? ' \u062a\u0639\u0630\u0651\u0631\u062a \u0642\u0631\u0627\u0621\u0629 \u0628\u0639\u0636 \u0627\u0644\u0623\u0642\u0633\u0627\u0645\u061b \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u063a\u064a\u0631 \u0645\u0643\u062a\u0645\u0644\u0629.' : '') : snapshot && snapshot.failures.length ? '\u062a\u0639\u0630\u0651\u0631\u062a \u0642\u0631\u0627\u0621\u0629 \u0628\u0639\u0636 \u0627\u0644\u0623\u0642\u0633\u0627\u0645. \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0627\u0644\u0645\u0639\u0631\u0648\u0636\u0629 \u063a\u064a\u0631 \u0645\u0643\u062a\u0645\u0644\u0629\u061b \u064a\u0645\u0643\u0646\u0643 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0628\u062d\u062b.' : '\u064a\u0634\u0645\u0644 \u0627\u0644\u0628\u062d\u062b \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0643\u0627\u0645\u0644\u0629.';\n      } else if (state.path.length === 1) {\n        entries = entries.filter(function (entry) { return ![CONFIG.SHARED_FOLDER_ID,CONFIG.ENTRANCE_FOLDER_ID].includes(target(entry.file).id); });\n      }\n      entries = entries.filter(function (entry) { return state.filter === 'all' || (state.filter === 'folders' ? isFolder(entry.file) : !isFolder(entry.file)); });\n      var sort = refs.sort.value;\n      entries.sort(function (a,b) {\n        var folders = Number(isFolder(b.file)) - Number(isFolder(a.file)); if (folders) return folders;\n        if (!state.query && state.path.length === 1 && isFolder(a.file)) { var grade = gradeRank(a.file.name) - gradeRank(b.file.name); if (grade) return grade; }\n        if (sort !== 'name') { var date = (Date.parse(b.file.modifiedTime) || 0) - (Date.parse(a.file.modifiedTime) || 0); if (date) return sort === 'oldest' ? -date : date; }\n        return collator.compare(a.file.name || '',b.file.name || '');\n      });\n      var sections = entries.filter(function (entry) { return isFolder(entry.file); }).length;\n      var materials = entries.length - sections;\n      var canonical = !state.query && state.path.length === 1 && sections === 3 && materials === 0 && new Set(entries.map(function (entry) { return gradeRank(entry.file.name); })).size === 3 && entries.every(function (entry) { return [10,11,12].includes(gradeRank(entry.file.name)); });\n      function countLabel(count,singular,dual,plural) { return count === 1 ? singular + ' \u0648\u0627\u062d\u062f' : count === 2 ? dual : numberFormat.format(count) + ' ' + (Math.sign(11 - count) === 1 ? plural : singular); }\n      refs.filters.hidden = !state.query && !(state.files.some(isFolder) && state.files.some(function (file) { return !isFolder(file); }));\n      var count = state.query ? numberFormat.format(entries.length) + ' \u0646\u062a\u064a\u062c\u0629' + (state.indexBusy ? ' \u062d\u062a\u0649 \u0627\u0644\u0622\u0646' : snapshot && snapshot.failures.length ? ' \u0636\u0645\u0646 \u0627\u0644\u0623\u0642\u0633\u0627\u0645 \u0627\u0644\u0645\u062a\u0627\u062d\u0629' : '') : canonical ? '\u0663 \u0635\u0641\u0648\u0641' : [sections ? countLabel(sections,'\u0642\u0633\u0645','\u0642\u0633\u0645\u0627\u0646','\u0623\u0642\u0633\u0627\u0645') : '',materials ? materials === 1 ? '\u0645\u0627\u062f\u0629 \u0648\u0627\u062d\u062f\u0629' : countLabel(materials,'\u0645\u0627\u062f\u0629','\u0645\u0627\u062f\u062a\u0627\u0646','\u0645\u0648\u0627\u062f') : ''].filter(Boolean).join(' \u00b7 ') || '\u0644\u0627 \u062a\u0648\u062c\u062f \u0645\u0648\u0627\u062f';\n      refs.count.textContent = count; refs.content.setAttribute('aria-busy',String(state.query && state.indexBusy));\n      if (!entries.length) {\n        refs.results.replaceChildren();\n        if (state.query && state.indexBusy) showState('loading','\u062c\u0627\u0631\u064d \u0627\u0644\u0628\u062d\u062b \u0641\u064a \u0627\u0644\u0645\u0643\u062a\u0628\u0629','\u0633\u062a\u0638\u0647\u0631 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0623\u062b\u0646\u0627\u0621 \u0627\u0644\u0628\u062d\u062b.','refresh',false);\n        else if (state.query && snapshot && snapshot.failures.length) showState('empty','\u0644\u0627 \u062a\u0648\u062c\u062f \u0646\u062a\u0627\u0626\u062c \u0636\u0645\u0646 \u0627\u0644\u0623\u0642\u0633\u0627\u0645 \u0627\u0644\u0645\u062a\u0627\u062d\u0629','\u062a\u0639\u0630\u0651\u0631\u062a \u0642\u0631\u0627\u0621\u0629 \u0628\u0639\u0636 \u0627\u0644\u0623\u0642\u0633\u0627\u0645. \u0623\u0639\u062f \u0627\u0644\u0628\u062d\u062b \u0644\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u062c\u062f\u062f\u064b\u0627.','error',false);\n        else showState('empty',state.query ? '\u0644\u0645 \u0646\u062c\u062f \u0646\u062a\u0627\u0626\u062c' : '\u0644\u0627 \u062a\u0648\u062c\u062f \u0645\u0648\u0627\u062f \u0647\u0646\u0627 \u0628\u0639\u062f',state.query ? '\u062c\u0631\u0651\u0628 \u0627\u0633\u0645 \u0645\u0627\u062f\u0629 \u0623\u0648 \u0639\u0646\u0648\u0627\u0646\u064b\u0627 \u0622\u062e\u0631.' : '\u064a\u0645\u0643\u0646\u0643 \u0627\u062e\u062a\u064a\u0627\u0631 \u0642\u0633\u0645 \u0622\u062e\u0631 \u0645\u0646 \u0645\u0633\u0627\u0631 \u0627\u0644\u062a\u0635\u0641\u0651\u062d.','book',false);\n        return;\n      }\n      var previous = new Map(Array.from(refs.results.children).map(function (li) { return [li.elResultKey,li]; }));\n      var keep = new Set();\n      entries.forEach(function (entry,position) {\n        var file = entry.file;\n        var key = JSON.stringify([Boolean(state.query),entry.path,file.id,file.name,file.mimeType,file.size,file.webViewLink,file.webContentLink,file.shortcutDetails]);\n        var li = previous.get(key);\n        if (!li) { li = element('li'); li.elResultKey = key; li.appendChild(makeCard(entry)); }\n        keep.add(key);\n        if (refs.results.children[position] !== li) refs.results.insertBefore(li,refs.results.children[position] || null);\n      });\n      Array.from(refs.results.children).forEach(function (li) { if (!keep.has(li.elResultKey)) li.remove(); });\n      refs.results.hidden = false; refs.state.hidden = true;\n      refs['list-head'].hidden = state.view !== 'list';\n    }\n    async function driveRequest(url,folder,signal) {\n      var controller = new AbortController(), timedOut = false;\n      var abort = function () { controller.abort(); };\n      if (signal.aborted) { var aborted = new Error('Cancelled'); aborted.name = 'AbortError'; throw aborted; }\n      signal.addEventListener('abort',abort,{once:true});\n      var timeout = setTimeout(function () { timedOut = true; controller.abort(); },25000);\n      var headers = {};\n      if (folder.resourceKey) headers['X-Goog-Drive-Resource-Keys'] = folder.id + '\/' + folder.resourceKey;\n      try {\n        var response = await fetch(url.href,{signal:controller.signal,headers:headers,credentials:'omit',referrerPolicy:'strict-origin-when-cross-origin'});\n        if (!response.ok) { var error = new Error('Unable to read section'); error.status = response.status; throw error; }\n        return await response.json();\n      } catch (error) {\n        if (timedOut && !signal.aborted) { var timeoutError = new Error('Request timed out'); timeoutError.name = 'TimeoutError'; throw timeoutError; }\n        throw error;\n      } finally { clearTimeout(timeout); signal.removeEventListener('abort',abort); }\n    }\n    async function listFolder(folder,signal) {\n      if (!validId(folder.id)) throw new Error('Invalid section');\n      var metadataUrl = new URL('https:\/\/www.googleapis.com\/drive\/v3\/files\/' + encodeURIComponent(folder.id));\n      metadataUrl.searchParams.set('key',CONFIG.API_KEY); metadataUrl.searchParams.set('fields','id,name,mimeType'); metadataUrl.searchParams.set('supportsAllDrives','true');\n      var metadata = await driveRequest(metadataUrl,folder,signal);\n      if (metadata.id !== folder.id || metadata.mimeType !== FOLDER) throw new Error('Section unavailable');\n      var files = [], ids = new Set(), tokens = new Set(), pageToken = '';\n      do {\n        var url = new URL('https:\/\/www.googleapis.com\/drive\/v3\/files');\n        url.searchParams.set('key',CONFIG.API_KEY); url.searchParams.set('q',\"'\" + folder.id + \"' in parents and trashed = false\");\n        url.searchParams.set('pageSize','1000'); url.searchParams.set('orderBy','folder,name');\n        url.searchParams.set('fields','nextPageToken,files(id,name,mimeType,modifiedTime,size,webViewLink,webContentLink,resourceKey,shortcutDetails(targetId,targetMimeType,targetResourceKey))');\n        url.searchParams.set('supportsAllDrives','true'); url.searchParams.set('includeItemsFromAllDrives','true');\n        if (pageToken) url.searchParams.set('pageToken',pageToken);\n        var data = await driveRequest(url,folder,signal);\n        if (!Array.isArray(data.files)) throw new Error('Invalid section response');\n        data.files.forEach(function (file) { if (validId(file.id) && !ids.has(file.id)) { ids.add(file.id); files.push(file); } });\n        pageToken = data.nextPageToken || '';\n        if (pageToken && tokens.has(pageToken)) throw new Error('Repeated result page');\n        if (pageToken) tokens.add(pageToken);\n      } while (pageToken);\n      return files;\n    }\n    var index = createLibrarySearchIndex({root:ROOT_NODE,listFolder:listFolder,concurrency:3,onProgress:function (snapshot) {\n      if (!state.query || !state.searchController || state.searchController.signal.aborted) return;\n      state.snapshot = snapshot; render();\n    }});\n    function cancelBrowse() {\n      state.browseVersion++; if (state.browseController) state.browseController.abort();\n      state.browseController = null; state.loading = false; refs.refresh.disabled = false;\n    }\n    function cancelIndex(discard) {\n      state.searchVersion++; if (state.searchController) state.searchController.abort();\n      state.searchController = null; state.indexBusy = false;\n      if (discard || !state.indexFinished) { index.clear(); state.snapshot = null; state.indexFinished = false; }\n    }\n    function hideSharedLink() { state.sharedMatch = null; refs['shared-link'].hidden = true; }\n    async function loadSharedLink(version,signal) {\n      hideSharedLink();\n      if (state.mode !== 'grades' || Math.sign(state.path.length - 3) !== 1) return;\n      var name = state.path[3].name;\n      try {\n        var subjects = state.sharedSubjects || await listFolder(SHARED_NODE,signal);\n        if (signal.aborted || version !== state.browseVersion) return;\n        state.sharedSubjects = subjects;\n        var match = subjects.find(function (file) { return isFolder(file) && normalize(file.name) === normalize(name); });\n        if (match) { state.sharedMatch = match; refs['shared-link-label'].textContent = '\u0645\u0648\u0627\u062f \u0645\u0634\u062a\u0631\u0643\u0629 \u2014 ' + match.name; refs['shared-link'].hidden = false; }\n      } catch (_) { \/* An optional shared entry must not block the section. *\/ }\n    }\n    async function loadFolder(focusHeading) {\n      cancelBrowse(); state.browseReady = false; state.failed = false; state.files = [];\n      var version = state.browseVersion, controller = new AbortController(), folder = currentFolder();\n      state.browseController = controller; state.loading = true; refs.refresh.disabled = true;\n      refs.content.setAttribute('aria-busy','true'); refs.count.textContent = '\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0648\u0627\u062f\u2026';\n      breadcrumbs(); hideSharedLink(); refs['search-notice'].hidden = true;\n      showState('loading','\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0648\u0627\u062f','\u064a\u0631\u062c\u0649 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631\u2026','refresh',false);\n      if (focusHeading) refs.heading.focus();\n      if (!configured()) {\n        state.loading = false; state.failed = true; refs.refresh.disabled = false; refs.content.setAttribute('aria-busy','false');\n        showState('setup','\u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0642\u064a\u062f \u0627\u0644\u062a\u062c\u0647\u064a\u0632','\u0633\u062a\u0638\u0647\u0631 \u0627\u0644\u0645\u0648\u0627\u062f \u0647\u0646\u0627 \u0628\u0639\u062f \u0627\u0643\u062a\u0645\u0627\u0644 \u0625\u0639\u062f\u0627\u062f \u0627\u0644\u0645\u0643\u062a\u0628\u0629.','book',false); refs.count.textContent = ''; return;\n      }\n      try {\n        var files = await listFolder(folder,controller.signal);\n        if (controller.signal.aborted || version !== state.browseVersion) return;\n        state.files = files; state.browseReady = true; state.loading = false; render();\n        announce('\u062a\u0645 \u062a\u062d\u0645\u064a\u0644 ' + numberFormat.format(files.length) + ' \u0639\u0646\u0635\u0631.');\n        loadSharedLink(version,controller.signal);\n      } catch (error) {\n        if (controller.signal.aborted || version !== state.browseVersion) return;\n        state.loading = false; state.failed = true; refs.count.textContent = '';\n        showState('error','\u062a\u0639\u0630\u0651\u0631 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0648\u0627\u062f',error.status === 403 || error.status === 404 ? '\u0647\u0630\u0627 \u0627\u0644\u0642\u0633\u0645 \u063a\u064a\u0631 \u0645\u062a\u0627\u062d \u062d\u0627\u0644\u064a\u064b\u0627. \u0623\u0639\u062f \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0623\u0648 \u0627\u0631\u062c\u0639 \u0625\u0644\u0649 \u0642\u0633\u0645 \u0633\u0627\u0628\u0642.' : '\u062a\u062d\u0642\u0651\u0642 \u0645\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u062b\u0645 \u0623\u0639\u062f \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629\u060c \u0623\u0648 \u0627\u0631\u062c\u0639 \u0625\u0644\u0649 \u0642\u0633\u0645 \u0633\u0627\u0628\u0642.','error',true);\n        announce('\u062a\u0639\u0630\u0651\u0631 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0648\u0627\u062f.');\n      } finally {\n        if (version === state.browseVersion) { refs.content.setAttribute('aria-busy','false'); refs.refresh.disabled = false; }\n      }\n    }\n    function canonicalPath(path) {\n      var result = [];\n      path.forEach(function (node) {\n        var existing = result.findIndex(function (item) { return item.id === node.id; });\n        if (existing === -1) result.push(node); else result = result.slice(0,existing + 1);\n      });\n      return result;\n    }\n    function resetFilter() { state.filter = 'all'; root.querySelectorAll('[data-el-filter]').forEach(function (button) { button.setAttribute('aria-pressed',String(button.getAttribute('data-el-filter') === 'all')); }); }\n    function navigate(path) {\n      clearTimeout(state.searchTimer); cancelIndex(false); state.query = ''; refs.search.value = ''; refs.clear.hidden = true;\n      state.path = canonicalPath(path); state.mode = state.path.some(function (node) { return node.id === CONFIG.SHARED_FOLDER_ID; }) ? 'subjects' : state.path.some(function (node) { return node.id === CONFIG.ENTRANCE_FOLDER_ID; }) ? 'entrance' : 'grades';\n      resetFilter(); loadFolder(true);\n    }\n    async function ensureIndex() {\n      if (state.indexBusy || state.indexFinished) { render(); return; }\n      if (!configured()) { refs.count.textContent = ''; refs['search-notice'].hidden = true; showState('setup','\u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0642\u064a\u062f \u0627\u0644\u062a\u062c\u0647\u064a\u0632','\u0633\u062a\u062a\u0648\u0641\u0631 \u062e\u062f\u0645\u0629 \u0627\u0644\u0628\u062d\u062b \u0628\u0639\u062f \u0627\u0643\u062a\u0645\u0627\u0644 \u0625\u0639\u062f\u0627\u062f \u0627\u0644\u0645\u0643\u062a\u0628\u0629.','book',false); return; }\n      var version = ++state.searchVersion, controller = new AbortController();\n      state.searchController = controller; state.indexBusy = true; state.snapshot = index.getSnapshot(); render();\n      var snapshot = await index.build(controller.signal);\n      if (controller.signal.aborted || version !== state.searchVersion || !state.query) return;\n      state.snapshot = snapshot; state.indexBusy = false; state.indexFinished = !snapshot.cancelled; render();\n      announce(snapshot.failures.length ? '\u0627\u0646\u062a\u0647\u0649 \u0627\u0644\u0628\u062d\u062b \u0636\u0645\u0646 \u0627\u0644\u0623\u0642\u0633\u0627\u0645 \u0627\u0644\u0645\u062a\u0627\u062d\u0629. \u0628\u0639\u0636 \u0627\u0644\u0623\u0642\u0633\u0627\u0645 \u0644\u0645 \u062a\u064f\u0642\u0631\u0623.' : '\u0627\u0643\u062a\u0645\u0644 \u0627\u0644\u0628\u062d\u062b \u0641\u064a \u0627\u0644\u0645\u0643\u062a\u0628\u0629.');\n    }\n    function search() {\n      clearTimeout(state.searchTimer); refs.clear.hidden = !refs.search.value;\n      var query = normalize(refs.search.value);\n      if (!query) {\n        state.query = ''; cancelIndex(false); refs['search-notice'].hidden = true;\n        if (state.browseReady && !state.failed) render(); else loadFolder(false);\n        return;\n      }\n      cancelBrowse(); state.query = query; state.failed = false; hideSharedLink();\n      ensureIndex();\n    }\n    function refresh() {\n      state.sharedSubjects = null; cancelIndex(true);\n      if (state.query) ensureIndex(); else loadFolder(false);\n    }\n    refs['search-form'].addEventListener('submit',function (event) { event.preventDefault(); search(); });\n    refs.search.addEventListener('input',function () {\n      refs.clear.hidden = !refs.search.value; clearTimeout(state.searchTimer);\n      if (!normalize(refs.search.value)) search(); else state.searchTimer = setTimeout(search,350);\n    });\n    refs.clear.addEventListener('click',function () { refs.search.value = ''; search(); refs.search.focus(); });\n    refs.sort.addEventListener('change',render); refs.refresh.addEventListener('click',refresh);\n    refs.retry.addEventListener('click',function () { loadFolder(false); });\n    refs['retry-search'].addEventListener('click',function () { cancelIndex(true); ensureIndex(); });\n    refs.entrance.addEventListener('click',function () { navigate([ROOT_NODE,ENTRANCE_NODE]); });\n    refs['shared-link'].addEventListener('click',function () { if (state.sharedMatch) navigate([ROOT_NODE,SHARED_NODE,folderNode(state.sharedMatch)]); });\n    root.querySelectorAll('[data-el-mode]').forEach(function (button) { button.addEventListener('click',function () { navigate(button.getAttribute('data-el-mode') === 'subjects' ? [ROOT_NODE,SHARED_NODE] : [ROOT_NODE]); }); });\n    root.querySelectorAll('[data-el-view]').forEach(function (button) { button.addEventListener('click',function () { setView(button.getAttribute('data-el-view')); }); });\n    root.querySelectorAll('[data-el-filter]').forEach(function (button) { button.addEventListener('click',function () { state.filter = button.getAttribute('data-el-filter'); root.querySelectorAll('[data-el-filter]').forEach(function (other) { other.setAttribute('aria-pressed',String(other === button)); }); render(); }); });\n    try { setView(localStorage.getItem('elahlya-library:view')); } catch (_) { setView('grid'); }\n    loadFolder(false);\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded',initializeElahlyaLibrary,{once:true});\n  else initializeElahlyaLibrary();\n})();\n\n  <\/script>\n<\/section>\n\n\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0648\u0627\u0636\u064a\u0639 \u0648\u0627\u0645\u062a\u062d\u0627\u0646\u0627\u062a\u0627\u0644\u0639\u0648\u062f\u0629 \u0644\u0644\u0631\u0626\u064a\u0633\u064a\u0629 \u0627\u062e\u062a\u0631 \u0627\u0644\u062a\u062e\u0635\u0635 \u0623\u0648 \u0627\u0644\u0635\u0641\u060c \u0623\u0648 \u0627\u0628\u062d\u062b \u0639\u0646 \u0645\u0627\u062f\u0629. \u0645\u0648\u0627\u062f \u062d\u0633\u0628 \u0627\u0644\u062a\u062e\u0635\u0635 \u0645\u0648\u0627\u062f \u062d\u0633\u0628 \u0627\u0644\u0635\u0641 \u0645\u0648\u0627\u062f \u0627\u0645\u062a\u062d\u0627\u0646\u0627\u062a \u0627\u0644\u062f\u062e\u0648\u0644 \u0627\u0644\u0628\u062d\u062b \u0641\u064a \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0643\u0627\u0645\u0644\u0629 \u0628\u062d\u062b \u062a\u0631\u062a\u064a\u0628 \u0627\u0644\u0645\u0648\u0627\u062f \u0627\u0644\u0627\u0633\u0645: \u0623\u2013\u064a\u0627\u0644\u0623\u062d\u062f\u062b \u0623\u0648\u0644\u064b\u0627\u0627\u0644\u0623\u0642\u062f\u0645 \u0623\u0648\u0644\u064b\u0627 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0628\u062d\u062b \u064a\u0634\u0645\u0644 \u0623\u0633\u0645\u0627\u0621 \u0627\u0644\u0645\u0648\u0627\u062f \u0648\u0627\u0644\u0623\u0642\u0633\u0627\u0645 \u0641\u064a \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0643\u0627\u0645\u0644\u0629. \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0628\u062d\u062b \u0645\u0648\u0627\u062f \u0645\u0634\u062a\u0631\u0643\u0629 \u062c\u0645\u064a\u0639 \u0627\u0644\u0645\u0648\u0627\u062f \u0627\u0644\u062a\u0639\u0644\u064a\u0645\u064a\u0629\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0643\u062a\u0628\u0629\u2026 \u0627\u0644\u0643\u0644\u0627\u0644\u0623\u0642\u0633\u0627\u0645\u0627\u0644\u0645\u0648\u0627\u062f \u0627\u0644\u0627\u0633\u0645\u0627\u0644\u0645\u062d\u062a\u0648\u0649\u0627\u0644\u0645\u0633\u0627\u0631 \u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0643\u062a\u0628\u0629\u064a\u0631\u062c\u0649 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631\u2026\u0625\u0639\u0627\u062f\u0629 &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-11750","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/elahlya.net\/main\/wp-json\/wp\/v2\/pages\/11750","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elahlya.net\/main\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elahlya.net\/main\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elahlya.net\/main\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elahlya.net\/main\/wp-json\/wp\/v2\/comments?post=11750"}],"version-history":[{"count":16,"href":"https:\/\/elahlya.net\/main\/wp-json\/wp\/v2\/pages\/11750\/revisions"}],"predecessor-version":[{"id":11768,"href":"https:\/\/elahlya.net\/main\/wp-json\/wp\/v2\/pages\/11750\/revisions\/11768"}],"wp:attachment":[{"href":"https:\/\/elahlya.net\/main\/wp-json\/wp\/v2\/media?parent=11750"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}