diff --git a/404.html b/404.html new file mode 100644 index 0000000..e519c5d --- /dev/null +++ b/404.html @@ -0,0 +1 @@ +NetSchoolApi
\ No newline at end of file diff --git a/css/614.03fab845.css b/css/614.03fab845.css new file mode 100644 index 0000000..90afd83 --- /dev/null +++ b/css/614.03fab845.css @@ -0,0 +1 @@ +.skeleton-container{display:flex;gap:.625rem;flex-direction:column}.skeleton{opacity:.7;animation:skeleton-loading 1s linear infinite alternate}@keyframes skeleton-loading{0%{background-color:hsl(var(--repo-card-skeleton-background),70%)}to{background-color:hsl(var(--repo-card-skeleton-background),95%)}}.skeleton-img{width:40px;height:40px;border-radius:50%}.skeleton-label{width:60px;height:16px;border-radius:5px}.skeleton-header{width:120px;height:20px;border-radius:5px}.skeleton-text{width:100%;height:16px;margin-bottom:8px;border-radius:5px}.skeleton-text:last-child{width:90%;margin-bottom:0}.skeleton-badge{width:60px;height:16px;border-radius:5px}.repo-owner{width:-moz-fit-content;width:fit-content;display:flex;gap:.375rem;align-items:center;flex-direction:row}.repo-owner-avatar{width:1.873rem;height:1.873rem;border-radius:50%}.repo-owner-username{color:var(--repo-card-color);font-size:1rem;font-style:normal;font-weight:300;text-decoration-line:underline}@media screen and (min-width:64em){.repo-owner{gap:.625rem}.repo-owner-avatar{width:2.5rem;height:2.5rem}.repo-owner-username{font-size:1.25rem}}@media screen and (max-width:64em){.repo-owner{gap:.375rem}.repo-owner-avatar{width:1.873rem;height:1.873rem}.repo-owner-username{font-size:1rem}}.repo-name{display:block;font-size:1.5rem;font-style:normal;font-weight:700}@media screen and (min-width:64em){.repo-name{font-size:1.75rem}}@media screen and (max-width:64em){.repo-name{font-size:1.5rem}}.repo-description{display:block;font-style:normal;font-weight:300}@media screen and (min-width:64em){.repo-description{font-size:1.25rem}}@media screen and (max-width:64em){.repo-description{font-size:1rem}}.repo-homepage{width:-moz-fit-content;width:fit-content;display:flex;gap:.375rem;align-items:center;flex-direction:row;color:var(--repo-card-color);font-size:.875rem;font-style:normal;font-weight:700;text-decoration-line:underline}@media screen and (min-width:64em){.repo-homepage{gap:.625rem;font-size:1rem}}@media screen and (max-width:64em){.repo-homepage{gap:.375rem;font-size:.875rem}}.repo-stats{gap:1rem;flex-wrap:wrap}.repo-stats,.repo-stats-badge{display:flex;flex-direction:row}.repo-stats-badge{gap:.375rem;align-items:center;font-size:.875rem;font-style:normal;font-weight:300;color:var(--repo-card-icon-color)}.repo-stats-badge span{font-weight:700;color:var(--repo-card-color)}@media screen and (min-width:64em){.repo-stats{gap:1.25rem}.repo-stats-badge{gap:.625rem;font-size:1rem}}@media screen and (max-width:64em){.repo-stats{gap:1rem}.repo-stats-badge{gap:.375rem;font-size:.875rem}}.body-container,.error-container{display:flex;gap:.625rem;flex-direction:column}.error-header{font-size:1.5rem;font-weight:700}.error-header,.error-text{display:block;font-style:normal}.error-text{font-size:1rem;font-weight:300}@media screen and (min-width:64em){.error-container{gap:.625rem}.error-header{font-size:1.75rem}.error-text{font-size:1.25rem}}@media screen and (max-width:64em){.error-container{gap:.375rem}.error-header{font-size:1.5rem}.error-text{font-size:1rem}}.repo-page{display:flex;flex-direction:row;align-items:center;justify-content:center;text-decoration:none;font-style:normal;color:var(--repo-card-btn-color);background:var(--repo-card-btn-background);border:.0625rem solid var(--repo-card-btn-border);border-radius:.375rem}.repo-page .repo-icon{fill:var(--repo-card-btn-color)}@media screen and (min-width:64em){.repo-page{gap:.625rem;padding:.625rem 0;font-size:1rem}}@media screen and (max-width:64em){.repo-page{gap:.375rem;padding:.375rem 0;font-size:.875rem}}.repo-icon{fill:var(--repo-card-icon-color)}@media screen and (min-width:64em){.repo-icon{width:1rem;height:1rem}}@media screen and (max-width:64em){.repo-icon{width:.875rem;height:.875rem}}.repo-card{display:flex;gap:.625rem;flex-direction:column;color:var(--repo-card-color);background:var(--repo-card-background);border-bottom:.09375rem solid var(--divider-background)}@media screen and (min-width:64em){.repo-card{padding:4rem calc(50vw - 26em)}}@media screen and (min-width:42em) and (max-width:64em){.repo-card{padding:3rem 4rem}}@media screen and (max-width:42em){.repo-card{padding:2rem 1rem}}.btn{cursor:pointer;gap:.375rem;font-size:1rem;font-style:normal;font-weight:400;padding:.625rem 0;flex-direction:row}.btn,.btn-icon{display:flex;align-items:center}.btn-icon{padding:.5rem;justify-content:center;border-radius:.375rem}.btn-icon svg{width:1rem;height:1rem}@media screen and (min-width:64em){.btn{gap:.625rem;font-size:1.25rem;padding:.875rem 0}.btn-icon{padding:.75rem}.btn-icon svg{width:1.25rem;height:1.25rem}}@media screen and (max-width:64em){.btn{gap:.375rem;font-size:1rem;padding:.625rem 0}.btn-icon{padding:.5rem}.btn-icon svg{width:1rem;height:1rem}}.readme-info{margin:1rem 0;gap:.375rem;display:flex;align-items:center;flex-direction:row;color:var(--readme-color);font-size:.875rem;font-style:normal;font-weight:400}.readme-icon{fill:var(--readme-icon-color);width:.875rem;height:.875rem}@media screen and (min-width:64em){.readme-info{gap:.625rem;font-size:1rem}.readme-icon{width:1rem;height:1rem}}@media screen and (max-width:64em){.readme-info{gap:.375rem;font-size:.875rem}.readme-icon{width:.875rem;height:.875rem}}.btns-container{margin:1rem 0;display:flex;flex-direction:column} \ No newline at end of file diff --git a/css/801.e38130a9.css b/css/801.e38130a9.css new file mode 100644 index 0000000..f141cff --- /dev/null +++ b/css/801.e38130a9.css @@ -0,0 +1 @@ +.blob-header{width:100%;height:3rem;background:var(--blob-header-background);border-bottom:1px solid var(--divider-background);top:0;z-index:9999;position:sticky;padding:.5rem;display:flex;flex-direction:row;justify-content:space-between}.blob-header-icon{width:1rem;height:1rem;fill:var(--blob-header-icon-color)}.blob-header-back,.blob-header-edit{cursor:pointer;display:flex;gap:.625rem;align-items:center;flex-direction:row}.blob-header-name{font-size:1rem;font-weight:700}@media screen and (min-width:64em){.blob-header{height:3.5rem;padding:1rem}.blob-header-icon{width:1.25rem;height:1.25rem}.blob-header-back,.blob-header-edit{gap:.875rem}.blob-header-name{font-size:1.25rem}} \ No newline at end of file diff --git a/css/985.f2e8cb0c.css b/css/985.f2e8cb0c.css new file mode 100644 index 0000000..8e786e6 --- /dev/null +++ b/css/985.f2e8cb0c.css @@ -0,0 +1 @@ +.btn{cursor:pointer;gap:.375rem;font-size:1rem;font-style:normal;font-weight:400;padding:.625rem 0;flex-direction:row}.btn,.btn-icon{display:flex;align-items:center}.btn-icon{padding:.5rem;justify-content:center;border-radius:.375rem}.btn-icon svg{width:1rem;height:1rem}@media screen and (min-width:64em){.btn{gap:.625rem;font-size:1.25rem;padding:.875rem 0}.btn-icon{padding:.75rem}.btn-icon svg{width:1.25rem;height:1.25rem}}@media screen and (max-width:64em){.btn{gap:.375rem;font-size:1rem;padding:.625rem 0}.btn-icon{padding:.5rem}.btn-icon svg{width:1rem;height:1rem}}.readme-info{margin:1rem 0;gap:.375rem;display:flex;align-items:center;flex-direction:row;color:var(--readme-color);font-size:.875rem;font-style:normal;font-weight:400}.readme-icon{fill:var(--readme-icon-color);width:.875rem;height:.875rem}@media screen and (min-width:64em){.readme-info{gap:.625rem;font-size:1rem}.readme-icon{width:1rem;height:1rem}}@media screen and (max-width:64em){.readme-info{gap:.375rem;font-size:.875rem}.readme-icon{width:.875rem;height:.875rem}} \ No newline at end of file diff --git a/css/app.d282c66f.css b/css/app.d282c66f.css new file mode 100644 index 0000000..d2ee1de --- /dev/null +++ b/css/app.d282c66f.css @@ -0,0 +1 @@ +@import url(https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;500;700&display=swap);.fade-enter-active,.fade-leave-active{transition:opacity .25s ease}.fade-enter-from,.fade-leave-to{opacity:0}@media (prefers-color-scheme:light){:root{--app-color:#0c0c0c;--app-background:#fff;--link-color:#0366d6;--blockquote-color:#6c6f7e;--blockquote-border:#e2e3e7;--table-border:#e3e4e8;--table-even-background:#f7f7f9;--code-color:#6b6e7d;--code-background:#f7f7f9;--pre-color:#303439;--pre-background:#f7f7f9;--divider-background:#d6d7d9;--repo-card-color:#0a0a0a;--repo-card-background:#fbfbfc;--repo-card-skeleton-background:240,12%;--repo-card-icon-color:#9194a1;--repo-card-btn-color:#41434e;--repo-card-btn-border:#cacbce;--repo-card-btn-background:#fff;--repo-btn-box:#eff0f5;--repo-btn-fill:#525560;--readme-color:#525560;--readme-icon-color:#525560;--blob-header-color:#050505;--blob-header-background:#fbfbfc;--blob-header-icon-color:#050505}}@media (prefers-color-scheme:dark){:root{--app-color:#fbfbfc;--app-background:#17181c;--link-color:#2e8fff;--blockquote-color:#9093a0;--blockquote-border:#41434e;--table-border:#41434e;--table-even-background:#24252a;--code-color:#9194a1;--code-background:#24252a;--pre-color:#fbfbfc;--pre-background:#24252a;--divider-background:#323337;--repo-card-color:#fff;--repo-card-background:#0b0b0d;--repo-card-skeleton-background:230,8%;--repo-card-icon-color:#6c6f7e;--repo-card-btn-color:#bfc1c9;--repo-card-btn-border:#232326;--repo-card-btn-background:#17181c;--repo-btn-box:#383a42;--repo-btn-fill:#bfc1c9;--readme-color:#a9abb6;--readme-icon-color:#6c6f7e;--blob-header-color:#fefefe;--blob-header-background:#17181c;--blob-header-icon-color:#fefefe}}::-webkit-scrollbar{width:.2rem;height:.2rem}::-webkit-scrollbar-track{box-shadow:none}::-webkit-scrollbar-thumb{background-color:#b2b2b2}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{box-sizing:border-box}body{padding:0;margin:0;font-family:Roboto,sans-serif;font-size:16px;line-height:1.5;color:var(--app-color);background-color:var(--app-background)}a{color:var(--link-color);cursor:pointer;text-decoration:underline}.main-content{word-wrap:break-word;padding-top:0!important}@media screen and (min-width:64em){.main-content{max-width:64rem;padding:2rem 6rem;margin:0 auto;font-size:1.1rem}}@media screen and (min-width:42em) and (max-width:64em){.main-content{padding:2rem 4rem;font-size:1.1rem}}@media screen and (max-width:42em){.main-content{padding:2rem 1rem;font-size:1rem}}.main-content kbd{background-color:#fafbfc;border:1px solid #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5;color:#444d56;display:inline-block;font-size:11px;line-height:10px;padding:3px 5px;vertical-align:middle}.main-content img{max-width:100%}.main-content h1,.main-content h2,.main-content h3,.main-content h4,.main-content h5,.main-content h6{margin-top:2rem;margin-bottom:1rem;font-weight:400}.main-content p{margin-bottom:1em}.main-content code{padding:2px 4px;font-family:Consolas,Liberation Mono,Menlo,monospace;font-size:.9rem;color:var(--code-color);background-color:var(--code-background);border-radius:.3rem}.main-content pre{padding:.8rem;margin-top:0;margin-bottom:1rem;font:1rem Consolas,Liberation Mono,Menlo,monospace;color:var(--pre-color);word-wrap:normal;background-color:var(--pre-background);border-radius:.3rem}.main-content pre>code{padding:0;margin:0;color:var(--pre-color);font-size:.9rem;word-break:normal;white-space:pre;background:transparent;border:0}.main-content .highlight{margin-bottom:1rem}.main-content .highlight pre{margin-bottom:0;word-break:normal}.main-content .highlight pre,.main-content pre{padding:.8rem;overflow:auto;font-size:.9rem;line-height:1.45;border-radius:.3rem;-webkit-overflow-scrolling:touch}.main-content pre code,.main-content pre tt{display:inline;max-width:none;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.main-content pre code:after,.main-content pre code:before,.main-content pre tt:after,.main-content pre tt:before{content:normal}.main-content ol,.main-content ul{margin-top:0}.main-content blockquote{padding:0 1rem;margin-left:0;color:var(--blockquote-color);border-left:.2rem solid var(--blockquote-border)}.main-content blockquote>:first-child{margin-top:0}.main-content blockquote>:last-child{margin-bottom:0}.main-content table{display:block;width:100%;margin-bottom:1rem;overflow:auto;word-break:normal;word-break:keep-all;-webkit-overflow-scrolling:touch}.main-content table th{font-weight:700}.main-content table td,.main-content table th{padding:.5rem 1rem;border:1px solid var(--table-border)}.main-content table tr:nth-child(2n){background-color:var(--table-even-background)}.main-content dl{padding:0}.main-content dl dt{padding:0;margin-top:1rem;font-size:1rem;font-weight:700}.main-content dl dd{padding:0;margin-bottom:1rem}.main-content hr{height:.0936rem;padding:0;margin:1rem 0;background-color:var(--divider-background);border:0}.main-content-code{word-wrap:break-word}@media screen and (min-width:64em){.main-content-code{font-size:1.1rem}}@media screen and (min-width:42em) and (max-width:64em){.main-content-code{font-size:1.1rem}}@media screen and (max-width:42em){.main-content-code{font-size:1rem}}.blob-wrapper{overflow-x:auto;overflow-y:hidden;padding:.5rem 0;background-color:var(--pre-background)}.blob-num{line-height:20px;padding-left:10px;padding-right:10px;width:1%;min-width:50px;color:#8b949e;font-size:12px;text-align:right;white-space:nowrap;vertical-align:top;-webkit-user-select:none;-moz-user-select:none;user-select:none}.blob-num:before{content:attr(data-line-number)}.blob-code{position:relative;overflow:visible;line-height:20px;padding-left:10px;padding-right:10px;word-wrap:normal;white-space:pre;font:14px Consolas,Liberation Mono,Menlo,monospace;vertical-align:top}@media (prefers-color-scheme:light){pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-property,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}}@media (prefers-color-scheme:dark){pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-property,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}} \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..091172c Binary files /dev/null and b/favicon.ico differ diff --git a/img/icons/android-chrome-192x192.png b/img/icons/android-chrome-192x192.png new file mode 100644 index 0000000..e392cf0 Binary files /dev/null and b/img/icons/android-chrome-192x192.png differ diff --git a/img/icons/android-chrome-512x512.png b/img/icons/android-chrome-512x512.png new file mode 100644 index 0000000..16f7849 Binary files /dev/null and b/img/icons/android-chrome-512x512.png differ diff --git a/img/icons/apple-touch-icon.png b/img/icons/apple-touch-icon.png new file mode 100644 index 0000000..0fba7ea Binary files /dev/null and b/img/icons/apple-touch-icon.png differ diff --git a/img/icons/favicon-16x16.png b/img/icons/favicon-16x16.png new file mode 100644 index 0000000..b97f08f Binary files /dev/null and b/img/icons/favicon-16x16.png differ diff --git a/img/icons/favicon-32x32.png b/img/icons/favicon-32x32.png new file mode 100644 index 0000000..9f55707 Binary files /dev/null and b/img/icons/favicon-32x32.png differ diff --git a/img/icons/favicon.ico b/img/icons/favicon.ico new file mode 100644 index 0000000..091172c Binary files /dev/null and b/img/icons/favicon.ico differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..e519c5d --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +NetSchoolApi
\ No newline at end of file diff --git a/js/364.1b61b8d2.js b/js/364.1b61b8d2.js new file mode 100644 index 0000000..4ae5a36 --- /dev/null +++ b/js/364.1b61b8d2.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvdocs"]=self["webpackChunkvdocs"]||[]).push([[364],{5364:function(e,n,r){r.r(n),r.d(n,{default:function(){return o}});var t=r(6252);const u=["src"];function a(e,n,r,a,c,i){return(0,t.wg)(),(0,t.iD)("div",null,[(0,t._)("img",{src:e.image},null,8,u)])}var c=(0,t.aZ)({name:"ImageViewer",computed:{image(){return this.$route.meta.image}}}),i=r(3744);const s=(0,i.Z)(c,[["render",a]]);var o=s}}]); \ No newline at end of file diff --git a/js/614.dc93d85f.js b/js/614.dc93d85f.js new file mode 100644 index 0000000..e36690b --- /dev/null +++ b/js/614.dc93d85f.js @@ -0,0 +1 @@ +(self["webpackChunkvdocs"]=self["webpackChunkvdocs"]||[]).push([[614],{5108:function(e,t,r){"use strict";r.d(t,{Z:function(){return v}});var n=r(6252),o=r(3577);const s={key:0},a={key:1,class:"readme-info"},i=(0,n._)("svg",{class:"readme-icon",version:"1.1",viewBox:"0 0 24 24"},[(0,n._)("g",null,[(0,n._)("path",{d:"m12 1a11 11 0 1 0 11 11 11.013 11.013 0 0 0 -11-11zm0 20a9 9 0 1 1 9-9 9.011 9.011 0 0 1 -9 9z"}),(0,n._)("path",{d:"m12 9a1 1 0 0 0 -1 1v7a1 1 0 0 0 2 0v-7a1 1 0 0 0 -1-1z"}),(0,n._)("circle",{cx:"12",cy:"7",r:"1"})])],-1);function l(e,t,r,l,c,d){return(0,n.wg)(),(0,n.iD)(n.HY,null,[e.component&&!e.withoutDivider?((0,n.wg)(),(0,n.iD)("hr",s)):(0,n.kq)("",!0),e.component?((0,n.wg)(),(0,n.iD)("div",a,[i,(0,n.Uk)(" "+(0,o.zw)(e.path),1)])):(0,n.kq)("",!0),e.component?((0,n.wg)(),(0,n.j4)((0,n.LL)(e.component),{key:2})):(0,n.kq)("",!0)],64)}const c=r(3029).keys().map((e=>e.replace(/^\./,"")));var d=(0,n.aZ)({props:{dir:{type:String,default:"/"},withoutDivider:{type:Boolean,default:!1}},computed:{path(){let e=this.dir.replace(/^\//g,"");return e&&!e.endsWith("/")&&(e+="/"),e+="README.md",e},component(){let e=this.dir;return e.startsWith("/")||(e="/"+e),e.endsWith("/")||(e+="/"),e+="README.vue",c.includes(e)?(0,n.RC)((()=>r(1455)("./pages"+e))):void 0}}}),p=r(3744);const u=(0,p.Z)(d,[["render",l]]);var v=u},8921:function(e,t,r){"use strict";r.d(t,{Z:function(){return h}});var n=r(6252),o=r(3577);const s=["onClick"],a=["fill"],i=(0,n._)("g",{"clip-path":"url(#clip0_328:288)"},[(0,n._)("path",{d:"M12.2262 14.0006H1.94621C1.7171 14.0006 1.53125 13.8148 1.53125 13.5856V0.415681C1.53125 0.186463 1.7171 0.000610352 1.94621 0.000610352H9.36545C9.59467 0.000610352 9.78041 0.186463 9.78041 0.415681C9.78041 0.644899 9.59467 0.830644 9.36545 0.830644H2.36128V13.1706H11.8112V3.27642C11.8112 3.0472 11.997 2.86135 12.2262 2.86135C12.4554 2.86135 12.6413 3.0472 12.6413 3.27642V13.5856C12.6413 13.8148 12.4554 14.0006 12.2262 14.0006Z"}),(0,n._)("path",{d:"M12.2262 3.69075H9.36545C9.13623 3.69075 8.95038 3.5049 8.95038 3.27579V0.415056C8.95038 0.247149 9.05153 0.0957966 9.20662 0.0316029C9.36171 -0.0326976 9.54019 0.00287059 9.65897 0.121538L12.5196 2.98227C12.6384 3.10105 12.6738 3.27953 12.6096 3.43462C12.5454 3.58971 12.3941 3.69075 12.2262 3.69075ZM9.78041 2.86072H11.2242L9.78041 1.41695V2.86072Z"}),(0,n._)("path",{d:"M5.35359 8.10579C5.24614 8.10579 5.1388 8.06434 5.05751 7.98167L3.86465 6.76776C3.70593 6.60626 3.70593 6.34746 3.86465 6.18596L5.05751 4.97205C5.21816 4.80863 5.48091 4.80628 5.64444 4.96703C5.80797 5.12768 5.81021 5.39043 5.64957 5.55385L4.74253 6.47681L5.64957 7.39977C5.81021 7.56329 5.80797 7.82605 5.64444 7.98669C5.56369 8.06616 5.45859 8.10579 5.35359 8.10579Z"}),(0,n._)("path",{d:"M8.73911 8.10581C8.63412 8.10581 8.52912 8.06618 8.44826 7.98671C8.28484 7.82607 8.28249 7.56332 8.44314 7.3999L9.35018 6.47694L8.44314 5.55399C8.28249 5.39046 8.28484 5.1277 8.44826 4.96706C8.61179 4.80642 8.87455 4.80877 9.03519 4.97219L10.2281 6.18599C10.3868 6.34749 10.3868 6.6064 10.2281 6.76779L9.03519 7.98169C8.95391 8.06437 8.84656 8.10581 8.73911 8.10581Z"}),(0,n._)("path",{d:"M6.43902 8.10578C6.36863 8.10578 6.29728 8.08784 6.23191 8.05013C6.03345 7.93552 5.96541 7.68174 6.08002 7.48318L7.29383 5.3807C7.40844 5.18224 7.66233 5.1141 7.86079 5.22881C8.05925 5.34342 8.12729 5.59721 8.01268 5.79577L6.79887 7.89825C6.72196 8.03133 6.58247 8.10578 6.43902 8.10578Z"}),(0,n._)("path",{d:"M9.62968 10.0435H4.463C4.23378 10.0435 4.04803 9.85765 4.04803 9.62843C4.04803 9.39922 4.23378 9.21347 4.463 9.21347H9.62968C9.8589 9.21347 10.0446 9.39922 10.0446 9.62843C10.0446 9.85765 9.8589 10.0435 9.62968 10.0435Z"}),(0,n._)("path",{d:"M9.62968 11.7866H4.463C4.23378 11.7866 4.04803 11.6007 4.04803 11.3716C4.04803 11.1424 4.23378 10.9565 4.463 10.9565H9.62968C9.8589 10.9565 10.0446 11.1424 10.0446 11.3716C10.0446 11.6007 9.8589 11.7866 9.62968 11.7866Z"})],-1),l=(0,n._)("defs",null,[(0,n._)("clipPath",{id:"clip0_328:288"},[(0,n._)("rect",{width:"14",height:"14"})])],-1),c=[i,l];function d(e,t,r,i,l,d){const p=(0,n.up)("router-link");return(0,n.wg)(),(0,n.j4)(p,{to:r.to,custom:""},{default:(0,n.w5)((({navigate:t})=>[(0,n._)("div",{class:"btn",onClick:t},[(0,n._)("div",{class:"btn-icon",style:(0,o.j5)(`background: ${r.boxColor}`)},[(0,n.WI)(e.$slots,"default",{fill:r.fillColor},(()=>[((0,n.wg)(),(0,n.iD)("svg",{fill:r.fillColor,viewBox:"0 0 14 14",xmlns:"http://www.w3.org/2000/svg"},c,8,a))]))],4),(0,n.Uk)(" "+(0,o.zw)(r.text),1)],8,s)])),_:3},8,["to"])}var p={props:{to:{type:String,required:!0},text:{type:String,required:!0},boxColor:{type:String,default:"var(--repo-btn-box)"},fillColor:{type:String,default:"var(--repo-btn-fill)"}}},u=r(3744);const v=(0,u.Z)(p,[["render",d]]);var h=v},6614:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return Pe}});var n=r(6252);const o={class:"main-content"},s={class:"btns-container"};function a(e,t,r,a,i,l){const c=(0,n.up)("RepoCard"),d=(0,n.up)("Btn"),p=(0,n.up)("Readme");return(0,n.wg)(),(0,n.iD)(n.HY,null,[(0,n.Wm)(c),(0,n._)("div",o,[(0,n._)("div",s,[(0,n.Wm)(d,{to:"/blob/",text:"Browse code"})]),(0,n.Wm)(p)])],64)}var i=r(9963),l=r(3577);const c={class:"repo-card"};function d(e,t,r,o,s,a){const d=(0,n.up)("Skeleton"),p=(0,n.up)("Body"),u=(0,n.up)("Error"),v=(0,n.up)("Page");return(0,n.wg)(),(0,n.iD)("div",c,[(0,n.Wm)(i.uT,{name:"fade",mode:"out-in"},{default:(0,n.w5)((()=>[e.loading?((0,n.wg)(),(0,n.j4)(d,{key:0})):e.error?((0,n.wg)(),(0,n.j4)(u,{key:2})):((0,n.wg)(),(0,n.j4)(p,(0,l.vs)((0,n.dG)({key:1},e.data)),null,16))])),_:1}),(0,n.Wm)(v)])}const p={class:"skeleton-container"},u=(0,n.uE)('
',4),v=[u];function h(e,t){return(0,n.wg)(),(0,n.iD)("div",p,v)}var f=r(3744);const m={},_=(0,f.Z)(m,[["render",h]]);var g=_;const C={class:"body-container"};function k(e,t,r,o,s,a){const i=(0,n.up)("User"),l=(0,n.up)("Name"),c=(0,n.up)("Description"),d=(0,n.up)("Homepage"),p=(0,n.up)("Stats");return(0,n.wg)(),(0,n.iD)("div",C,[(0,n.Wm)(i,{src:r.avatar,username:r.username},null,8,["src","username"]),(0,n.Wm)(l,{name:r.repository},null,8,["name"]),(0,n.Wm)(c,{description:r.description},null,8,["description"]),(0,n.Wm)(d,{href:r.homepage},null,8,["href"]),(0,n.Wm)(p,{stars:r.stars,forks:r.forks},null,8,["stars","forks"])])}const w=["href"],y=["src"],E=["textContent"];function b(e,t,r,o,s,a){return(0,n.wg)(),(0,n.iD)("a",{href:e.href,class:"repo-owner"},[(0,n._)("img",{class:"repo-owner-avatar",src:e.src},null,8,y),(0,n._)("span",{class:"repo-owner-username",textContent:(0,l.zw)(e.username)},null,8,E)],8,w)}var P=(0,n.aZ)({props:{src:{type:String,required:!0},username:{type:String,required:!0}},computed:{href(){const{username:e}=this;return`https://github.com/${e}`}}});const Z=(0,f.Z)(P,[["render",b]]);var x=Z;const H=["textContent"];function A(e,t,r,o,s,a){return(0,n.wg)(),(0,n.iD)("span",{class:"repo-name",textContent:(0,l.zw)(r.name)},null,8,H)}var S={props:{name:{type:String,required:!0}}};const D=(0,f.Z)(S,[["render",A]]);var L=D;const U=["textContent"];function N(e,t,r,o,s,a){return(0,n.wg)(),(0,n.iD)("span",{class:"repo-description",textContent:(0,l.zw)(r.description)},null,8,U)}var z={props:{description:{type:String,required:!0}}};const R=(0,f.Z)(z,[["render",N]]);var V=R;const M=["href"],O=(0,n._)("svg",{viewBox:"0 0 16 16",version:"1.1",class:"repo-icon"},[(0,n._)("path",{"fill-rule":"evenodd",d:"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"})],-1);function W(e,t,r,o,s,a){return e.href?((0,n.wg)(),(0,n.iD)("a",{key:0,href:e.href,class:"repo-homepage"},[O,(0,n.Uk)(" "+(0,l.zw)(e.label),1)],8,M)):(0,n.kq)("",!0)}var B=(0,n.aZ)({props:{href:{type:String}},computed:{label(){if(!this.href)return"";const{hostname:e,pathname:t}=new URL(this.href);return e+t}}});const G=(0,f.Z)(B,[["render",W]]);var q=G;const j={class:"repo-stats"},$={class:"repo-stats-badge"},T=(0,n._)("svg",{viewBox:"0 0 16 16",version:"1.1",class:"repo-icon"},[(0,n._)("path",{"fill-rule":"evenodd",d:"M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"})],-1),F=["textContent"],Y={class:"repo-stats-badge"},I=(0,n._)("svg",{viewBox:"0 0 16 16",version:"1.1",class:"repo-icon"},[(0,n._)("path",{"fill-rule":"evenodd",d:"M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"})],-1),K=["textContent"];function Q(e,t,r,o,s,a){return(0,n.wg)(),(0,n.iD)("div",j,[(0,n._)("div",$,[T,(0,n._)("span",{textContent:(0,l.zw)(r.stars)},null,8,F),(0,n.Uk)(" stars ")]),(0,n._)("div",Y,[I,(0,n._)("span",{textContent:(0,l.zw)(r.forks)},null,8,K),(0,n.Uk)(" forks ")])])}var J={props:{stars:{type:Number,default:0},forks:{type:Number,default:0}}};const X=(0,f.Z)(J,[["render",Q]]);var ee=X,te={components:{User:x,Name:L,Description:V,Homepage:q,Stats:ee},props:{avatar:{type:String,required:!0},username:{type:String,required:!0},repository:{type:String,required:!0},description:{type:String,required:!0},homepage:{type:String},stars:{type:Number},forks:{type:Number}}};const re=(0,f.Z)(te,[["render",k]]);var ne=re;const oe={class:"error-container"},se=(0,n._)("span",{class:"error-header"},"Oops!",-1),ae=(0,n._)("span",{class:"error-text"},"Failed to load repository information. Try reloading the page or contact the developer.",-1),ie=[se,ae];function le(e,t){return(0,n.wg)(),(0,n.iD)("div",oe,ie)}const ce={},de=(0,f.Z)(ce,[["render",le]]);var pe=de;const ue=["href"],ve=(0,n._)("svg",{viewBox:"0 0 16 16",version:"1.1",class:"repo-icon"},[(0,n._)("path",{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})],-1);function he(e,t,r,o,s,a){return(0,n.wg)(),(0,n.iD)("a",{href:e.href,class:"repo-page"},[ve,(0,n.Uk)(" Open on GitHub ")],8,ue)}var fe=(0,n.aZ)({data:()=>({username:"",repository:""}),computed:{href(){const{username:e,repository:t}=this;return`https://github.com/${e}/${t}`}},beforeMount(){const{VUE_APP_GH_OWNER:e,VUE_APP_GH_REPO:t}={VUE_APP_GH_REPO:"NetSchoolApi",VUE_APP_G_TOKEN:"G-2HEF2QY5SL",VUE_APP_GH_BRANCH:"1.12.1",VUE_APP_GH_OWNER:"lentryd",NODE_ENV:"production",BASE_URL:"/NetSchoolApi/"};this.username=e,this.repository=t}});const me=(0,f.Z)(fe,[["render",he]]);var _e=me,ge=(0,n.aZ)({components:{Skeleton:g,Body:ne,Error:pe,Page:_e},data:()=>({loading:!0,error:!1,data:{avatar:"",username:"",repository:"",description:"",homepage:"",stars:0,forks:0}}),methods:{loadInfo(){this.error=!1,this.loading=!0;const{VUE_APP_GH_OWNER:e,VUE_APP_GH_REPO:t}={VUE_APP_GH_REPO:"NetSchoolApi",VUE_APP_G_TOKEN:"G-2HEF2QY5SL",VUE_APP_GH_BRANCH:"1.12.1",VUE_APP_GH_OWNER:"lentryd",NODE_ENV:"production",BASE_URL:"/NetSchoolApi/"};fetch(`https://api.github.com/repos/${e}/${t}`).then((e=>e.json())).then((e=>{this.data.avatar=e.owner.avatar_url,this.data.username=e.owner.login,this.data.repository=e.name,this.data.description=e.description,this.data.homepage=e.homepage,this.data.stars=e.stargazers_count,this.data.forks=e.forks_count})).catch((e=>{this.error=!0,console.error(e)})).finally((()=>this.loading=!1))}},beforeMount(){this.loadInfo()}});const Ce=(0,f.Z)(ge,[["render",d]]);var ke=Ce,we=r(8921),ye=r(5108),Ee=(0,n.aZ)({components:{RepoCard:ke,Btn:we.Z,Readme:ye.Z}});const be=(0,f.Z)(Ee,[["render",a]]);var Pe=be},3029:function(e,t,r){var n={"./README.vue":2353};function o(e){var t=s(e);return r(t)}function s(e){if(!r.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}o.keys=function(){return Object.keys(n)},o.resolve=s,e.exports=o,o.id=3029}}]); \ No newline at end of file diff --git a/js/801.b4509d2d.js b/js/801.b4509d2d.js new file mode 100644 index 0000000..0639276 --- /dev/null +++ b/js/801.b4509d2d.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkvdocs"]=self["webpackChunkvdocs"]||[]).push([[801],{7801:function(t,g,o){o.r(g),o.d(g,{default:function(){return b}});var s=o(6252),w=o(3577);function e(t,g,o,e,n,l){const r=(0,s.up)("BlobHeader"),a=(0,s.up)("router-view");return(0,s.wg)(),(0,s.iD)(s.HY,null,[(0,s.Wm)(r),(0,s.Wm)(a,{class:(0,w.C_)(t.$route.meta.isMD?"main-content":"main-content-code")},null,8,["class"])],64)}var n=o(9963);const l={class:"blob-header"},r=(0,s.uE)('',1),a=["textContent"],i=(0,s._)("svg",{class:"blob-header-icon",viewBox:"0 0 16 16",version:"1.1"},[(0,s._)("path",{"fill-rule":"evenodd",d:"M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z"})],-1),c=[i];function h(t,g,o,e,i,h){return(0,s.wg)(),(0,s.iD)("div",l,[(0,s._)("div",{class:"blob-header-back",onClick:g[0]||(g[0]=(...g)=>t.goBack&&t.goBack(...g))},[r,(0,s._)("span",{class:"blob-header-name",textContent:(0,w.zw)(t.fileName)},null,8,a)]),(0,s.wy)((0,s._)("div",{class:"blob-header-edit",onClick:g[1]||(g[1]=(...g)=>t.goEdit&&t.goEdit(...g))},c,512),[[n.F8,t.isFile]])])}o(7658);var v=(0,s.aZ)({computed:{isFile(){return!this.$route.meta.isDir},fileName(){return this.$route.meta.name||"Files"}},methods:{goBack(){window?.history?.length>2?this.$router.back():this.$router.push("/")},goEdit(){const t=this.$route.fullPath.match(/blob\/(.*)/)?.[1]??"",{VUE_APP_GH_REPO:g,VUE_APP_GH_OWNER:o,VUE_APP_GH_BRANCH:s="main"}={VUE_APP_GH_REPO:"NetSchoolApi",VUE_APP_G_TOKEN:"G-2HEF2QY5SL",VUE_APP_GH_BRANCH:"1.12.1",VUE_APP_GH_OWNER:"lentryd",NODE_ENV:"production",BASE_URL:"/NetSchoolApi/"};location.href=`https://github.com/${o}/${g}/edit/${s}/${t}`}}}),m=o(3744);const p=(0,m.Z)(v,[["render",h]]);var u=p,d={components:{BlobHeader:u}};const _=(0,m.Z)(d,[["render",e]]);var b=_}}]); \ No newline at end of file diff --git a/js/985.4bad0315.js b/js/985.4bad0315.js new file mode 100644 index 0000000..ec4c637 --- /dev/null +++ b/js/985.4bad0315.js @@ -0,0 +1 @@ +(self["webpackChunkvdocs"]=self["webpackChunkvdocs"]||[]).push([[985],{2985:function(t,e,r){"use strict";r.r(e),r.d(e,{default:function(){return g}});var n=r(6252);const o={class:"main-content"},i={class:"btns-container"},l={key:0,fill:"white",viewBox:"0 0 16 16",version:"1.1"},s=(0,n._)("path",{"fill-rule":"evenodd",d:"M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3h-6.5a.25.25 0 01-.2-.1l-.9-1.2c-.33-.44-.85-.7-1.4-.7h-3.5z"},null,-1),a=[s],c=["fill"],u=(0,n._)("path",{"fill-rule":"evenodd",d:"M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"},null,-1),d=[u];function p(t,e,r,s,u,p){const C=(0,n.up)("Btn"),v=(0,n.up)("README");return(0,n.wg)(),(0,n.iD)("div",o,[(0,n._)("div",i,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(t.files,((t,e)=>((0,n.wg)(),(0,n.j4)(C,{to:"/blob"+t.path,text:t.name,key:e,boxColor:t.isDir?"#2E8EFE":void 0},{default:(0,n.w5)((({fill:e})=>[t.isDir?((0,n.wg)(),(0,n.iD)("svg",l,a)):((0,n.wg)(),(0,n.iD)("svg",{key:1,fill:e,viewBox:"0 0 16 16",version:"1.1"},d,8,c))])),_:2},1032,["to","text","boxColor"])))),128))]),(0,n.Wm)(v,{dir:t.$route.path.replace("/blob/","")},null,8,["dir"])])}var C=r(8921),v=r(5108),f=(0,n.aZ)({props:{result:{type:Array,required:!0}},components:{Btn:C.Z,README:v.Z},computed:{files(){return this.result.sort().sort(((t,e)=>+!!e.isDir-+!!t.isDir))}}}),h=r(3744);const w=(0,h.Z)(f,[["render",p]]);var g=w},5108:function(t,e,r){"use strict";r.d(e,{Z:function(){return C}});var n=r(6252),o=r(3577);const i={key:0},l={key:1,class:"readme-info"},s=(0,n._)("svg",{class:"readme-icon",version:"1.1",viewBox:"0 0 24 24"},[(0,n._)("g",null,[(0,n._)("path",{d:"m12 1a11 11 0 1 0 11 11 11.013 11.013 0 0 0 -11-11zm0 20a9 9 0 1 1 9-9 9.011 9.011 0 0 1 -9 9z"}),(0,n._)("path",{d:"m12 9a1 1 0 0 0 -1 1v7a1 1 0 0 0 2 0v-7a1 1 0 0 0 -1-1z"}),(0,n._)("circle",{cx:"12",cy:"7",r:"1"})])],-1);function a(t,e,r,a,c,u){return(0,n.wg)(),(0,n.iD)(n.HY,null,[t.component&&!t.withoutDivider?((0,n.wg)(),(0,n.iD)("hr",i)):(0,n.kq)("",!0),t.component?((0,n.wg)(),(0,n.iD)("div",l,[s,(0,n.Uk)(" "+(0,o.zw)(t.path),1)])):(0,n.kq)("",!0),t.component?((0,n.wg)(),(0,n.j4)((0,n.LL)(t.component),{key:2})):(0,n.kq)("",!0)],64)}const c=r(3029).keys().map((t=>t.replace(/^\./,"")));var u=(0,n.aZ)({props:{dir:{type:String,default:"/"},withoutDivider:{type:Boolean,default:!1}},computed:{path(){let t=this.dir.replace(/^\//g,"");return t&&!t.endsWith("/")&&(t+="/"),t+="README.md",t},component(){let t=this.dir;return t.startsWith("/")||(t="/"+t),t.endsWith("/")||(t+="/"),t+="README.vue",c.includes(t)?(0,n.RC)((()=>r(1455)("./pages"+t))):void 0}}}),d=r(3744);const p=(0,d.Z)(u,[["render",a]]);var C=p},8921:function(t,e,r){"use strict";r.d(e,{Z:function(){return v}});var n=r(6252),o=r(3577);const i=["onClick"],l=["fill"],s=(0,n._)("g",{"clip-path":"url(#clip0_328:288)"},[(0,n._)("path",{d:"M12.2262 14.0006H1.94621C1.7171 14.0006 1.53125 13.8148 1.53125 13.5856V0.415681C1.53125 0.186463 1.7171 0.000610352 1.94621 0.000610352H9.36545C9.59467 0.000610352 9.78041 0.186463 9.78041 0.415681C9.78041 0.644899 9.59467 0.830644 9.36545 0.830644H2.36128V13.1706H11.8112V3.27642C11.8112 3.0472 11.997 2.86135 12.2262 2.86135C12.4554 2.86135 12.6413 3.0472 12.6413 3.27642V13.5856C12.6413 13.8148 12.4554 14.0006 12.2262 14.0006Z"}),(0,n._)("path",{d:"M12.2262 3.69075H9.36545C9.13623 3.69075 8.95038 3.5049 8.95038 3.27579V0.415056C8.95038 0.247149 9.05153 0.0957966 9.20662 0.0316029C9.36171 -0.0326976 9.54019 0.00287059 9.65897 0.121538L12.5196 2.98227C12.6384 3.10105 12.6738 3.27953 12.6096 3.43462C12.5454 3.58971 12.3941 3.69075 12.2262 3.69075ZM9.78041 2.86072H11.2242L9.78041 1.41695V2.86072Z"}),(0,n._)("path",{d:"M5.35359 8.10579C5.24614 8.10579 5.1388 8.06434 5.05751 7.98167L3.86465 6.76776C3.70593 6.60626 3.70593 6.34746 3.86465 6.18596L5.05751 4.97205C5.21816 4.80863 5.48091 4.80628 5.64444 4.96703C5.80797 5.12768 5.81021 5.39043 5.64957 5.55385L4.74253 6.47681L5.64957 7.39977C5.81021 7.56329 5.80797 7.82605 5.64444 7.98669C5.56369 8.06616 5.45859 8.10579 5.35359 8.10579Z"}),(0,n._)("path",{d:"M8.73911 8.10581C8.63412 8.10581 8.52912 8.06618 8.44826 7.98671C8.28484 7.82607 8.28249 7.56332 8.44314 7.3999L9.35018 6.47694L8.44314 5.55399C8.28249 5.39046 8.28484 5.1277 8.44826 4.96706C8.61179 4.80642 8.87455 4.80877 9.03519 4.97219L10.2281 6.18599C10.3868 6.34749 10.3868 6.6064 10.2281 6.76779L9.03519 7.98169C8.95391 8.06437 8.84656 8.10581 8.73911 8.10581Z"}),(0,n._)("path",{d:"M6.43902 8.10578C6.36863 8.10578 6.29728 8.08784 6.23191 8.05013C6.03345 7.93552 5.96541 7.68174 6.08002 7.48318L7.29383 5.3807C7.40844 5.18224 7.66233 5.1141 7.86079 5.22881C8.05925 5.34342 8.12729 5.59721 8.01268 5.79577L6.79887 7.89825C6.72196 8.03133 6.58247 8.10578 6.43902 8.10578Z"}),(0,n._)("path",{d:"M9.62968 10.0435H4.463C4.23378 10.0435 4.04803 9.85765 4.04803 9.62843C4.04803 9.39922 4.23378 9.21347 4.463 9.21347H9.62968C9.8589 9.21347 10.0446 9.39922 10.0446 9.62843C10.0446 9.85765 9.8589 10.0435 9.62968 10.0435Z"}),(0,n._)("path",{d:"M9.62968 11.7866H4.463C4.23378 11.7866 4.04803 11.6007 4.04803 11.3716C4.04803 11.1424 4.23378 10.9565 4.463 10.9565H9.62968C9.8589 10.9565 10.0446 11.1424 10.0446 11.3716C10.0446 11.6007 9.8589 11.7866 9.62968 11.7866Z"})],-1),a=(0,n._)("defs",null,[(0,n._)("clipPath",{id:"clip0_328:288"},[(0,n._)("rect",{width:"14",height:"14"})])],-1),c=[s,a];function u(t,e,r,s,a,u){const d=(0,n.up)("router-link");return(0,n.wg)(),(0,n.j4)(d,{to:r.to,custom:""},{default:(0,n.w5)((({navigate:e})=>[(0,n._)("div",{class:"btn",onClick:e},[(0,n._)("div",{class:"btn-icon",style:(0,o.j5)(`background: ${r.boxColor}`)},[(0,n.WI)(t.$slots,"default",{fill:r.fillColor},(()=>[((0,n.wg)(),(0,n.iD)("svg",{fill:r.fillColor,viewBox:"0 0 14 14",xmlns:"http://www.w3.org/2000/svg"},c,8,l))]))],4),(0,n.Uk)(" "+(0,o.zw)(r.text),1)],8,i)])),_:3},8,["to"])}var d={props:{to:{type:String,required:!0},text:{type:String,required:!0},boxColor:{type:String,default:"var(--repo-btn-box)"},fillColor:{type:String,default:"var(--repo-btn-fill)"}}},p=r(3744);const C=(0,p.Z)(d,[["render",u]]);var v=C},3029:function(t,e,r){var n={"./README.vue":2353};function o(t){var e=i(t);return r(e)}function i(t){if(!r.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}o.keys=function(){return Object.keys(n)},o.resolve=i,t.exports=o,o.id=3029}}]); \ No newline at end of file diff --git a/js/app.60842fc0.js b/js/app.60842fc0.js new file mode 100644 index 0000000..d7e986f --- /dev/null +++ b/js/app.60842fc0.js @@ -0,0 +1 @@ +(function(){var s={9542:function(s,a,n){"use strict";var l=n(9963),t=n(6252);function d(s,a,n,d,e,r){const c=(0,t.up)("router-view");return(0,t.wg)(),(0,t.j4)(c,null,{default:(0,t.w5)((({Component:a})=>[(0,t.Wm)(l.uT,{name:"fade",mode:"out-in"},{default:(0,t.w5)((()=>[((0,t.wg)(),(0,t.iD)("div",{key:s.$route.path},[((0,t.wg)(),(0,t.j4)((0,t.LL)(a)))]))])),_:2},1024)])),_:1})}n(7658);var e=(0,t.aZ)({methods:{setTheme(){document.querySelector("meta[name=theme-color]")?.setAttribute("content",getComputedStyle(document.body)?.getPropertyValue("--blob-header-background")?.trim())},navigation(s){const a=s.target;if("A"!==a.tagName)return!1;const n=decodeURI(a.getAttribute("href")??"#");if(/^(h|\/{2})/.test(n))return;s.preventDefault();let{hash:l,pathname:t}=new URL(n,"http://example.com"+this.$route.path.replace("/blob",""));t.startsWith("/blob")||(t="/blob"+t),this.$router.push({hash:decodeURI(l),path:decodeURI(t)})}},mounted(){this.setTheme(),window.addEventListener("click",this.navigation),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",this.setTheme)}}),r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c,b=n(7398);const o=/(?!^)\..*$/,p=/\/(.*?)\//;function u(s,a="/"){return s.map((s=>{s=a+s.replace(/^\//,"");let l=s;const t=n(22)("./pages"+s)?.default?.name??"",d=t.match(o)?.[0]??"",e=!t&&!d;return e||(l=l.replace(o,d)),l=l.replaceAll("$1","."),e?{path:l,meta:{name:s.replace(/^.*[\\\/]/,""),isMD:!0,image:n(22)("./pages"+s)},component:()=>n.e(364).then(n.bind(n,5364))}:{path:l,meta:{name:t,isMD:".md"===d},component:()=>n(1455)("./pages"+s)}}))}function m(s,a="",l="/"){a&&(s=s.map((s=>s.replace(p,"/"))));const t=u(s.filter((s=>!p.test(s))),l);let d=s.filter((s=>p.test(s)));const e=[...t],r=t.map((({meta:s,path:a})=>({name:s?.name,path:a,isDir:!1})));while(d.length>0){let s=d[0].match(p)?.[1]??"";const a=d.filter((a=>a.startsWith("/"+s)));e.push(...m(a,s,l+s+"/")),d=d.filter((a=>!a.startsWith("/"+s))),s=s.replaceAll("$1","."),r.push({name:s,path:l.replaceAll("$1",".")+s+"/",isDir:!0})}return[...e,{path:l.replaceAll("$1","."),meta:{name:a.replaceAll("$1","."),isDir:!0},props:{result:r},component:()=>n.e(985).then(n.bind(n,2985))}]}function h(s){return m(s).map((s=>({...s,path:s.path.replace(/^\//,"")})))}var j=n(2201);const L=n(2051).keys().map((s=>s.replace(/^\./,""))),C=[{path:"/",name:"Home",component:()=>n.e(614).then(n.bind(n,6614))},{path:"/blob",component:()=>n.e(801).then(n.bind(n,7801)),children:h(L)}],g=(0,j.p7)({routes:C,history:(0,j.PO)("/NetSchoolApi/"),scrollBehavior({path:s,hash:a},{path:n},l){return new Promise((t=>{setTimeout((()=>{t(a||l?l?{...l,behavior:"smooth"}:{el:a,top:60,behavior:"smooth"}:{top:0,behavior:"smooth"})}),s==n?0:300)}))}});var y=g,f=n(5205);(0,f.z)("/NetSchoolApi/service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh."),location.reload()},offline(){console.log("No internet connection found. App is running in offline mode.")},error(s){console.error("Error during service worker registration:",s)}});const w=(0,l.ri)(i);w.use(y),w.use(b.ZP,{config:{id:"G-2HEF2QY5SL"}},y),w.mount("#app")},3690:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"FUNDING.yml",data:()=>({html:'
# These are supported funding model platforms
custom: ["https://pay.cloudtips.ru/p/55f818b7", "https://www.tinkoff.ru/rm/ivchenko.viktor6/ylUQO36949/"]
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},9853:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)("

name: Отчет об ошибке (Bug report) about: Создайте отчет, чтобы помочь нам исправить ошибку title: '' labels: bug assignees: lentryd


Описание проблемы Кратко опишите, в чем заключается ошибка.

Ожидаемое поведение Четко укажите, какое поведение вы ожидали бы увидеть вместо ошибки.

Шаги для воспроизведения

  1. Шаг 1
  2. Шаг 2
  3. ...

Скриншоты/Логи Если есть возможность, приложите скриншоты или фрагменты логов, которые помогут нам разобраться в проблеме.

(пожалуйста, заполните следующую информацию):

Дополнительная информация Укажите любой другой контекст, который может быть полезен для понимания проблемы.

",11),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"отчет-об-ошибке--bug-report-.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},1749:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"codeql-analysis.yml",data:()=>({html:'
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '34 13 * * 6'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},6285:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"publish-release.yml",data:()=>({html:'
name: Автоматическая публикация релизов
on:
release:
types: [published]
jobs:
publish:
name: Публикация релиза
runs-on: ubuntu-latest
steps:
- name: Качаем репозиторий
uses: actions/checkout@v2.3.4
- name: Установка Node.js
uses: actions/setup-node@v2.4.1
with:
node-version: 16.13.0
- name: Установка зависимостей и компиляция
run: |
npm install
npm run build
- name: Публикация релиза
run: |
npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
npm publish --ignore-scripts
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},3284:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"vuepress-deploy.yml",data:()=>({html:'
name: Build Github Pages
on: [push]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Build-Vue
uses: lentryd/VDocs@1.0.0
with:
username: ${{ github.repository_owner }}
reponame: ${{ github.event.repository.name }}
branch: ${{ github.ref_name }}
token: ${{ secrets.GITHUB_TOKEN }} # Leave this line unchanged
gtag: G-2HEF2QY5SL
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},1813:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:".gitignore",data:()=>({html:'
.*
dist
!.npmignore
node_modules
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},1765:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:".npmignore",data:()=>({html:'
.*
src
docs
*.tgz
node_modules
tsconfig.json
CODE_OF_CONDUCT.md
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},1105:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Contributor Covenant Code of Conduct

Our Pledge

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

Our Standards

Examples of behavior that contributes to a positive environment for our community include:

Examples of unacceptable behavior include:

Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at lentryd. All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:

1. Correction

Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.

Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.

2. Warning

Community Impact: A violation through a single incident or series of actions.

Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.

3. Temporary Ban

Community Impact: A serious violation of community standards, including sustained inappropriate behavior.

Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.

4. Permanent Ban

Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.

Consequence: A permanent ban from any sort of public interaction within the community.

Attribution

This Code of Conduct is adapted from the Contributor Covenant, version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder.

For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.

',35),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"CODE_OF_CONDUCT.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},2664:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"LICENSE",data:()=>({html:'
MIT License
Copyright (c) 2023 lentryd
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},2353:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

NetSchoolApi - Враппер для продукта "Сетевой город. Образование"

NetSchoolApi - это враппер для продукта "Сетевой город. Образование", предоставляющий доступ к информации о пользователе, такой как дневник, расписание и другие данные.

Начало работы

Следующие инструкции помогут вам запустить проект на вашем локальном компьютере для разработки и тестирования.

Предварительные условия

Перед установкой и использованием этой библиотеки убедитесь, что у вас установлены следующие компоненты:

Установка

Вы можете установить библиотеку с помощью следующей команды:

npm i netschoolapi\n

Проверка установки

  1. Создайте файл test.js в корне проекта.
  2. Вставьте следующий код в файл test.js, заменив данные на ваши:
const NS = require("netschoolapi").default;\nconst user = new NS({\n  origin: "https://example.com/", // Origin вашего сайта\n  login: "Иванов", // Ваш логин\n  password: "******", // Ваш пароль\n  school: "МБОУ ....", // Название вашей школы (как на сайте)\n});\n\n(async function () {\n  const info = await user.info();\n  console.log(info);\n})();\n
  1. Запустите этот код в консоли с помощью следующей команды:
node test.js\n
  1. Если в консоли не выводится информация о пользователе, убедитесь, что у вас установлена подходящая версия NodeJS, либо создайте issue на GitHub.

Дополнительная информация о библиотеке

Зависимости

Для работы этой библиотеки используются следующие зависимости:

Управление версиями

Версии этой библиотеки управляются согласно SemVer. Список доступных версий можно найти в разделе теги.

Авторы

Также посмотрите список участников, которые внесли свой вклад в проект.

Лицензия

Этот проект распространяется под лицензией MIT. Подробную информацию смотрите в файле LICENSE.

Помощь/Общение

Для получения помощи и общения присоединяйтесь к Telegram-чату

',30),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"README.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},5883:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"bun.lockb",data:()=>({html:'
#!/usr/bin/env bun
bun-lockfile-format-v0
\0\0\0ғbr�̺�O������V�%�w�22wWe�Qk\0\0\0\0\0\0J\0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\0\0\0\0�\0\0\0\0\0\0\0�I\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0�h\0\0\0\0\0�he\0\0\0\0\0\0�\0\0\0
\0\0�=\0\0\t\0\0�boolbasedomutils3\0\0
\0\0��\0\0\0\0��\0\0\0\0�entitiescss-what^\0\0\0
\0\0��\0\0\f\0\0�M\0\0\0\0\0�debug\0\0\0ms\0\0\0\0\0\0"\0\0
\0\0�=\0\0\0\0\0�*\0\0\0\0\0� \0\0\0
\0\0�ws\0\0\0\0\0\0m\0\0
\0\0�@\0\0
\0\0��\0\0\0\0�tr46\0\0\0\0d\0\0\t\0\0�\f\0\0\0\v\0\0��\0\0\f\0\0�S\0\0\0\0�\b\0\0\t\0\0�c\b\0\0
\0\0�mime-db\0T\b\0\0\0\0�'\t\0\0\0\0�asynckit\0\0\0\t\0\0�
\0\0
\0\0�Z
\0\0\t\0\0�
\0\0\0\0�mylas\0\0\0globby\0\0slash\0\0\0merge2\0\0ignore\0\0T\v\0\0\t\0\0�]\f\0\0
\0\0��\f\0\0\t\0\0�braces\0\0
\0\0
\0\0�`
\0\0\0\0��
\0\0\t\0\0�R\f\0\0\v\0\0�is-glob\0i\0\0
\0\0�B\f\0\0\0\0�fastq\0\0\0reusify\0�\0\0\0\0��\0\0\f\0\0��\0\0\0\0�2\f\0\0\0\0�dir-glob�\0\0\t\0\0�I\v\0\0\v\0\0��\t\0\0\t\0\0�chokidarfseventsreaddirp�\0\0\0\0�|\0\0\0\0�anymatch\f\0\0\0\v\0\0��\0\0\f\0\0�\f�Y�\b4�$�a�O��#��
�y�&뗾0s��S�U�0a��~]��N���"����/S�>I^g胣ʇ�X�##<�\vh�i4�Т��QW���@ɯ>�dT< �
"�@��d_}�LoS��\x004��Ƥ��յ׏He��:9����m*\0�2��p�M�%�,+�ebI}��<ː�����ŗ�8֤*ދuI)J:f�ؙ��C�˘y�j�i�/Z�&�=9\to<��Q���S��lj}
��Gh��//��^�a��Ť��ƥnOw*�5ѯ�x~$���έe2�-��7�&�I3R���B���+&��@�J|]�=��nG�#3�`NZ��`n���\t)e������f��R���e�j1?�%|��měX�Q�U`����a������=����5hX2T���*/H��[򞆻C���w�f�.Ou5
��ڄ�3�,��;UJv�J�0N�]$ET?�,�\fM�Z��)�)�M���;H^z�JK�d������s���˕�h�ܻ�!s,��p�����9nKIg��]?/�������"�"R�D��t�Њd��Viܞ��u��U뒵�/Z�&�=9\to<��Q��\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0x\0\0\0I\0\0�\0\0\0\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0\0,\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0\0<\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\0\0:\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\x008\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\x008\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0<\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\0\0D\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0D\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\x008\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\0\x008\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\0<\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0@\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0J\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\0\x002\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0^\0\0,\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0<\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0H\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0<\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0-\0\0�\b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0J\0\0<\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0L\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\x000\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x004\0\0�\b\0\0\0\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\0\x008\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0A\0\0�\0\0\0\0\0\0\b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0D\0\0�\0\0\0\0\0\0\v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\0\0:\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0m\b\0\0=\0\0�\0\0\0\0\0\0#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\b\0\x007\0\0�\0\0\x004\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\b\0\0F\0\0�\0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x005\t\0\0D\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0y\t\0\x008\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\t\0\0;\0\0�\0\0\0\b\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
\0\0<\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c
\0\0:\0\0�\0\0\0\0\0\0\b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�
\0\0D\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�
\0\x003\0\0�\0\0\0\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\v\0\x005\0\0�\v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]\v\0\x002\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\v\0\x004\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\v\0\x004\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\v\0\0;\0\0�\0\0\0\0\0\0\v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\f\0\0<\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\f\0\0:\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\f\0\x004\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$
\0\0<\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0n
\0\0D\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�
\0\0:\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�
\0\0>\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x003\0\x006\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\0\0<\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0?\0\0�\0\0\0\0\0\0\b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x003\0\0�\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x004\0\x006\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0j\0\0E\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0@\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
\0\0F\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0P\0\0?\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\x008\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0:\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
\0\0>\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\0\0:\0\0�\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\x008\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\x008\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x008\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x008\0\0D\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\0J\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�\0\x008\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x009\0\0�\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\0\0A\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\0\0\0\b\0\0\0\0\0\0
\0\0\0\0\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\0\0\0\0\0\0\0"\0\0\0\0\0\0$\0\0\0\0\0\0&\0\0\0\0\0\0(\0\0\0\0\0\0\0(\0\0\0\0\0\0\0(\0\0\0\0\0\0)\0\0\0\0\0\0*\0\0\0\0\0\0\0*\0\0\0\0\0\0,\0\0\0\0\0\0/\0\0\0\0\0\x000\0\0\0\0\0\0\x000\0\0\0\0\0\x001\0\0\0\0\0\0\x001\0\0\0\0\0\0\x001\0\0\0\0\0\x007\0\0\0\0\0\x008\0\0\0\0\0\0\x008\0\0\0\0\0\0\x008\0\0\0\0\0\0\x008\0\0\0\0\0\0>\0\0\0\0\0\0\0>\0\0\0\0\0\0\0>\0\0\0\0\0\0\0>\0\0\0\0\0\0C\0\0\0\0\0\0E\0\0\0\0\0\0\0E\0\0\0\0\0\0F\0\0\0\0\0\0G\0\0\0\0\0\0H\0\0\0\0\0\0\0H\0\0\0\0\0\0I\0\0\0\0\0\0J\0\0\0\0\0\0\0J\0\0\0\0\0\0L\0\0\0\0\0\0M\0\0\0\0\0\0\0M\0\0\0\0\0\0O\0\0\0\0\0\0P\0\0\0\0\0\0\0P\0\0\0\0\0\0\0P\0\0\0\0\0\0Q\0\0\0\0\0\0\0Q\0\0\0\0\0\0\0Q\0\0\0\0\0\0\0Q\0\0\0\b\0\0\0Y\0\0\0\0\0\0\0Y\0\0\0\0\0\0Z\0\0\0\0\0\0[\0\0\0\0\0\0\0[\0\0\0\0\0\0]\0\0\0\0\0\0^\0\0\0\0\0\0\0\0\0\0\0\b\0\0\0\b\0\0\0\0\0\0
\0\0\0\0\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\0\0\0\0\0\0\0"\0\0\0\0\0\0$\0\0\0\0\0\0&\0\0\0\0\0\0(\0\0\0\0\0\0\0(\0\0\0\0\0\0\0(\0\0\0\0\0\0)\0\0\0\0\0\0*\0\0\0\0\0\0\0*\0\0\0\0\0\0,\0\0\0\0\0\0/\0\0\0\0\0\x000\0\0\0\0\0\0\x000\0\0\0\0\0\x001\0\0\0\0\0\0\x001\0\0\0\0\0\0\x001\0\0\0\0\0\x007\0\0\0\0\0\x008\0\0\0\0\0\0\x008\0\0\0\0\0\0\x008\0\0\0\0\0\0\x008\0\0\0\0\0\0>\0\0\0\0\0\0\0>\0\0\0\0\0\0\0>\0\0\0\0\0\0\0>\0\0\0\0\0\0C\0\0\0\0\0\0E\0\0\0\0\0\0\0E\0\0\0\0\0\0F\0\0\0\0\0\0G\0\0\0\0\0\0H\0\0\0\0\0\0\0H\0\0\0\0\0\0I\0\0\0\0\0\0J\0\0\0\0\0\0\0J\0\0\0\0\0\0L\0\0\0\0\0\0M\0\0\0\0\0\0\0M\0\0\0\0\0\0O\0\0\0\0\0\0P\0\0\0\0\0\0\0P\0\0\0\0\0\0\0P\0\0\0\0\0\0Q\0\0\0\0\0\0\0Q\0\0\0\0\0\0\0Q\0\0\0\0\0\0\0Q\0\0\0\b\0\0\0Y\0\0\0\0\0\0\0Y\0\0\0\0\0\0Z\0\0\0\0\0\0[\0\0\0\0\0\0\0[\0\0\0\0\0\0]\0\0\0\0\0\0^\0\0\0\0\0\0\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0��0�8\v�@k�9��F������z�EV��d�)�?�'�M�u�ɛ;@�tw�P�o�f�+W7J\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0�C�A����f-'�௬(C�r�- )������ƒv2�����\t���6d�b��!�wRNX��\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0�
Z�E�
����]9캢���v��1�L2��߿�1.�f���/�=��E���f4�61\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0���f��\t�|Ɂ<��6|�f��\fb_u�K8�A��o�²�Q����e��A�U�/\0��ū#�����\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0%���(��Fϔ�(3t�h�`$����7Y�m���w\0ِ��Q�-����e��-rK��������\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0�O�^��"�\f[_�8\v�t�K��s��e�E��^���6�4�r����緿*�7��c�`�����\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0r\f%��b\b��Oz]x:1M筲rb���6,W}������O���Rw�H��M�M�Z�����2A�\0\0\0��\0\0\b\0\0\0\0\0\0\0\0\0\0\08�>����^s�7G'1�}��z��>��|�v��4#�k)��u7���">~H�&���&\0\0\0��\0\0\t\0\0\0\0\0\0\0\0\0\0\0��\0�(�����D
h�$�H�}'@�l��+���:��l��xS.���[P�[|Ք�\0�i��]��&\0\0\0��\0\0
\0\0\0\0\0\0\0\0\0\0\0��{מ�?��x`�_9i�W�\b��kQ���Ě�����Q^��q
��\fm��&2$�?��/����X\0\0\0��\0\0\v\0\0\0\0\0\0\0\0\0\0\05+�{��ld�:9�}�;����|1��Ah��i�W��:�
�o��#NJp��\0��Dh�G\0\0\0��\0\0\f\0\0\0\0\0\0\0\0\0\0\0����,��s2��N�Z�D�*%��BP��� S�O���C/�Z���_�nP���Kq�o":��3\0\0\0��\0\0
\0\0\0\0\0\0\0\0\0\0\0a�7+͒�b�-�D�2��J^�t�#�2=�ǃU�]����H��r7`�glq��̑Mo
�B���\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0�����z���"��0h�Ym]"6N�̇Y%&ֹ���avw�P����:�ófX��,\f�\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0��s��F�dB)�L)��M������ԡ�
h����D��v��b"�%��c�j�J�0�x<Ҁ��\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0�Ys���dm�ٯ�T %xHcήh��h%=Ʌ�p�/�V�&�������?�s�q\0�G�#��{E�dS�\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0D��SC2��4���W��g��U�\v�u�S�1?�
��_q�@�\v�$�?ZG�-l1d`��8\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0��T�Hyɥ��By�z��RE����D����µ����r˽~�Y�^o�l�`���b�I��M\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0W��=K_��{�X�D�GEj&��y�.��0t�ROW� T�R�8%B��)s,�0�Jh��X�\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0��z���M�A�
�O�D���0#�3��}�Dکg�6��i˧[#tذ=��i� L��B��~\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0�V�Y��m�.��z8�2�]O�<0���dٲz�nse����﫡�
��M�
��>��㽠��̝8?\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0s�Q}I�u�g�>�j�\0����ݛ
9��R��֥k"�\t������["�ׯx��2���D��2��\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\07u����S�@��ď\th�{���&\t�������ֹ �Wc<�Xw���WW_��5|y��g`�\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0��ђ�D�@��X2+"<�kd��޻@Ώ��ےZ�V��]`v�
��m���^X�uC*�C$�1�\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0^;8˕;��w:`G����q߬�r8{�퍔�d�@��:_�Y{՘�K:ʃ���6������ \0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0��?��&v��la�z���QX��}KY<
�!3w��<A�W�Kf�����Ҭ�d�$F�Ǐ\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0یE��y���$�r3����'U&!�p��J��X�O������Ǝ���y�C�-к�G�PL\t%B�^�\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\01$�!���1��^�?C�ܟ\v@�ov���2���-�������/�\t�ԧvߕ�����I�\0\0\0��\0\0\0\0\0\0\0\0\0\0\0\0\0d6>l���4���B�=�����==�=Meao�ϾL��V�����#�#B<�pu��/�!ͧ��\0\0\0��\0\0 \0\0\0\0\0\0\0\0\0\0\0��8�^�b[�X�p������Sb���9IlC\bfQ�΂�;@�'��lO�5e:��P-�Sx�\0\0\0��\0\0!\0\0\0\0\0\0\0\0\0\0\0x1�%����[�E^����\0+Y��/NAQ�){R���s�3��|�7g�c{��q�v\0\0\0��\0\0"\0\0\0\0\0\0\0\0\0\0\0g$����բ��K࡫(pW���P��G�V�^r�� ��-��6h\t ���K�c���׺xUѧ0y71\0\0\0��\0\0#\0\0\0\0\0\0\0\0\0\0\09�8~-F�M�����?�`��Ii#ZFO��#�.|w a�+x������\bu�񬨦����\0\0\0��\0\0$\0\0\0\0\0\0\0\0\0\0\0!��(�A](�gY�mt�ј�D�qq�ƈ ���Jɩ[+�m�C"9bJ[\fE<L�~�av�*,m�?\0\0\0��\0\0%\0\0\0\0\0\0\0\0\0\0\0q��|!�'k\b+R.Ju�Th1�0�}'�c\fg�X����lW0�;t�
��ǶE����q�@
�F�\0\0\0��\0\0&\0\0\0\0\0\0\0\0\0\0\0\t?�v��8���y&��υg�k�ŀ���8~vn���Z��KP%����~�\v�дC��\0\0\0��\0\0'\0\0\0\0\0\0\0\0\0\0\0��l�7ZТ�u��-�S/�JF��UK=�j�����oNu�D��u0P�肛BF6>v��>b��G0,\0\0\0��\0\0(\0\0\0\0\0\0\0\0\0\0\0n,�
R}��\v��U��(�Xa��xj\b�Ӵ"Š5e�
^p{Q��\t�"�'�����_0Bb�\0\0\0��\0\0)\0\0\0\0\0\0\0\0\0\0\0�h�����#*j��J}S�i�V�\0�2�z���|�k�( #�)�c�%¹�sH��EoT�O��R�\0\0\0��\0\0*\0\0\0\0\0\0\0\0\0\0\0��5����~�I+po��\ba�h�U(����Ƅ��y}-o��||�x��[k���Eu�@�̀t3"�\0\0\0��\0\0+\0\0\0\0\0\0\0\0\0\0\0��\t[�|���?/ ��C]oD��Y�(#8��t�\vN\t�W7;�OΗ3\b ���?��ђN:\0\0\0��\0\0,\0\0\0\0\0\0\0\0\0\0\0
l``h�<"�|��>�L��\b:\b�|N;���zs�I�?�5�fr-Շ�Aq2>��a)���Q�\0\0\0��\0\0-\0\0\0\0\0\0\0\0\0\0\0Ƴ��V�J��Tp'�<�{��,�c\0�x�A��+�tH]H�
���"����F�`1�p�9\0\0\0��\0\0.\0\0\0\0\0\0\0\0\0\0\0\f̾[j�gc��cW�
�冔HX�;��&�ė�#��.��f��p�]���R67[`�3Ht��O�t\0\0\0��\0\0/\0\0\0\0\0\0\0\0\0\0\0%M�xt͎a6T!���<|�
����\b���x@X�U�h�\0��%:��D]t�m+./c� V�T\0\0\0��\0\x000\0\0\0\0\0\0\0\0\0\0\0�׀��I�C؋".Z�����
|��HK���x�r��?(-Ðt�ƺ��?�
� ;�qsPs|�q�\0\0\0��\0\x001\0\0\0\0\0\0\0\0\0\0\0b��{u�,�b.-X86'-�m��z0�w��@4q��g@Zp����\f����P��=)��*�>���\0\0\0��\0\x002\0\0\0\0\0\0\0\0\0\0\0���>��!+����1m�0�I7��t�mg�ý�ꆷI?���|z�"�4F��`����&!��\0�H�<�\0\0\0��\0\x003\0\0\0\0\0\0\0\0\0\0\0�P�~H:{��*]�:^-S*� DW4��{�D>���gg�
�M4��K�t
<9J���6��efTV�]�q�\0\0\0��\0\x004\0\0\0\0\0\0\0\0\0\0\0\0� I\0��"X���Fq���gN��slc���������d��y�l\v�gmÜ���3#9D�+�l�i/Y�\0\0\0��\0\x005\0\0\0\0\0\0\0\0\0\0\0��Rk!�ߦ`�V�X��m���͗ã����BC�]{a�7�����>�u�fd��񄴧�k��RJ\0\0\0��\0\x006\0\0\0\0\0\0\0\0\0\0\0I��\0�
�MՋ��f�=-�I2~2\v͜(�J2+����%�[;~�~����H@힮IG��x�\0\0\0��\0\x007\0\0\0\0\0\0\0\0\0\0\0�`~S`Y��\f(�g��1m�R���l�Ƞ��d�ғ���˖(5!�We��Yg�zJ\0\0\0��\0\x008\0\0\0\0\0\0\0\0\0\0\0b�)Rr���(��I��R����=bX��$�����Y�\07��x6$����D=/���+&bg�7\0\0\0��\0\x009\0\0\0\0\0\0\0\0\0\0\0S���Ʒ}�ސ!u�O�?R(�+��$��o]Sb|k���ׂ��P��x�Ai���2h�S���\v��\0\0\0��\0\0:\0\0\0\0\0\0\0\0\0\0\0������Bm�(*��p����N��璝�+�u����1�o�9:4(n�`u;z�Jf=�ʦ.0��\0\0\0��\0\0;\0\0\0\0\0\0\0\0\0\0\0�^ɔ|��<YM���\0M�ЁK0����-P�wa�4K�-�Q������P���h���1�\0\0\0��\0\0<\0\0\0\0\0\0\0\0\0\0\06�I�����%��C2h�N\t�2�\b�������*�6
YBp�"�d/��\f��!z=��\0\0\0��\0\0=\0\0\0\0\0\0\0\0\0\0\0FHO>�����@���g��[��wa"���x�/#�n�-�����\0�|��7)=M+�uU�'���8�\0\0\0��\0\0>\0\0\0\0\0\0\0\0\0\0\0ZJ֧ё��(f38���eb�E�\v7��q�y�����C��q,���c������p��Ѧ3s \0\0\0��\0\0?\0\0\0\0\0\0\0\0\0\0\0�2��L
���������B}3\t��LW��c���IӦ�2\tR���_:�,=�[Z�U=׸�%�3��\0\0\0��\0\0@\0\0\0\0\0\0\0\0\0\0\0l����S ���T{�\t�wx��\0��1��;��yY����y��+��xZ�����Љ�A?�Z��\0\0\0��\0\0A\0\0\0\0\0\0\0\0\0\0\0��y�Nn���y����g!L��@�%^F�.I{�e��k�
\bL�9Z�U��h�:6Yf�{{!�a]2$�\0\0\0��\0\0B\0\0\0\0\0\0\0\0\0\0\0��|�O�܍���I�%��2��u�1H�C���]t�RT\b�8�uP2U�1��8ӂ?d-kN�:�\0\0\0�\0\0\0C\0\0\0\0\0\0\0\0\0\0\0�*�A1�ӸnZo�\b:�2#�?痋$���
�[���M(*0����i��*�5��Zo��(\0\0\0��\0\0D\0\0\0\0\0\0\0\0\0\0\0����'�n���Y߰4(�>��~�ߏy�ݩ)���I��o �\fA'j~C>�m�:=UL�\0\0\0��\0\0E\0\0\0\0\0\0\0\0\0\0\0d�a�:�<���vǻ:��;YW���G�;��1R)�6[�DO���N5��nH}�KyW3���F_\0\0\0��\0\0F\0\0\0\0\0\0\0\0\0\0\0�7-'�A�h')(xv�^��4�5�$�h����p�SI��ء�=�x^C��m>��4\b��(\0\0\0��\0\0G\0\0\0\0\0\0\0\0\0\0\0?��=�"�d�������}�?�㔊6�O�L{tc�+��i�+c�z�h��]��1�U2���oZ\0\0\0��\0\0H\0\0\0\0\0\0\0\0\0\0\0��,S�e]�\tb��S�&���&����؀�ڰ�;W�~NOV��
��m�j���T�,��\b" \0\0\0��\0\0I\0\0\0\0\0\0\0\0\0\0\07.�gcc�m/�T����5n�~���0�j��j���kJW�ᐘ�T]/&�_I��@����Uˊ6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0bin/he\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0��\t\0\0\0\0�\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0�I\0\0\0\0\0\0LJ\0\0\0\0\0\0
<src.install.lockfile.Tree> 20 sizeof, 4 alignof
\0\0\0\0\0\0\0\0��������\0\0\0\0G\0\0\0\0\0\0\0\0\0\0\0\0\0G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\0\0\0\0\0\0\0\0\0+\0\0\0\0\0\0I\0\0\0\0\0\0\0\0\0(\0\0\0\0\0\0J\0\0\0\0\0\0xJ\0\0\0\0\0\0�K\0\0\0\0\0\0
<u32> 4 sizeof, 4 alignof
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]\0\0\x001\0\0\x002\0\0\x003\0\0\x004\0\0\x005\0\0\x006\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\b\0\0\0\t\0\0\0Q\0\0\0R\0\0\0S\0\0\0T\0\0\0U\0\0\0W\0\0\0X\0\0\x008\0\0\x009\0\0\0:\0\0\0;\0\0\0<\0\0\0=\0\0\x007\0\0\0*\0\0\0$\0\0\0\0\0\0
\0\0\0\v\0\0\0\f\0\0\0
\0\0\0\0\0\0\0\0\0E\0\0\0Z\0\0\0I\0\0\0P\0\0\0>\0\0\0?\0\0\0B\0\0\0,\0\0\0-\0\0\0.\0\0\0&\0\0\0'\0\0\0\0\0\0\0\0\0F\0\0\0J\0\0\0K\0\0\x000\0\0\0/\0\0\0\0\0\0G\0\0\0N\0\0\0L\0\0\0O\0\0\0+\0\0\0(\0\0\0)\0\0\0)\0\0\0�K\0\0\0\0\0\0HM\0\0\0\0\0\0
<u32> 4 sizeof, 4 alignof
\0H\0\0\0$\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\b\0\0\0\0\0\0\b\0\0\0\b\0\0\0\0\0\0
\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0��������\0\0\0����\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\0\0\0!\0\0\0\0\0\0 \0\0\0"\0\0\0B\0\0\0A\0\0\0)\0\0\0(\0\0\0'\0\0\0%\0\0\0&\0\0\0@\0\0\0>\0\0\0-\0\0\0,\0\0\0+\0\0\0*\0\0\0=\0\0\x007\0\0\x004\0\0\0+\0\0\0.\0\0\x000\0\0\0/\0\0\x001\0\0\x002\0\0\x003\0\0\x005\0\0\x006\0\0\0:\0\0\x008\0\0\x009\0\0\0=\0\0\0;\0\0\0<\0\0\0?\0\0\0G\0\0\x000\0\0\x004\0\0\0E\0\0\x005\0\0\0'\0\0\0D\0\0\0C\0\0\0/\0\0\0F\0\0\0'\0\0\0/\0\0\0I\0\0\0xM\0\0\0\0\0\0W\0\0\0\0\0\0
<[26]u8> 26 sizeof, 1 alignof
\0\f\0\0\0\v\0\0��/Z�&�=9\b^22.10.1\0\0\0\t\0\0�7�&�I3R\b^1.8.10\0 \0\0\0
\0\0��%�,+�eb\b^5.7.2\0\0*\0\0\0\0\0�\0�2��p�M^0.1.0\0\0=\0\0\0\0\0����m*^6.1.1\0\0M\0\0\0\0\0��d_}�LoS^7.0.5\0\0^\0\0\0
\0\0�ɯ>�dT< \0\0\0\0\0\0\0\0h\0\0\0\0\0��$�a�O�^6.1.13\0�\0\0\0
\0\0��&뗾^5.1.0\0\0he\0\0\0\0\0\0�#��
�y1.2.0\0\0\0boolbase0a��~]��^1.0.0\0\0css-what��QW���@^6.1.0\0\x003\0\0
\0\0���/S�>^5.0.2\0\0domutilsN���"��^3.0.1\0\0=\0\0\t\0\0�0s��S�U�^2.0.1\0\0boolbase0a��~]��^1.0.0\0\0�\0\0\0\0���X�##<�^2.0.0\0\0�\0\0\0\0�I^g胣�^2.3.0\0\x003\0\0
\0\0���/S�>^5.0.1\0\0�\0\0\0\0�I^g胣�^2.3.0\0\0�\0\0\0\0�I^g胣�^2.3.0\0\x003\0\0
\0\0���/S�>^5.0.2\0\0entities\vh�i4�Т^4.2.0\0\0�\0\0\f\0\0��
"�@��|\0\0\0\0�"\0\0
\0\0�e��:9�^7.0.2\0\0debug\0\0\0��\x004���4\0\0\0\0\0\0\0ms\0\0\0\0\0\0���յ׏H^2.1.3\0\0debug\0\0\0��\x004���^4.3.4\0\0S\0\0\0\0��S��lj}
^2.6.11\0d\0\0\t\0\0��˘y�j�i^8.5.12\0M\0\0\0\0\0��d_}�LoS^7.0.5\0\0m\0\0
\0\0�������2.x\0\0\0\0\0ws\0\0\0\0\0\0I}��<�^8.18.0\0 \0\0\0
\0\0��%�,+�eb^5.0.0\0\0�\0\0
\0\0�hs����i^4.0.1\0\0�\0\0\0\0��5TY��>=5.0.2\0@\0\0
\0\0�ŗ�8�^5.0.0\0\0encoding���T����^0.1.0\0\0tr46\0\0\0\0:f�ؙ��C~0.0.3\0\0�\0\0\0\0��*ދuI)J^3.0.0\0\0\f\0\0\0\v\0\0��/Z�&�=9*\0\0\0\0\0\0\0�\0\0\f\0\0�\to<��Q��~6.19.2\0\b\0\0\t\0\0���Gh��/^4.0.0\0\0\f\0\0\0\v\0\0��/Z�&�=9*\0\0\0\0\0\0\0asynckitέe2�-��^0.4.0\0\0T\b\0\0\0\0�Ow*�5ѯ�^1.0.8\0\0c\b\0\0
\0\0�/��^�a�^2.1.12\0mime-db\0�Ť��ƥn1.52.0\0\0'\t\0\0\0\0�x~$���~1.0.0\0\0chokidarg��]?/�^3.5.3\0\0�\t\0\0\t\0\0��9nKI^9.0.0\0\0globby\0\0��`n��^11.0.4\0mylas\0\0\0G�#3�`NZ^2.1.9\0\0
\0\0\0\0�|]�=��n^3.0.0\0\0
\0\0
\0\0����B���+^1.2.6\0\0Z
\0\0\t\0\0�&��@�J^1.2.8\0\0I\v\0\0\v\0\0���p����^2.1.0\0\0dir-globs���˕�h^3.0.1\0\0T\v\0\0\t\0\0�1?�%|�^3.2.9\0\0ignore\0\0�R���e�j^5.2.0\0\0merge2\0\0����f�^1.4.1\0\0slash\0\0\0�\t)e��^3.0.0\0\x002\f\0\0\0\0��d������^2.0.2\0\0B\f\0\0\0\0��,��;UJ^1.2.3\0\0R\f\0\0\v\0\0����C���^5.1.2\0\0merge2\0\0����f�^1.3.0\0\0]\f\0\0
\0\0��měX�Q�^4.0.4\0\0braces\0\0�����^3.0.2\0\0�\f\0\0\t\0\0�U`����a�^2.3.1\0\0
\0\0
\0\0�=����5h^7.1.1\0\0`
\0\0\0\0�X2T���^5.0.1\0\0�
\0\0\t\0\0�*/H��[�^7.0.0\0\0is-glob\0w�f�.Ou5^4.0.1\0\0i\0\0
\0\0�
��ڄ�3^2.1.1\0\0�\0\0\0\0��\fM�Z��)2.1.5\0\0\0fastq\0\0\0v�J�0N�]^1.6.0\0\0reusify\0$ET?�,^1.0.4\0\x002\f\0\0\0\0��d������2.0.5\0\0\0�\0\0\f\0\0��)�M���^1.1.9\0\0�\0\0\0\0�;H^z�JK^1.2.2\0\0�\0\0\t\0\0��ܻ�!s,^4.0.0\0\0anymatch�u��U뒵~3.1.2\0\0braces\0\0�����~3.0.2\0\0R\f\0\0\v\0\0����C���~5.1.2\0\0�\0\0\0\0�D��t�Њ~2.1.0\0\0is-glob\0w�f�.Ou5~4.0.1\0\0
\0\0\0\0�|]�=��n~3.0.0\0\0readdirp"�"R�~3.6.0\0\0fsevents������~2.3.2\0\0�\f\0\0\t\0\0�U`����a�^2.2.1\0\0|\0\0\0\0�d��Viܞ�^2.0.0\0\0
\0\0\0\0�|]�=��n^3.0.0\0\0�\f\0\0\t\0\0�U`����a�^2.0.4\0\0�\0\0\f\0\0�\to<��Q��~6.20.0\0PW\0\0\0\0\0\0�W\0\0\0\0\0\0
<src.install.semver.ExternalString> 16 sizeof, 8 alignof
\0\0tsc\0\0\0\0\0���r��bin/tsc\0ޣ<�q�tsserver]� �RfK�w\0\0\f\0\0��85�x��W\0\0\0\0\0\0Ik\0\0\0\0\0\0
<u8> 1 sizeof, 1 alignof
\0\0\0\0\0\0netschoolapi@types/nodetsc-aliastypescript@lentryd/web-clientcompare-versionshttps-proxy-agenticonv-litenode-html-parserhttps://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgzcss-selecthttps://registry.npmjs.org/he/-/he-1.2.0.tgzhttps://registry.npmjs.org/css-select/-/css-select-5.1.0.tgzdomhandlernth-checkhttps://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgzhttps://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgzhttps://registry.npmjs.org/domutils/-/domutils-3.0.1.tgzdom-serializerdomelementtypehttps://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgzhttps://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgzhttps://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgzhttps://registry.npmjs.org/entities/-/entities-4.4.0.tgzhttps://registry.npmjs.org/css-what/-/css-what-6.1.0.tgzhttps://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz>= 2.1.2 < 3.0.0safer-bufferhttps://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgzhttps://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgzagent-basehttps://registry.npmjs.org/debug/-/debug-4.3.7.tgzhttps://registry.npmjs.org/ms/-/ms-2.1.3.tgzhttps://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgzhttps://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgzhttps://registry.npmjs.org/@lentryd/web-client/-/web-client-0.1.0.tgz@types/node-fetch@types/wsnode-fetchbin/tsserverhttps://registry.npmjs.org/typescript/-/typescript-5.7.2.tgzhttps://registry.npmjs.org/ws/-/ws-8.18.0.tgzbufferutilutf-8-validatehttps://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgzwhatwg-urlhttps://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgzwebidl-conversionshttps://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgzhttps://registry.npmjs.org/tr46/-/tr46-0.0.3.tgzhttps://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgzhttps://registry.npmjs.org/@types/node/-/node-22.5.5.tgzundici-typeshttps://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgzhttps://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgzform-datahttps://registry.npmjs.org/form-data/-/form-data-4.0.0.tgzcombined-streammime-typeshttps://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgzhttps://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgzhttps://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgzdelayed-streamhttps://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgzhttps://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgzdist/bin/index.jshttps://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.10.tgzcommandernormalize-pathplimit-lithttps://registry.npmjs.org/plimit-lit/-/plimit-lit-1.2.7.tgzqueue-lithttps://registry.npmjs.org/queue-lit/-/queue-lit-1.2.8.tgzhttps://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgzhttps://registry.npmjs.org/mylas/-/mylas-2.1.10.tgzhttps://registry.npmjs.org/globby/-/globby-11.1.0.tgzarray-unionfast-globhttps://registry.npmjs.org/slash/-/slash-3.0.0.tgzhttps://registry.npmjs.org/merge2/-/merge2-1.4.1.tgzhttps://registry.npmjs.org/ignore/-/ignore-5.2.0.tgzhttps://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz@nodelib/fs.stat@nodelib/fs.walkglob-parentmicromatchhttps://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgzpicomatchhttps://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgzhttps://registry.npmjs.org/braces/-/braces-3.0.3.tgzfill-rangehttps://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgzto-regex-rangehttps://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgzis-numberhttps://registry.npmjs.org/is-number/-/is-number-7.0.0.tgzhttps://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgzhttps://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgzis-extglobhttps://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgzhttps://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz@nodelib/fs.scandirhttps://registry.npmjs.org/fastq/-/fastq-1.13.0.tgzhttps://registry.npmjs.org/reusify/-/reusify-1.0.4.tgzhttps://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgzrun-parallelhttps://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgzqueue-microtaskhttps://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgzhttps://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgzhttps://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgzpath-typehttps://registry.npmjs.org/path-type/-/path-type-4.0.0.tgzhttps://registry.npmjs.org/array-union/-/array-union-2.1.0.tgzhttps://registry.npmjs.org/commander/-/commander-9.3.0.tgzhttps://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgzis-binary-pathhttps://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgzhttps://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgzhttps://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgzbinary-extensionshttps://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgzhttps://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgzhttps://registry.npmjs.org/@types/node/-/node-22.10.1.tgzhttps://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},2696:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .assignment()

Зачем нужен?

Этот метод возвращает информацию об оценке. Именно благодаря этому методу можете узнать вес оценки и имя человека, который ее поставил.

Как использовать?

Для использования этого метода нужно передать id оценки (получить его можно при помощи метода .diary()). Если у вас есть доступ к нескольким ученикам, то также нужно передать id нужного ученика.

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем id оценки\n  //....\n\n  // Получаем информацию\n  const result = await user.assignment({ id });\n  console.log(result);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем id оценки\n  //....\n\n  // Получаем информацию\n  const result = await user.assignment({ id });\n  console.log(result);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"assignment.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},2035:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .assignmentTypes()

Зачем нужен?

Этот метод возвращает массив со всеми типами заданий, которые могут встретиться в сетевом.

Как использовать?

Для использования этого метода не нужно передавать данные.

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем информацию\n  const types = await user.assignmentTypes();\n  console.log(types.findById(3));\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем информацию\n  const types = await user.assignmentTypes();\n  console.log(types.findById(3));\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"assignmentTypes.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},8931:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования значения .contextAsync

Зачем нужен?

Это значение позволяет получить доступ к контексту без предварительной авторизации.

Как использовать?

Не работает при импорте класса Safe

Представим, что мы хотим получить оценки первого предмета из доступных и чтобы не вызывать авторизацию, мы можем воспользоваться этим значением.

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем массив предметов\n  const { subjects } = await user.contextAsync;\n\n  // Получаем отчет "Отчет об успеваемости ученика"\n  const report = await user.grades({ subjectId: subjects[0].id });\n  console.log(report);\n})();\n

Без этого значения код выглядел бы следующим образом:

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Авторизуемся\n  await user.logIn();\n\n  // Получаем массив предметов\n  const { subjects } = await user.context;\n\n  // Получаем отчет "Отчет об успеваемости ученика"\n  const report = await user.grades({ subjectId: subjects[0].id });\n  console.log(report);\n})();\n
',10),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"contextAsync.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},8506:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования методов .logIn() и .logOut()

Зачем нужен?

Эти методы необходимы для открытия/закрытия сессии. В основном они должен использоваться в классе Safe, так как по умолчанию эти методы применяются автоматически.

Как использовать?

Мы хотим получить дневник (как в базовом примере). Однако мы не доверяем автоматической авторизации и хотим все делать сами.

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем дневник\n  const diary = await user.diary();\n  console.log(diary);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n

Пример серверного использования

Этот пример работает не только с классом Safe

Для безопасного хранения пользовательских данных рекомендуется сохранить хэш пароля (md5) в вашей базе данных. Библиотека может работать как с "чистым" паролем, так и с его хэшем.

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n  password: {\n    hash: "e10adc3949ba59abbe56e057f20f883e", // MD5 хэш пароля\n    length: 6, // Длина оригинального пароля\n  },\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем дневник\n  const diary = await user.diary();\n  console.log(diary);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"controlSession.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},4349:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .diary()

Зачем нужен?

Этот метод возвращает дневник (предметы, оценки, дз и т.д.)

Как использовать?

Для использования этого метода нужно передать промежуток (начало и конец недели). Если у вас есть доступ к нескольким ученикам, то также нужно передать id нужного ученика.

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем дневник\n  const diary = await user.diary();\n  console.log(diary.days[0].lessons[2]);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем дневник\n  const diary = await user.diary();\n  console.log(diary.days[0].lessons[2]);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"diary.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},5834:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .downloadFile()

Зачем нужен?

Этот метод позволяет получить файл из дневника

Как использовать?

Автоматическая авторизация

import fs from "fs";\nimport NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем файл\n  const buffer = await user.downloadFile({ id: 5863936, assignId: 354142125 });\n\n  // Сохраняем файл\n  fs.writeFileSync("./тест.docx", buffer);\n})();\n

Ручная авторизация

Не рекомендуется

import fs from "fs";\nimport { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем файл\n  const buffer = await user.downloadFile({ id: 5863936, assignId: 354142125 });\n\n  // Сохраняем файл\n  fs.writeFileSync("./тест.docx", buffer);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',10),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"downloadFile.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},653:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .fetch()

Зачем нужен?

Этот метод позволяет самостоятельно делать запросы на сервер сетевого (куки и прочии данные будут добавлены)

Как использовать?

Этот метод не обновляет сессию, поэтому вам придется делать это самостоятельно

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем данные\n  const res = await user.fetch("/webapi/sysInfo");\n  console.log(await res.text());\n})();\n
',7),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"fetch.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},1887:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .grades()

Зачем нужен?

Этот метод возвращает отчет об успеваемости по выбранному предмету.

Как использовать?

Для использования этот метода необходимо передать id предмета (вся информация о доступных предметах есть в классе Context)

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем отчет\n  const result = await user.grades({ subjectId: 7960494 });\n  console.log(result.assignments);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем отчет\n  const result = await user.grades({ subjectId: 7960494 });\n  console.log(result.assignments);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"grades.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},7948:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .info()

Зачем нужен?

Этот метод позволяет получить системную информацию о пользователе (например email, телефон и т.д.)

Как использовать?

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем информацию\n  const result = await user.info();\n  console.log(result);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем информацию\n  const result = await user.info();\n  console.log(result);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',10),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"info.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},9584:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .journal()

Зачем нужен?

Этот метод возвращает отчет об успеваемости и посещаемости учащегося.

Как использовать?

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем отчет\n  const result = await user.journal();\n  console.log(result.subjects);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем отчет\n  const result = await user.journal();\n  console.log(result.subjects);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',10),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"journal.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},5661:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .photo()

Зачем нужен?

Этот метод позволяет получить фото пользователя

Как использовать?

Автоматическая авторизация

import fs from "fs";\nimport NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем фото\n  const buffer = await user.photo();\n\n  // Сохраняем фото\n  fs.writeFileSync("./img.png", buffer);\n})();\n

Ручная авторизация

Не рекомендуется

import fs from "fs";\nimport { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем фото\n  const buffer = await user.photo();\n\n  // Сохраняем фото\n  fs.writeFileSync("./img.png", buffer);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',10),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"photo.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},1721:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .reportFile()

Зачем нужен?

Этот метод возвращает отчеты

Как использовать?

Вообще этот метод создан для более удобной работа с другими методами, которые возвращают отчеты. Однако если вы можете сделать это напрямую.

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем "Отчет об успеваемости и посещаемости ученика"\n  const result = await user.reportFile({\n    url: "reports/studenttotal/queue",\n    filters: [\n      {\n        filterId: "SID",\n        filterValue: "323259", // ID ученика\n      },\n      {\n        filterId: "PCLID",\n        filterValue: "3041290", // ID класса\n      },\n      {\n        filterId: "period",\n        filterValue: "2022-01-10T00:00:00 - 2022-05-24T00:00:00",\n      },\n    ],\n  });\n  console.log(result);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем "Отчет об успеваемости и посещаемости ученика"\n  const result = await user.reportFile({\n    url: "reports/studenttotal/queue",\n    filters: [\n      {\n        filterId: "SID",\n        filterValue: "323259", // ID ученика\n      },\n      {\n        filterId: "PCLID",\n        filterValue: "3041290", // ID класса\n      },\n      {\n        filterId: "period",\n        filterValue: "2022-01-10T00:00:00 - 2022-05-24T00:00:00",\n      },\n    ],\n  });\n  console.log(result);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"reportfile.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},2968:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .scheduleDay()

Зачем нужен?

Этот метод возвращает расписание на день

Как использовать?

Для использования этого метода нужно передать дату дня. Если у вас есть доступ к нескольким ученикам, то также нужно передать id нужного ученика.

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем расписание\n  const schedule = await user.scheduleDay({ date: new Date() });\n  console.log(schedule);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем расписание\n  const schedule = await user.scheduleDay({ date: new Date() });\n  console.log(schedule);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',11),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"scheduleDay.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},9525:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .scheduleWeek()

Зачем нужен?

Этот метод возвращает расписание на неделю

Как использовать?

Для использования этого метода нужно передать дату дня. Если у вас есть доступ к нескольким ученикам, то также нужно передать id нужного ученика.

Важно: Если ты посмотрел возвращаемые классы, то ты мог заметить, что названия уроков и классы хранятся в массивах. Сделано это из-за таких моментов.

Расписание в сетевом:

День№ урока11б
Вт1История [108]
2Англ.яз./2 гр. [209], Англ.яз./1 гр. [108]
3Матем. [108]
4Матем. [108]
5Биол. [108]
6Физика [108]
7Экономика [108]
8-
9-
10-

Проанализированный результат:

[\n  {\n    "names": ["История"],\n    "number": 1,\n    "classesName": ["108"]\n  },\n  {\n    "names": ["Англ.яз./2 гр.", "Англ.яз./1 гр."],\n    "number": 2,\n    "classesName": ["209", "108"]\n  },\n  {\n    "names": ["Матем."],\n    "number": 3,\n    "classesName": ["108"]\n  },\n  {\n    "names": ["Матем."],\n    "number": 4,\n    "classesName": ["108"]\n  },\n  {\n    "names": ["Биол."],\n    "number": 5,\n    "classesName": ["108"]\n  },\n  {\n    "names": ["Физика"],\n    "number": 6,\n    "classesName": ["108"]\n  },\n  {\n    "names": ["Экономика"],\n    "number": 7,\n    "classesName": ["108"]\n  }\n]\n

Автоматическая авторизация

import NS from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Получаем расписание\n  const schedule = await user.scheduleWeek();\n  console.log(schedule);\n})();\n

Ручная авторизация

Не рекомендуется

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Открываем сессию\n  await user.logIn();\n\n  // Получаем расписание\n  const schedule = await user.scheduleWeek();\n  console.log(schedule);\n\n  // Закрываем сессию\n  await user.logOut();\n})();\n
',16),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"scheduleweek.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},9346:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Пример использования метода .sessionValid()

Зачем нужен?

Этот метод проверяет валидность сессии через API "Сетевой город. Образование". В основном он должен использоваться в классе Safe, так как по умолчанию этот метод обновляет сессию.

Как использовать?

Представьте, что мы пишем бота, который позволяет вам взаимодействовать с сетевым. Однако мы решили сами следить за сессией, и нам нужно как-то ее проверить.

import { Safe as NS } from "netschoolapi";\n\nconst user = new NS({\n  origin: "https://example.com",\n  login: "Иванов",\n  password: "123456",\n  school: "МБОУ ...", // Название школы (полностью) или её id\n});\n\n(async function () {\n  // Проверяем сессию\n  const valid = await user.sessionValid();\n\n  if (valid) console.log("Сессия открыта");\n  else console.log("Сессия уже недействительна");\n})();\n
',7),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"sessionValid.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},7577:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Методы

Управление сессией

По умолчанию эти методы применяются автоматически. Они доступны при импорте класса Safe.


.logIn()

Не принимает аргументы

Возвращает объект класса Session

Пример использования


.logOut()

Не принимает аргументы

Возвращает void при успешном выходе или ошибку

Пример использования


.sessionValid()

Не принимает аргументы

Возвращает true если сессия активна

Пример использования

Пользователь


.info()

Не принимает аргументы

Возвращает объект класса Info

Пример использования


.photo()

Принимает объект данных:

Возвращает Buffer

Пример использования

Дневник


.diary()

Период дневника может составлять более 7 дней, главное, чтобы он не выходил за рамки учебного года.

Принимает объект данных:

Возвращает объект класса Diary

Пример использования


.assignment()

Принимает объект данных:

Возвращает объект класса AssignmentInfo

Пример использования


.downloadFile()

Принимает объект данных:

Возвращает файл в виде Buffer

Пример использования


.assignmentTypes()

Не принимает аргументы

Возвращает объект класса AssignmentTypes

Пример использования

Расписание


.scheduleDay()

Принимает объект данных:

Возвращает объект класса ScheduleDay

Пример использования


.scheduleWeek()

Принимает объект данных:

Возвращает объект класса ScheduleWeek

Пример использования

Отчеты


.reportFile()

Принимает объект данных:

Возвращает html с результатом запроса

Пример использования


.grades()

Принимает объект данных:

Возвращает объект класса Grades

Пример использования


.journal()

Принимает объект данных:

Возвращает объект класса Journal

Пример использования

Дополнительно


.fetch()

Принимает данные:

Возвращает объект класса Response

Пример использования


.getProxy()

Не принимает аргументы

Возвращает объект класса HttpsProxyAgent


.setProxy()

Принимает аргументы:

Возвращает объект класса HttpsProxyAgent


.contextAsync

Это значение, а не метод, и оно не доступно в классе Safe.

Возвращает объект класса Context, представляющий асинхронный контекст

Пример использования

',109),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"guide.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},9198:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return b}});var l=n(6252);const t=(0,l.uE)('

Классы | NetSchoolApi

Дополнительные данные


InitRequest

Интерфейс опциональных значений запроса

Объект класса содержит:


Context

Данные, которые могут быть полезны при работе с "Сетевым Городом"

Объект класса содержит:


Session

Класс необходим для удобного хранения данных сеанса/пользователя.

Объект класса содержит:


Info

Класс необходим для удобной работы с данными пользователя.

Объект класса содержит:

Дневник


Diary

Класс необходим для удобной работы с дневником.

Объект класса содержит:


Day

Класс необходим для удобной работы с днями в дневнике.

Объект класса содержит:


Lesson

Класс необходим для удобной работы с уроками в дневнике.

Объект класса содержит:


Assignment

Класс необходим для удобной работы с заданиями для уроков в дневнике.

Объект класса содержит:


Attachment

Класс необходим для удобной работы c файлами, которые прикреплены к заданиям.

Объект класса содержит:

Задания


AssignmentInfo

Класс необходим для удобной работы с доп. информацией о задании.

Объект класса содержит:


AssignmentType

Класс необходим для удобного хранения типов заданий.

Объект класса содержит:


AssignmentTypes

Класс необходим для удобной работы с типами задания (AssignmentType).

Объект класса содержит:

Расписание


ScheduleDay

Класс необходим для удобной работы с расписанием на день.

Объект класса содержит:


ScheduleDayLine

Класс необходим для удобной работы с "линиями" расписания.

Объект класса содержит:


ScheduleWeek

Класс необходим для удобной работы с расписанием на неделю.

Объект класса содержит:


ScheduleWeekLine

Класс необходим для удобной работы с "линиями" расписания.

Объект класса содержит:

Отчеты


Grades

Класс необходим для удобной работы с отчетом успеваемости (по предмету)

Объект класса содержит:


Journal

Класс необходим для удобной работы с отчетом успеваемости и посещаемости

Объект класса содержит:

',97),d=[t];function e(s,a,n,t,e,r){return(0,l.wg)(),(0,l.iD)("div",null,d)}var r={name:"reference.md"},c=n(3744);const i=(0,c.Z)(r,[["render",e]]);var b=i},434:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"package.json",data:()=>({html:'
{
"name": "netschoolapi",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"version": "1.12.1",
"description": "Полностью асинхронный API враппер для "Сетевой Город. Образование" написанный на Node.js",
"scripts": {
"build": "tsc && tsc-alias",
"test": "npm run build && node test"
},
"keywords": [
"sgo",
"nodejs",
"netschool",
"api-client",
"typescript"
],
"homepage": "https://lentryd.su/NetSchoolApi/",
"repository": {
"type": "git",
"url": "https://github.com/lentryd/NetSchoolApi.git"
},
"author": "lentryd",
"license": "MIT",
"dependencies": {
"@lentryd/web-client": "^0.1.0",
"compare-versions": "^6.1.1",
"https-proxy-agent": "^7.0.5",
"iconv-lite": "^0.6.3",
"node-html-parser": "^6.1.13"
},
"devDependencies": {
"@types/node": "^22.10.1",
"tsc-alias": "^1.8.10",
"typescript": "^5.7.2"
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},6747:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"NetSchoolApi-safe.ts",data:()=>({html:'
import Client, { InitRequest, requestHook } from "@/classes/Client";
import Session from "@/classes/Session";
import Context from "@/classes/Context";
import logIn from "@/methods/logIn";
import logOut from "@/methods/logOut";
import context from "@/methods/context";
import sessionValid from "@/methods/sessionValid";
import info from "@/methods/info";
import photo from "@/methods/photo";
import diary from "@/methods/diary";
import assignment from "@/methods/assignment";
import downloadFile from "@/methods/downloadFile";
import assignmentTypes from "@/methods/assignmentTypes";
import scheduleDay from "@/methods/scheduleDay";
import scheduleWeek from "@/methods/scheduleWeek";
import reportFile from "@/methods/reportFile";
import grades from "@/methods/grades";
import journal from "@/methods/journal";
import fetch from "@/methods/fetch";
import { Credentials as PhotoCredentials } from "@/methods/photo";
import { Credentials as DiaryCredentials } from "@/methods/diary";
import { Credentials as AssignmentCredentials } from "@/methods/assignment";
import { Credentials as DownloadFileCredentials } from "@/methods/downloadFile";
import { Credentials as ScheduleDayCredentials } from "@/methods/scheduleDay";
import { Credentials as ScheduleWeekCredentials } from "@/methods/scheduleWeek";
import { Credentials as ReportFileCredentials } from "@/methods/reportFile";
import { Credentials as GradesCredentials } from "@/methods/grades";
import { Credentials as JournalCredentials } from "@/methods/journal";
export type PasswordType = string | { hash: string; length: number };
export interface Credentials {
login: string;
origin: string;
school: number | string;
password: PasswordType;
}
export default class NetSchoolApiSafe {
public context: null | Context = null;
protected session: null | Session = null;
protected client: Client;
protected credentials: Credentials;
/**
* Создание пользователя
* @/param credentials Данные пользователя
*/
constructor(credentials: Credentials) {
this.credentials = credentials;
this.client = new Client(credentials.origin);
this.client.onResponse(requestHook.bind(this.client));
this.client.path.set("webapi");
this.client.headers.set("at", () =>
this.session?.isValid() ? this.session.accessToken : undefined
);
}
// ⭐️ Пусть будет
/** Произвольные запросы к сетевому */
fetch(url: string, init?: InitRequest) {
return fetch.call(this, url, init);
}
/**
* Получение прокси
* @returns Прокси
*/
getProxy() {
return this.client.getProxy();
}
/**
* Установка прокси
* @param url Ссылка на прокси
*/
setProxy(url: string) {
return this.client.setProxy(url);
}
// ⭐️ Сессия
/** Открытие сессии в "Сетевой город. Образование" */
async logIn() {
await logIn.call(this);
if (!this.context) this.context = await context.call(this);
return this.session;
}
/** Закрытие сессии в "Сетевой город. Образование" */
async logOut() {
await logOut.call(this);
return (this.session = null);
}
/** Проверка сессии через API "Сетевой город. Образование"*/
sessionValid() {
return sessionValid.call(this);
}
// ⭐️ Пользователь
/** Информация пользователя */
info() {
return info.call(this);
}
/** Фото пользователя */
photo(credentials?: PhotoCredentials) {
return photo.call(this, credentials);
}
// ⭐️ Дневник
/** Дневник пользователя*/
diary(credentials?: DiaryCredentials) {
return diary.call(this, credentials);
}
/** Информация о задание */
assignment(credentials: AssignmentCredentials) {
return assignment.call(this, credentials);
}
/** Скачивание файла */
downloadFile(credentials: DownloadFileCredentials) {
return downloadFile.call(this, credentials);
}
/** Типы заданий */
assignmentTypes() {
return assignmentTypes.call(this);
}
// ⭐️ Расписание
/** Расписание на день */
scheduleDay(credentials?: ScheduleDayCredentials) {
return scheduleDay.call(this, credentials);
}
/** Расписание на неделю */
scheduleWeek(credentials?: ScheduleWeekCredentials) {
return scheduleWeek.call(this, credentials);
}
// ⭐️ Отчеты
reportFile(credentials: ReportFileCredentials) {
return reportFile.call(this, credentials);
}
/** Отчет об успеваемости (по предмету) */
grades(credentials: GradesCredentials) {
return grades.call(this, credentials);
}
/** Отчет об успеваемости (полный) */
journal(credentials: JournalCredentials) {
return journal.call(this, credentials);
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},8803:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"NetSchoolApi.ts",data:()=>({html:'
import NS, { Credentials } from "@NS";
import Session from "@/classes/Session";
let activeClasses = 0;
const errors: string[] = [];
export default class NetSchoolApi extends NS {
/** Уведомления */
private console = {
info(title: string, ...optionalParams: any[]) {
console.info(" INFO ", title);
if (!!optionalParams) console.info(...optionalParams);
},
done(title: string, ...optionalParams: any[]) {
console.info(" DONE ", title);
if (!!optionalParams) console.info(...optionalParams);
},
error(title: string, ...optionalParams: any[]) {
console.error(" ERROR ", title);
if (!!optionalParams) console.error(...optionalParams);
},
};
/** Начался ли процесс закрытия */
private startClosing = false;
constructor(credentials: Credentials) {
super(credentials);
activeClasses++;
this.console.info(`Класс пользователя ${this.credentials.login} создан`);
// Если нажали Ctrl + C, то закрываем сессию
process.addListener("SIGINT", this.closeProcess.bind(this));
// Прежде чем завершить процесс, мы закрываем сессию
process.addListener("beforeExit", this.closeProcess.bind(this));
// Если произошла ошибка, мы закрываем сессию
process.addListener("uncaughtException", (err) => {
if (!errors.includes(err.name)) {
this.console.error("Ошибка в коде привела к закрытию программы", err);
errors.push(err.name);
}
this.closeProcess.bind(this);
});
}
/** Контекст который доступен без авторизации */
get contextAsync(): Promise<NonNullable<NS["context"]>> {
// Если нет контекста, то создаём (через авторизацию)
return new Promise((resolve, reject) => {
if (this.context) {
resolve(this.context);
} else {
this.logIn()
.then(() => {
resolve(this.context as NonNullable<NS["context"]>);
})
.catch(reject);
}
});
}
/** Открытие сессии (только если она закрыта) */
async logIn(): Promise<Session> {
const valid = await super.sessionValid();
if (valid) return this.session as any;
else return super.logIn() as any;
}
/** Закрытие сессии (только если она открыта) */
async logOut() {
const valid = await super.sessionValid();
if (valid) return super.logOut();
else return null;
}
/** Повторное открытие сессии (всегда возвращает `true`) */
async sessionValid(): Promise<true> {
if (!(await super.sessionValid())) await super.logIn();
return true;
}
/** Экстренное закрытие сессии */
private async closeProcess() {
if (this.startClosing) return;
this.startClosing = true;
// Закрываем сессию
await this.logOut()
.then(() =>
this.console.done(`Сеанс ${this.credentials.login} успешно закрыт`)
)
.catch((err) =>
this.console.error(
`Ошибка закрытия сессии ${this.credentials.login}`,
err
)
);
// Уменьшаем счетчик
activeClasses--;
// Если счетчик пуст, то закрываем процесс
if (activeClasses === 0) process.exit(0);
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},4726:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"Assignment.ts",data:()=>({html:'
import Attachment, {
AttachmentObject,
AnswerFilesObject,
} from "@/classes/Attachment";
type Mark = {
assignmentId: number;
studentId: number;
mark: number;
dutyMark: boolean;
};
type TextAnswer = {
answer: string;
answerDate: Date;
};
export interface AssignmentObject {
id: number;
typeId: number;
dueDate: string;
mark?: Mark;
markComment?: {
id: number;
name: string;
teacher: string;
wasRead: boolean;
editTime: string;
};
textAnswer?: TextAnswer;
attachments: AttachmentObject[];
answerFiles: AnswerFilesObject[];
assignmentName: string;
classMeetingId: number;
}
export default class Assignment {
id: number;
dot: boolean;
text: string;
mark?: number;
typeId: number;
comment?: string;
lessonId: number;
attachments: Attachment[];
private _date: string;
private _answer?: TextAnswer;
private _answerAtt: Attachment[];
constructor(assignment: AssignmentObject) {
this.id = assignment.id;
this.dot = assignment.mark?.dutyMark ?? false;
this.text = assignment.assignmentName;
this.mark = assignment.mark?.mark;
this.typeId = assignment.typeId;
this.comment = assignment.markComment?.name;
this.lessonId = assignment.classMeetingId;
this.attachments = assignment.attachments.map((a) => new Attachment(a));
this._date = assignment.dueDate;
this._answer = assignment.textAnswer;
this._answerAtt = assignment.answerFiles.map((a) => new Attachment(a));
}
get date() {
return new Date(this._date);
}
get answer() {
if (!this._answer) return undefined;
return {
date: new Date(this._answer.answerDate),
text: this._answer.answer,
attachments: this._answerAtt,
};
}
toJSON() {
const answer = !this._answer
? undefined
: {
date: this._answer.answerDate,
text: this._answer.answer,
attachments: this._answerAtt.map((a) => a.toJSON()),
};
return {
id: this.id,
dot: this.dot,
text: this.text,
mark: this.mark,
answer,
typeId: this.typeId,
lessonId: this.lessonId,
attachments: this.attachments.map((a) => a.toJSON()),
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},7355:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"AssignmentInfo.ts",data:()=>({html:'
interface Teacher {
id: number;
name: string;
}
interface SubjectGroup {
id: number;
name: string;
}
export interface AssignmentInfoObject {
id: number;
date: string;
weight: number;
teacher: Teacher;
teachers?: Teacher[];
isDeleted: boolean;
description: string;
subjectGroup: SubjectGroup;
assignmentName: string;
}
export default class {
id: number;
text: string;
weight: number;
subject: string;
teacher: string;
isDeleted: boolean;
description: string;
private _date: string;
constructor(assignment: AssignmentInfoObject) {
this.id = assignment.id;
this.text = assignment.assignmentName;
this.weight = assignment.weight;
this.subject = assignment.subjectGroup.name;
this.teacher = assignment.teachers
? assignment.teachers[0].name
: assignment.teacher.name;
this.isDeleted = assignment.isDeleted;
this.description = assignment.description;
this._date = assignment.date;
}
get date() {
return new Date(this._date);
}
toJSON() {
return {
id: this.id,
text: this.text,
date: this._date,
weight: this.weight,
subject: this.subject,
teacher: this.teacher,
isDeleted: this.isDeleted,
description: this.description,
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},3067:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"AssignmentType.ts",data:()=>({html:'
export interface TypesObject {
id: number;
name: string;
abbr: string;
order: number;
}
export default class AssignmentType {
id: number;
name: string;
abbr: string;
order: number;
constructor(type: TypesObject) {
this.id = type.id;
this.name = type.name;
this.abbr = type.abbr;
this.order = type.order;
}
toJSON() {
return {
id: this.id,
name: this.name,
abbr: this.abbr,
order: this.order,
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},2646:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"AssignmentTypes.ts",data:()=>({html:'
import AssignmentType, { TypesObject } from "./AssignmentType";
export default class AssignmentTypes {
types: AssignmentType[];
constructor(types: TypesObject[]) {
this.types = types.map((t) => new AssignmentType(t));
}
findById(id: number) {
return this.types.find((t) => t.id === id) ?? null;
}
findByName(name: string) {
return this.types.find((t) => t.name === name) ?? null;
}
findByAbbr(abbr: string) {
return this.types.find((t) => t.abbr === abbr) ?? null;
}
toJSON() {
return this.types.map((t) => t.toJSON());
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},1774:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"Attachment.ts",data:()=>({html:'
export type AttachmentObject = {
id: number;
name?: string;
description?: string;
originalFileName: string;
};
export type AnswerFilesObject = {
studentId: number;
attachment: {
id: number;
aFile: any;
saved: number;
userId: any;
fileName: string;
description?: string;
};
attachmentDate: string;
};
export type AttachmentRaw = AttachmentObject | AnswerFilesObject;
export default class Attachment {
id: number;
name: string;
description?: string;
private _date?: string;
constructor(raw: AttachmentRaw) {
this.id = "attachment" in raw ? raw.attachment.id : raw.id;
this.name =
"attachment" in raw ? raw.attachment.fileName : raw.originalFileName;
this._date = "attachment" in raw ? raw.attachmentDate : undefined;
this.description =
"attachment" in raw ? raw.attachment.description : raw.description;
}
get date() {
if (!this._date) return undefined;
return new Date(this._date);
}
toJSON() {
return {
id: this.id,
name: this.name,
date: this._date,
description: this.description,
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},8246:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"Client.ts",data:()=>({html:'
import { HttpsProxyAgent } from "https-proxy-agent";
import WebClient, { Response, InitRequest } from "@lentryd/web-client";
export async function isSecurityWarning(res: Response) {
return (
res.headers.get("content-type")?.includes?.("text/html") &&
+(res.headers.get("content-length") ?? "") < 1000 &&
!res.headers.has("filename") &&
(await res.clone().text()).includes("/asp/SecurityWarning.asp")
);
}
export async function requestHook(
this: Client,
res: Response,
url: string,
init?: InitRequest
) {
if (await isSecurityWarning(res)) {
await this.post(
"../asp/SecurityWarning.asp",
Client.formData({
at: this.headers.get().at,
WarnType: 2,
})
);
return this.request(url, init);
}
}
export * from "@lentryd/web-client";
export default class Client extends WebClient {
/**
* Получает прокси для запросов
* @returns Прокси
*/
getProxy() {
return this.agent.get();
}
/**
* Задает прокси для запросов
* @param url Ссылка на прокси
* @returns
*/
setProxy(url: string) {
return this.agent.set(new HttpsProxyAgent(url));
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},2382:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"Context.ts",data:()=>({html:'
import { compareVersions } from "compare-versions";
export interface Term {
// ID четверти
id: number;
// Название четверти
name: string;
// Значение фильтра
value: string;
// Является ли эта четверть текущей
isCurrent: boolean;
// Дата начала четверти
start: Date;
// Дата окончания четверти
end: Date;
}
export interface Class {
// ID класса
id: number;
// Название класса
name: string;
// Значение фильтра
value: string;
}
export interface Student {
// ID ученика
id: number;
// Имя ученика
name: string;
// Значение фильтра
value: string;
}
export interface User {
id: number;
name: string;
terms: Term[];
classes: Class[];
students: Student[];
}
export interface Year {
id: number;
gId: number;
name: string;
start: Date;
end: Date;
}
export interface Server {
id: string;
version: string;
timeFormat: string;
dateFormat: string;
}
export interface Subject {
id: number;
name: string;
}
export interface School {
id: number;
name: string;
fullName: string;
}
export interface Credentials {
user: User;
year: Year;
server: Server;
school: School;
subjects: Subject[];
}
export default class Context {
readonly user: User;
readonly year: Year;
readonly server: Server;
readonly school: School;
readonly subjects: Subject[];
constructor(credentials: Credentials) {
this.user = credentials.user;
this.year = credentials.year;
this.server = credentials.server;
this.school = credentials.school;
this.subjects = credentials.subjects;
}
/** Проверяет является ли число частью года */
checkDate(date: Date) {
const { start, end } = this.year;
return +start <= +date && +date <= +end;
}
/** Существует ли четверть */
termExists(id: number) {
return !!this.user.terms.find((t) => t.id == id);
}
/** ID текущей четверти */
defaultTerm(): Term | undefined {
return this.user.terms.find((t) => t.isCurrent);
}
/** Получить четверть по ID */
getTermById(id: number) {
return this.user.terms.find((t) => t.id == id);
}
/** Существует ли класс */
classExists(id: number) {
return !!this.getClassById(id);
}
/** ID первого класса */
defaultClass(): Class | undefined {
return this.user.classes[0];
}
/** Получить класс по ID */
getClassById(id: number) {
return this.user.classes.find((c) => c.id == id);
}
/** Существует ли ученик */
studentExists(id: number) {
return !!this.getStudentById(id);
}
/** ID первого ученика */
defaultStudent(): Student | undefined {
return this.user.students[0];
}
/** Получить ученика по ID */
getStudentById(id: number) {
return this.user.students.find((s) => s.id == id);
}
/** Существует ли предмет */
subjectExists(id: number) {
return !!this.subjects.find((s) => s.id == id);
}
/**
* Сравнивает версию сервера с указанной
* @param version Версия сервера с которой сравнивается
* @returns 1 если указанная версия больше, -1 если меньше, 0 если равны
*/
compareServerVersion(version: string) {
return compareVersions(this.server.version, version);
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},9310:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"Day.ts",data:()=>({html:'
import Lesson, { LessonObject } from "./Lesson";
export interface DayObject {
date: string;
lessons: LessonObject[];
}
export default class Day {
lessons: Lesson[];
private _date: string;
constructor(day: DayObject) {
this._date = day.date;
this.lessons = day.lessons.map((l) => new Lesson(l));
}
get date() {
return new Date(this._date);
}
toJSON() {
return {
date: this._date,
lessons: this.lessons.map((l) => l.toJSON()),
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},3403:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"Diary.ts",data:()=>({html:'
import Day, { DayObject } from "./Day";
import Lesson from "./Lesson";
export interface DiaryObject {
weekEnd: string;
termName: string;
weekDays?: DayObject[];
weekStart: string;
className: string;
}
export default class Diary {
days: Day[];
termName: string;
className: string;
private _end: string;
private _start: string;
constructor(diary: DiaryObject) {
this.days = diary.weekDays?.map((d) => new Day(d)) ?? [];
this.termName = diary.termName;
this.className = diary.className;
this._end = diary.weekEnd;
this._start = diary.weekStart;
}
get start() {
return new Date(this._start);
}
get end() {
return new Date(this._end);
}
slice({ start, end }: { start: Date; end: Date }) {
return this.days.filter(({ date }) => date >= start && date < end);
}
currentLesson(date: Date) {
const lessons: Lesson[] = [];
this.days.forEach((d) => lessons.push(...d.lessons));
return (
lessons.find(
({ start: startDate, end: endDate }) => date >= startDate && date < endDate
) ?? null
);
}
toJSON() {
return {
days: this.days.map((d) => d.toJSON()),
endDate: this._end,
startDate: this._start,
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},7403:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"Grades.ts",data:()=>({html:'
import { str2date, date2JSON } from "@/utils/dateNum";
import { query, table } from "@/utils/parseHtml";
import AssignmentTypes from "./AssignmentTypes";
interface Credentials {
types: AssignmentTypes;
htmlText: string;
hasTerms: boolean;
}
export default class Grades {
raw: string;
range: { start: Date; end: Date };
teacher: string;
averageMark: number;
private _types: AssignmentTypes;
constructor(credentials: Credentials) {
this.raw = credentials.htmlText;
this._types = credentials.types;
const [start = "", end = ""] =
query(
this.raw,
`table td:nth-child(2) > span:nth-child(${
credentials.hasTerms ? 5 : 3
})`
)?.structuredText.match(/((d{1,2}.){2}d{2})/g) ?? [];
this.range = { start: str2date(start), end: str2date(end) };
this.teacher =
query(
this.raw,
`table td:nth-child(2) > span:nth-child(${
credentials.hasTerms ? 11 : 9
})`
)?.childNodes[1].text.trim() ?? "";
this.averageMark = +(
query(this.raw, ".table-print tr.totals td:nth-child(3)")
?.structuredText.replace(",", ".")
.replace?.(/^D+(?=d)/, "") ?? ""
);
}
get assignments() {
const trs = table({ html: this.raw, query: ".table-print" });
trs.pop();
return trs.map((tr) => {
const [typeTd, themeTd, dateTd, issueDateTd, markTd] =
tr.querySelectorAll("td") ?? [];
return {
type: this._types.findByName(typeTd?.structuredText),
theme: themeTd?.structuredText,
date: str2date(dateTd?.structuredText),
issueDate: str2date(issueDateTd?.structuredText),
mark: +markTd?.structuredText,
};
});
}
toJSON() {
return {
raw: this.raw,
range: {
start: date2JSON(this.range.start),
end: date2JSON(this.range.end),
},
teacher: this.teacher,
assignments: this.assignments.map((a) => ({
...a,
date: date2JSON(a.date),
issueDate: date2JSON(a.issueDate),
})),
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},8401:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"Info.ts",data:()=>({html:'
export interface InfoObject {
firstName: string;
lastName: string;
middleName: string;
birthDate: string;
mobilePhone: string;
email: string;
existsPhoto: boolean;
}
export default class Info {
email: string;
phone: string;
lastName: string;
firstName: string;
middleName: string;
existsPhoto: boolean;
private _birthDate: string;
constructor(info: InfoObject) {
this.email = info.email;
this.phone = info.mobilePhone;
this.lastName = info.lastName;
this.firstName = info.firstName;
this.middleName = info.middleName;
this.existsPhoto = info.existsPhoto;
this._birthDate = info.birthDate;
}
get birthDate() {
return new Date(this._birthDate);
}
toJSON() {
return {
email: this.email,
phone: this.phone,
lastName: this.lastName,
firstName: this.firstName,
birthDate: this._birthDate,
middleName: this.middleName,
existsPhoto: this.existsPhoto,
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},8064:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"Journal.ts",data:()=>({html:'
import Context from "@/classes/Context";
import { str2date, date2JSON } from "@/utils/dateNum";
import { query, queryAll, table } from "@/utils/parseHtml";
//? Константы
// Селекторы промежутков
const RANGE_SELECTOR = "table td:nth-child(2) > span:nth-child(5)";
const RANGE_SELECTOR_V2 = "table td:nth-child(2) > span:nth-child(7)";
// Селектор дней
const DAYS_SELECTOR = "table.table-print tr:nth-child(2) > th";
// Селектор месяцев
const MONTHS_SELECTOR = "table.table-print tr:nth-child(1) > th[colspan]";
// Расшифровка названия месяцев в числа (разные года)
const MONTH_NUMBERS = {
Сентябрь: 8,
Октябрь: 9,
Ноябрь: 10,
Декабрь: 11,
Январь: 12,
Февраль: 13,
Март: 14,
Апрель: 15,
Май: 16,
Июнь: 17,
Июль: 18,
Август: 19,
};
// Расшифровка названия месяцев в числа (одинаковые года года)
const MONTH_NUMBERS_SY = {
Сентябрь: 8,
Октябрь: 9,
Ноябрь: 10,
Декабрь: 11,
Январь: 0,
Февраль: 1,
Март: 2,
Апрель: 3,
Май: 4,
Июнь: 5,
Июль: 6,
Август: 7,
};
//? Типы данных
/** Параметры для инициализации */
interface Credentials {
htmlText: string;
terms: Context["user"]["terms"];
subjects: Context["subjects"];
}
/** Тип данных распарсенных предметов */
export interface Subject {
/** ID предмета */
id: number;
/** Название предмета */
name: string;
/** Массив оценок */
marks: { mark: number; date: Date; termId: number }[];
/** Массив точек (долгов) */
dotList: { date: Date; termId: number }[];
/** Массив пропусков */
missedList: { type: string; date: Date; termId: number }[];
/** Итоговые оценки */
totalMarks: { mark: number; termId: number }[];
/** Средние оценки */
middleMarks: { mark: number; termId: number }[];
/** Средняя оценка за выбранный период */
periodMiddleMark: number;
/** Средняя оценка
*
* _В следующих версиях будет удален, используйте .periodMiddleMark_
* @deprecated */
middleMark: number;
}
/** Тип данных распарсенных предметов (JSON) */
export interface SubjectData {
/** ID предмета */
id: number;
/** Название предмета */
name: string;
/** Массив оценок */
marks: { mark: number; date: string; termId: number }[];
/** Массив точек (долгов) */
dotList: { date: string; termId: number }[];
/** Массив пропусков */
missedList: { type: string; date: string; termId: number }[];
/** Итоговые оценки */
totalMarks: { mark: number; termId: number }[];
/** Средние оценки */
middleMarks: { mark: number; termId: number }[];
/** Средняя оценка за выбранный период */
periodMiddleMark: number;
/** Средняя оценка
*
* _В следующих версиях будет удален, используйте .periodMiddleMark_
* @deprecated */
middleMark: number;
}
/** Данные журнала в формате JSON */
export interface JournalData {
raw: string;
range: { start: string; end: string };
subjects: SubjectData[];
}
//? Функции помощники
/**
* Возвращает id четверти по дате
* @param terms массив четвертей
* @param date дата
* @returns id четверти
*/
function termByDate(terms: Credentials["terms"], date: Date): number {
return (
terms.find(
(term) => term.id != -1 && +term.start <= +date && +date <= +term.end
)?.id ?? -1
);
}
/**
* Сопоставляем оценки с четвертями
* @param terms массив четвертей
* @param termTds массив с названиями четвертей
* @param marksTds массив с оценками четвертей
*/
function totalMarksFormat(
terms: Credentials["terms"],
termTds: string[],
marksTds: number[]
): {
totalMarks: Subject["totalMarks"];
middleMarks: Subject["middleMarks"];
periodMiddleMark: Subject["periodMiddleMark"];
// TODO: удалить в следующих версиях
middleMark: Subject["middleMark"];
} {
// Сопоставляем оценки с четвертями
const totalMarks: Subject["totalMarks"] = [];
const middleMarks: Subject["middleMarks"] = [];
marksTds.forEach((mark, index) => {
// Получаем id четверти
const tdName = termTds[index];
const termId = terms.find((t) => tdName.includes(t.name))?.id ?? -1;
// Если это итоговая оценка за выбранный период
if (tdName.includes("Итог") && mark) totalMarks.push({ mark, termId });
// Если это средняя оценка за выбранный период
if (tdName.includes("Средн") && mark) middleMarks.push({ mark, termId });
});
// Получаем среднюю оценку за выбранный период
const periodMiddleMark = middleMarks[middleMarks.length - 1]?.mark ?? 0;
return {
totalMarks,
middleMarks,
periodMiddleMark,
// TODO: удалить в следующих версиях
middleMark: periodMiddleMark,
};
}
/**
* Парсим данные из файла отчета
* @param html отчет в формате HTML
* @param start дата начала отчета
* @param end дата окончания отчета
* @returns массив дат
*/
function parseDates(html: string, start: Date, end: Date) {
const isSameYear = start.getFullYear() === end.getFullYear();
// Получаем дни
const days = Array.from(
queryAll(html, DAYS_SELECTOR),
(th) => +th.structuredText
);
// Получаем месяца и его длину
const months = Array.from(queryAll(html, MONTHS_SELECTOR), (th) => ({
length: +(th.getAttribute("colspan") ?? ""),
number: !isSameYear
? MONTH_NUMBERS[th.structuredText as keyof typeof MONTH_NUMBERS]
: MONTH_NUMBERS_SY[th.structuredText as keyof typeof MONTH_NUMBERS_SY],
}));
// Форматируем даты
const result: Date[] = [];
months.forEach(({ number, length }) => {
const resultLength = result.length;
for (let i = resultLength; i < resultLength + length; i++) {
const date = new Date(start);
date.setDate(days[i]);
date.setMonth(number);
result.push(date);
}
});
return result;
}
export default class Journal {
/** HTML код отчета */
raw: string;
/** Промежуток отчета */
range: {
/** Начало отчета */
start: Date;
/** Конец отчета */
end: Date;
};
private _terms: Credentials["terms"];
private _subjects: Credentials["subjects"];
constructor(credentials: Credentials) {
this.raw = credentials.htmlText;
this._terms = credentials.terms;
this._subjects = credentials.subjects;
const [start = "", end = ""] =
query(
this.raw,
!this._hasTerms ? RANGE_SELECTOR : RANGE_SELECTOR_V2
)?.structuredText.match(/((d{1,2}.){2}d{2})/g) ?? [];
this.range = { start: str2date(start), end: str2date(end) };
}
/** Проверяет наличия деления на четверти */
private get _hasTerms(): boolean {
return this._terms.length > 0;
}
/** Получаем распарсенные оценки по предметам */
get subjects(): Subject[] {
// Парсим даты
const dates = parseDates(this.raw, this.range.start, this.range.end);
// Получаем доступ к таблице
const trs = table({
html: this.raw,
query: ".table-print",
removeHeaders: false,
});
// Получаем название четвертей
const termTds = Array.from(trs[0].querySelectorAll("th[rowspan]"), (th) =>
th.text.trim()
);
// Удаляем лишнее
trs.splice(0, 2);
termTds.shift();
return trs.map((tr) => {
// Получаем название предмета
const nameTd = tr.querySelector("td:nth-child(1)");
const name = nameTd?.text.trim() ?? "";
// Получаем средние оценки и итоговые
const marksTds = Array.from(
tr.querySelectorAll("td.cell-num-2"),
(td) => +td.text.trim().replace(",", ".")
);
// Получаем данные ячеек за период
const periodTds = Array.from(tr.querySelectorAll(":not([class])"), (td) =>
td.text.trim()
);
// Парсим данные ячеек за период
const marks: Subject["marks"] = [];
const dotList: Subject["dotList"] = [];
const missedList: Subject["missedList"] = [];
periodTds.forEach((content, i) => {
const date = dates[i];
if (!content) return;
content.match(/d/g)?.forEach((str) =>
marks.push({
mark: +str,
date,
termId: termByDate(this._terms, date),
})
);
content.match(/./g)?.forEach(() =>
dotList.push({
date,
termId: termByDate(this._terms, date),
})
);
content.match(/[А-Яа-я]+/g)?.forEach((type) =>
missedList.push({
type,
date,
termId: termByDate(this._terms, date),
})
);
});
// Возвращаем данные предмета
return {
id: this._subjects.find((s) => s.name === name)?.id ?? -1,
name,
marks,
dotList,
missedList,
...totalMarksFormat(this._terms, termTds, marksTds),
};
});
}
toJSON(): JournalData {
return {
raw: this.raw,
range: {
start: date2JSON(this.range.start),
end: date2JSON(this.range.end),
},
subjects: this.subjects.map((s) => ({
...s,
marks: s.marks.map((m) => ({
...m,
date: date2JSON(m.date),
})),
dotList: s.dotList.map((d) => ({
...d,
date: date2JSON(d.date),
})),
missedList: s.missedList.map((m) => ({
...m,
date: date2JSON(m.date),
})),
})),
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},9429:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"Lesson.ts",data:()=>({html:'
import Assignment, { AssignmentObject } from "./Assignment";
export interface LessonObject {
day: string;
room: string;
number: number;
endTime: string;
startTime: string;
subjectName: string;
assignments: undefined | AssignmentObject[];
classmeetingId: number;
}
export default class Lesson {
id: number;
subject: string;
assignments: Assignment[];
private _endDate: string;
private _startDate: string;
constructor(lesson: LessonObject) {
this.id = lesson.classmeetingId;
this.subject = lesson.subjectName;
this._endDate = lesson.day.replace("00:00", lesson.endTime);
this._startDate = lesson.day.replace("00:00", lesson.startTime);
this.assignments = lesson.assignments?.map((a) => new Assignment(a)) ?? [];
}
get end() {
return new Date(this._endDate);
}
get start() {
return new Date(this._startDate);
}
toJSON() {
return {
id: this.id,
subject: this.subject,
endDate: this._endDate,
startDate: this._startDate,
assignments: this.assignments.map((a) => a.toJSON()),
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},2210:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"ScheduleDay.ts",data:()=>({html:'
import { outerHTML, table } from "@/utils/parseHtml";
import { num2str } from "@/utils/dateNum";
import ScheduleDayLine from "./ScheduleDayLine";
interface Credentials {
date: string;
htmlText: string;
}
function timeFormat(date: string, strDate: string) {
if (strDate.includes(" ")) {
const [date1, time] = strDate.split(" ");
const [day, month] = date1.split(".");
return date
.replace(/-d{2}-/, "-" + num2str(month) + "-")
.replace(/-d{2}T/, "-" + num2str(day) + "T")
.replace(/T.+/, "T" + time);
} else {
return date.replace(/T.+/, "T" + strDate);
}
}
export default class ScheduleDay {
raw: string;
private _date: string;
constructor(credentials: Credentials) {
this.raw = outerHTML({ html: credentials.htmlText, query: ".table" });
this._date = credentials.date;
}
get date() {
return new Date(this._date);
}
get lines(): ScheduleDayLine[] {
return table({ html: this.raw }).map((tr) => {
const [timeTd, nameTd] = tr?.querySelectorAll?.("td") ?? [];
let [start, end] = timeTd?.structuredText.split(" - ");
const startDate = timeFormat(this._date, start);
const endDate = timeFormat(this._date, end);
let name = nameTd?.structuredText;
const className = name.match(/[(.+)]/)?.[1];
if (className) name = name.replace(/ [(.+)]/, "");
return new ScheduleDayLine({ name, endDate, startDate, className });
});
}
toJSON() {
return {
raw: this.raw,
date: this._date,
lines: this.lines.map((line) => line.toJSON()),
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},4474:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"ScheduleDayLine.ts",data:()=>({html:'
interface Credentials {
name: string;
className?: string;
startDate: string;
endDate: string;
}
export default class ScheduleDayLine {
name: string;
className?: string;
private _startDate: string;
private _endDate: string;
constructor(credentials: Credentials) {
this.name = credentials.name;
this.className = credentials.className;
this._startDate = credentials.startDate;
this._endDate = credentials.endDate;
}
get start() {
return new Date(this._startDate);
}
get end() {
return new Date(this._endDate);
}
toJSON() {
return {
name: this.name,
className: this.className,
startDate: this._startDate,
endDate: this._endDate,
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},3455:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"ScheduleWeek.ts",data:()=>({html:'
import { date2JSON } from "@/utils/dateNum";
import { outerHTML, table } from "@/utils/parseHtml";
import ScheduleWeekLine from "./ScheduleWeekLine";
const DATE_REGEX = /Расписание.+?с (d{1,2}.d{1,2}.d{1,2})/;
interface Credentials {
htmlText: string;
}
export default class ScheduleWeek {
raw: string;
private _date: string;
constructor(credentials: Credentials) {
let date = credentials.htmlText.match(DATE_REGEX)?.[1] ?? "08.04.04";
this.raw = outerHTML({ html: credentials.htmlText, query: ".table" });
this._date = date2JSON(date);
}
get date() {
return new Date(this._date);
}
get parsed(): ScheduleWeekLine[] {
return table({ html: this.raw }).map((tr, i) => {
const [numberTd, nameTd] = tr?.querySelectorAll?.("td") ?? [];
const date = this.date;
date.setDate(date.getDate() + i);
const numbers = numberTd?.childNodes
?.filter((n) => n.nodeType == 3)
?.map((n) => parseInt(n.text));
const names = nameTd?.childNodes
?.filter((n) => n.nodeType == 3)
?.map((n) => n.text);
const lessons: ScheduleWeekLine["lessons"] = [];
for (let i = 0; i < names.length; i++) {
const name = names[i];
if (name == "-") continue;
lessons.push({
names: name.replace(/ [.+?]/g, "").split(", "),
number: numbers[i],
classesName: name
.match(/[(d+?)]/g)
?.map((n) => n.replace(/[|]/g, "")),
});
}
return new ScheduleWeekLine({
date: date2JSON(date),
lessons,
});
});
}
toJSON() {
return {
raw: this.raw,
date: this._date,
parsed: this.parsed.map((i) => i.toJSON()),
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},6534:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"ScheduleWeekLine.ts",data:()=>({html:'
interface Credentials {
date: string;
lessons: {
names: string[];
number: number;
classesName?: string[];
}[];
}
export default class ScheduleWeekLine {
lessons: Credentials["lessons"];
private _date: string;
constructor(credentials: Credentials) {
this._date = credentials.date;
this.lessons = credentials.lessons;
}
get date() {
return new Date(this._date);
}
toJSON() {
return {
date: this._date,
lessons: this.lessons,
};
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},630:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"Session.ts",data:()=>({html:'
interface Credentials {
ver: string;
expiryDate: number;
accessToken: string;
}
export default class Session {
ver: string;
expiryDate: number;
accessToken: string;
constructor(credentials: Credentials) {
this.ver = credentials.ver;
this.expiryDate = credentials.expiryDate;
this.accessToken = credentials.accessToken;
}
isValid() {
return this.expiryDate - Date.now() > 0;
}
isExpired() {
return !this.isValid();
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},8528:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"index.ts",data:()=>({html:'
import NetSchoolApi from "@/NetSchoolApi";
import NetSchoolApiSafe from "@/NetSchoolApi-safe";
export default NetSchoolApi;
export const Safe = NetSchoolApiSafe;
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},9060:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"assignment.ts",data:()=>({html:'
import NS from "@NS";
import { sessionValid, studentIdValid } from "@/utils/checks";
import AssignmentInfo from "@/classes/AssignmentInfo";
export interface Credentials {
studentId?: number;
id: number;
}
export default async function (this: NS, credentials: Credentials) {
const { client } = await sessionValid.call(this);
let { id, studentId } = credentials;
studentId = studentIdValid.call(this, credentials.studentId).id;
return client
.get(`student/diary/assigns/${id}`, { params: { studentId } })
.then((res) => res.json() as any)
.then((data) => new AssignmentInfo(data));
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},4126:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"assignmentTypes.ts",data:()=>({html:'
import NS from "@NS";
import { sessionValid } from "@/utils/checks";
import AssignmentTypes from "@/classes/AssignmentTypes";
export default async function (this: NS) {
await sessionValid.call(this);
return this.client
.get("grade/assignment/types", { params: { all: false } })
.then((res) => res.json() as any)
.then((data) => new AssignmentTypes(data));
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},3014:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"index.ts",data:()=>({html:'
import NS from "@NS";
import Context from "@/classes/Context";
import sysInfo from "./methods/sysInfo";
import context from "./methods/context";
import schoolInfo from "./methods/schoolInfo";
import studentGrades from "./methods/studentGrades";
export default async function (this: NS) {
const { client } = this;
const [
{ server },
{ year, user, server: server1, schoolId },
{ user: user1, subjects },
] = await Promise.all([
sysInfo(client),
context(client),
studentGrades(client),
]);
return new Context({
year,
user: { ...user, ...user1 },
server: { ...server, ...server1 },
school: { ...(await schoolInfo(client, schoolId)), id: schoolId },
subjects,
});
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},6807:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"context.ts",data:()=>({html:'
import Client from "@/classes/Client";
interface GlobalYear {
id: number;
name: string;
endDate: Date;
startDate: Date;
}
interface SchoolYear {
id: number;
name: string;
closed: string;
endDate: Date;
schoolId: number;
startDate: Date;
globalYear: GlobalYear;
}
interface User {
id: number;
name: string;
}
interface Organization {
id: number;
name: string;
}
interface ContextObject {
at: string;
user: User;
emId?: any;
roles: string[];
rights: string[];
userId: number;
version: string;
schoolId: number;
funcType: string;
dateFormat: string;
timeFormat: string;
schoolyear: SchoolYear;
productName: string;
versionDate?: any;
schoolYearId: number;
globalYearId: number;
userLanguage: string;
organization: Organization;
organizationName: string;
}
export default async function (client: Client) {
const data: ContextObject = await client
.get("context")
.then((res) => res.json() as any);
return {
year: {
id: data.schoolyear.id,
gId: data.schoolyear.globalYear.id,
name: data.schoolyear.name,
start: new Date(data.schoolyear.startDate),
end: new Date(data.schoolyear.endDate),
},
user: { id: data.user.id, name: data.user.name },
server: { dateFormat: data.dateFormat, timeFormat: data.timeFormat },
schoolId: data.schoolId,
};
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},7470:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"schoolInfo.ts",data:()=>({html:'
import Client from "@/classes/Client";
interface LocationType {
id: number;
key: string;
name: string;
}
interface LocationInfo {
locationType: LocationType;
inProvinceCenter: boolean;
isProvinceSchoolInCity: boolean;
}
interface CommonInfo {
legalFormName: string;
legalFormName83: string;
typeName: string;
showFormName: boolean;
formName: string;
schoolName: string;
fullSchoolName: string;
schoolNumber: string;
foundingDate: Date;
independ: string;
additionalName: string;
mainSchool: string;
founders: string[];
ownEducManagements: string[];
status: string;
smallOrganization: string;
locationInfo: LocationInfo;
about: string;
emId?: any;
}
interface ManagementInfo {
director: string;
principalUVR: string;
principalAHC: string;
principalIT: string;
collegiateManagement: string;
}
interface ContactInfo {
stateProvinceName: string;
cityName: string;
districtName?: any;
postAddress: string;
phones: string;
fax: string;
email: string;
web: string;
addressesAdditionalBuildings: string;
juridicalAddress: string;
}
interface OtherInfo {
inn: string;
kpp: string;
ogrn: string;
okpo: string;
okato: string;
okogu: string;
okopf: string;
okfs: string;
okved: string;
specialization: string;
maxOccupancy: string;
maxOccupancyOnShift: string;
numberShifts: string;
referenceToCharter: string;
presenceOfPool: string;
barrierFreeEnvironment: string;
videoSurveillance: string;
linkToScanCopyLicenseEducation?: any;
socialPartnerShip: string;
timetable: string;
conditionsEducation: string;
projectTypeForSchool?: any;
}
interface BankDetails {
bankScore: string;
corrScore: string;
personalAccount: string;
bik: string;
note: string;
bankName: string;
bankKpp: string;
}
interface FoodPayDetails {
foodPayOrgName: string;
foodPayInn: string;
foodPayKpp: string;
foodPayBankName: string;
foodPayBankScore: string;
foodPayBankCorrScore: string;
foodPayBankBik: string;
foodPayBankKpp: string;
}
interface InternetConnectionInfo {
computersCount: string;
contentFilteringName: string;
internetSpeedUnderContract: string;
internetSpeedInFact: string;
internetProviderName: string;
internetAccessTechnology: string;
}
export interface CardObject {
commonInfo: CommonInfo;
managementInfo: ManagementInfo;
contactInfo: ContactInfo;
otherInfo: OtherInfo;
bankDetails: BankDetails;
foodPayDetails: FoodPayDetails;
internetConnectionInfo: InternetConnectionInfo;
}
export default async function (client: Client, id: number) {
const { commonInfo }: CardObject = await client
.get(`schools/${id}/card`)
.then((res) => res.json() as any);
return { name: commonInfo.schoolName, fullName: commonInfo.fullSchoolName };
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},117:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"studentGrades.ts",data:()=>({html:'
import Client from "@/classes/Client";
interface RelatedObject {
type: string;
ref: string;
}
interface Dependency {
relatedObject: RelatedObject;
relatedValue?: any;
condition: string;
}
interface Filter {
id: string;
title: string;
order: number;
filterType: string;
optionalFlag: boolean;
hideSingleOption: boolean;
hasSureCheckedFlag: boolean;
hideTitleFlag: boolean;
existStateProvider: boolean;
emptyText: string;
dependencies: Dependency[];
}
interface FilterPanel {
filters: Filter[];
}
interface Report {
id: string;
name: string;
group: string;
level: string;
order: number;
filterPanel: FilterPanel;
presentTypes: any[];
}
interface Item {
title: string;
value: string;
}
interface Range {
start: Date;
end: Date;
}
interface DefaultRange {
start: Date;
end: Date;
}
export interface FilterSource {
items: Item[];
defaultValue: string;
filterId: string;
nullText?: any;
minValue?: Date;
maxValue?: Date;
range: Range;
defaultRange: DefaultRange;
}
interface StudentGradesObject {
report: Report;
filterSources: FilterSource[];
}
export default async function (client: Client) {
const { filterSources: data }: StudentGradesObject = await client
.get("reports/studentGrades")
.then((res) => res.json() as any);
const classes =
data
.find((f) => f.filterId == "PCLID_IUP")
?.items.map((c) => ({
id: parseInt(c.value),
name: c.title,
value: c.value,
})) ?? [];
const subjects =
data
.find((f) => f.filterId == "SGID")
?.items.map((s) => ({
id: parseInt(s.value),
name: s.title,
value: s.value,
})) ?? [];
const students =
data
.find((f) => f.filterId == "SID")
?.items.map((s) => ({
id: parseInt(s.value),
name: s.title,
value: s.value,
})) ?? [];
const termFilters = data.find((f) => f.filterId == "TERMID");
const terms = !termFilters
? []
: await Promise.all(
termFilters.items.map(async (t) => {
const filters = await client
.post("v2/reports/studentgrades/initfilters", {
body: JSON.stringify({
params: null,
selectedData: [{ filterId: "TERMID", filterValue: t.value }],
}),
headers: {
"Content-Type": "application/json",
},
})
.then((res) => res.json() as Promise<FilterSource[]>);
const termDates = filters.find((f) => f.filterId == "period")?.range;
if (!termDates) throw new Error("Не удалось получить даты четверти");
return {
id: parseInt(t.value),
name: t.title,
value: t.value,
isCurrent: termFilters.defaultValue == t.value,
start: new Date(termDates?.start),
end: new Date(termDates?.end),
};
})
);
return {
user: {
terms,
classes,
students,
},
subjects,
};
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},5074:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"sysInfo.ts",data:()=>({html:'
import Client from "@/classes/Client";
export default async function (client: Client) {
const text = await client.get("sysInfo").then((res) => res.text());
const id = text.match(/Id: (.+)/)?.[1] ?? "";
const version = text.match(/Версия системы: (.+)/)?.[1] ?? "";
return { server: { id, version } };
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},6759:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"diary.ts",data:()=>({html:'
import NS from "@NS";
import Diary, { DiaryObject } from "@/classes/Diary";
import { sessionValid, dateValid, studentIdValid } from "@/utils/checks";
import { AttachmentObject, AnswerFilesObject } from "@/classes/Attachment";
type AttachmentRaw = {
assignmentId: number;
attachments: AttachmentObject[];
answerFiles: AnswerFilesObject[];
};
export interface Credentials {
studentId?: number;
start?: Date;
end?: Date;
}
export default async function (this: NS, credentials: Credentials = {}) {
const { client, context } = await sessionValid.call(this);
let { studentId, start, end } = credentials;
studentId = studentIdValid.call(this, studentId).id;
if (start && end) dateValid.call(this, start, end);
else {
const { weekStart } = await client
.get("student/diary/init")
.then((res) => res.json() as any);
start = new Date(weekStart);
end = new Date(weekStart);
end.setDate(end.getDate() + 7);
}
const diaryRaw = await client
.get("student/diary", {
params: {
yearId: context.year.id,
studentId,
weekEnd: end.toJSON().replace(/T.+/, ""),
weekStart: start.toJSON().replace(/T.+/, ""),
},
})
.then((res) => res.json() as unknown as DiaryObject);
const assignments: number[] = [];
diaryRaw.weekDays?.forEach((day) => {
day.lessons.forEach((lesson) => {
lesson.assignments?.forEach((assignment) => {
assignments.push(assignment.id);
});
});
});
const attachmentsRaw = await client
.post("student/diary/get-attachments", {
params: { studentId },
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
assignId: assignments,
}),
})
.then((res) => res.json() as unknown as AttachmentRaw[]);
const diaryObject = diaryRaw;
if (diaryObject.weekDays)
diaryObject.weekDays = diaryObject.weekDays.map((day) => ({
...day,
lessons: day.lessons.map((lesson) => ({
...lesson,
assignments: lesson.assignments?.map((assignment) => {
const item = attachmentsRaw.find(
({ assignmentId }) => assignment.id === assignmentId
);
return {
...assignment,
attachments: item?.attachments ?? [],
answerFiles: item?.answerFiles ?? [],
};
}),
})),
}));
return new Diary(diaryObject);
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},9985:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"downloadFile.ts",data:()=>({html:'
import NS from "@NS";
import { sessionValid, studentIdValid } from "@/utils/checks";
export interface Credentials {
studentId?: number;
assignId: number;
id: number;
}
export default async function (this: NS, credentials: Credentials) {
const { client } = await sessionValid.call(this);
let { id, assignId, studentId } = credentials;
studentId = studentIdValid.call(this, studentId).id;
const response = await client
.post("student/diary/get-attachments", {
params: { studentId },
headers: {
Referer: client.join("../angular/school/studentdiary/"),
"Content-Type": "application/json",
},
body: JSON.stringify({
assignId: [assignId],
}),
})
.then((res) => res.text());
if (!response.includes(id.toString()))
throw new Error(`Нет файла ${id} для задания ${assignId}`);
return client.get(`attachments/${id}`).then((res) => res.buffer());
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},7109:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"fetch.ts",data:()=>({html:'
import NS from "@NS";
import { InitRequest } from "@/classes/Client";
import { sessionValid } from "@/utils/checks";
export default async function (this: NS, url: string, init?: InitRequest) {
const { client } = await sessionValid.call(this);
return client.request("../" + url, init);
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},2306:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"grades.ts",data:()=>({html:'
import NS from "@NS";
import Grades from "@/classes/Grades";
import { date2JSON } from "@/utils/dateNum";
import {
sessionValid,
dateValid,
termIdValid,
classIdValid,
studentIdValid,
termDateValid,
} from "@/utils/checks";
export interface Credentials {
/** ID предмета */
subjectId: number;
/** Дата начала отчета (если `termId` не указан, либо равен `-1`, то должна быть в пределах учебного года, иначе в пределах выбранной четверти) */
start?: Date;
/** Дата окончания отчета (если `termId` не указан, либо равен `-1`, то должна быть в пределах учебного года, иначе в пределах выбранной четверти) */
end?: Date;
/** ID четверти (берется текущая четверть) */
termId?: number;
/** ID класса (обычно берется первый из массива) */
classId?: number;
/** ID студента (обычно берется первый из массива) */
studentId?: number;
/** Какой протокол использовать
*
* 0 - Web Sockets, 1 - Long Polling
*
* если отсутствует, то используется Web Sockets или Long Polling (в зависимости от версии сервера)
*/
transport?: 0 | 1;
}
export default async function grades(this: NS, credentials: Credentials) {
const { context } = await sessionValid.call(this);
let { subjectId, start, end, termId, classId, studentId, transport } =
credentials;
// Проверяем существует ли предмет
if (!context.subjectExists(subjectId))
throw new Error(`Предмета ${subjectId} не существует`);
// Проверяем валидность данных
const termData = termIdValid.call(this, termId);
const classData = classIdValid.call(this, classId);
const studentData = studentIdValid.call(this, studentId);
// Если не указаны даты, то берем текущий учебный год
const termDates = await termDateValid.call(this, termData.id, start, end);
start = termDates.start;
end = termDates.end;
const [types, htmlText] = await Promise.all([
this.assignmentTypes(),
this.reportFile({
url: "reports/studentgrades/queue",
filters: [
{
filterId: "SID",
filterValue: studentData.value,
},
{
filterId: "PCLID_IUP",
filterValue: classData.value,
},
{
filterId: "SGID",
filterValue: subjectId,
},
{
filterId: "TERMID",
filterValue: termData.value,
},
{
filterId: "period",
filterValue: date2JSON(start) + " - " + date2JSON(end),
},
],
transport,
}),
]);
return new Grades({
types,
htmlText,
hasTerms: context.user.terms.length > 0,
});
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},6661:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"info.ts",data:()=>({html:'
import NS from "@NS";
import Info from "@/classes/Info";
import { sessionValid } from "@/utils/checks";
export default async function (this: NS) {
const { client } = await sessionValid.call(this);
return client
.get("mysettings")
.then((res) => res.json())
.then((data) => new Info(data));
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},93:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"journal.ts",data:()=>({html:'
import NS from "@NS";
import Journal from "@/classes/Journal";
import { date2JSON } from "@/utils/dateNum";
import {
classIdValid,
sessionValid,
studentIdValid,
termDateValid,
termIdValid,
} from "@/utils/checks";
export interface Credentials {
/** Дата начала отчета (если `termId` не указан, либо равен `-1`, то должна быть в пределах учебного года, иначе в пределах выбранной четверти) */
start?: Date;
/** Дата окончания отчета (если `termId` не указан, либо равен `-1`, то должна быть в пределах учебного года, иначе в пределах выбранной четверти) */
end?: Date;
/** ID четверти (берется текущая четверть) */
termId?: number;
/** ID класса (обычно берется первый из массива) */
classId?: number;
/** ID студента (обычно берется первый из массива) */
studentId?: number;
/** Какой протокол использовать
*
* 0 - Web Sockets, 1 - Long Polling
*
* если отсутствует, то используется Web Sockets или Long Polling (в зависимости от версии сервера)
*/
transport?: 0 | 1;
}
export default async function journal(this: NS, credentials: Credentials = {}) {
const { context } = await sessionValid.call(this);
let { start, end, termId, classId, studentId, transport } = credentials;
// Проверяем валидность данных
const termData = termIdValid.call(this, termId);
const classData = classIdValid.call(this, classId);
const studentData = studentIdValid.call(this, studentId);
// Если не указаны даты, то берем текущий учебный год
const termDates = await termDateValid.call(this, termData.id, start, end);
start = termDates.start;
end = termDates.end;
// Получаем текст отчета
const htmlText = await this.reportFile({
url:
context.compareServerVersion("5.24.0.0") == -1
? "reports/studenttotal/queue"
: "v2/reports/studenttotal/queue",
filters: [
{
filterId: "SID",
filterValue: studentData.value,
},
{
filterId: "PCLID",
filterValue: classData.id.toString(),
},
{
filterId: "TERMID",
filterValue: termData.value,
},
{
filterId: "period",
filterValue: date2JSON(start) + " - " + date2JSON(end),
},
],
transport,
});
return new Journal({
htmlText,
terms: context.user.terms,
subjects: context.subjects,
});
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},9821:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"index.ts",data:()=>({html:'
import NS from "@NS";
import Session from "@/classes/Session";
import signIn from "./methods/signIn";
export default async function (this: NS) {
const { client, credentials } = this;
const { at: accessToken, ver, timeOut } = await signIn(client, credentials);
this.session = new Session({
ver,
accessToken,
expiryDate: Date.now() + timeOut,
});
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},9258:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"authData.ts",data:()=>({html:'
import Client from "@/classes/Client";
export interface AuthData {
lt: string;
ver: string;
salt: string;
}
export default async function (client: Client) {
const data: AuthData = await client
.post("/auth/getData")
.then((res) => res.json() as any)
.catch(() => ({}));
if (!data.lt || !data.ver || !data.salt) {
throw new Error("Сетевой не вернул данные для авторизации.");
} else {
return data;
}
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},7812:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"passwordHash.ts",data:()=>({html:'
import { encode } from "iconv-lite";
import { createHash } from "crypto";
import { PasswordType } from "@NS";
function md5(str: string): string {
const buf = encode(str, "windows-1251");
return createHash("md5").update(buf).digest("hex");
}
export default function (salt: string, password: PasswordType) {
const hash = typeof password === "string" ? md5(password) : password.hash;
const pw2 = md5(salt + hash);
const pw = pw2.substring(0, password.length);
return { pw, pw2 };
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},3104:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"schoolInfo.ts",data:()=>({html:'
import Client from "@/classes/Client";
interface SchoolSearchData {
id: number;
inn: string;
ogrn: string;
name: string;
cityId: number;
address: null;
shortName: string;
provinceId: number;
}
declare module SchoolPreLoginData {
export interface Country {
id: number;
name: string;
}
export interface State {
id: number;
name: string;
}
export interface Province {
kladr: string;
id: number;
name: string;
}
export interface City {
atoTypeName: string;
id: number;
name: string;
}
export interface Func {
id: number;
name: string;
}
export interface School {
id: number;
name: string;
}
export interface RootObject {
countries: Country[];
cid: number;
states: State[];
sid: number;
provinces: Province[];
pid: number;
cities: City[];
cn: number;
funcs: Func[];
sft: number;
schools: School[];
scid: number;
hlevels?: any;
ems?: any;
}
}
export interface SchoolInfo {
cid: number;
sid: number;
pid: number;
cn: number;
sft: number;
scid: number;
}
export default async function (client: Client, school: string | number) {
const data = await Promise.all([
client
.get("schools/search")
.catch(() => client.get("schools/search?name=У"))
.then((res) => res.json() as Promise<SchoolSearchData[]>),
client
.get("prepareloginform")
.then((res) => res.json() as Promise<SchoolPreLoginData.RootObject>),
]).catch((e) => {
console.error(e);
throw new Error("Не удалось получить список школ");
});
if (typeof school === "string") school = school.toLowerCase().trim();
const result = data[0].find(({ id, name, shortName }) =>
typeof school !== "string"
? id == school
: name.toLowerCase().trim() == school ||
shortName.toLowerCase().trim() == school
);
if (!result) throw new Error("Не удалось найти школу");
if (typeof school === "string") {
console.info(
" INFO ",
`ID школы: ${result.id}. Советуем в будущем использовать ID школы вместо названия.`
);
}
return {
cid: data[1].cid,
sid: data[1].sid,
pid: result.provinceId,
cn: result.cityId,
sft: 2,
scid: result.id,
};
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},7062:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"signIn.ts",data:()=>({html:'
import { Credentials } from "@NS";
import Client from "@/classes/Client";
import authData from "./authData";
import schoolInfo from "./schoolInfo";
import passwordHash from "./passwordHash";
interface SignInObject {
at: string;
timeOut: number;
}
export interface SignIn {
at: string;
ver: string;
timeOut: number;
}
export default async function (
client: Client,
credentials: Credentials
): Promise<SignIn> {
const { login: un, password, school: schoolCr } = credentials;
// Сохранение куки
await client.get("logindata");
const [{ lt, ver, salt }, school] = await Promise.all([
authData(client),
schoolInfo(client, schoolCr),
]);
const { at, timeOut }: SignInObject = await client
.post(
"/login",
Client.formData({
un,
lt,
ver,
loginType: 1,
...school,
...passwordHash(salt, password),
})
)
.then((res) => res.json() as any)
.catch((e) => {
console.error(e);
throw new Error("Не удалось войти. Проверьте введение данные.");
});
return { at, ver, timeOut };
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},2233:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"index.ts",data:()=>({html:'
import NS from "@NS";
import signOut from "./signOut";
export default async function (this: NS) {
const { session } = this;
if (session) await signOut.call(this, session);
this.session = null;
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},2115:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"signOut.ts",data:()=>({html:'
import NS from "@NS";
import Client from "@/classes/Client";
import Session from "@/classes/Session";
export default function (this: NS, session: Session) {
const { accessToken: at, ver } = session;
const url =
this.context?.compareServerVersion("5.29.0.0") !== -1
? "auth/logout"
: "../asp/logout.asp";
return this.client.post(url, Client.formData({ at, ver }));
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},4905:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"photo.ts",data:()=>({html:'
import NS from "@NS";
import Client from "@/classes/Client";
import { sessionValid, studentIdValid } from "@/utils/checks";
export interface Credentials {
studentId?: number;
}
export default async function (this: NS, credentials: Credentials = {}) {
const { client, session } = await sessionValid.call(this);
const { accessToken: at, ver } = session;
const userId = studentIdValid.call(this, credentials.studentId);
// Просто получаем куки
await client.post(
"../asp/MySettings/MySettings.asp",
Client.formData({ at, ver }, { params: { at } })
);
return client
.get("users/photo", { params: { at, ver, userId } })
.then((res) => res.buffer());
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},382:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"index.ts",data:()=>({html:'
import NS from "@NS";
import Client from "@/classes/Client";
import { sessionValid } from "@/utils/checks";
import legacy from "./legacy";
//? Типы данных
/** Фильтры отчета */
export type Filter = {
filterId: string;
filterValue: string | number;
};
/** Параметры отчета */
export type Param = {
name: string;
value: string | number;
};
export type Message =
| {
type: 1;
target: "progress";
arguments: Array<{
taskId: number;
status: string;
}>;
}
| {
type: 1;
target: "complete";
arguments: Array<{
taskId: number;
data: string;
componentId: string;
}>;
}
| {
type: 3;
invocationId: string;
result: {
success: boolean;
message: any;
};
}
| { error: string };
/** Параметры для инициализации */
export interface Credentials {
/** Ссылка для запроса */
url: string;
/** Фильтры запроса */
filters: Filter[];
/** Идентификатор года отчета */
yearId?: number;
/** Время ожидания ответа */
timeout?: number;
/** Какой протокол использовать
*
* 0 - Web Sockets, 1 - Long Polling
*
* если отсутствует, то используется Web Sockets или Long Polling (в зависимости от версии сервера)
* @deprecated в новых версиях сервера не используется longPolling
*/
transport?: 0 | 1;
}
//? Функции помощники
/**
* Формируем задачу
* @param client клиент
* @param url ссылка для запроса
* @param params параметры запроса
* @param filters фильтры запроса
* @returns номер задачи
*/
export async function getTaskId(
client: Client,
url: string,
params: Param[],
filters: Filter[]
): Promise<number> {
return await client
.post(url, {
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ params, selectedData: filters }),
})
.then((res) => res.json())
.then(({ taskId }) => taskId);
}
/**
* Форматируем сообщение для WebSocket (с блядскими символами)
* @param message сообщение (объект)
* @param send нужно ли преобразовать в JSON
* @returns сообщение (строка или буфер)
*/
function formatMsg(message: any, send: boolean = false): Buffer | any {
if (send) return Buffer.from(JSON.stringify(message) + "");
else return JSON.parse(message.toString().replace("", ""));
}
/**
* Форматируем сообщение
* @param msg сообщение от сервера
*/
function messageHandler(msg: Message) {
// Обработка сообщения
const data = {
error: undefined as string | undefined,
fileCode: undefined as string | undefined,
};
// Если отчет готов
if ("type" in msg && msg.type === 1 && msg.target === "complete") {
data.fileCode = msg.arguments.find((arg) => {
const keys = Object.keys(arg);
return keys.includes("taskId") && keys.includes("data");
})?.data;
}
// Если произошла ошибка
if ("error" in msg) data.error = msg.error;
return data;
}
/**
* Получение отчета с помощью Web Sockets
* @param client клиент
* @param context контекст
* @param params параметры запроса
* @param taskId номер задачи
* @param timeout время ожидания ответа
* @returns идентификатор отчета
*/
async function webSocketsConnection(
client: Client,
at: string,
taskId: number,
timeout: number
) {
// Создаем WebSocket
const ws = client.ws("queueHub", { params: { at } });
// Обрабатывает сообщения
return new Promise<string>((resolve, reject) => {
let fileCode: string | undefined;
let timeoutId = 0 as unknown as NodeJS.Timeout;
// Открываем соединение
ws.once("open", async () => {
// Устанавливаем тайм-аут
if (timeout > 0) timeoutId = setTimeout(() => ws.close(4010), timeout);
// Открываем соединение
ws.send(formatMsg({ protocol: "json", version: 1 }, true));
// Уведомляем сервер о задаче
ws.send(
formatMsg(
{
arguments: [taskId, "report-v2"],
invocationId: "0",
target: "startTask",
type: 1,
},
true
)
);
});
// Слушаем сообщения
ws.on("message", (msg: Buffer) => {
// Пытаемся преобразовать сообщение в JSON
let data: { error?: string; fileCode?: string };
try {
data = messageHandler(formatMsg(msg));
} catch (e) {
return;
}
// Обрабатываем ошибку
if (data.error) {
console.error(data.error);
ws.close(4003, data.error);
}
// Обрабатываем
if (data.fileCode) {
fileCode = data.fileCode;
ws.close(4000);
}
});
// Обрабатываем ошибки соединения
ws.once("error", (err) => ws.close(4002, err.message));
// Закрываем соединение
ws.once("close", async (code, message) => {
clearTimeout(timeoutId);
switch (code) {
// Если соединение закрыто успешно
case 1000:
case 4000:
if (!fileCode) return reject(new Error("Server didn't respond"));
resolve(fileCode);
break;
// Если произошла ошибка инициализации
case 4001:
reject(new Error("Error during initialization"));
break;
// Если произошла ошибка с соединением
case 4002:
reject(new Error("Error in socket.\nError: " + message));
break;
// Если произошла ошибка с задачей
case 4003:
reject(new Error("Error in task.\nError: " + message));
break;
// Если вышло время ожидания
case 4010:
reject(new Error("Response time expired"));
break;
// Неизвестная ошибка
default:
reject(new Error("Unknown error.\nError: " + message));
}
});
});
}
export default async function reportFile(
this: NS,
credentials: Credentials
): Promise<string> {
const { url, filters, yearId, timeout = 6e4, transport } = credentials;
const { client, session, context } = await sessionValid.call(this);
// Параметры запроса
const params: Param[] = [
{ name: "DATEFORMAT", value: context.server.dateFormat },
{
name: "SCHOOLYEARID",
value: (yearId ? yearId : context.year.id).toString(),
},
{ name: "SERVERTIMEZONE", value: 3 },
{ name: "FULLSCHOOLNAME", value: context.school.fullName },
];
// Получаем идентификатор отчета
let fileCode: string | undefined;
// Если версия сервера меньше
if (context.compareServerVersion("5.29.0.0") == -1) {
fileCode = await legacy.call(this, params, credentials);
}
// Если версия сервера больше или равна
else {
// Получаем идентификатор задачи
const taskId = await getTaskId(client, url, params, filters);
// Получаем идентификатор отчета
fileCode = await webSocketsConnection(
client,
session.accessToken,
taskId,
timeout
);
}
// Возвращаем отчет
if (!fileCode) throw new Error("Server didn't respond");
return (await client.get("files/" + fileCode)).text();
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},806:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"legacy.ts",data:()=>({html:'
import NS from "@NS";
import Client from "@/classes/Client";
import Context from "@/classes/Context";
import { sessionValid } from "@/utils/checks";
import { Credentials, Param, getTaskId } from "./index";
//? Типы данных
/** Сообщения от сервера */
type Message = {
/** Идентификатор сообщения */
C: string;
/** Сообщения */
M: {
/** Какая-то служебная фигня */
H: "QueueHub";
/** Тип сообщения */
M: "error" | "progress" | "complete";
/** Данные сообщения */
A: {
/** Какая-то служебная фигня */
ComponentId: string;
/** Сами данные */
Data: string;
/** Номер задачи */
TaskId: number;
/** Детали */
Details?: string;
}[];
}[];
};
/** Параметры для запуска формирования отчета */
type Query = {
_: string;
at: string;
tid?: string;
transport: "webSockets" | "longPolling";
clientProtocol: number;
connectionData: string;
connectionToken?: string;
};
/** Ответ сервера на открытие соединения */
interface NegotiateObject {
Url: string;
ConnectionId: string;
TryWebSockets: boolean;
ProtocolVersion: string;
ConnectionToken: string;
KeepAliveTimeout: number;
DisconnectTimeout: number;
ConnectionTimeout: number;
TransportConnectTimeout: number;
}
//? Функции помощники
/**
* Получаем токен соединения
* @param client клиент
* @param params параметры для запроса
*/
async function negotiate(client: Client, params: Query) {
return client
.get("signalr/negotiate", { params })
.then((res) => res.json() as Promise<NegotiateObject>);
}
/**
* Форматируем сообщение
* @param msg сообщение от сервера
*/
function messageHandler(msg: Message) {
const { C: messageId, M } = msg;
let error = M.find((m) => m.M === "error")?.A[0].Details;
let fileCode = M.find((m) => m.M === "complete")?.A[0].Data;
return { error, fileCode, messageId };
}
/**
* Уведомляем сервер о открытии соединения
* @param client клиент
* @param params параметры для запроса
*/
async function startConnection(client: Client, params: Query) {
return client
.get("signalr/start", { params })
.then((res) => res.json() as Promise<{ Response: string }>)
.then(({ Response }) => {
if (Response !== "started")
throw new Error(
"Соединение не удалось запустить, причина в том: " + Response
);
else return true;
});
}
/**
* Получение отчета с помощью Web Sockets
* @param client клиент
* @param context контекст
* @param params параметры запроса
* @param taskId номер задачи
* @param timeout время ожидания ответа
* @returns идентификатор отчета
*/
async function webSocketsConnection(
client: Client,
context: Context,
params: Query,
taskId: number,
timeout: number
) {
// Создаем WebSocket
const ws = client.ws("signalr/connect", { params });
// Обрабатывает сообщения
return new Promise<string>((resolve, reject) => {
let fileCode: string | undefined;
let timeoutId = 0 as unknown as NodeJS.Timeout;
// Открываем соединение
ws.once("open", async () => {
// Открываем соединение
await startConnection(client, params).catch(() => ws.close(4001));
// Устанавливаем тайм-аут
if (timeout > 0) timeoutId = setTimeout(() => ws.close(4010), timeout);
// Уведомляем сервер о задаче
const msg: (string | number)[] = [taskId];
if (context.compareServerVersion("5.24.0.0") != -1) msg.push("report-v2");
ws.send(
JSON.stringify({
I: 0,
H: "queuehub",
M: "StartTask",
A: msg,
})
);
});
// Слушаем сообщения
ws.on("message", (msg: string) => {
// Пытаемся преобразовать сообщение в JSON
let data: { error?: string; fileCode?: string; messageId: string };
try {
data = messageHandler(JSON.parse(msg));
} catch (e) {
return;
}
// Обрабатываем ошибку
if (data.error) {
console.error(data.error);
ws.close(4003, data.error);
}
// Обрабатываем
if (data.fileCode) {
fileCode = data.fileCode;
ws.close(4000);
}
});
// Обрабатываем ошибки соединения
ws.once("error", (err) => ws.close(4002, err.message));
// Закрываем соединение
ws.once("close", async (code, message) => {
clearTimeout(timeoutId);
await client.post("signalr/abort", { params });
switch (code) {
// Если соединение закрыто успешно
case 1000:
case 4000:
if (!fileCode) return reject(new Error("Server didn't respond"));
resolve(fileCode);
break;
// Если произошла ошибка инициализации
case 4001:
reject(new Error("Error during initialization"));
break;
// Если произошла ошибка с соединением
case 4002:
reject(new Error("Error in socket.\nError: " + message));
break;
// Если произошла ошибка с задачей
case 4003:
reject(new Error("Error in task.\nError: " + message));
break;
// Если вышло время ожидания
case 4010:
reject(new Error("Response time expired"));
break;
// Неизвестная ошибка
default:
reject(new Error("Unknown error.\nError: " + message));
}
});
});
}
/**
* Получение отчета с помощью Long Polling
* @param client клиент
* @param context контекст
* @param params параметры запроса
* @param taskId номер задачи
* @param timeout время ожидания ответа
* @returns идентификатор отчета
*/
async function longPollingConnection(
client: Client,
context: Context,
params: Query,
taskId: number,
timeout: number
) {
// Создаем соединение
let messageId = await client
.post("signalr/connect", { params })
.then((res) => res.json())
.then(({ C }) => C);
// Открываем соединение
let fileCode: string | undefined;
let timeoutId = 0 as unknown as NodeJS.Timeout;
let timeoutIsOut = false;
await startConnection(client, params);
// Устанавливаем тайм-аут
if (timeout > 0) timeoutId = setTimeout(() => (timeoutIsOut = true), timeout);
// Уведомляем сервер о задаче
const msg: (string | number)[] = [taskId];
if (context.compareServerVersion("5.24.0.0") != -1) msg.push("report-v2");
await client.post("signalr/send", {
params,
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
},
body:
"data=" +
JSON.stringify({
I: 0,
H: "queuehub",
M: "StartTask",
A: msg,
}),
});
// Получаем сообщения
while (!timeoutIsOut && !fileCode) {
// Получаем сообщение
let data = await client
.post("signalr/poll", {
params,
...Client.formData({ messageId }),
})
.then((res) => res.json())
.then(messageHandler);
messageId = data.messageId;
// Обрабатываем ошибку
if (data.error) {
console.error(data.error);
throw new Error("Error in task.\nError: " + data.error);
}
// Обрабатываем идентификатор отчета
if (data.fileCode) fileCode = data.fileCode;
}
if (timeoutIsOut) throw new Error("Response time expired");
if (!fileCode) throw new Error("Server didn't respond");
clearTimeout(timeoutId);
return fileCode;
}
export default async function getFileCode(
this: NS,
params: Param[],
credentials: Credentials
) {
const { url, filters, timeout = 6e4, transport } = credentials;
const { client, session, context } = await sessionValid.call(this);
// Данные для запроса
const query: Query = {
_: session.ver,
at: session.accessToken,
transport: "webSockets",
clientProtocol: 1.5,
connectionData: '[{"name":"queuehub"}]',
};
// Получаем токен подключения
const { ConnectionId, ConnectionToken } = await negotiate(client, query);
query.tid = ConnectionId[0];
query.connectionToken = ConnectionToken;
// Получаем номер задачи
const taskId = await getTaskId(client, url, params, filters);
// Получаем идентификатор отчета
let fileCode: string | undefined;
if (
transport == 0 ||
(!transport && context.compareServerVersion("5.24.0.0") == -1)
) {
query.transport = "webSockets";
fileCode = await webSocketsConnection(
client,
context,
query,
taskId,
timeout
);
} else if (
transport == 1 ||
(!transport && context.compareServerVersion("5.24.0.0") > -1)
) {
query.transport = "longPolling";
fileCode = await longPollingConnection(
client,
context,
query,
taskId,
timeout
);
}
return fileCode;
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},3897:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"scheduleDay.ts",data:()=>({html:'
import NS from "@NS";
import Client from "@/classes/Client";
import ScheduleDay from "@/classes/ScheduleDay";
import { date2str } from "@/utils/dateNum";
import { sessionValid, dateValid, classIdValid } from "@/utils/checks";
export interface Credentials {
date?: Date;
classId?: number;
}
export default async function (this: NS, credentials: Credentials = {}) {
const { client, session } = await sessionValid.call(this);
const { accessToken: at, ver } = session;
let { date, classId } = credentials;
if (!date) date = new Date();
else dateValid.call(this, date);
const htmlText = await client
.post(
"../asp/Calendar/DayViewS.asp",
Client.formData({
at,
ver,
date: date2str(date),
PCLID_IUP: classIdValid.call(this, classId) + "_0",
LoginType: 0,
})
)
.then((res) => res.text());
return new ScheduleDay({
date: date.toJSON().replace(/T.+/, "T00:00"),
htmlText,
});
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},6020:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"scheduleWeek.ts",data:()=>({html:'
import NS from "@NS";
import Client from "@/classes/Client";
import ScheduleWeek from "@/classes/ScheduleWeek";
import { date2str } from "@/utils/dateNum";
import { sessionValid, dateValid, classIdValid } from "@/utils/checks";
export interface Credentials {
date?: Date;
classId?: number;
}
export default async function (this: NS, credentials: Credentials = {}) {
const { client, session } = await sessionValid.call(this);
const { accessToken: at, ver } = session;
let { date, classId } = credentials;
if (!date) date = new Date();
else dateValid.call(this, date);
const htmlText = await client
.post(
"../asp/Calendar/WeekViewTimeS.asp",
Client.formData({
at,
ver,
date: date2str(date),
PCLID_IUP: classIdValid.call(this, classId) + "_0",
LoginType: 0,
})
)
.then((res) => res.text());
return new ScheduleWeek({
htmlText,
});
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},2331:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"sessionValid.ts",data:()=>({html:'
import NS from "@NS";
export default async function (this: NS) {
const { client, session } = this;
if (!session) return false;
const { accessToken: token } = session;
return client
.get("context/expired", { params: { token } })
.then((res) => res.json())
.then((b) => (typeof b == "boolean" ? !b : false));
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},3204:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"checks.ts",data:()=>({html:'
/**
* Этот файл содержит функции, необходимые для проверки данных.
* Они часто очень просты, но они слишком распространены в методах.
*/
import NS from "@NS";
import { FilterSource } from "@/methods/context/methods/studentGrades";
/**
* Проверяет валидность сессии.
*/
export async function sessionValid(this: NS) {
if (!(await this.sessionValid()) || !this.session || !this.context)
throw new Error("Сначала надо открыть сессию.");
return { ...this } as NS & {
session: NonNullable<NS["session"]>;
context: NonNullable<NS["context"]>;
};
}
/**
* Проверяет валидность дат
*/
export function dateValid(this: NS, ...dates: Date[]) {
for (let date of dates)
if (!this.context?.checkDate(date))
throw new Error("Дата выходит за рамки учебного года");
return dates;
}
/**
* Проверяет валидность дат четверти или возвращает дефолтное значение.
* @param this Класс библиотеки.
* @param termId ID четверти.
*/
export async function termDateValid(
this: NS,
termId: number,
startDate?: Date,
endDate?: Date
) {
// Получаем четверть по id
const term = this.context?.user.terms.find((t) => t.id == termId);
if (!term) throw new Error("Четверть не существует");
// Проверяем даты
const { start, end } = term;
if (!startDate) startDate = start;
if (!endDate) endDate = end;
for (let date of [startDate, endDate])
if (+date < +start && +end < +date)
throw new Error(`Дата выходит за рамки четверти ${termId}`);
// Возвращаем даты
return { start: startDate, end: endDate };
}
/**
* Проверяет id пользователя или возвращает дефолтное
*/
export function studentIdValid(this: NS, id?: number) {
const context = this.context as NonNullable<NS["context"]>;
if (!id) id = context.defaultStudent()?.id;
const data = id && context.getStudentById(id);
if (data) return data;
else throw new Error(`Нет пользователя c id: ${id}`);
}
/**
* Проверяет id класса или возвращает дефолтное
*/
export function classIdValid(this: NS, id?: number) {
const context = this.context as NonNullable<NS["context"]>;
if (!id) id = context.defaultClass()?.id;
const data = id && context.getClassById(id);
if (data) return data;
else throw new Error(`Нет класса c id: ${id}`);
}
/**
* Проверяет id четверти или возвращает дефолтное
*/
export function termIdValid(this: NS, id?: number) {
const context = this.context as NonNullable<NS["context"]>;
if (!id) id = context.defaultTerm()?.id;
const data = id && context.getTermById(id);
if (data) return data;
else throw new Error(`Нет четверти c id: ${id}`);
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},2746:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"dateNum.ts",data:()=>({html:'
/**
* Переводит число `1` в строку "01"
*/
export function num2str(num: string | number) {
if (typeof num == "string") num = parseInt(num);
if (num < 10) return "0" + num;
else return num.toString();
}
/**
* Переводит объект `Date` в строку формата "dd.mm.yy"
*/
export function date2str(date: Date) {
const day = date.getDate();
const month = date.getMonth() + 1;
const year = date.getFullYear() % 100;
return day + "." + month + "." + year;
}
/**
* Переводит строку формата "dd.mm.yy" в объект `Date`
*/
export function str2date(str: string) {
if (!/(d{1,2}.){2}d{2}/.test(str))
throw new Error("Invalid date string: " + str);
const [day, month, year] = (str.match(/d+/g) as string[]).map((s) =>
parseInt(s)
);
const date = new Date();
date.setHours(0, 0, 0, 0);
date.setDate(day);
date.setMonth(month - 1);
date.setFullYear(~~(date.getFullYear() / 100) * 100 + year);
return date;
}
/**
* Переводит строку формата "dd.mm.yy" в строку формата "yyyy-mm-ddT00:00"
*/
export function date2JSON(str: string): string;
/**
* Переводит объект `Date` в строку формата "yyyy-mm-ddT00:00"
*/
export function date2JSON(date: Date): string;
export function date2JSON(arg: string | Date): string {
const date = typeof arg === "string" ? str2date(arg) : arg;
const day = date.getDate();
const year = date.getFullYear();
const month = date.getMonth() + 1;
return `${year}-${num2str(month)}-${num2str(day)}T00:00`;
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},7532:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"parseHtml.ts",data:()=>({html:'
import { parse as p, Options } from "node-html-parser";
function parse(data: string, options?: Partial<Options>) {
return p(data.replace(/&nbsp;/g, " "), options);
}
export function outerHTML(args: { html: string; query: string }) {
const { html, query } = args;
return parse(html).querySelector(query)?.outerHTML ?? html;
}
export function query(html: string, query: string) {
return parse(html).querySelector(query);
}
export function queryAll(html: string, query: string) {
return parse(html).querySelectorAll(query);
}
export function table(args: {
html: string;
query?: string;
removeHeaders?: boolean;
}) {
const { html, query = ".table", removeHeaders = true } = args;
const trs = parse(html).querySelector(query)?.querySelectorAll?.("tr") ?? [];
if (removeHeaders) trs.shift();
return trs;
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},1992:function(s,a,n){"use strict";n.r(a),n.d(a,{default:function(){return i}});var l=n(6252);const t=["innerHTML"];function d(s,a,n,d,e,r){return(0,l.wg)(),(0,l.iD)("div",{innerHTML:s.html},null,8,t)}var e={name:"tsconfig.json",data:()=>({html:'
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"strict": true,
"pretty": true,
"baseUrl": "./",
"outDir": "dist",
"rootDir": "src",
"sourceMap": true,
"declaration": true,
"esModuleInterop": true,
"strictNullChecks": true,
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
],
"@NS": [
"src/NetSchoolApi-safe.ts"
]
}
},
"lib": [
"es2015"
]
}
'})},r=n(3744);const c=(0,r.Z)(e,[["render",d]]);var i=c},2051:function(s,a,n){var l={"./$1github/FUNDING.vue":3690,"./$1github/ISSUE_TEMPLATE/отчет-об-ошибке--bug-report-.vue":9853,"./$1github/workflows/codeql-analysis.vue":1749,"./$1github/workflows/publish-release.vue":6285,"./$1github/workflows/vuepress-deploy.vue":3284,"./$1gitignore.vue":1813,"./$1npmignore.vue":1765,"./CODE_OF_CONDUCT.vue":1105,"./LICENSE.vue":2664,"./README.vue":2353,"./bun.vue":5883,"./docs/examples/assignment.vue":2696,"./docs/examples/assignmentTypes.vue":2035,"./docs/examples/contextAsync.vue":8931,"./docs/examples/controlSession.vue":8506,"./docs/examples/diary.vue":4349,"./docs/examples/downloadFile.vue":5834,"./docs/examples/fetch.vue":653,"./docs/examples/grades.vue":1887,"./docs/examples/info.vue":7948,"./docs/examples/journal.vue":9584,"./docs/examples/photo.vue":5661,"./docs/examples/reportfile.vue":1721,"./docs/examples/scheduleDay.vue":2968,"./docs/examples/scheduleweek.vue":9525,"./docs/examples/sessionValid.vue":9346,"./docs/guide.vue":7577,"./docs/reference.vue":9198,"./package.vue":434,"./src/NetSchoolApi-safe.vue":6747,"./src/NetSchoolApi.vue":8803,"./src/classes/Assignment.vue":4726,"./src/classes/AssignmentInfo.vue":7355,"./src/classes/AssignmentType.vue":3067,"./src/classes/AssignmentTypes.vue":2646,"./src/classes/Attachment.vue":1774,"./src/classes/Client.vue":8246,"./src/classes/Context.vue":2382,"./src/classes/Day.vue":9310,"./src/classes/Diary.vue":3403,"./src/classes/Grades.vue":7403,"./src/classes/Info.vue":8401,"./src/classes/Journal.vue":8064,"./src/classes/Lesson.vue":9429,"./src/classes/ScheduleDay.vue":2210,"./src/classes/ScheduleDayLine.vue":4474,"./src/classes/ScheduleWeek.vue":3455,"./src/classes/ScheduleWeekLine.vue":6534,"./src/classes/Session.vue":630,"./src/index.vue":8528,"./src/methods/assignment.vue":9060,"./src/methods/assignmentTypes.vue":4126,"./src/methods/context/index.vue":3014,"./src/methods/context/methods/context.vue":6807,"./src/methods/context/methods/schoolInfo.vue":7470,"./src/methods/context/methods/studentGrades.vue":117,"./src/methods/context/methods/sysInfo.vue":5074,"./src/methods/diary.vue":6759,"./src/methods/downloadFile.vue":9985,"./src/methods/fetch.vue":7109,"./src/methods/grades.vue":2306,"./src/methods/info.vue":6661,"./src/methods/journal.vue":93,"./src/methods/logIn/index.vue":9821,"./src/methods/logIn/methods/authData.vue":9258,"./src/methods/logIn/methods/passwordHash.vue":7812,"./src/methods/logIn/methods/schoolInfo.vue":3104,"./src/methods/logIn/methods/signIn.vue":7062,"./src/methods/logOut/index.vue":2233,"./src/methods/logOut/signOut.vue":2115,"./src/methods/photo.vue":4905,"./src/methods/reportFile/index.vue":382,"./src/methods/reportFile/legacy.vue":806,"./src/methods/scheduleDay.vue":3897,"./src/methods/scheduleWeek.vue":6020,"./src/methods/sessionValid.vue":2331,"./src/utils/checks.vue":3204,"./src/utils/dateNum.vue":2746,"./src/utils/parseHtml.vue":7532,"./tsconfig.vue":1992};function t(s){var a=d(s);return n(a)}function d(s){if(!n.o(l,s)){var a=new Error("Cannot find module '"+s+"'");throw a.code="MODULE_NOT_FOUND",a}return l[s]}t.keys=function(){return Object.keys(l)},t.resolve=d,s.exports=t,t.id=2051},1455:function(s,a,n){var l={"./pages/$1github/FUNDING":3690,"./pages/$1github/FUNDING.vue":3690,"./pages/$1github/ISSUE_TEMPLATE/отчет-об-ошибке--bug-report-":9853,"./pages/$1github/ISSUE_TEMPLATE/отчет-об-ошибке--bug-report-.vue":9853,"./pages/$1github/workflows/codeql-analysis":1749,"./pages/$1github/workflows/codeql-analysis.vue":1749,"./pages/$1github/workflows/publish-release":6285,"./pages/$1github/workflows/publish-release.vue":6285,"./pages/$1github/workflows/vuepress-deploy":3284,"./pages/$1github/workflows/vuepress-deploy.vue":3284,"./pages/$1gitignore":1813,"./pages/$1gitignore.vue":1813,"./pages/$1npmignore":1765,"./pages/$1npmignore.vue":1765,"./pages/CODE_OF_CONDUCT":1105,"./pages/CODE_OF_CONDUCT.vue":1105,"./pages/LICENSE":2664,"./pages/LICENSE.vue":2664,"./pages/README":2353,"./pages/README.vue":2353,"./pages/bun":5883,"./pages/bun.vue":5883,"./pages/docs/examples/assignment":2696,"./pages/docs/examples/assignment.vue":2696,"./pages/docs/examples/assignmentTypes":2035,"./pages/docs/examples/assignmentTypes.vue":2035,"./pages/docs/examples/contextAsync":8931,"./pages/docs/examples/contextAsync.vue":8931,"./pages/docs/examples/controlSession":8506,"./pages/docs/examples/controlSession.vue":8506,"./pages/docs/examples/diary":4349,"./pages/docs/examples/diary.vue":4349,"./pages/docs/examples/downloadFile":5834,"./pages/docs/examples/downloadFile.vue":5834,"./pages/docs/examples/fetch":653,"./pages/docs/examples/fetch.vue":653,"./pages/docs/examples/grades":1887,"./pages/docs/examples/grades.vue":1887,"./pages/docs/examples/info":7948,"./pages/docs/examples/info.vue":7948,"./pages/docs/examples/journal":9584,"./pages/docs/examples/journal.vue":9584,"./pages/docs/examples/photo":5661,"./pages/docs/examples/photo.vue":5661,"./pages/docs/examples/reportfile":1721,"./pages/docs/examples/reportfile.vue":1721,"./pages/docs/examples/scheduleDay":2968,"./pages/docs/examples/scheduleDay.vue":2968,"./pages/docs/examples/scheduleweek":9525,"./pages/docs/examples/scheduleweek.vue":9525,"./pages/docs/examples/sessionValid":9346,"./pages/docs/examples/sessionValid.vue":9346,"./pages/docs/guide":7577,"./pages/docs/guide.vue":7577,"./pages/docs/reference":9198,"./pages/docs/reference.vue":9198,"./pages/package":434,"./pages/package.vue":434,"./pages/src":8528,"./pages/src/":8528,"./pages/src/NetSchoolApi":8803,"./pages/src/NetSchoolApi-safe":6747,"./pages/src/NetSchoolApi-safe.vue":6747,"./pages/src/NetSchoolApi.vue":8803,"./pages/src/classes/Assignment":4726,"./pages/src/classes/Assignment.vue":4726,"./pages/src/classes/AssignmentInfo":7355,"./pages/src/classes/AssignmentInfo.vue":7355,"./pages/src/classes/AssignmentType":3067,"./pages/src/classes/AssignmentType.vue":3067,"./pages/src/classes/AssignmentTypes":2646,"./pages/src/classes/AssignmentTypes.vue":2646,"./pages/src/classes/Attachment":1774,"./pages/src/classes/Attachment.vue":1774,"./pages/src/classes/Client":8246,"./pages/src/classes/Client.vue":8246,"./pages/src/classes/Context":2382,"./pages/src/classes/Context.vue":2382,"./pages/src/classes/Day":9310,"./pages/src/classes/Day.vue":9310,"./pages/src/classes/Diary":3403,"./pages/src/classes/Diary.vue":3403,"./pages/src/classes/Grades":7403,"./pages/src/classes/Grades.vue":7403,"./pages/src/classes/Info":8401,"./pages/src/classes/Info.vue":8401,"./pages/src/classes/Journal":8064,"./pages/src/classes/Journal.vue":8064,"./pages/src/classes/Lesson":9429,"./pages/src/classes/Lesson.vue":9429,"./pages/src/classes/ScheduleDay":2210,"./pages/src/classes/ScheduleDay.vue":2210,"./pages/src/classes/ScheduleDayLine":4474,"./pages/src/classes/ScheduleDayLine.vue":4474,"./pages/src/classes/ScheduleWeek":3455,"./pages/src/classes/ScheduleWeek.vue":3455,"./pages/src/classes/ScheduleWeekLine":6534,"./pages/src/classes/ScheduleWeekLine.vue":6534,"./pages/src/classes/Session":630,"./pages/src/classes/Session.vue":630,"./pages/src/index":8528,"./pages/src/index.vue":8528,"./pages/src/methods/assignment":9060,"./pages/src/methods/assignment.vue":9060,"./pages/src/methods/assignmentTypes":4126,"./pages/src/methods/assignmentTypes.vue":4126,"./pages/src/methods/context":3014,"./pages/src/methods/context/":3014,"./pages/src/methods/context/index":3014,"./pages/src/methods/context/index.vue":3014,"./pages/src/methods/context/methods/context":6807,"./pages/src/methods/context/methods/context.vue":6807,"./pages/src/methods/context/methods/schoolInfo":7470,"./pages/src/methods/context/methods/schoolInfo.vue":7470,"./pages/src/methods/context/methods/studentGrades":117,"./pages/src/methods/context/methods/studentGrades.vue":117,"./pages/src/methods/context/methods/sysInfo":5074,"./pages/src/methods/context/methods/sysInfo.vue":5074,"./pages/src/methods/diary":6759,"./pages/src/methods/diary.vue":6759,"./pages/src/methods/downloadFile":9985,"./pages/src/methods/downloadFile.vue":9985,"./pages/src/methods/fetch":7109,"./pages/src/methods/fetch.vue":7109,"./pages/src/methods/grades":2306,"./pages/src/methods/grades.vue":2306,"./pages/src/methods/info":6661,"./pages/src/methods/info.vue":6661,"./pages/src/methods/journal":93,"./pages/src/methods/journal.vue":93,"./pages/src/methods/logIn":9821,"./pages/src/methods/logIn/":9821,"./pages/src/methods/logIn/index":9821,"./pages/src/methods/logIn/index.vue":9821,"./pages/src/methods/logIn/methods/authData":9258,"./pages/src/methods/logIn/methods/authData.vue":9258,"./pages/src/methods/logIn/methods/passwordHash":7812,"./pages/src/methods/logIn/methods/passwordHash.vue":7812,"./pages/src/methods/logIn/methods/schoolInfo":3104,"./pages/src/methods/logIn/methods/schoolInfo.vue":3104,"./pages/src/methods/logIn/methods/signIn":7062,"./pages/src/methods/logIn/methods/signIn.vue":7062,"./pages/src/methods/logOut":2233,"./pages/src/methods/logOut/":2233,"./pages/src/methods/logOut/index":2233,"./pages/src/methods/logOut/index.vue":2233,"./pages/src/methods/logOut/signOut":2115,"./pages/src/methods/logOut/signOut.vue":2115,"./pages/src/methods/photo":4905,"./pages/src/methods/photo.vue":4905,"./pages/src/methods/reportFile":382,"./pages/src/methods/reportFile/":382,"./pages/src/methods/reportFile/index":382,"./pages/src/methods/reportFile/index.vue":382,"./pages/src/methods/reportFile/legacy":806,"./pages/src/methods/reportFile/legacy.vue":806,"./pages/src/methods/scheduleDay":3897,"./pages/src/methods/scheduleDay.vue":3897,"./pages/src/methods/scheduleWeek":6020,"./pages/src/methods/scheduleWeek.vue":6020,"./pages/src/methods/sessionValid":2331,"./pages/src/methods/sessionValid.vue":2331,"./pages/src/utils/checks":3204,"./pages/src/utils/checks.vue":3204,"./pages/src/utils/dateNum":2746,"./pages/src/utils/dateNum.vue":2746,"./pages/src/utils/parseHtml":7532,"./pages/src/utils/parseHtml.vue":7532,"./pages/tsconfig":1992,"./pages/tsconfig.vue":1992};function t(s){return Promise.resolve().then((function(){if(!n.o(l,s)){var a=new Error("Cannot find module '"+s+"'");throw a.code="MODULE_NOT_FOUND",a}var t=l[s];return n(t)}))}t.keys=function(){return Object.keys(l)},t.id=1455,s.exports=t},22:function(s,a,n){var l={"./pages/$1github/FUNDING":3690,"./pages/$1github/FUNDING.vue":3690,"./pages/$1github/ISSUE_TEMPLATE/отчет-об-ошибке--bug-report-":9853,"./pages/$1github/ISSUE_TEMPLATE/отчет-об-ошибке--bug-report-.vue":9853,"./pages/$1github/workflows/codeql-analysis":1749,"./pages/$1github/workflows/codeql-analysis.vue":1749,"./pages/$1github/workflows/publish-release":6285,"./pages/$1github/workflows/publish-release.vue":6285,"./pages/$1github/workflows/vuepress-deploy":3284,"./pages/$1github/workflows/vuepress-deploy.vue":3284,"./pages/$1gitignore":1813,"./pages/$1gitignore.vue":1813,"./pages/$1npmignore":1765,"./pages/$1npmignore.vue":1765,"./pages/CODE_OF_CONDUCT":1105,"./pages/CODE_OF_CONDUCT.vue":1105,"./pages/LICENSE":2664,"./pages/LICENSE.vue":2664,"./pages/README":2353,"./pages/README.vue":2353,"./pages/bun":5883,"./pages/bun.vue":5883,"./pages/docs/examples/assignment":2696,"./pages/docs/examples/assignment.vue":2696,"./pages/docs/examples/assignmentTypes":2035,"./pages/docs/examples/assignmentTypes.vue":2035,"./pages/docs/examples/contextAsync":8931,"./pages/docs/examples/contextAsync.vue":8931,"./pages/docs/examples/controlSession":8506,"./pages/docs/examples/controlSession.vue":8506,"./pages/docs/examples/diary":4349,"./pages/docs/examples/diary.vue":4349,"./pages/docs/examples/downloadFile":5834,"./pages/docs/examples/downloadFile.vue":5834,"./pages/docs/examples/fetch":653,"./pages/docs/examples/fetch.vue":653,"./pages/docs/examples/grades":1887,"./pages/docs/examples/grades.vue":1887,"./pages/docs/examples/info":7948,"./pages/docs/examples/info.vue":7948,"./pages/docs/examples/journal":9584,"./pages/docs/examples/journal.vue":9584,"./pages/docs/examples/photo":5661,"./pages/docs/examples/photo.vue":5661,"./pages/docs/examples/reportfile":1721,"./pages/docs/examples/reportfile.vue":1721,"./pages/docs/examples/scheduleDay":2968,"./pages/docs/examples/scheduleDay.vue":2968,"./pages/docs/examples/scheduleweek":9525,"./pages/docs/examples/scheduleweek.vue":9525,"./pages/docs/examples/sessionValid":9346,"./pages/docs/examples/sessionValid.vue":9346,"./pages/docs/guide":7577,"./pages/docs/guide.vue":7577,"./pages/docs/reference":9198,"./pages/docs/reference.vue":9198,"./pages/package":434,"./pages/package.vue":434,"./pages/src":8528,"./pages/src/":8528,"./pages/src/NetSchoolApi":8803,"./pages/src/NetSchoolApi-safe":6747,"./pages/src/NetSchoolApi-safe.vue":6747,"./pages/src/NetSchoolApi.vue":8803,"./pages/src/classes/Assignment":4726,"./pages/src/classes/Assignment.vue":4726,"./pages/src/classes/AssignmentInfo":7355,"./pages/src/classes/AssignmentInfo.vue":7355,"./pages/src/classes/AssignmentType":3067,"./pages/src/classes/AssignmentType.vue":3067,"./pages/src/classes/AssignmentTypes":2646,"./pages/src/classes/AssignmentTypes.vue":2646,"./pages/src/classes/Attachment":1774,"./pages/src/classes/Attachment.vue":1774,"./pages/src/classes/Client":8246,"./pages/src/classes/Client.vue":8246,"./pages/src/classes/Context":2382,"./pages/src/classes/Context.vue":2382,"./pages/src/classes/Day":9310,"./pages/src/classes/Day.vue":9310,"./pages/src/classes/Diary":3403,"./pages/src/classes/Diary.vue":3403,"./pages/src/classes/Grades":7403,"./pages/src/classes/Grades.vue":7403,"./pages/src/classes/Info":8401,"./pages/src/classes/Info.vue":8401,"./pages/src/classes/Journal":8064,"./pages/src/classes/Journal.vue":8064,"./pages/src/classes/Lesson":9429,"./pages/src/classes/Lesson.vue":9429,"./pages/src/classes/ScheduleDay":2210,"./pages/src/classes/ScheduleDay.vue":2210,"./pages/src/classes/ScheduleDayLine":4474,"./pages/src/classes/ScheduleDayLine.vue":4474,"./pages/src/classes/ScheduleWeek":3455,"./pages/src/classes/ScheduleWeek.vue":3455,"./pages/src/classes/ScheduleWeekLine":6534,"./pages/src/classes/ScheduleWeekLine.vue":6534,"./pages/src/classes/Session":630,"./pages/src/classes/Session.vue":630,"./pages/src/index":8528,"./pages/src/index.vue":8528,"./pages/src/methods/assignment":9060,"./pages/src/methods/assignment.vue":9060,"./pages/src/methods/assignmentTypes":4126,"./pages/src/methods/assignmentTypes.vue":4126,"./pages/src/methods/context":3014,"./pages/src/methods/context/":3014,"./pages/src/methods/context/index":3014,"./pages/src/methods/context/index.vue":3014,"./pages/src/methods/context/methods/context":6807,"./pages/src/methods/context/methods/context.vue":6807,"./pages/src/methods/context/methods/schoolInfo":7470,"./pages/src/methods/context/methods/schoolInfo.vue":7470,"./pages/src/methods/context/methods/studentGrades":117,"./pages/src/methods/context/methods/studentGrades.vue":117,"./pages/src/methods/context/methods/sysInfo":5074,"./pages/src/methods/context/methods/sysInfo.vue":5074,"./pages/src/methods/diary":6759,"./pages/src/methods/diary.vue":6759,"./pages/src/methods/downloadFile":9985,"./pages/src/methods/downloadFile.vue":9985,"./pages/src/methods/fetch":7109,"./pages/src/methods/fetch.vue":7109,"./pages/src/methods/grades":2306,"./pages/src/methods/grades.vue":2306,"./pages/src/methods/info":6661,"./pages/src/methods/info.vue":6661,"./pages/src/methods/journal":93,"./pages/src/methods/journal.vue":93,"./pages/src/methods/logIn":9821,"./pages/src/methods/logIn/":9821,"./pages/src/methods/logIn/index":9821,"./pages/src/methods/logIn/index.vue":9821,"./pages/src/methods/logIn/methods/authData":9258,"./pages/src/methods/logIn/methods/authData.vue":9258,"./pages/src/methods/logIn/methods/passwordHash":7812,"./pages/src/methods/logIn/methods/passwordHash.vue":7812,"./pages/src/methods/logIn/methods/schoolInfo":3104,"./pages/src/methods/logIn/methods/schoolInfo.vue":3104,"./pages/src/methods/logIn/methods/signIn":7062,"./pages/src/methods/logIn/methods/signIn.vue":7062,"./pages/src/methods/logOut":2233,"./pages/src/methods/logOut/":2233,"./pages/src/methods/logOut/index":2233,"./pages/src/methods/logOut/index.vue":2233,"./pages/src/methods/logOut/signOut":2115,"./pages/src/methods/logOut/signOut.vue":2115,"./pages/src/methods/photo":4905,"./pages/src/methods/photo.vue":4905,"./pages/src/methods/reportFile":382,"./pages/src/methods/reportFile/":382,"./pages/src/methods/reportFile/index":382,"./pages/src/methods/reportFile/index.vue":382,"./pages/src/methods/reportFile/legacy":806,"./pages/src/methods/reportFile/legacy.vue":806,"./pages/src/methods/scheduleDay":3897,"./pages/src/methods/scheduleDay.vue":3897,"./pages/src/methods/scheduleWeek":6020,"./pages/src/methods/scheduleWeek.vue":6020,"./pages/src/methods/sessionValid":2331,"./pages/src/methods/sessionValid.vue":2331,"./pages/src/utils/checks":3204,"./pages/src/utils/checks.vue":3204,"./pages/src/utils/dateNum":2746,"./pages/src/utils/dateNum.vue":2746,"./pages/src/utils/parseHtml":7532,"./pages/src/utils/parseHtml.vue":7532,"./pages/tsconfig":1992,"./pages/tsconfig.vue":1992};function t(s){var a=d(s);return n(a)}function d(s){if(!n.o(l,s)){var a=new Error("Cannot find module '"+s+"'");throw a.code="MODULE_NOT_FOUND",a}return l[s]}t.keys=function(){return Object.keys(l)},t.resolve=d,s.exports=t,t.id=22}},a={};function n(l){var t=a[l];if(void 0!==t)return t.exports;var d=a[l]={exports:{}};return s[l](d,d.exports,n),d.exports}n.m=s,function(){var s=[];n.O=function(a,l,t,d){if(!l){var e=1/0;for(b=0;b=d)&&Object.keys(n.O).every((function(s){return n.O[s](l[c])}))?l.splice(c--,1):(r=!1,d0&&s[b-1][2]>d;b--)s[b]=s[b-1];s[b]=[l,t,d]}}(),function(){n.d=function(s,a){for(var l in a)n.o(a,l)&&!n.o(s,l)&&Object.defineProperty(s,l,{enumerable:!0,get:a[l]})}}(),function(){n.f={},n.e=function(s){return Promise.all(Object.keys(n.f).reduce((function(a,l){return n.f[l](s,a),a}),[]))}}(),function(){n.u=function(s){return"js/"+s+"."+{364:"1b61b8d2",614:"dc93d85f",801:"b4509d2d",985:"4bad0315"}[s]+".js"}}(),function(){n.miniCssF=function(s){return"css/"+s+"."+{614:"03fab845",801:"e38130a9",985:"f2e8cb0c"}[s]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(s){if("object"===typeof window)return window}}()}(),function(){n.o=function(s,a){return Object.prototype.hasOwnProperty.call(s,a)}}(),function(){var s={},a="vdocs:";n.l=function(l,t,d,e){if(s[l])s[l].push(t);else{var r,c;if(void 0!==d)for(var i=document.getElementsByTagName("script"),b=0;b{const t=new Set(e);return t.w=0,t.n=0,t},l=e=>(e.w&h)>0,u=e=>(e.n&h)>0,a=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{("length"===n||n>=e)&&u.push(t)}))}else switch(void 0!==n&&u.push(l.get(n)),t){case"add":(0,r.kJ)(e)?(0,r.S0)(n)&&u.push(l.get("length")):(u.push(l.get(m)),(0,r._N)(e)&&u.push(l.get(y)));break;case"delete":(0,r.kJ)(e)||(u.push(l.get(m)),(0,r._N)(e)&&u.push(l.get(y)));break;case"set":(0,r._N)(e)&&u.push(l.get(m));break}if(1===u.length)u[0]&&j(u[0]);else{const e=[];for(const t of u)t&&e.push(...t);j(s(e))}}function j(e,t){const n=(0,r.kJ)(e)?e:[...e];for(const r of n)r.computed&&P(r,t);for(const r of n)r.computed||P(r,t)}function P(e,t){(e!==g||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const R=(0,r.fY)("__proto__,__v_isRef,__isVue"),T=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(r.yk)),A=$(),F=$(!1,!0),I=$(!0),L=M();function M(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=je(this);for(let t=0,o=this.length;t{e[t]=function(...e){x();const n=je(this)[t].apply(this,e);return S(),n}})),e}function $(e=!1,t=!1){return function(n,o,i){if("__v_isReactive"===o)return!e;if("__v_isReadonly"===o)return e;if("__v_isShallow"===o)return t;if("__v_raw"===o&&i===(e?t?me:ge:t?ve:he).get(n))return n;const c=(0,r.kJ)(n);if(!e&&c&&(0,r.RI)(L,o))return Reflect.get(L,o,i);const s=Reflect.get(n,o,i);return((0,r.yk)(o)?T.has(o):R(o))?s:(e||O(n,"get",o),t?s:Ie(s)?c&&(0,r.S0)(o)?s:s.value:(0,r.Kn)(s)?e?ke(s):_e(s):s)}}const N=D(),U=D(!0);function D(e=!1){return function(t,n,o,i){let c=t[n];if(Oe(c)&&Ie(c)&&!Ie(o))return!1;if(!e&&(Ce(o)||Oe(o)||(c=je(c),o=je(o)),!(0,r.kJ)(t)&&Ie(c)&&!Ie(o)))return c.value=o,!0;const s=(0,r.kJ)(t)&&(0,r.S0)(n)?Number(n)e,K=e=>Reflect.getPrototypeOf(e);function z(e,t,n=!1,r=!1){e=e["__v_raw"];const o=je(e),i=je(t);n||(t!==i&&O(o,"get",t),O(o,"get",i));const{has:c}=K(o),s=r?G:n?Te:Re;return c.call(o,t)?s(e.get(t)):c.call(o,i)?s(e.get(i)):void(e!==o&&e.get(t))}function X(e,t=!1){const n=this["__v_raw"],r=je(n),o=je(e);return t||(e!==o&&O(r,"has",e),O(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Z(e,t=!1){return e=e["__v_raw"],!t&&O(je(e),"iterate",m),Reflect.get(e,"size",e)}function Y(e){e=je(e);const t=je(this),n=K(t),r=n.has.call(t,e);return r||(t.add(e),E(t,"add",e,e)),this}function Q(e,t){t=je(t);const n=je(this),{has:o,get:i}=K(n);let c=o.call(n,e);c||(e=je(e),c=o.call(n,e));const s=i.call(n,e);return n.set(e,t),c?(0,r.aU)(t,s)&&E(n,"set",e,t,s):E(n,"add",e,t),this}function ee(e){const t=je(this),{has:n,get:r}=K(t);let o=n.call(t,e);o||(e=je(e),o=n.call(t,e));const i=r?r.call(t,e):void 0,c=t.delete(e);return o&&E(t,"delete",e,void 0,i),c}function te(){const e=je(this),t=0!==e.size,n=void 0,r=e.clear();return t&&E(e,"clear",void 0,void 0,n),r}function ne(e,t){return function(n,r){const o=this,i=o["__v_raw"],c=je(i),s=t?G:e?Te:Re;return!e&&O(c,"iterate",m),i.forEach(((e,t)=>n.call(r,s(e),s(t),o)))}}function re(e,t,n){return function(...o){const i=this["__v_raw"],c=je(i),s=(0,r._N)(c),l="entries"===e||e===Symbol.iterator&&s,u="keys"===e&&s,a=i[e](...o),f=n?G:t?Te:Re;return!t&&O(c,"iterate",u?y:m),{next(){const{value:e,done:t}=a.next();return t?{value:e,done:t}:{value:l?[f(e[0]),f(e[1])]:f(e),done:t}},[Symbol.iterator](){return this}}}}function oe(e){return function(...t){return"delete"!==e&&this}}function ie(){const e={get(e){return z(this,e)},get size(){return Z(this)},has:X,add:Y,set:Q,delete:ee,clear:te,forEach:ne(!1,!1)},t={get(e){return z(this,e,!1,!0)},get size(){return Z(this)},has:X,add:Y,set:Q,delete:ee,clear:te,forEach:ne(!1,!0)},n={get(e){return z(this,e,!0)},get size(){return Z(this,!0)},has(e){return X.call(this,e,!0)},add:oe("add"),set:oe("set"),delete:oe("delete"),clear:oe("clear"),forEach:ne(!0,!1)},r={get(e){return z(this,e,!0,!0)},get size(){return Z(this,!0)},has(e){return X.call(this,e,!0)},add:oe("add"),set:oe("set"),delete:oe("delete"),clear:oe("clear"),forEach:ne(!0,!0)},o=["keys","values","entries",Symbol.iterator];return o.forEach((o=>{e[o]=re(o,!1,!1),n[o]=re(o,!0,!1),t[o]=re(o,!1,!0),r[o]=re(o,!0,!0)})),[e,n,t,r]}const[ce,se,le,ue]=ie();function ae(e,t){const n=t?e?ue:le:e?se:ce;return(t,o,i)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get((0,r.RI)(n,o)&&o in t?n:t,o,i)}const fe={get:ae(!1,!1)},pe={get:ae(!1,!0)},de={get:ae(!0,!1)};const he=new WeakMap,ve=new WeakMap,ge=new WeakMap,me=new WeakMap;function ye(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function be(e){return e["__v_skip"]||!Object.isExtensible(e)?0:ye((0,r.W7)(e))}function _e(e){return Oe(e)?e:xe(e,!1,q,fe,he)}function we(e){return xe(e,!1,V,pe,ve)}function ke(e){return xe(e,!0,W,de,ge)}function xe(e,t,n,o,i){if(!(0,r.Kn)(e))return e;if(e["__v_raw"]&&(!t||!e["__v_isReactive"]))return e;const c=i.get(e);if(c)return c;const s=be(e);if(0===s)return e;const l=new Proxy(e,2===s?o:n);return i.set(e,l),l}function Se(e){return Oe(e)?Se(e["__v_raw"]):!(!e||!e["__v_isReactive"])}function Oe(e){return!(!e||!e["__v_isReadonly"])}function Ce(e){return!(!e||!e["__v_isShallow"])}function Ee(e){return Se(e)||Oe(e)}function je(e){const t=e&&e["__v_raw"];return t?je(t):e}function Pe(e){return(0,r.Nj)(e,"__v_skip",!0),e}const Re=e=>(0,r.Kn)(e)?_e(e):e,Te=e=>(0,r.Kn)(e)?ke(e):e;function Ae(e){w&&g&&(e=je(e),C(e.dep||(e.dep=s())))}function Fe(e,t){e=je(e),e.dep&&j(e.dep)}function Ie(e){return!(!e||!0!==e.__v_isRef)}function Le(e){return $e(e,!1)}function Me(e){return $e(e,!0)}function $e(e,t){return Ie(e)?e:new Ne(e,t)}class Ne{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:je(e),this._value=t?e:Re(e)}get value(){return Ae(this),this._value}set value(e){const t=this.__v_isShallow||Ce(e)||Oe(e);e=t?e:je(e),(0,r.aU)(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Re(e),Fe(this,e))}}function Ue(e){return Ie(e)?e.value:e}const De={get:(e,t,n)=>Ue(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ie(o)&&!Ie(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Je(e){return Se(e)?e:new Proxy(e,De)}var Be;class He{constructor(e,t,n,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[Be]=!1,this._dirty=!0,this.effect=new b(e,(()=>{this._dirty||(this._dirty=!0,Fe(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!r,this["__v_isReadonly"]=n}get value(){const e=je(this);return Ae(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function qe(e,t,n=!1){let o,i;const c=(0,r.mf)(e);c?(o=e,i=r.dG):(o=e.get,i=e.set);const s=new He(o,i,c||!i,n);return s}Be="__v_isReadonly"},6252:function(e,t,n){"use strict";n.d(t,{$d:function(){return c},FN:function(){return mn},Fl:function(){return Fn},HY:function(){return Lt},JJ:function(){return q},Ko:function(){return De},LL:function(){return $e},P$:function(){return te},Q6:function(){return se},RC:function(){return ae},U2:function(){return re},Uk:function(){return on},Us:function(){return Pt},WI:function(){return Je},Wm:function(){return en},Y3:function(){return y},Y8:function(){return Y},YP:function(){return G},_:function(){return Qt},aZ:function(){return le},dG:function(){return fn},f3:function(){return W},h:function(){return In},iD:function(){return Vt},ic:function(){return Oe},j4:function(){return Gt},kq:function(){return sn},nK:function(){return ce},uE:function(){return cn},up:function(){return Le},w5:function(){return L},wg:function(){return Jt},wy:function(){return Ae}});var r=n(2262),o=n(3577);function i(e,t,n,r){let o;try{o=r?e(...r):e()}catch(i){s(i,t,n)}return o}function c(e,t,n,r){if((0,o.mf)(e)){const c=i(e,t,n,r);return c&&(0,o.tI)(c)&&c.catch((e=>{s(e,t,n)})),c}const l=[];for(let o=0;o>>1,o=C(f[r]);op&&f.splice(t,1)}function x(e){(0,o.kJ)(e)?d.push(...e):h&&h.includes(e,e.allowRecurse?v+1:v)||d.push(e),w()}function S(e,t=(u?p+1:0)){for(0;tC(e)-C(t))),v=0;vnull==e.id?1/0:e.id,E=(e,t)=>{const n=C(e)-C(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function j(e){a=!1,u=!0,f.sort(E);o.dG;try{for(p=0;p(0,o.HD)(e)?e.trim():e))),t&&(i=n.map(o.He))}let u;let a=r[u=(0,o.hR)(t)]||r[u=(0,o.hR)((0,o._A)(t))];!a&&s&&(a=r[u=(0,o.hR)((0,o.rs)(t))]),a&&c(a,e,6,i);const f=r[u+"Once"];if(f){if(e.emitted){if(e.emitted[u])return}else e.emitted={};e.emitted[u]=!0,c(f,e,6,i)}}function R(e,t,n=!1){const r=t.emitsCache,i=r.get(e);if(void 0!==i)return i;const c=e.emits;let s={},l=!1;if(!(0,o.mf)(e)){const r=e=>{const n=R(e,t,!0);n&&(l=!0,(0,o.l7)(s,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return c||l?((0,o.kJ)(c)?c.forEach((e=>s[e]=null)):(0,o.l7)(s,c),(0,o.Kn)(e)&&r.set(e,s),s):((0,o.Kn)(e)&&r.set(e,null),null)}function T(e,t){return!(!e||!(0,o.F7)(t))&&(t=t.slice(2).replace(/Once$/,""),(0,o.RI)(e,t[0].toLowerCase()+t.slice(1))||(0,o.RI)(e,(0,o.rs)(t))||(0,o.RI)(e,t))}let A=null,F=null;function I(e){const t=A;return A=e,F=e&&e.type.__scopeId||null,t}function L(e,t=A,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r._d&&qt(-1);const o=I(t);let i;try{i=e(...n)}finally{I(o),r._d&&qt(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function M(e){const{type:t,vnode:n,proxy:r,withProxy:i,props:c,propsOptions:[l],slots:u,attrs:a,emit:f,render:p,renderCache:d,data:h,setupState:v,ctx:g,inheritAttrs:m}=e;let y,b;const _=I(e);try{if(4&n.shapeFlag){const e=i||r;y=ln(p.call(e,e,d,c,v,h,g)),b=a}else{const e=t;0,y=ln(e.length>1?e(c,{attrs:a,slots:u,emit:f}):e(c,null)),b=t.props?a:$(a)}}catch(k){Ut.length=0,s(k,e,1),y=en($t)}let w=y;if(b&&!1!==m){const e=Object.keys(b),{shapeFlag:t}=w;e.length&&7&t&&(l&&e.some(o.tR)&&(b=N(b,l)),w=rn(w,b))}return n.dirs&&(w=rn(w),w.dirs=w.dirs?w.dirs.concat(n.dirs):n.dirs),n.transition&&(w.transition=n.transition),y=w,I(_),y}const $=e=>{let t;for(const n in e)("class"===n||"style"===n||(0,o.F7)(n))&&((t||(t={}))[n]=e[n]);return t},N=(e,t)=>{const n={};for(const r in e)(0,o.tR)(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function U(e,t,n){const{props:r,children:o,component:i}=e,{props:c,children:s,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&l>=0))return!(!o&&!s||s&&s.$stable)||r!==c&&(r?!c||D(r,c,u):!!c);if(1024&l)return!0;if(16&l)return r?D(r,c,u):!!c;if(8&l){const e=t.dynamicProps;for(let t=0;te.__isSuspense;function H(e,t){t&&t.pendingBranch?(0,o.kJ)(e)?t.effects.push(...e):t.effects.push(e):x(e)}function q(e,t){if(gn){let n=gn.provides;const r=gn.parent&&gn.parent.provides;r===n&&(n=gn.provides=Object.create(r)),n[e]=t}else 0}function W(e,t,n=!1){const r=gn||A;if(r){const i=null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(i&&e in i)return i[e];if(arguments.length>1)return n&&(0,o.mf)(t)?t.call(r.proxy):t}else 0}const V={};function G(e,t,n){return K(e,t,n)}function K(e,t,{immediate:n,deep:s,flush:l,onTrack:u,onTrigger:a}=o.kT){const f=gn;let p,d,h=!1,v=!1;if((0,r.dq)(e)?(p=()=>e.value,h=(0,r.yT)(e)):(0,r.PG)(e)?(p=()=>e,s=!0):(0,o.kJ)(e)?(v=!0,h=e.some((e=>(0,r.PG)(e)||(0,r.yT)(e))),p=()=>e.map((e=>(0,r.dq)(e)?e.value:(0,r.PG)(e)?Z(e):(0,o.mf)(e)?i(e,f,2):void 0))):p=(0,o.mf)(e)?t?()=>i(e,f,2):()=>{if(!f||!f.isUnmounted)return d&&d(),c(e,f,3,[m])}:o.dG,t&&s){const e=p;p=()=>Z(e())}let g,m=e=>{d=k.onStop=()=>{i(e,f,4)}};if(xn){if(m=o.dG,t?n&&c(t,f,3,[p(),v?[]:void 0,m]):p(),"sync"!==l)return o.dG;{const e=Mn();g=e.__watcherHandles||(e.__watcherHandles=[])}}let y=v?new Array(e.length).fill(V):V;const b=()=>{if(k.active)if(t){const e=k.run();(s||h||(v?e.some(((e,t)=>(0,o.aU)(e,y[t]))):(0,o.aU)(e,y)))&&(d&&d(),c(t,f,3,[e,y===V?void 0:v&&y[0]===V?[]:y,m]),y=e)}else k.run()};let w;b.allowRecurse=!!t,"sync"===l?w=b:"post"===l?w=()=>jt(b,f&&f.suspense):(b.pre=!0,f&&(b.id=f.uid),w=()=>_(b));const k=new r.qq(p,w);t?n?b():y=k.run():"post"===l?jt(k.run.bind(k),f&&f.suspense):k.run();const x=()=>{k.stop(),f&&f.scope&&(0,o.Od)(f.scope.effects,k)};return g&&g.push(x),x}function z(e,t,n){const r=this.proxy,i=(0,o.HD)(e)?e.includes(".")?X(r,e):()=>r[e]:e.bind(r,r);let c;(0,o.mf)(t)?c=t:(c=t.handler,n=t);const s=gn;yn(this);const l=K(i,c.bind(r),n);return s?yn(s):bn(),l}function X(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e{Z(e,t)}));else if((0,o.PO)(e))for(const n in e)Z(e[n],t);return e}function Y(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return xe((()=>{e.isMounted=!0})),Ce((()=>{e.isUnmounting=!0})),e}const Q=[Function,Array],ee={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Q,onEnter:Q,onAfterEnter:Q,onEnterCancelled:Q,onBeforeLeave:Q,onLeave:Q,onAfterLeave:Q,onLeaveCancelled:Q,onBeforeAppear:Q,onAppear:Q,onAfterAppear:Q,onAppearCancelled:Q},setup(e,{slots:t}){const n=mn(),o=Y();let i;return()=>{const c=t.default&&se(t.default(),!0);if(!c||!c.length)return;let s=c[0];if(c.length>1){let e=!1;for(const t of c)if(t.type!==$t){0,s=t,e=!0;break}}const l=(0,r.IU)(e),{mode:u}=l;if(o.isLeaving)return oe(s);const a=ie(s);if(!a)return oe(s);const f=re(a,l,o,n);ce(a,f);const p=n.subTree,d=p&&ie(p);let h=!1;const{getTransitionKey:v}=a.type;if(v){const e=v();void 0===i?i=e:e!==i&&(i=e,h=!0)}if(d&&d.type!==$t&&(!zt(a,d)||h)){const e=re(d,l,o,n);if(ce(d,e),"out-in"===u)return o.isLeaving=!0,e.afterLeave=()=>{o.isLeaving=!1,!1!==n.update.active&&n.update()},oe(s);"in-out"===u&&a.type!==$t&&(e.delayLeave=(e,t,n)=>{const r=ne(o,d);r[String(d.key)]=d,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=n})}return s}}},te=ee;function ne(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function re(e,t,n,r){const{appear:i,mode:s,persisted:l=!1,onBeforeEnter:u,onEnter:a,onAfterEnter:f,onEnterCancelled:p,onBeforeLeave:d,onLeave:h,onAfterLeave:v,onLeaveCancelled:g,onBeforeAppear:m,onAppear:y,onAfterAppear:b,onAppearCancelled:_}=t,w=String(e.key),k=ne(n,e),x=(e,t)=>{e&&c(e,r,9,t)},S=(e,t)=>{const n=t[1];x(e,t),(0,o.kJ)(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},O={mode:s,persisted:l,beforeEnter(t){let r=u;if(!n.isMounted){if(!i)return;r=m||u}t._leaveCb&&t._leaveCb(!0);const o=k[w];o&&zt(e,o)&&o.el._leaveCb&&o.el._leaveCb(),x(r,[t])},enter(e){let t=a,r=f,o=p;if(!n.isMounted){if(!i)return;t=y||a,r=b||f,o=_||p}let c=!1;const s=e._enterCb=t=>{c||(c=!0,x(t?o:r,[e]),O.delayedLeave&&O.delayedLeave(),e._enterCb=void 0)};t?S(t,[e,s]):s()},leave(t,r){const o=String(e.key);if(t._enterCb&&t._enterCb(!0),n.isUnmounting)return r();x(d,[t]);let i=!1;const c=t._leaveCb=n=>{i||(i=!0,r(),x(n?g:v,[t]),t._leaveCb=void 0,k[o]===e&&delete k[o])};k[o]=e,h?S(h,[t,c]):c()},clone(e){return re(e,t,n,r)}};return O}function oe(e){if(pe(e))return e=rn(e),e.children=null,e}function ie(e){return pe(e)?e.children?e.children[0]:void 0:e}function ce(e,t){6&e.shapeFlag&&e.component?ce(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function se(e,t=!1,n){let r=[],o=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;function ae(e){(0,o.mf)(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:i,delay:c=200,timeout:l,suspensible:u=!0,onError:a}=e;let f,p=null,d=0;const h=()=>(d++,p=null,v()),v=()=>{let e;return p||(e=p=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),a)return new Promise(((t,n)=>{const r=()=>t(h()),o=()=>n(e);a(e,r,o,d+1)}));throw e})).then((t=>e!==p&&p?p:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),f=t,t))))};return le({name:"AsyncComponentWrapper",__asyncLoader:v,get __asyncResolved(){return f},setup(){const e=gn;if(f)return()=>fe(f,e);const t=t=>{p=null,s(t,e,13,!i)};if(u&&e.suspense||xn)return v().then((t=>()=>fe(t,e))).catch((e=>(t(e),()=>i?en(i,{error:e}):null)));const o=(0,r.iH)(!1),a=(0,r.iH)(),d=(0,r.iH)(!!c);return c&&setTimeout((()=>{d.value=!1}),c),null!=l&&setTimeout((()=>{if(!o.value&&!a.value){const e=new Error(`Async component timed out after ${l}ms.`);t(e),a.value=e}}),l),v().then((()=>{o.value=!0,e.parent&&pe(e.parent.vnode)&&_(e.parent.update)})).catch((e=>{t(e),a.value=e})),()=>o.value&&f?fe(f,e):a.value&&i?en(i,{error:a.value}):n&&!d.value?en(n):void 0}})}function fe(e,t){const{ref:n,props:r,children:o,ce:i}=t.vnode,c=en(e,r,o);return c.ref=n,c.ce=i,delete t.vnode.ce,c}const pe=e=>e.type.__isKeepAlive;RegExp,RegExp;function de(e,t){return(0,o.kJ)(e)?e.some((e=>de(e,t))):(0,o.HD)(e)?e.split(",").includes(t):!!e.test&&e.test(t)}function he(e,t){ge(e,"a",t)}function ve(e,t){ge(e,"da",t)}function ge(e,t,n=gn){const r=e.__wdc||(e.__wdc=()=>{let t=n;while(t){if(t.isDeactivated)return;t=t.parent}return e()});if(_e(t,r,n),n){let e=n.parent;while(e&&e.parent)pe(e.parent.vnode)&&me(r,t,n,e),e=e.parent}}function me(e,t,n,r){const i=_e(t,e,r,!0);Ee((()=>{(0,o.Od)(r[t],i)}),n)}function ye(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function be(e){return 128&e.shapeFlag?e.ssContent:e}function _e(e,t,n=gn,o=!1){if(n){const i=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;(0,r.Jd)(),yn(n);const i=c(t,n,e,o);return bn(),(0,r.lk)(),i});return o?i.unshift(s):i.push(s),s}}const we=e=>(t,n=gn)=>(!xn||"sp"===e)&&_e(e,((...e)=>t(...e)),n),ke=we("bm"),xe=we("m"),Se=we("bu"),Oe=we("u"),Ce=we("bum"),Ee=we("um"),je=we("sp"),Pe=we("rtg"),Re=we("rtc");function Te(e,t=gn){_e("ec",e,t)}function Ae(e,t){const n=A;if(null===n)return e;const r=Rn(n)||n.proxy,i=e.dirs||(e.dirs=[]);for(let c=0;ct(e,n,void 0,c&&c[n])));else{const n=Object.keys(e);i=new Array(n.length);for(let r=0,o=n.length;r!Kt(e)||e.type!==$t&&!(e.type===Lt&&!Be(e.children))))?e:null}const He=e=>e?_n(e)?Rn(e)||e.proxy:He(e.parent):null,qe=(0,o.l7)(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>He(e.parent),$root:e=>He(e.root),$emit:e=>e.emit,$options:e=>Ye(e),$forceUpdate:e=>e.f||(e.f=()=>_(e.update)),$nextTick:e=>e.n||(e.n=y.bind(e.proxy)),$watch:e=>z.bind(e)}),We=(e,t)=>e!==o.kT&&!e.__isScriptSetup&&(0,o.RI)(e,t),Ve={get({_:e},t){const{ctx:n,setupState:i,data:c,props:s,accessCache:l,type:u,appContext:a}=e;let f;if("$"!==t[0]){const r=l[t];if(void 0!==r)switch(r){case 1:return i[t];case 2:return c[t];case 4:return n[t];case 3:return s[t]}else{if(We(i,t))return l[t]=1,i[t];if(c!==o.kT&&(0,o.RI)(c,t))return l[t]=2,c[t];if((f=e.propsOptions[0])&&(0,o.RI)(f,t))return l[t]=3,s[t];if(n!==o.kT&&(0,o.RI)(n,t))return l[t]=4,n[t];Ge&&(l[t]=0)}}const p=qe[t];let d,h;return p?("$attrs"===t&&(0,r.j)(e,"get",t),p(e)):(d=u.__cssModules)&&(d=d[t])?d:n!==o.kT&&(0,o.RI)(n,t)?(l[t]=4,n[t]):(h=a.config.globalProperties,(0,o.RI)(h,t)?h[t]:void 0)},set({_:e},t,n){const{data:r,setupState:i,ctx:c}=e;return We(i,t)?(i[t]=n,!0):r!==o.kT&&(0,o.RI)(r,t)?(r[t]=n,!0):!(0,o.RI)(e.props,t)&&(("$"!==t[0]||!(t.slice(1)in e))&&(c[t]=n,!0))},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,propsOptions:c}},s){let l;return!!n[s]||e!==o.kT&&(0,o.RI)(e,s)||We(t,s)||(l=c[0])&&(0,o.RI)(l,s)||(0,o.RI)(r,s)||(0,o.RI)(qe,s)||(0,o.RI)(i.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:(0,o.RI)(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let Ge=!0;function Ke(e){const t=Ye(e),n=e.proxy,i=e.ctx;Ge=!1,t.beforeCreate&&Xe(t.beforeCreate,e,"bc");const{data:c,computed:s,methods:l,watch:u,provide:a,inject:f,created:p,beforeMount:d,mounted:h,beforeUpdate:v,updated:g,activated:m,deactivated:y,beforeDestroy:b,beforeUnmount:_,destroyed:w,unmounted:k,render:x,renderTracked:S,renderTriggered:O,errorCaptured:C,serverPrefetch:E,expose:j,inheritAttrs:P,components:R,directives:T,filters:A}=t,F=null;if(f&&ze(f,i,F,e.appContext.config.unwrapInjectedRef),l)for(const r in l){const e=l[r];(0,o.mf)(e)&&(i[r]=e.bind(n))}if(c){0;const t=c.call(n,n);0,(0,o.Kn)(t)&&(e.data=(0,r.qj)(t))}if(Ge=!0,s)for(const r in s){const e=s[r],t=(0,o.mf)(e)?e.bind(n,n):(0,o.mf)(e.get)?e.get.bind(n,n):o.dG;0;const c=!(0,o.mf)(e)&&(0,o.mf)(e.set)?e.set.bind(n):o.dG,l=Fn({get:t,set:c});Object.defineProperty(i,r,{enumerable:!0,configurable:!0,get:()=>l.value,set:e=>l.value=e})}if(u)for(const r in u)Ze(u[r],i,n,r);if(a){const e=(0,o.mf)(a)?a.call(n):a;Reflect.ownKeys(e).forEach((t=>{q(t,e[t])}))}function I(e,t){(0,o.kJ)(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(p&&Xe(p,e,"c"),I(ke,d),I(xe,h),I(Se,v),I(Oe,g),I(he,m),I(ve,y),I(Te,C),I(Re,S),I(Pe,O),I(Ce,_),I(Ee,k),I(je,E),(0,o.kJ)(j))if(j.length){const t=e.exposed||(e.exposed={});j.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});x&&e.render===o.dG&&(e.render=x),null!=P&&(e.inheritAttrs=P),R&&(e.components=R),T&&(e.directives=T)}function ze(e,t,n=o.dG,i=!1){(0,o.kJ)(e)&&(e=rt(e));for(const c in e){const n=e[c];let s;s=(0,o.Kn)(n)?"default"in n?W(n.from||c,n.default,!0):W(n.from||c):W(n),(0,r.dq)(s)&&i?Object.defineProperty(t,c,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e}):t[c]=s}}function Xe(e,t,n){c((0,o.kJ)(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function Ze(e,t,n,r){const i=r.includes(".")?X(n,r):()=>n[r];if((0,o.HD)(e)){const n=t[e];(0,o.mf)(n)&&G(i,n)}else if((0,o.mf)(e))G(i,e.bind(n));else if((0,o.Kn)(e))if((0,o.kJ)(e))e.forEach((e=>Ze(e,t,n,r)));else{const r=(0,o.mf)(e.handler)?e.handler.bind(n):t[e.handler];(0,o.mf)(r)&&G(i,r,e)}else 0}function Ye(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:c,config:{optionMergeStrategies:s}}=e.appContext,l=c.get(t);let u;return l?u=l:i.length||n||r?(u={},i.length&&i.forEach((e=>Qe(u,e,s,!0))),Qe(u,t,s)):u=t,(0,o.Kn)(t)&&c.set(t,u),u}function Qe(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&Qe(e,i,n,!0),o&&o.forEach((t=>Qe(e,t,n,!0)));for(const c in t)if(r&&"expose"===c);else{const r=et[c]||n&&n[c];e[c]=r?r(e[c],t[c]):t[c]}return e}const et={data:tt,props:it,emits:it,methods:it,computed:it,beforeCreate:ot,created:ot,beforeMount:ot,mounted:ot,beforeUpdate:ot,updated:ot,beforeDestroy:ot,beforeUnmount:ot,destroyed:ot,unmounted:ot,activated:ot,deactivated:ot,errorCaptured:ot,serverPrefetch:ot,components:it,directives:it,watch:ct,provide:tt,inject:nt};function tt(e,t){return t?e?function(){return(0,o.l7)((0,o.mf)(e)?e.call(this,this):e,(0,o.mf)(t)?t.call(this,this):t)}:t:e}function nt(e,t){return it(rt(e),rt(t))}function rt(e){if((0,o.kJ)(e)){const t={};for(let n=0;n0)||16&l){let r;ut(e,t,c,s)&&(f=!0);for(const i in u)t&&((0,o.RI)(t,i)||(r=(0,o.rs)(i))!==i&&(0,o.RI)(t,r))||(a?!n||void 0===n[i]&&void 0===n[r]||(c[i]=at(a,u,i,void 0,e,!0)):delete c[i]);if(s!==u)for(const e in s)t&&(0,o.RI)(t,e)||(delete s[e],f=!0)}else if(8&l){const n=e.vnode.dynamicProps;for(let r=0;r{u=!0;const[n,r]=ft(e,t,!0);(0,o.l7)(s,n),r&&l.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!c&&!u)return(0,o.Kn)(e)&&r.set(e,o.Z6),o.Z6;if((0,o.kJ)(c))for(let f=0;f-1,r[1]=n<0||e-1||(0,o.RI)(r,"default"))&&l.push(t)}}}}const a=[s,l];return(0,o.Kn)(e)&&r.set(e,a),a}function pt(e){return"$"!==e[0]}function dt(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:null===e?"null":""}function ht(e,t){return dt(e)===dt(t)}function vt(e,t){return(0,o.kJ)(t)?t.findIndex((t=>ht(t,e))):(0,o.mf)(t)&&ht(t,e)?0:-1}const gt=e=>"_"===e[0]||"$stable"===e,mt=e=>(0,o.kJ)(e)?e.map(ln):[ln(e)],yt=(e,t,n)=>{if(t._n)return t;const r=L(((...e)=>mt(t(...e))),n);return r._c=!1,r},bt=(e,t,n)=>{const r=e._ctx;for(const i in e){if(gt(i))continue;const n=e[i];if((0,o.mf)(n))t[i]=yt(i,n,r);else if(null!=n){0;const e=mt(n);t[i]=()=>e}}},_t=(e,t)=>{const n=mt(t);e.slots.default=()=>n},wt=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=(0,r.IU)(t),(0,o.Nj)(t,"_",n)):bt(t,e.slots={})}else e.slots={},t&&_t(e,t);(0,o.Nj)(e.slots,Xt,1)},kt=(e,t,n)=>{const{vnode:r,slots:i}=e;let c=!0,s=o.kT;if(32&r.shapeFlag){const e=t._;e?n&&1===e?c=!1:((0,o.l7)(i,t),n||1!==e||delete i._):(c=!t.$stable,bt(t,i)),s=t}else t&&(_t(e,t),s={default:1});if(c)for(const o in i)gt(o)||o in s||delete i[o]};function xt(){return{app:null,config:{isNativeTag:o.NO,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let St=0;function Ot(e,t){return function(n,r=null){(0,o.mf)(n)||(n=Object.assign({},n)),null==r||(0,o.Kn)(r)||(r=null);const i=xt(),c=new Set;let s=!1;const l=i.app={_uid:St++,_component:n,_props:r,_container:null,_context:i,_instance:null,version:$n,get config(){return i.config},set config(e){0},use(e,...t){return c.has(e)||(e&&(0,o.mf)(e.install)?(c.add(e),e.install(l,...t)):(0,o.mf)(e)&&(c.add(e),e(l,...t))),l},mixin(e){return i.mixins.includes(e)||i.mixins.push(e),l},component(e,t){return t?(i.components[e]=t,l):i.components[e]},directive(e,t){return t?(i.directives[e]=t,l):i.directives[e]},mount(o,c,u){if(!s){0;const a=en(n,r);return a.appContext=i,c&&t?t(a,o):e(a,o,u),s=!0,l._container=o,o.__vue_app__=l,Rn(a.component)||a.component.proxy}},unmount(){s&&(e(null,l._container),delete l._container.__vue_app__)},provide(e,t){return i.provides[e]=t,l}};return l}}function Ct(e,t,n,c,s=!1){if((0,o.kJ)(e))return void e.forEach(((e,r)=>Ct(e,t&&((0,o.kJ)(t)?t[r]:t),n,c,s)));if(ue(c)&&!s)return;const l=4&c.shapeFlag?Rn(c.component)||c.component.proxy:c.el,u=s?null:l,{i:a,r:f}=e;const p=t&&t.r,d=a.refs===o.kT?a.refs={}:a.refs,h=a.setupState;if(null!=p&&p!==f&&((0,o.HD)(p)?(d[p]=null,(0,o.RI)(h,p)&&(h[p]=null)):(0,r.dq)(p)&&(p.value=null)),(0,o.mf)(f))i(f,a,12,[u,d]);else{const t=(0,o.HD)(f),i=(0,r.dq)(f);if(t||i){const r=()=>{if(e.f){const n=t?(0,o.RI)(h,f)?h[f]:d[f]:f.value;s?(0,o.kJ)(n)&&(0,o.Od)(n,l):(0,o.kJ)(n)?n.includes(l)||n.push(l):t?(d[f]=[l],(0,o.RI)(h,f)&&(h[f]=d[f])):(f.value=[l],e.k&&(d[e.k]=f.value))}else t?(d[f]=u,(0,o.RI)(h,f)&&(h[f]=u)):i&&(f.value=u,e.k&&(d[e.k]=u))};u?(r.id=-1,jt(r,n)):r()}else 0}}function Et(){}const jt=H;function Pt(e){return Rt(e)}function Rt(e,t){Et();const n=(0,o.E9)();n.__VUE__=!0;const{insert:i,remove:c,patchProp:s,createElement:l,createText:u,createComment:a,setText:f,setElementText:p,parentNode:d,nextSibling:h,setScopeId:v=o.dG,insertStaticContent:g}=e,m=(e,t,n,r=null,o=null,i=null,c=!1,s=null,l=!!t.dynamicChildren)=>{if(e===t)return;e&&!zt(e,t)&&(r=Y(e),G(e,o,i,!0),e=null),-2===t.patchFlag&&(l=!1,t.dynamicChildren=null);const{type:u,ref:a,shapeFlag:f}=t;switch(u){case Mt:y(e,t,n,r);break;case $t:b(e,t,n,r);break;case Nt:null==e&&w(t,n,r,c);break;case Lt:I(e,t,n,r,o,i,c,s,l);break;default:1&f?E(e,t,n,r,o,i,c,s,l):6&f?L(e,t,n,r,o,i,c,s,l):(64&f||128&f)&&u.process(e,t,n,r,o,i,c,s,l,ee)}null!=a&&o&&Ct(a,e&&e.ref,i,t||e,!t)},y=(e,t,n,r)=>{if(null==e)i(t.el=u(t.children),n,r);else{const n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},b=(e,t,n,r)=>{null==e?i(t.el=a(t.children||""),n,r):t.el=e.el},w=(e,t,n,r)=>{[e.el,e.anchor]=g(e.children,t,n,r,e.el,e.anchor)},x=({el:e,anchor:t},n,r)=>{let o;while(e&&e!==t)o=h(e),i(e,n,r),e=o;i(t,n,r)},C=({el:e,anchor:t})=>{let n;while(e&&e!==t)n=h(e),c(e),e=n;c(t)},E=(e,t,n,r,o,i,c,s,l)=>{c=c||"svg"===t.type,null==e?j(t,n,r,o,i,c,s,l):T(e,t,o,i,c,s,l)},j=(e,t,n,r,c,u,a,f)=>{let d,h;const{type:v,props:g,shapeFlag:m,transition:y,dirs:b}=e;if(d=e.el=l(e.type,u,g&&g.is,g),8&m?p(d,e.children):16&m&&R(e.children,d,null,r,c,u&&"foreignObject"!==v,a,f),b&&Fe(e,null,r,"created"),g){for(const t in g)"value"===t||(0,o.Gg)(t)||s(d,t,null,g[t],u,e.children,r,c,Z);"value"in g&&s(d,"value",null,g.value),(h=g.onVnodeBeforeMount)&&pn(h,r,e)}P(d,e,e.scopeId,a,r),b&&Fe(e,null,r,"beforeMount");const _=(!c||c&&!c.pendingBranch)&&y&&!y.persisted;_&&y.beforeEnter(d),i(d,t,n),((h=g&&g.onVnodeMounted)||_||b)&&jt((()=>{h&&pn(h,r,e),_&&y.enter(d),b&&Fe(e,null,r,"mounted")}),c)},P=(e,t,n,r,o)=>{if(n&&v(e,n),r)for(let i=0;i{for(let u=l;u{const u=t.el=e.el;let{patchFlag:a,dynamicChildren:f,dirs:d}=t;a|=16&e.patchFlag;const h=e.props||o.kT,v=t.props||o.kT;let g;n&&Tt(n,!1),(g=v.onVnodeBeforeUpdate)&&pn(g,n,t,e),d&&Fe(t,e,n,"beforeUpdate"),n&&Tt(n,!0);const m=i&&"foreignObject"!==t.type;if(f?A(e.dynamicChildren,f,u,n,r,m,c):l||H(e,t,u,null,n,r,m,c,!1),a>0){if(16&a)F(u,t,h,v,n,r,i);else if(2&a&&h.class!==v.class&&s(u,"class",null,v.class,i),4&a&&s(u,"style",h.style,v.style,i),8&a){const o=t.dynamicProps;for(let t=0;t{g&&pn(g,n,t,e),d&&Fe(t,e,n,"updated")}),r)},A=(e,t,n,r,o,i,c)=>{for(let s=0;s{if(n!==r){if(n!==o.kT)for(const u in n)(0,o.Gg)(u)||u in r||s(e,u,n[u],null,l,t.children,i,c,Z);for(const u in r){if((0,o.Gg)(u))continue;const a=r[u],f=n[u];a!==f&&"value"!==u&&s(e,u,f,a,l,t.children,i,c,Z)}"value"in r&&s(e,"value",n.value,r.value)}},I=(e,t,n,r,o,c,s,l,a)=>{const f=t.el=e?e.el:u(""),p=t.anchor=e?e.anchor:u("");let{patchFlag:d,dynamicChildren:h,slotScopeIds:v}=t;v&&(l=l?l.concat(v):v),null==e?(i(f,n,r),i(p,n,r),R(t.children,n,p,o,c,s,l,a)):d>0&&64&d&&h&&e.dynamicChildren?(A(e.dynamicChildren,h,n,o,c,s,l),(null!=t.key||o&&t===o.subTree)&&At(e,t,!0)):H(e,t,n,p,o,c,s,l,a)},L=(e,t,n,r,o,i,c,s,l)=>{t.slotScopeIds=s,null==e?512&t.shapeFlag?o.ctx.activate(t,n,r,c,l):$(t,n,r,o,i,c,l):N(e,t,l)},$=(e,t,n,r,o,i,c)=>{const s=e.component=vn(e,r,o);if(pe(e)&&(s.ctx.renderer=ee),Sn(s),s.asyncDep){if(o&&o.registerDep(s,D),!e.el){const e=s.subTree=en($t);b(null,e,t,n)}}else D(s,e,t,n,o,i,c)},N=(e,t,n)=>{const r=t.component=e.component;if(U(e,t,n)){if(r.asyncDep&&!r.asyncResolved)return void B(r,t,n);r.next=t,k(r.update),r.update()}else t.el=e.el,r.vnode=t},D=(e,t,n,i,c,s,l)=>{const u=()=>{if(e.isMounted){let t,{next:n,bu:r,u:i,parent:u,vnode:a}=e,f=n;0,Tt(e,!1),n?(n.el=a.el,B(e,n,l)):n=a,r&&(0,o.ir)(r),(t=n.props&&n.props.onVnodeBeforeUpdate)&&pn(t,u,n,a),Tt(e,!0);const p=M(e);0;const h=e.subTree;e.subTree=p,m(h,p,d(h.el),Y(h),e,c,s),n.el=p.el,null===f&&J(e,p.el),i&&jt(i,c),(t=n.props&&n.props.onVnodeUpdated)&&jt((()=>pn(t,u,n,a)),c)}else{let r;const{el:l,props:u}=t,{bm:a,m:f,parent:p}=e,d=ue(t);if(Tt(e,!1),a&&(0,o.ir)(a),!d&&(r=u&&u.onVnodeBeforeMount)&&pn(r,p,t),Tt(e,!0),l&&ne){const n=()=>{e.subTree=M(e),ne(l,e.subTree,e,c,null)};d?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{0;const r=e.subTree=M(e);0,m(null,r,n,i,e,c,s),t.el=r.el}if(f&&jt(f,c),!d&&(r=u&&u.onVnodeMounted)){const e=t;jt((()=>pn(r,p,e)),c)}(256&t.shapeFlag||p&&ue(p.vnode)&&256&p.vnode.shapeFlag)&&e.a&&jt(e.a,c),e.isMounted=!0,t=n=i=null}},a=e.effect=new r.qq(u,(()=>_(f)),e.scope),f=e.update=()=>a.run();f.id=e.uid,Tt(e,!0),f()},B=(e,t,n)=>{t.component=e;const o=e.vnode.props;e.vnode=t,e.next=null,lt(e,t.props,o,n),kt(e,t.children,n),(0,r.Jd)(),S(),(0,r.lk)()},H=(e,t,n,r,o,i,c,s,l=!1)=>{const u=e&&e.children,a=e?e.shapeFlag:0,f=t.children,{patchFlag:d,shapeFlag:h}=t;if(d>0){if(128&d)return void W(u,f,n,r,o,i,c,s,l);if(256&d)return void q(u,f,n,r,o,i,c,s,l)}8&h?(16&a&&Z(u,o,i),f!==u&&p(n,f)):16&a?16&h?W(u,f,n,r,o,i,c,s,l):Z(u,o,i,!0):(8&a&&p(n,""),16&h&&R(f,n,r,o,i,c,s,l))},q=(e,t,n,r,i,c,s,l,u)=>{e=e||o.Z6,t=t||o.Z6;const a=e.length,f=t.length,p=Math.min(a,f);let d;for(d=0;df?Z(e,i,c,!0,!1,p):R(t,n,r,i,c,s,l,u,p)},W=(e,t,n,r,i,c,s,l,u)=>{let a=0;const f=t.length;let p=e.length-1,d=f-1;while(a<=p&&a<=d){const r=e[a],o=t[a]=u?un(t[a]):ln(t[a]);if(!zt(r,o))break;m(r,o,n,null,i,c,s,l,u),a++}while(a<=p&&a<=d){const r=e[p],o=t[d]=u?un(t[d]):ln(t[d]);if(!zt(r,o))break;m(r,o,n,null,i,c,s,l,u),p--,d--}if(a>p){if(a<=d){const e=d+1,o=ed)while(a<=p)G(e[a],i,c,!0),a++;else{const h=a,v=a,g=new Map;for(a=v;a<=d;a++){const e=t[a]=u?un(t[a]):ln(t[a]);null!=e.key&&g.set(e.key,a)}let y,b=0;const _=d-v+1;let w=!1,k=0;const x=new Array(_);for(a=0;a<_;a++)x[a]=0;for(a=h;a<=p;a++){const r=e[a];if(b>=_){G(r,i,c,!0);continue}let o;if(null!=r.key)o=g.get(r.key);else for(y=v;y<=d;y++)if(0===x[y-v]&&zt(r,t[y])){o=y;break}void 0===o?G(r,i,c,!0):(x[o-v]=a+1,o>=k?k=o:w=!0,m(r,t[o],n,null,i,c,s,l,u),b++)}const S=w?Ft(x):o.Z6;for(y=S.length-1,a=_-1;a>=0;a--){const e=v+a,o=t[e],p=e+1{const{el:c,type:s,transition:l,children:u,shapeFlag:a}=e;if(6&a)return void V(e.component.subTree,t,n,r);if(128&a)return void e.suspense.move(t,n,r);if(64&a)return void s.move(e,t,n,ee);if(s===Lt){i(c,t,n);for(let e=0;el.enter(c)),o);else{const{leave:e,delayLeave:r,afterLeave:o}=l,s=()=>i(c,t,n),u=()=>{e(c,(()=>{s(),o&&o()}))};r?r(c,s,u):u()}else i(c,t,n)},G=(e,t,n,r=!1,o=!1)=>{const{type:i,props:c,ref:s,children:l,dynamicChildren:u,shapeFlag:a,patchFlag:f,dirs:p}=e;if(null!=s&&Ct(s,null,n,e,!0),256&a)return void t.ctx.deactivate(e);const d=1&a&&p,h=!ue(e);let v;if(h&&(v=c&&c.onVnodeBeforeUnmount)&&pn(v,t,e),6&a)X(e.component,n,r);else{if(128&a)return void e.suspense.unmount(n,r);d&&Fe(e,null,t,"beforeUnmount"),64&a?e.type.remove(e,t,n,o,ee,r):u&&(i!==Lt||f>0&&64&f)?Z(u,t,n,!1,!0):(i===Lt&&384&f||!o&&16&a)&&Z(l,t,n),r&&K(e)}(h&&(v=c&&c.onVnodeUnmounted)||d)&&jt((()=>{v&&pn(v,t,e),d&&Fe(e,null,t,"unmounted")}),n)},K=e=>{const{type:t,el:n,anchor:r,transition:o}=e;if(t===Lt)return void z(n,r);if(t===Nt)return void C(e);const i=()=>{c(n),o&&!o.persisted&&o.afterLeave&&o.afterLeave()};if(1&e.shapeFlag&&o&&!o.persisted){const{leave:t,delayLeave:r}=o,c=()=>t(n,i);r?r(e.el,i,c):c()}else i()},z=(e,t)=>{let n;while(e!==t)n=h(e),c(e),e=n;c(t)},X=(e,t,n)=>{const{bum:r,scope:i,update:c,subTree:s,um:l}=e;r&&(0,o.ir)(r),i.stop(),c&&(c.active=!1,G(s,e,t,n)),l&&jt(l,t),jt((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},Z=(e,t,n,r=!1,o=!1,i=0)=>{for(let c=i;c6&e.shapeFlag?Y(e.component.subTree):128&e.shapeFlag?e.suspense.next():h(e.anchor||e.el),Q=(e,t,n)=>{null==e?t._vnode&&G(t._vnode,null,null,!0):m(t._vnode||null,e,t,null,null,null,n),S(),O(),t._vnode=e},ee={p:m,um:G,m:V,r:K,mt:$,mc:R,pc:H,pbc:A,n:Y,o:e};let te,ne;return t&&([te,ne]=t(ee)),{render:Q,hydrate:te,createApp:Ot(Q,te)}}function Tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function At(e,t,n=!1){const r=e.children,i=t.children;if((0,o.kJ)(r)&&(0,o.kJ)(i))for(let o=0;o>1,e[n[s]]0&&(t[r]=n[i-1]),n[i]=r)}}i=n.length,c=n[i-1];while(i-- >0)n[i]=c,c=t[c];return n}const It=e=>e.__isTeleport;const Lt=Symbol(void 0),Mt=Symbol(void 0),$t=Symbol(void 0),Nt=Symbol(void 0),Ut=[];let Dt=null;function Jt(e=!1){Ut.push(Dt=e?null:[])}function Bt(){Ut.pop(),Dt=Ut[Ut.length-1]||null}let Ht=1;function qt(e){Ht+=e}function Wt(e){return e.dynamicChildren=Ht>0?Dt||o.Z6:null,Bt(),Ht>0&&Dt&&Dt.push(e),e}function Vt(e,t,n,r,o,i){return Wt(Qt(e,t,n,r,o,i,!0))}function Gt(e,t,n,r,o){return Wt(en(e,t,n,r,o,!0))}function Kt(e){return!!e&&!0===e.__v_isVNode}function zt(e,t){return e.type===t.type&&e.key===t.key}const Xt="__vInternal",Zt=({key:e})=>null!=e?e:null,Yt=({ref:e,ref_key:t,ref_for:n})=>null!=e?(0,o.HD)(e)||(0,r.dq)(e)||(0,o.mf)(e)?{i:A,r:e,k:t,f:!!n}:e:null;function Qt(e,t=null,n=null,r=0,i=null,c=(e===Lt?0:1),s=!1,l=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Zt(t),ref:t&&Yt(t),scopeId:F,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:c,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:A};return l?(an(u,n),128&c&&e.normalize(u)):n&&(u.shapeFlag|=(0,o.HD)(n)?8:16),Ht>0&&!s&&Dt&&(u.patchFlag>0||6&c)&&32!==u.patchFlag&&Dt.push(u),u}const en=tn;function tn(e,t=null,n=null,i=0,c=null,s=!1){if(e&&e!==Me||(e=$t),Kt(e)){const r=rn(e,t,!0);return n&&an(r,n),Ht>0&&!s&&Dt&&(6&r.shapeFlag?Dt[Dt.indexOf(e)]=r:Dt.push(r)),r.patchFlag|=-2,r}if(An(e)&&(e=e.__vccOpts),t){t=nn(t);let{class:e,style:n}=t;e&&!(0,o.HD)(e)&&(t.class=(0,o.C_)(e)),(0,o.Kn)(n)&&((0,r.X3)(n)&&!(0,o.kJ)(n)&&(n=(0,o.l7)({},n)),t.style=(0,o.j5)(n))}const l=(0,o.HD)(e)?1:B(e)?128:It(e)?64:(0,o.Kn)(e)?4:(0,o.mf)(e)?2:0;return Qt(e,t,n,i,c,l,s,!0)}function nn(e){return e?(0,r.X3)(e)||Xt in e?(0,o.l7)({},e):e:null}function rn(e,t,n=!1){const{props:r,ref:i,patchFlag:c,children:s}=e,l=t?fn(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Zt(l),ref:t&&t.ref?n&&i?(0,o.kJ)(i)?i.concat(Yt(t)):[i,Yt(t)]:Yt(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Lt?-1===c?16:16|c:c,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&rn(e.ssContent),ssFallback:e.ssFallback&&rn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx};return u}function on(e=" ",t=0){return en(Mt,null,e,t)}function cn(e,t){const n=en(Nt,null,e);return n.staticCount=t,n}function sn(e="",t=!1){return t?(Jt(),Gt($t,null,e)):en($t,null,e)}function ln(e){return null==e||"boolean"===typeof e?en($t):(0,o.kJ)(e)?en(Lt,null,e.slice()):"object"===typeof e?un(e):en(Mt,null,String(e))}function un(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:rn(e)}function an(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if((0,o.kJ)(t))n=16;else if("object"===typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),an(e,n()),n._c&&(n._d=!0)))}{n=32;const r=t._;r||Xt in t?3===r&&A&&(1===A.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=A}}else(0,o.mf)(t)?(t={default:t,_ctx:A},n=32):(t=String(t),64&r?(n=16,t=[on(t)]):n=8);e.children=t,e.shapeFlag|=n}function fn(...e){const t={};for(let n=0;ngn||A,yn=e=>{gn=e,e.scope.on()},bn=()=>{gn&&gn.scope.off(),gn=null};function _n(e){return 4&e.vnode.shapeFlag}let wn,kn,xn=!1;function Sn(e,t=!1){xn=t;const{props:n,children:r}=e.vnode,o=_n(e);st(e,n,o,t),wt(e,r);const i=o?On(e,t):void 0;return xn=!1,i}function On(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=(0,r.Xl)(new Proxy(e.ctx,Ve));const{setup:c}=n;if(c){const n=e.setupContext=c.length>1?Pn(e):null;yn(e),(0,r.Jd)();const l=i(c,e,0,[e.props,n]);if((0,r.lk)(),bn(),(0,o.tI)(l)){if(l.then(bn,bn),t)return l.then((n=>{Cn(e,n,t)})).catch((t=>{s(t,e,0)}));e.asyncDep=l}else Cn(e,l,t)}else En(e,t)}function Cn(e,t,n){(0,o.mf)(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:(0,o.Kn)(t)&&(e.setupState=(0,r.WL)(t)),En(e,n)}function En(e,t,n){const i=e.type;if(!e.render){if(!t&&wn&&!i.render){const t=i.template||Ye(e).template;if(t){0;const{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:c,compilerOptions:s}=i,l=(0,o.l7)((0,o.l7)({isCustomElement:n,delimiters:c},r),s);i.render=wn(t,l)}}e.render=i.render||o.dG,kn&&kn(e)}yn(e),(0,r.Jd)(),Ke(e),(0,r.lk)(),bn()}function jn(e){return new Proxy(e.attrs,{get(t,n){return(0,r.j)(e,"get","$attrs"),t[n]}})}function Pn(e){const t=t=>{e.exposed=t||{}};let n;return{get attrs(){return n||(n=jn(e))},slots:e.slots,emit:e.emit,expose:t}}function Rn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy((0,r.WL)((0,r.Xl)(e.exposed)),{get(t,n){return n in t?t[n]:n in qe?qe[n](e):void 0},has(e,t){return t in e||t in qe}}))}function Tn(e,t=!0){return(0,o.mf)(e)?e.displayName||e.name:e.name||t&&e.__name}function An(e){return(0,o.mf)(e)&&"__vccOpts"in e}const Fn=(e,t)=>(0,r.Fl)(e,t,xn);function In(e,t,n){const r=arguments.length;return 2===r?(0,o.Kn)(t)&&!(0,o.kJ)(t)?Kt(t)?en(e,null,[t]):en(e,t):en(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&Kt(n)&&(n=[n]),en(e,t,n))}const Ln=Symbol(""),Mn=()=>{{const e=W(Ln);return e}};const $n="3.2.45"},9963:function(e,t,n){"use strict";n.d(t,{F8:function(){return X},ri:function(){return te},uT:function(){return I}});var r=n(3577),o=n(6252);n(2262);const i="http://www.w3.org/2000/svg",c="undefined"!==typeof document?document:null,s=c&&c.createElement("template"),l={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?c.createElementNS(i,e):c.createElement(e,n?{is:n}:void 0);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>c.createTextNode(e),createComment:e=>c.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>c.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){const c=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling)){while(1)if(t.insertBefore(o.cloneNode(!0),n),o===i||!(o=o.nextSibling))break}else{s.innerHTML=r?`${e}`:e;const o=s.content;if(r){const e=o.firstChild;while(e.firstChild)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[c?c.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function u(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function a(e,t,n){const o=e.style,i=(0,r.HD)(n);if(n&&!i){for(const e in n)p(o,e,n[e]);if(t&&!(0,r.HD)(t))for(const e in t)null==n[e]&&p(o,e,"")}else{const r=o.display;i?t!==n&&(o.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(o.display=r)}}const f=/\s*!important$/;function p(e,t,n){if((0,r.kJ)(n))n.forEach((n=>p(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=v(e,t);f.test(n)?e.setProperty((0,r.rs)(o),n.replace(f,""),"important"):e[o]=n}}const d=["Webkit","Moz","ms"],h={};function v(e,t){const n=h[t];if(n)return n;let o=(0,r._A)(t);if("filter"!==o&&o in e)return h[t]=o;o=(0,r.kC)(o);for(let r=0;rS||(O.then((()=>S=0)),S=Date.now());function E(e,t){const n=e=>{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();(0,o.$d)(j(e,n.value),t,5,[e])};return n.value=e,n.attached=C(),n}function j(e,t){if((0,r.kJ)(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}const P=/^on[a-z]/,R=(e,t,n,o,i=!1,c,s,l,f)=>{"class"===t?u(e,o,i):"style"===t?a(e,n,o):(0,r.F7)(t)?(0,r.tR)(t)||w(e,t,n,o,s):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):T(e,t,o,i))?y(e,t,o,c,s,l,f):("true-value"===t?e._trueValue=o:"false-value"===t&&(e._falseValue=o),m(e,t,o,i))};function T(e,t,n,o){return o?"innerHTML"===t||"textContent"===t||!!(t in e&&P.test(t)&&(0,r.mf)(n)):"spellcheck"!==t&&"draggable"!==t&&"translate"!==t&&("form"!==t&&(("list"!==t||"INPUT"!==e.tagName)&&(("type"!==t||"TEXTAREA"!==e.tagName)&&((!P.test(t)||!(0,r.HD)(n))&&t in e))))}"undefined"!==typeof HTMLElement&&HTMLElement;const A="transition",F="animation",I=(e,{slots:t})=>(0,o.h)(o.P$,N(e),t);I.displayName="Transition";const L={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},M=(I.props=(0,r.l7)({},o.P$.props,L),(e,t=[])=>{(0,r.kJ)(e)?e.forEach((e=>e(...t))):e&&e(...t)}),$=e=>!!e&&((0,r.kJ)(e)?e.some((e=>e.length>1)):e.length>1);function N(e){const t={};for(const r in e)r in L||(t[r]=e[r]);if(!1===e.css)return t;const{name:n="v",type:o,duration:i,enterFromClass:c=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:u=c,appearActiveClass:a=s,appearToClass:f=l,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,v=U(i),g=v&&v[0],m=v&&v[1],{onBeforeEnter:y,onEnter:b,onEnterCancelled:_,onLeave:w,onLeaveCancelled:k,onBeforeAppear:x=y,onAppear:S=b,onAppearCancelled:O=_}=t,C=(e,t,n)=>{B(e,t?f:l),B(e,t?a:s),n&&n()},E=(e,t)=>{e._isLeaving=!1,B(e,p),B(e,h),B(e,d),t&&t()},j=e=>(t,n)=>{const r=e?S:b,i=()=>C(t,e,n);M(r,[t,i]),H((()=>{B(t,e?u:c),J(t,e?f:l),$(r)||W(t,o,g,i)}))};return(0,r.l7)(t,{onBeforeEnter(e){M(y,[e]),J(e,c),J(e,s)},onBeforeAppear(e){M(x,[e]),J(e,u),J(e,a)},onEnter:j(!1),onAppear:j(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>E(e,t);J(e,p),z(),J(e,d),H((()=>{e._isLeaving&&(B(e,p),J(e,h),$(w)||W(e,o,m,n))})),M(w,[e,n])},onEnterCancelled(e){C(e,!1),M(_,[e])},onAppearCancelled(e){C(e,!0),M(O,[e])},onLeaveCancelled(e){E(e),M(k,[e])}})}function U(e){if(null==e)return null;if((0,r.Kn)(e))return[D(e.enter),D(e.leave)];{const t=D(e);return[t,t]}}function D(e){const t=(0,r.He)(e);return t}function J(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e._vtc||(e._vtc=new Set)).add(t)}function B(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function H(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let q=0;function W(e,t,n,r){const o=e._endId=++q,i=()=>{o===e._endId&&r()};if(n)return setTimeout(i,n);const{type:c,timeout:s,propCount:l}=V(e,t);if(!c)return r();const u=c+"end";let a=0;const f=()=>{e.removeEventListener(u,p),i()},p=t=>{t.target===e&&++a>=l&&f()};setTimeout((()=>{a(n[e]||"").split(", "),o=r(`${A}Delay`),i=r(`${A}Duration`),c=G(o,i),s=r(`${F}Delay`),l=r(`${F}Duration`),u=G(s,l);let a=null,f=0,p=0;t===A?c>0&&(a=A,f=c,p=i.length):t===F?u>0&&(a=F,f=u,p=l.length):(f=Math.max(c,u),a=f>0?c>u?A:F:null,p=a?a===A?i.length:l.length:0);const d=a===A&&/\b(transform|all)(,|$)/.test(r(`${A}Property`).toString());return{type:a,timeout:f,propCount:p,hasTransform:d}}function G(e,t){while(e.lengthK(t)+K(e[n]))))}function K(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function z(){return document.body.offsetHeight}new WeakMap,new WeakMap;const X={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):Z(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!==!n&&(r?t?(r.beforeEnter(e),Z(e,!0),r.enter(e)):r.leave(e,(()=>{Z(e,!1)})):Z(e,t))},beforeUnmount(e,{value:t}){Z(e,t)}};function Z(e,t){e.style.display=t?e._vod:"none"}const Y=(0,r.l7)({patchProp:R},l);let Q;function ee(){return Q||(Q=(0,o.Us)(Y))}const te=(...e)=>{const t=ee().createApp(...e);const{mount:n}=t;return t.mount=e=>{const o=ne(e);if(!o)return;const i=t._component;(0,r.mf)(i)||i.render||i.template||(i.template=o.innerHTML),o.innerHTML="";const c=n(o,!1,o instanceof SVGElement);return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),c},t};function ne(e){if((0,r.HD)(e)){const t=document.querySelector(e);return t}return e}},3577:function(e,t,n){"use strict";function r(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[e.toLowerCase()]:e=>!!n[e]}n.d(t,{C_:function(){return f},DM:function(){return I},E9:function(){return ie},F7:function(){return C},Gg:function(){return V},HD:function(){return $},He:function(){return re},Kn:function(){return U},NO:function(){return S},Nj:function(){return ne},Od:function(){return P},PO:function(){return q},Pq:function(){return h},RI:function(){return T},S0:function(){return W},W7:function(){return H},WV:function(){return m},Z6:function(){return k},_A:function(){return z},_N:function(){return F},aU:function(){return ee},dG:function(){return x},e1:function(){return i},fY:function(){return r},hR:function(){return Q},hq:function(){return y},ir:function(){return te},j5:function(){return c},kC:function(){return Y},kJ:function(){return A},kT:function(){return w},l7:function(){return j},mf:function(){return M},rs:function(){return Z},tI:function(){return D},tR:function(){return E},vs:function(){return p},yA:function(){return v},yk:function(){return N},zw:function(){return b}});const o="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt",i=r(o);function c(e){if(A(e)){const t={};for(let n=0;n{if(e){const n=e.split(l);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function f(e){let t="";if($(e))t=e;else if(A(e))for(let n=0;nm(e,t)))}const b=e=>$(e)?e:null==e?"":A(e)||U(e)&&(e.toString===J||!M(e.toString))?JSON.stringify(e,_,2):String(e),_=(e,t)=>t&&t.__v_isRef?_(e,t.value):F(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:I(t)?{[`Set(${t.size})`]:[...t.values()]}:!U(t)||A(t)||q(t)?t:String(t),w={},k=[],x=()=>{},S=()=>!1,O=/^on[^a-z]/,C=e=>O.test(e),E=e=>e.startsWith("onUpdate:"),j=Object.assign,P=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},R=Object.prototype.hasOwnProperty,T=(e,t)=>R.call(e,t),A=Array.isArray,F=e=>"[object Map]"===B(e),I=e=>"[object Set]"===B(e),L=e=>"[object Date]"===B(e),M=e=>"function"===typeof e,$=e=>"string"===typeof e,N=e=>"symbol"===typeof e,U=e=>null!==e&&"object"===typeof e,D=e=>U(e)&&M(e.then)&&M(e.catch),J=Object.prototype.toString,B=e=>J.call(e),H=e=>B(e).slice(8,-1),q=e=>"[object Object]"===B(e),W=e=>$(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,V=r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),G=e=>{const t=Object.create(null);return n=>{const r=t[n];return r||(t[n]=e(n))}},K=/-(\w)/g,z=G((e=>e.replace(K,((e,t)=>t?t.toUpperCase():"")))),X=/\B([A-Z])/g,Z=G((e=>e.replace(X,"-$1").toLowerCase())),Y=G((e=>e.charAt(0).toUpperCase()+e.slice(1))),Q=G((e=>e?`on${Y(e)}`:"")),ee=(e,t)=>!Object.is(e,t),te=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},re=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let oe;const ie=()=>oe||(oe="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:{})},9662:function(e,t,n){var r=n(614),o=n(6330),i=TypeError;e.exports=function(e){if(r(e))return e;throw i(o(e)+" is not a function")}},9670:function(e,t,n){var r=n(111),o=String,i=TypeError;e.exports=function(e){if(r(e))return e;throw i(o(e)+" is not an object")}},1318:function(e,t,n){var r=n(5656),o=n(1400),i=n(6244),c=function(e){return function(t,n,c){var s,l=r(t),u=i(l),a=o(c,u);if(e&&n!=n){while(u>a)if(s=l[a++],s!=s)return!0}else for(;u>a;a++)if((e||a in l)&&l[a]===n)return e||a||0;return!e&&-1}};e.exports={includes:c(!0),indexOf:c(!1)}},3658:function(e,t,n){"use strict";var r=n(9781),o=n(3157),i=TypeError,c=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=s?function(e,t){if(o(e)&&!c(e,"length").writable)throw i("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},4326:function(e,t,n){var r=n(1702),o=r({}.toString),i=r("".slice);e.exports=function(e){return i(o(e),8,-1)}},9920:function(e,t,n){var r=n(2597),o=n(3887),i=n(1236),c=n(3070);e.exports=function(e,t,n){for(var s=o(t),l=c.f,u=i.f,a=0;an)throw t("Maximum allowed index exceeded");return e}},8113:function(e,t,n){var r=n(5005);e.exports=r("navigator","userAgent")||""},7392:function(e,t,n){var r,o,i=n(7854),c=n(8113),s=i.process,l=i.Deno,u=s&&s.versions||l&&l.version,a=u&&u.v8;a&&(r=a.split("."),o=r[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&c&&(r=c.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=c.match(/Chrome\/(\d+)/),r&&(o=+r[1]))),e.exports=o},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),o=n(1236).f,i=n(8880),c=n(8052),s=n(3072),l=n(9920),u=n(4705);e.exports=function(e,t){var n,a,f,p,d,h,v=e.target,g=e.global,m=e.stat;if(a=g?r:m?r[v]||s(v,{}):(r[v]||{}).prototype,a)for(f in t){if(d=t[f],e.dontCallGetSet?(h=o(a,f),p=h&&h.value):p=a[f],n=u(g?f:v+(m?".":"#")+f,e.forced),!n&&void 0!==p){if(typeof d==typeof p)continue;l(d,p)}(e.sham||p&&p.sham)&&i(d,"sham",!0),c(a,f,d,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(t){return!0}}},4374:function(e,t,n){var r=n(7293);e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},6916:function(e,t,n){var r=n(4374),o=Function.prototype.call;e.exports=r?o.bind(o):function(){return o.apply(o,arguments)}},6530:function(e,t,n){var r=n(9781),o=n(2597),i=Function.prototype,c=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),l=s&&"something"===function(){}.name,u=s&&(!r||r&&c(i,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},1702:function(e,t,n){var r=n(4374),o=Function.prototype,i=o.call,c=r&&o.bind.bind(i,i);e.exports=r?c:function(e){return function(){return i.apply(e,arguments)}}},5005:function(e,t,n){var r=n(7854),o=n(614),i=function(e){return o(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?i(r[e]):r[e]&&r[e][t]}},8173:function(e,t,n){var r=n(9662),o=n(8554);e.exports=function(e,t){var n=e[t];return o(n)?void 0:r(n)}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},2597:function(e,t,n){var r=n(1702),o=n(7908),i=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(o(e),t)}},3501:function(e){e.exports={}},4664:function(e,t,n){var r=n(9781),o=n(7293),i=n(317);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},8361:function(e,t,n){var r=n(1702),o=n(7293),i=n(4326),c=Object,s=r("".split);e.exports=o((function(){return!c("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?s(e,""):c(e)}:c},2788:function(e,t,n){var r=n(1702),o=n(614),i=n(5465),c=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return c(e)}),e.exports=i.inspectSource},9909:function(e,t,n){var r,o,i,c=n(4811),s=n(7854),l=n(111),u=n(8880),a=n(2597),f=n(5465),p=n(6200),d=n(3501),h="Object already initialized",v=s.TypeError,g=s.WeakMap,m=function(e){return i(e)?o(e):r(e,{})},y=function(e){return function(t){var n;if(!l(t)||(n=o(t)).type!==e)throw v("Incompatible receiver, "+e+" required");return n}};if(c||f.state){var b=f.state||(f.state=new g);b.get=b.get,b.has=b.has,b.set=b.set,r=function(e,t){if(b.has(e))throw v(h);return t.facade=e,b.set(e,t),t},o=function(e){return b.get(e)||{}},i=function(e){return b.has(e)}}else{var _=p("state");d[_]=!0,r=function(e,t){if(a(e,_))throw v(h);return t.facade=e,u(e,_,t),t},o=function(e){return a(e,_)?e[_]:{}},i=function(e){return a(e,_)}}e.exports={set:r,get:o,has:i,enforce:m,getterFor:y}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},614:function(e,t,n){var r=n(4154),o=r.all;e.exports=r.IS_HTMLDDA?function(e){return"function"==typeof e||e===o}:function(e){return"function"==typeof e}},4705:function(e,t,n){var r=n(7293),o=n(614),i=/#|\.prototype\./,c=function(e,t){var n=l[s(e)];return n==a||n!=u&&(o(t)?r(t):!!t)},s=c.normalize=function(e){return String(e).replace(i,".").toLowerCase()},l=c.data={},u=c.NATIVE="N",a=c.POLYFILL="P";e.exports=c},8554:function(e){e.exports=function(e){return null===e||void 0===e}},111:function(e,t,n){var r=n(614),o=n(4154),i=o.all;e.exports=o.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:r(e)||e===i}:function(e){return"object"==typeof e?null!==e:r(e)}},1913:function(e){e.exports=!1},2190:function(e,t,n){var r=n(5005),o=n(614),i=n(7976),c=n(3307),s=Object;e.exports=c?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return o(t)&&i(t.prototype,s(e))}},6244:function(e,t,n){var r=n(7466);e.exports=function(e){return r(e.length)}},6339:function(e,t,n){var r=n(7293),o=n(614),i=n(2597),c=n(9781),s=n(6530).CONFIGURABLE,l=n(2788),u=n(9909),a=u.enforce,f=u.get,p=Object.defineProperty,d=c&&!r((function(){return 8!==p((function(){}),"length",{value:8}).length})),h=String(String).split("String"),v=e.exports=function(e,t,n){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!i(e,"name")||s&&e.name!==t)&&(c?p(e,"name",{value:t,configurable:!0}):e.name=t),d&&n&&i(n,"arity")&&e.length!==n.arity&&p(e,"length",{value:n.arity});try{n&&i(n,"constructor")&&n.constructor?c&&p(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(o){}var r=a(e);return i(r,"source")||(r.source=h.join("string"==typeof t?t:"")),e};Function.prototype.toString=v((function(){return o(this)&&f(this).source||l(this)}),"toString")},4758:function(e){var t=Math.ceil,n=Math.floor;e.exports=Math.trunc||function(e){var r=+e;return(r>0?n:t)(r)}},3070:function(e,t,n){var r=n(9781),o=n(4664),i=n(3353),c=n(9670),s=n(4948),l=TypeError,u=Object.defineProperty,a=Object.getOwnPropertyDescriptor,f="enumerable",p="configurable",d="writable";t.f=r?i?function(e,t,n){if(c(e),t=s(t),c(n),"function"===typeof e&&"prototype"===t&&"value"in n&&d in n&&!n[d]){var r=a(e,t);r&&r[d]&&(e[t]=n.value,n={configurable:p in n?n[p]:r[p],enumerable:f in n?n[f]:r[f],writable:!1})}return u(e,t,n)}:u:function(e,t,n){if(c(e),t=s(t),c(n),o)try{return u(e,t,n)}catch(r){}if("get"in n||"set"in n)throw l("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),o=n(6916),i=n(5296),c=n(9114),s=n(5656),l=n(4948),u=n(2597),a=n(4664),f=Object.getOwnPropertyDescriptor;t.f=r?f:function(e,t){if(e=s(e),t=l(t),a)try{return f(e,t)}catch(n){}if(u(e,t))return c(!o(i.f,e,t),e[t])}},8006:function(e,t,n){var r=n(6324),o=n(748),i=o.concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},7976:function(e,t,n){var r=n(1702);e.exports=r({}.isPrototypeOf)},6324:function(e,t,n){var r=n(1702),o=n(2597),i=n(5656),c=n(1318).indexOf,s=n(3501),l=r([].push);e.exports=function(e,t){var n,r=i(e),u=0,a=[];for(n in r)!o(s,n)&&o(r,n)&&l(a,n);while(t.length>u)o(r,n=t[u++])&&(~c(a,n)||l(a,n));return a}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,o=r&&!n.call({1:2},1);t.f=o?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},2140:function(e,t,n){var r=n(6916),o=n(614),i=n(111),c=TypeError;e.exports=function(e,t){var n,s;if("string"===t&&o(n=e.toString)&&!i(s=r(n,e)))return s;if(o(n=e.valueOf)&&!i(s=r(n,e)))return s;if("string"!==t&&o(n=e.toString)&&!i(s=r(n,e)))return s;throw c("Can't convert object to primitive value")}},3887:function(e,t,n){var r=n(5005),o=n(1702),i=n(8006),c=n(5181),s=n(9670),l=o([].concat);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=c.f;return n?l(t,n(e)):t}},4488:function(e,t,n){var r=n(8554),o=TypeError;e.exports=function(e){if(r(e))throw o("Can't call method on "+e);return e}},6200:function(e,t,n){var r=n(2309),o=n(9711),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},5465:function(e,t,n){var r=n(7854),o=n(3072),i="__core-js_shared__",c=r[i]||o(i,{});e.exports=c},2309:function(e,t,n){var r=n(1913),o=n(5465);(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.26.1",mode:r?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE",source:"https://github.com/zloirock/core-js"})},6293:function(e,t,n){var r=n(7392),o=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},1400:function(e,t,n){var r=n(9303),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n<0?o(n+t,0):i(n,t)}},5656:function(e,t,n){var r=n(8361),o=n(4488);e.exports=function(e){return r(o(e))}},9303:function(e,t,n){var r=n(4758);e.exports=function(e){var t=+e;return t!==t||0===t?0:r(t)}},7466:function(e,t,n){var r=n(9303),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488),o=Object;e.exports=function(e){return o(r(e))}},7593:function(e,t,n){var r=n(6916),o=n(111),i=n(2190),c=n(8173),s=n(2140),l=n(5112),u=TypeError,a=l("toPrimitive");e.exports=function(e,t){if(!o(e)||i(e))return e;var n,l=c(e,a);if(l){if(void 0===t&&(t="default"),n=r(l,e,t),!o(n)||i(n))return n;throw u("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},4948:function(e,t,n){var r=n(7593),o=n(2190);e.exports=function(e){var t=r(e,"string");return o(t)?t:t+""}},6330:function(e){var t=String;e.exports=function(e){try{return t(e)}catch(n){return"Object"}}},9711:function(e,t,n){var r=n(1702),o=0,i=Math.random(),c=r(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+c(++o+i,36)}},3307:function(e,t,n){var r=n(6293);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},3353:function(e,t,n){var r=n(9781),o=n(7293);e.exports=r&&o((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},4811:function(e,t,n){var r=n(7854),o=n(614),i=r.WeakMap;e.exports=o(i)&&/native code/.test(String(i))},5112:function(e,t,n){var r=n(7854),o=n(2309),i=n(2597),c=n(9711),s=n(6293),l=n(3307),u=o("wks"),a=r.Symbol,f=a&&a["for"],p=l?a:a&&a.withoutSetter||c;e.exports=function(e){if(!i(u,e)||!s&&"string"!=typeof u[e]){var t="Symbol."+e;s&&i(a,e)?u[e]=a[e]:u[e]=l&&f?f(t):p(t)}return u[e]}},7658:function(e,t,n){"use strict";var r=n(2109),o=n(7908),i=n(6244),c=n(3658),s=n(7207),l=n(7293),u=l((function(){return 4294967297!==[].push.call({length:4294967296},1)})),a=!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}();r({target:"Array",proto:!0,arity:1,forced:u||a},{push:function(e){var t=o(this),n=i(t),r=arguments.length;s(n+r);for(var l=0;l0)n[r]=arguments[r+1];t&&t[e]&&t[e].apply(t,n)};"serviceWorker"in navigator&&r.then((function(){o()?(l(e,i,n),navigator.serviceWorker.ready.then((function(e){i("ready",e)})).catch((function(e){return c(i,e)}))):(s(e,i,n),navigator.serviceWorker.ready.then((function(e){i("ready",e)})).catch((function(e){return c(i,e)})))}))}function c(e,t){navigator.onLine||e("offline"),e("error",t)}function s(e,t,n){navigator.serviceWorker.register(e,n).then((function(e){t("registered",e),e.waiting?t("updated",e):e.onupdatefound=function(){t("updatefound",e);var n=e.installing;n.onstatechange=function(){"installed"===n.state&&(navigator.serviceWorker.controller?t("updated",e):t("cached",e))}}})).catch((function(e){return c(t,e)}))}function l(e,t,n){fetch(e).then((function(r){404===r.status?(t("error",new Error("Service worker not found at "+e)),u()):-1===r.headers.get("content-type").indexOf("javascript")?(t("error",new Error("Expected "+e+" to have javascript content-type, but received "+r.headers.get("content-type"))),u()):s(e,t,n)})).catch((function(e){return c(t,e)}))}function u(){"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()})).catch((function(e){return c(emit,e)}))}"undefined"!==typeof window&&(r="undefined"!==typeof Promise?new Promise((function(e){return window.addEventListener("load",e)})):{then:function(e){return window.addEventListener("load",e)}})},7398:function(e,t,n){"use strict";var r=n(3577),o=n(6252);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(n,r){if("undefined"!==typeof document){var o=document.head||document.getElementsByTagName("head")[0],i=document.createElement("script");if(i.async=!0,i.src=e,i.defer=t.defer,t.preconnectOrigin){var c=document.createElement("link");c.href=t.preconnectOrigin,c.rel="preconnect",o.appendChild(c)}o.appendChild(i),i.onload=n,i.onerror=r}}))},u=function e(t){for(var n=arguments.length,o=new Array(n>1?n-1:0),c=1;c0&&void 0!==arguments[0]?arguments[0]:{};return f('Missing "appName" property inside the plugin options.',null==e.app_name),f('Missing "name" property in the route.',null==e.screen_name),e};function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e.split("/"),r=t.split("/");return""===n[0]&&"/"===t[t.length-1]&&n.shift(),r.join("/")+n.join("/")}var h,v=function(){return{bootstrap:!0,onReady:null,onError:null,onBeforeTrack:null,onAfterTrack:null,pageTrackerTemplate:null,customResourceURL:"https://www.googletagmanager.com/gtag/js",customPreconnectOrigin:"https://www.googletagmanager.com",deferScriptLoad:!1,pageTrackerExcludedRoutes:[],pageTrackerEnabled:!0,enabled:!0,disableScriptLoad:!1,pageTrackerScreenviewEnabled:!1,appName:null,pageTrackerUseFullPath:!1,pageTrackerPrependBase:!0,pageTrackerSkipSamePath:!0,globalDataLayerName:"dataLayer",globalObjectName:"gtag",defaultGroupName:"default",includes:null,config:{id:null,params:{send_page_view:!1}}}},g={},m=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=v();g=u(t,e)},y=function(){return g},b=function(){var e,t=y(),n=t.globalObjectName;a()&&"undefined"!==typeof window[n]&&(e=window)[n].apply(e,arguments)},_=function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&void 0!==arguments[0])||arguments[0],t=y(),n=t.config,r=t.includes;w(n.id,e),Array.isArray(r)&&r.forEach((function(t){return w(t.id,e)}))},x=function(){k(!0)},S=function(){k(!1)},O=function(e){h=e},C=function(){return h},E=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=y(),r=n.includes,o=n.defaultGroupName;null==t.send_to&&Array.isArray(r)&&r.length&&(t.send_to=r.map((function(e){return e.id})).concat(o)),b("event",e,t)},j=function(e){if(a()){var t;if("string"===typeof e)t={page_path:e};else if(e.path||e.fullPath){var n=y(),r=n.pageTrackerUseFullPath,o=n.pageTrackerPrependBase,i=C(),c=i&&i.options.base,l=r?e.fullPath:e.path;t=s(s({},e.name&&{page_title:e.name}),{},{page_path:o?d(l,c):l})}else t=e;null==t.page_location&&(t.page_location=window.location.href),null==t.send_page_view&&(t.send_page_view=!0),E("page_view",t)}},P=function(e){var t,n=y(),r=n.appName;e&&(t="string"===typeof e?{screen_name:e}:e,t.app_name=t.app_name||r,E("screen_view",t))},R=function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=y(),o=n.appName,i=n.pageTrackerTemplate,c=n.pageTrackerScreenviewEnabled,s=n.pageTrackerSkipSamePath;if(!s||e.path!==t.path){var l=e;(0,r.mf)(i)?l=i(e,t):c&&(l=p({app_name:o,screen_name:e.name})),c?P(l):j(l)}},H=function(e){var t=y(),n=t.pageTrackerExcludedRoutes;return n.includes(e.path)||n.includes(e.name)},q=function(){var e=y(),t=e.onBeforeTrack,n=e.onAfterTrack,i=C();i.isReady().then((function(){(0,o.Y3)().then((function(){var e=i.currentRoute;J(),H(e.value)||B(e.value)})),i.afterEach((function(e,i){(0,o.Y3)().then((function(){H(e)||((0,r.mf)(t)&&t(e,i),B(e,i),(0,r.mf)(n)&&n(e,i))}))}))}))},W=function(){var e=y(),t=e.onReady,n=e.onError,r=e.globalObjectName,o=e.globalDataLayerName,i=e.config,c=e.customResourceURL,s=e.customPreconnectOrigin,u=e.deferScriptLoad,a=e.pageTrackerEnabled,f=e.disableScriptLoad,p=Boolean(a&&C());if(U(),p?q():J(),!f)return l("".concat(c,"?id=").concat(i.id,"&l=").concat(o),{preconnectOrigin:s,defer:u}).then((function(){t&&t(window[r])}))["catch"]((function(e){return n&&n(e),e}))},V=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;N(e),m(t),O(n),y().bootstrap&&W()};t["ZP"]=V},3744:function(e,t){"use strict";t.Z=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n}},2201:function(e,t,n){"use strict";n.d(t,{PO:function(){return U},p7:function(){return tt}});var r=n(6252),o=n(2262); +/*! + * vue-router v4.1.6 + * (c) 2022 Eduardo San Martin Morote + * @license MIT + */ +const i="undefined"!==typeof window;function c(e){return e.__esModule||"Module"===e[Symbol.toStringTag]}const s=Object.assign;function l(e,t){const n={};for(const r in t){const o=t[r];n[r]=a(o)?o.map(e):e(o)}return n}const u=()=>{},a=Array.isArray;const f=/\/$/,p=e=>e.replace(f,"");function d(e,t,n="/"){let r,o={},i="",c="";const s=t.indexOf("#");let l=t.indexOf("?");return s=0&&(l=-1),l>-1&&(r=t.slice(0,l),i=t.slice(l+1,s>-1?s:t.length),o=e(i)),s>-1&&(r=r||t.slice(0,s),c=t.slice(s,t.length)),r=w(null!=r?r:t,n),{fullPath:r+(i&&"?")+i+c,path:r,query:o,hash:c}}function h(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function v(e,t){return t&&e.toLowerCase().startsWith(t.toLowerCase())?e.slice(t.length)||"/":e}function g(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&m(t.matched[r],n.matched[o])&&y(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function m(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function y(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!b(e[n],t[n]))return!1;return!0}function b(e,t){return a(e)?_(e,t):a(t)?_(t,e):e===t}function _(e,t){return a(t)?e.length===t.length&&e.every(((e,n)=>e===t[n])):1===e.length&&e[0]===t}function w(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/");let o,i,c=n.length-1;for(o=0;o1&&c--}return n.slice(0,c).join("/")+"/"+r.slice(o-(o===r.length?1:0)).join("/")}var k,x;(function(e){e["pop"]="pop",e["push"]="push"})(k||(k={})),function(e){e["back"]="back",e["forward"]="forward",e["unknown"]=""}(x||(x={}));function S(e){if(!e)if(i){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return"/"!==e[0]&&"#"!==e[0]&&(e="/"+e),p(e)}const O=/^[^#]+#/;function C(e,t){return e.replace(O,"#")+t}function E(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const j=()=>({left:window.pageXOffset,top:window.pageYOffset});function P(e){let t;if("el"in e){const n=e.el,r="string"===typeof n&&n.startsWith("#");0;const o="string"===typeof n?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=E(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(null!=t.left?t.left:window.pageXOffset,null!=t.top?t.top:window.pageYOffset)}function R(e,t){const n=history.state?history.state.position-t:-1;return n+e}const T=new Map;function A(e,t){T.set(e,t)}function F(e){const t=T.get(e);return T.delete(e),t}let I=()=>location.protocol+"//"+location.host;function L(e,t){const{pathname:n,search:r,hash:o}=t,i=e.indexOf("#");if(i>-1){let t=o.includes(e.slice(i))?e.slice(i).length:1,n=o.slice(t);return"/"!==n[0]&&(n="/"+n),v(n,"")}const c=v(n,e);return c+r+o}function M(e,t,n,r){let o=[],i=[],c=null;const l=({state:i})=>{const s=L(e,location),l=n.value,u=t.value;let a=0;if(i){if(n.value=s,t.value=i,c&&c===l)return void(c=null);a=u?i.position-u.position:0}else r(s);o.forEach((e=>{e(n.value,l,{delta:a,type:k.pop,direction:a?a>0?x.forward:x.back:x.unknown})}))};function u(){c=n.value}function a(e){o.push(e);const t=()=>{const t=o.indexOf(e);t>-1&&o.splice(t,1)};return i.push(t),t}function f(){const{history:e}=window;e.state&&e.replaceState(s({},e.state,{scroll:j()}),"")}function p(){for(const e of i)e();i=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",f)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",f),{pauseListeners:u,listen:a,destroy:p}}function $(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?j():null}}function N(e){const{history:t,location:n}=window,r={value:L(e,n)},o={value:t.state};function i(r,i,c){const s=e.indexOf("#"),l=s>-1?(n.host&&document.querySelector("base")?e:e.slice(s))+r:I()+e+r;try{t[c?"replaceState":"pushState"](i,"",l),o.value=i}catch(u){console.error(u),n[c?"replace":"assign"](l)}}function c(e,n){const c=s({},t.state,$(o.value.back,e,o.value.forward,!0),n,{position:o.value.position});i(e,c,!0),r.value=e}function l(e,n){const c=s({},o.value,t.state,{forward:e,scroll:j()});i(c.current,c,!0);const l=s({},$(r.value,e,null),{position:c.position+1},n);i(e,l,!1),r.value=e}return o.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0),{location:r,state:o,push:l,replace:c}}function U(e){e=S(e);const t=N(e),n=M(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}const o=s({location:"",base:e,go:r,createHref:C.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function D(e){return"string"===typeof e||e&&"object"===typeof e}function J(e){return"string"===typeof e||"symbol"===typeof e}const B={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},H=Symbol("");var q;(function(e){e[e["aborted"]=4]="aborted",e[e["cancelled"]=8]="cancelled",e[e["duplicated"]=16]="duplicated"})(q||(q={}));function W(e,t){return s(new Error,{type:e,[H]:!0},t)}function V(e,t){return e instanceof Error&&H in e&&(null==t||!!(e.type&t))}const G="[^/]+?",K={sensitive:!1,strict:!1,start:!0,end:!0},z=/[.+*?^${}()[\]/\\]/g;function X(e,t){const n=s({},K,t),r=[];let o=n.start?"^":"";const i=[];for(const s of e){const e=s.length?[]:[90];n.strict&&!s.length&&(o+="/");for(let t=0;tt.length?1===t.length&&80===t[0]?1:-1:0}function Y(e,t){let n=0;const r=e.score,o=t.score;while(n0&&t[t.length-1]<0}const ee={type:0,value:""},te=/[a-zA-Z0-9_]/;function ne(e){if(!e)return[[]];if("/"===e)return[[ee]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(e){throw new Error(`ERR (${n})/"${u}": ${e}`)}let n=0,r=n;const o=[];let i;function c(){i&&o.push(i),i=[]}let s,l=0,u="",a="";function f(){u&&(0===n?i.push({type:0,value:u}):1===n||2===n||3===n?(i.length>1&&("*"===s||"+"===s)&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:u,regexp:a,repeatable:"*"===s||"+"===s,optional:"*"===s||"?"===s})):t("Invalid state to consume buffer"),u="")}function p(){u+=s}while(l{c(h)}:u}function c(e){if(J(e)){const t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(c),t.alias.forEach(c))}else{const t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(c),e.alias.forEach(c))}}function l(){return n}function a(e){let t=0;while(t=0&&(e.record.path!==n[t].record.path||!fe(e,n[t])))t++;n.splice(t,0,e),e.record.name&&!le(e)&&r.set(e.record.name,e)}function f(e,t){let o,i,c,l={};if("name"in e&&e.name){if(o=r.get(e.name),!o)throw W(1,{location:e});0,c=o.record.name,l=s(ie(t.params,o.keys.filter((e=>!e.optional)).map((e=>e.name))),e.params&&ie(e.params,o.keys.map((e=>e.name)))),i=o.stringify(l)}else if("path"in e)i=e.path,o=n.find((e=>e.re.test(i))),o&&(l=o.parse(i),c=o.record.name);else{if(o=t.name?r.get(t.name):n.find((e=>e.re.test(t.path))),!o)throw W(1,{location:e,currentLocation:t});c=o.record.name,l=s({},t.params,e.params),i=o.stringify(l)}const u=[];let a=o;while(a)u.unshift(a.record),a=a.parent;return{name:c,path:i,params:l,matched:u,meta:ue(u)}}return t=ae({strict:!1,end:!0,sensitive:!1},t),e.forEach((e=>i(e))),{addRoute:i,resolve:f,removeRoute:c,getRoutes:l,getRecordMatcher:o}}function ie(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function ce(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:se(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function se(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]="boolean"===typeof n?n:n[r];return t}function le(e){while(e){if(e.record.aliasOf)return!0;e=e.parent}return!1}function ue(e){return e.reduce(((e,t)=>s(e,t.meta)),{})}function ae(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function fe(e,t){return t.children.some((t=>t===e||fe(e,t)))}const pe=/#/g,de=/&/g,he=/\//g,ve=/=/g,ge=/\?/g,me=/\+/g,ye=/%5B/g,be=/%5D/g,_e=/%5E/g,we=/%60/g,ke=/%7B/g,xe=/%7C/g,Se=/%7D/g,Oe=/%20/g;function Ce(e){return encodeURI(""+e).replace(xe,"|").replace(ye,"[").replace(be,"]")}function Ee(e){return Ce(e).replace(ke,"{").replace(Se,"}").replace(_e,"^")}function je(e){return Ce(e).replace(me,"%2B").replace(Oe,"+").replace(pe,"%23").replace(de,"%26").replace(we,"`").replace(ke,"{").replace(Se,"}").replace(_e,"^")}function Pe(e){return je(e).replace(ve,"%3D")}function Re(e){return Ce(e).replace(pe,"%23").replace(ge,"%3F")}function Te(e){return null==e?"":Re(e).replace(he,"%2F")}function Ae(e){try{return decodeURIComponent(""+e)}catch(t){}return""+e}function Fe(e){const t={};if(""===e||"?"===e)return t;const n="?"===e[0],r=(n?e.slice(1):e).split("&");for(let o=0;oe&&je(e))):[r&&je(r)];o.forEach((e=>{void 0!==e&&(t+=(t.length?"&":"")+n,null!=e&&(t+="="+e))}))}return t}function Le(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[n]=a(r)?r.map((e=>null==e?null:""+e)):null==r?r:""+r)}return t}const Me=Symbol(""),$e=Symbol(""),Ne=Symbol(""),Ue=Symbol(""),De=Symbol("");function Je(){let e=[];function t(t){return e.push(t),()=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e,reset:n}}function Be(e,t,n,r,o){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise(((c,s)=>{const l=e=>{!1===e?s(W(4,{from:n,to:t})):e instanceof Error?s(e):D(e)?s(W(2,{from:t,to:e})):(i&&r.enterCallbacks[o]===i&&"function"===typeof e&&i.push(e),c())},u=e.call(r&&r.instances[o],t,n,l);let a=Promise.resolve(u);e.length<3&&(a=a.then(l)),a.catch((e=>s(e)))}))}function He(e,t,n,r){const o=[];for(const i of e){0;for(const e in i.components){let s=i.components[e];if("beforeRouteEnter"===t||i.instances[e])if(qe(s)){const c=s.__vccOpts||s,l=c[t];l&&o.push(Be(l,n,r,i,e))}else{let l=s();0,o.push((()=>l.then((o=>{if(!o)return Promise.reject(new Error(`Couldn't resolve component "${e}" at "${i.path}"`));const s=c(o)?o.default:o;i.components[e]=s;const l=s.__vccOpts||s,u=l[t];return u&&Be(u,n,r,i,e)()}))))}}}return o}function qe(e){return"object"===typeof e||"displayName"in e||"props"in e||"__vccOpts"in e}function We(e){const t=(0,r.f3)(Ne),n=(0,r.f3)(Ue),i=(0,r.Fl)((()=>t.resolve((0,o.SU)(e.to)))),c=(0,r.Fl)((()=>{const{matched:e}=i.value,{length:t}=e,r=e[t-1],o=n.matched;if(!r||!o.length)return-1;const c=o.findIndex(m.bind(null,r));if(c>-1)return c;const s=Xe(e[t-2]);return t>1&&Xe(r)===s&&o[o.length-1].path!==s?o.findIndex(m.bind(null,e[t-2])):c})),s=(0,r.Fl)((()=>c.value>-1&&ze(n.params,i.value.params))),l=(0,r.Fl)((()=>c.value>-1&&c.value===n.matched.length-1&&y(n.params,i.value.params)));function a(n={}){return Ke(n)?t[(0,o.SU)(e.replace)?"replace":"push"]((0,o.SU)(e.to)).catch(u):Promise.resolve()}return{route:i,href:(0,r.Fl)((()=>i.value.href)),isActive:s,isExactActive:l,navigate:a}}const Ve=(0,r.aZ)({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:We,setup(e,{slots:t}){const n=(0,o.qj)(We(e)),{options:i}=(0,r.f3)(Ne),c=(0,r.Fl)((()=>({[Ze(e.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[Ze(e.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive})));return()=>{const o=t.default&&t.default(n);return e.custom?o:(0,r.h)("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:c.value},o)}}}),Ge=Ve;function Ke(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(void 0===e.button||0===e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function ze(e,t){for(const n in t){const r=t[n],o=e[n];if("string"===typeof r){if(r!==o)return!1}else if(!a(o)||o.length!==r.length||r.some(((e,t)=>e!==o[t])))return!1}return!0}function Xe(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ze=(e,t,n)=>null!=e?e:null!=t?t:n,Ye=(0,r.aZ)({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const i=(0,r.f3)(De),c=(0,r.Fl)((()=>e.route||i.value)),l=(0,r.f3)($e,0),u=(0,r.Fl)((()=>{let e=(0,o.SU)(l);const{matched:t}=c.value;let n;while((n=t[e])&&!n.components)e++;return e})),a=(0,r.Fl)((()=>c.value.matched[u.value]));(0,r.JJ)($e,(0,r.Fl)((()=>u.value+1))),(0,r.JJ)(Me,a),(0,r.JJ)(De,c);const f=(0,o.iH)();return(0,r.YP)((()=>[f.value,a.value,e.name]),(([e,t,n],[r,o,i])=>{t&&(t.instances[n]=e,o&&o!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=o.leaveGuards),t.updateGuards.size||(t.updateGuards=o.updateGuards))),!e||!t||o&&m(t,o)&&r||(t.enterCallbacks[n]||[]).forEach((t=>t(e)))}),{flush:"post"}),()=>{const o=c.value,i=e.name,l=a.value,u=l&&l.components[i];if(!u)return Qe(n.default,{Component:u,route:o});const p=l.props[i],d=p?!0===p?o.params:"function"===typeof p?p(o):p:null,h=e=>{e.component.isUnmounted&&(l.instances[i]=null)},v=(0,r.h)(u,s({},d,t,{onVnodeUnmounted:h,ref:f}));return Qe(n.default,{Component:v,route:o})||v}}});function Qe(e,t){if(!e)return null;const n=e(t);return 1===n.length?n[0]:n}const et=Ye;function tt(e){const t=oe(e.routes,e),n=e.parseQuery||Fe,c=e.stringifyQuery||Ie,f=e.history;const p=Je(),v=Je(),m=Je(),y=(0,o.XI)(B);let b=B;i&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const _=l.bind(null,(e=>""+e)),w=l.bind(null,Te),x=l.bind(null,Ae);function S(e,n){let r,o;return J(e)?(r=t.getRecordMatcher(e),o=n):o=e,t.addRoute(o,r)}function O(e){const n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function C(){return t.getRoutes().map((e=>e.record))}function E(e){return!!t.getRecordMatcher(e)}function T(e,r){if(r=s({},r||y.value),"string"===typeof e){const o=d(n,e,r.path),i=t.resolve({path:o.path},r),c=f.createHref(o.fullPath);return s(o,i,{params:x(i.params),hash:Ae(o.hash),redirectedFrom:void 0,href:c})}let o;if("path"in e)o=s({},e,{path:d(n,e.path,r.path).path});else{const t=s({},e.params);for(const e in t)null==t[e]&&delete t[e];o=s({},e,{params:w(e.params)}),r.params=w(r.params)}const i=t.resolve(o,r),l=e.hash||"";i.params=_(x(i.params));const u=h(c,s({},e,{hash:Ee(l),path:i.path})),a=f.createHref(u);return s({fullPath:u,hash:l,query:c===Ie?Le(e.query):e.query||{}},i,{redirectedFrom:void 0,href:a})}function I(e){return"string"===typeof e?d(n,e,y.value.path):s({},e)}function L(e,t){if(b!==e)return W(8,{from:t,to:e})}function M(e){return U(e)}function $(e){return M(s(I(e),{replace:!0}))}function N(e){const t=e.matched[e.matched.length-1];if(t&&t.redirect){const{redirect:n}=t;let r="function"===typeof n?n(e):n;return"string"===typeof r&&(r=r.includes("?")||r.includes("#")?r=I(r):{path:r},r.params={}),s({query:e.query,hash:e.hash,params:"path"in r?{}:e.params},r)}}function U(e,t){const n=b=T(e),r=y.value,o=e.state,i=e.force,l=!0===e.replace,u=N(n);if(u)return U(s(I(u),{state:"object"===typeof u?s({},o,u.state):o,force:i,replace:l}),t||n);const a=n;let f;return a.redirectedFrom=t,!i&&g(c,r,n)&&(f=W(16,{to:a,from:r}),ne(r,r,!0,!1)),(f?Promise.resolve(f):H(a,r)).catch((e=>V(e)?V(e,2)?e:te(e):Q(e,a,r))).then((e=>{if(e){if(V(e,2))return U(s({replace:l},I(e.to),{state:"object"===typeof e.to?s({},o,e.to.state):o,force:i}),t||a)}else e=G(a,r,!0,l,o);return q(a,r,e),e}))}function D(e,t){const n=L(e,t);return n?Promise.reject(n):Promise.resolve()}function H(e,t){let n;const[r,o,i]=rt(e,t);n=He(r.reverse(),"beforeRouteLeave",e,t);for(const s of r)s.leaveGuards.forEach((r=>{n.push(Be(r,e,t))}));const c=D.bind(null,e,t);return n.push(c),nt(n).then((()=>{n=[];for(const r of p.list())n.push(Be(r,e,t));return n.push(c),nt(n)})).then((()=>{n=He(o,"beforeRouteUpdate",e,t);for(const r of o)r.updateGuards.forEach((r=>{n.push(Be(r,e,t))}));return n.push(c),nt(n)})).then((()=>{n=[];for(const r of e.matched)if(r.beforeEnter&&!t.matched.includes(r))if(a(r.beforeEnter))for(const o of r.beforeEnter)n.push(Be(o,e,t));else n.push(Be(r.beforeEnter,e,t));return n.push(c),nt(n)})).then((()=>(e.matched.forEach((e=>e.enterCallbacks={})),n=He(i,"beforeRouteEnter",e,t),n.push(c),nt(n)))).then((()=>{n=[];for(const r of v.list())n.push(Be(r,e,t));return n.push(c),nt(n)})).catch((e=>V(e,8)?e:Promise.reject(e)))}function q(e,t,n){for(const r of m.list())r(e,t,n)}function G(e,t,n,r,o){const c=L(e,t);if(c)return c;const l=t===B,u=i?history.state:{};n&&(r||l?f.replace(e.fullPath,s({scroll:l&&u&&u.scroll},o)):f.push(e.fullPath,o)),y.value=e,ne(e,t,n,l),te()}let K;function z(){K||(K=f.listen(((e,t,n)=>{if(!se.listening)return;const r=T(e),o=N(r);if(o)return void U(s(o,{replace:!0}),r).catch(u);b=r;const c=y.value;i&&A(R(c.fullPath,n.delta),j()),H(r,c).catch((e=>V(e,12)?e:V(e,2)?(U(e.to,r).then((e=>{V(e,20)&&!n.delta&&n.type===k.pop&&f.go(-1,!1)})).catch(u),Promise.reject()):(n.delta&&f.go(-n.delta,!1),Q(e,r,c)))).then((e=>{e=e||G(r,c,!1),e&&(n.delta&&!V(e,8)?f.go(-n.delta,!1):n.type===k.pop&&V(e,20)&&f.go(-1,!1)),q(r,c,e)})).catch(u)})))}let X,Z=Je(),Y=Je();function Q(e,t,n){te(e);const r=Y.list();return r.length?r.forEach((r=>r(e,t,n))):console.error(e),Promise.reject(e)}function ee(){return X&&y.value!==B?Promise.resolve():new Promise(((e,t)=>{Z.add([e,t])}))}function te(e){return X||(X=!e,z(),Z.list().forEach((([t,n])=>e?n(e):t())),Z.reset()),e}function ne(t,n,o,c){const{scrollBehavior:s}=e;if(!i||!s)return Promise.resolve();const l=!o&&F(R(t.fullPath,0))||(c||!o)&&history.state&&history.state.scroll||null;return(0,r.Y3)().then((()=>s(t,n,l))).then((e=>e&&P(e))).catch((e=>Q(e,t,n)))}const re=e=>f.go(e);let ie;const ce=new Set,se={currentRoute:y,listening:!0,addRoute:S,removeRoute:O,hasRoute:E,getRoutes:C,resolve:T,options:e,push:M,replace:$,go:re,back:()=>re(-1),forward:()=>re(1),beforeEach:p.add,beforeResolve:v.add,afterEach:m.add,onError:Y.add,isReady:ee,install(e){const t=this;e.component("RouterLink",Ge),e.component("RouterView",et),e.config.globalProperties.$router=t,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>(0,o.SU)(y)}),i&&!ie&&y.value===B&&(ie=!0,M(f.location).catch((e=>{0})));const n={};for(const o in B)n[o]=(0,r.Fl)((()=>y.value[o]));e.provide(Ne,t),e.provide(Ue,(0,o.qj)(n)),e.provide(De,y);const c=e.unmount;ce.add(e),e.unmount=function(){ce.delete(e),ce.size<1&&(b=B,K&&K(),K=null,y.value=B,ie=!1,X=!1),c()}}};return se}function nt(e){return e.reduce(((e,t)=>e.then((()=>t()))),Promise.resolve())}function rt(e,t){const n=[],r=[],o=[],i=Math.max(t.matched.length,e.matched.length);for(let c=0;cm(e,i)))?r.push(i):n.push(i));const s=e.matched[c];s&&(t.matched.find((e=>m(e,s)))||o.push(s))}return[n,r,o]}}}]); \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..98fd4e8 --- /dev/null +++ b/manifest.json @@ -0,0 +1 @@ +{"name":"NetSchoolApi","short_name":"NetSchoolApi","theme_color":"#17181C","icons":[{"src":"./img/icons/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"./img/icons/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"start_url":".","display":"standalone","background_color":"#17181C"} \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/service-worker.js b/service-worker.js new file mode 100644 index 0000000..706f59d --- /dev/null +++ b/service-worker.js @@ -0,0 +1 @@ +if(!self.define){let e,o={};const s=(s,i)=>(s=new URL(s+".js",i).href,o[s]||new Promise((o=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=o,document.head.appendChild(e)}else e=s,importScripts(s),o()})).then((()=>{let e=o[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e})));self.define=(i,l)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(o[n])return;let c={};const r=e=>s(e,n),t={module:{uri:n},exports:c,require:r};o[n]=Promise.all(i.map((e=>t[e]||r(e)))).then((e=>(l(...e),c)))}}define(["./workbox-94d8ddb9"],(function(e){"use strict";e.setCacheNameDetails({prefix:"vdocs"}),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/NetSchoolApi/css/614.03fab845.css",revision:null},{url:"/NetSchoolApi/css/801.e38130a9.css",revision:null},{url:"/NetSchoolApi/css/985.f2e8cb0c.css",revision:null},{url:"/NetSchoolApi/css/app.d282c66f.css",revision:null},{url:"/NetSchoolApi/index.html",revision:"64eba6103ee40c041e5a07ad384026e7"},{url:"/NetSchoolApi/js/364.1b61b8d2.js",revision:null},{url:"/NetSchoolApi/js/614.dc93d85f.js",revision:null},{url:"/NetSchoolApi/js/801.b4509d2d.js",revision:null},{url:"/NetSchoolApi/js/985.4bad0315.js",revision:null},{url:"/NetSchoolApi/js/app.60842fc0.js",revision:null},{url:"/NetSchoolApi/js/chunk-vendors.10f91261.js",revision:null},{url:"/NetSchoolApi/manifest.json",revision:"f79d7078c359ead577f932f6b7904128"},{url:"/NetSchoolApi/robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"}],{}),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html"))),e.registerRoute(/^http.*github/,new e.NetworkFirst({cacheName:"api-cache",networkTimeoutSeconds:2,plugins:[]}),"GET")})); diff --git a/workbox-94d8ddb9.js b/workbox-94d8ddb9.js new file mode 100644 index 0000000..ee05c72 --- /dev/null +++ b/workbox-94d8ddb9.js @@ -0,0 +1 @@ +define(["exports"],(function(t){"use strict";try{self["workbox:core:6.5.3"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:6.5.3"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super((({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)}),e,s)}}class o{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",(t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map((e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})})));t.waitUntil(s),t.ports&&t.ports[0]&&s.then((()=>t.ports[0].postMessage(!0)))}}))}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let o=r&&r.handler;const a=t.method;if(!o&&this.i.has(a)&&(o=this.i.get(a)),!o)return;let c;try{c=o.handle({url:s,request:t,event:e,params:i})}catch(t){c=Promise.reject(t)}const h=r&&r.catchHandler;return c instanceof Promise&&(this.o||h)&&(c=c.catch((async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n}))),c}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const o=r.match({url:t,sameOrigin:e,request:s,event:n});if(o)return i=o,(Array.isArray(i)&&0===i.length||o.constructor===Object&&0===Object.keys(o).length||"boolean"==typeof o)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let a;const c=()=>(a||(a=new o,a.addFetchListener(),a.addCacheListener()),a);function h(t,e,n){let o;if("string"==typeof t){const s=new URL(t,location.href);o=new i((({url:t})=>t.href===s.href),e,n)}else if(t instanceof RegExp)o=new r(t,e,n);else if("function"==typeof t)o=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});o=t}return c().registerRoute(o),o}try{self["workbox:strategies:6.5.3"]&&_()}catch(t){}const u={cacheWillUpdate:async({response:t})=>200===t.status||0===t.status?t:null},l={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},f=t=>[l.prefix,t,l.suffix].filter((t=>t&&t.length>0)).join("-"),w=t=>{(t=>{for(const e of Object.keys(l))t(e)})((e=>{"string"==typeof t[e]&&(l[e]=t[e])}))},d=t=>t||f(l.precache),p=t=>t||f(l.runtime);function y(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class g{constructor(){this.promise=new Promise(((t,e)=>{this.resolve=t,this.reject=e}))}}const m=new Set;function R(t){return"string"==typeof t?new Request(t):t}class v{constructor(t,e){this.h={},Object.assign(this,e),this.event=e.event,this.u=t,this.l=new g,this.p=[],this.g=[...t.plugins],this.m=new Map;for(const t of this.g)this.m.set(t,{});this.event.waitUntil(this.l.promise)}async fetch(t){const{event:e}=this;let n=R(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.u.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=R(t);let s;const{cacheName:n,matchOptions:i}=this.u,r=await this.getCacheKey(e,"read"),o=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,o);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=R(t);var i;await(i=0,new Promise((t=>setTimeout(t,i))));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(o=r.url,new URL(String(o),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var o;const a=await this.R(e);if(!a)return!1;const{cacheName:c,matchOptions:h}=this.u,u=await self.caches.open(c),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=y(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),o=await t.keys(e,r);for(const e of o)if(i===y(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?a.clone():a)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of m)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:c,oldResponse:f,newResponse:a.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.h[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=R(await t({mode:e,request:n,event:this.event,params:this.params}));this.h[s]=n}return this.h[s]}hasCallback(t){for(const e of this.u.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.u.plugins)if("function"==typeof e[t]){const s=this.m.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.p.push(t),t}async doneWaiting(){let t;for(;t=this.p.shift();)await t}destroy(){this.l.resolve(null)}async R(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class q{constructor(t={}){this.cacheName=p(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new v(this,{event:e,request:s,params:n}),r=this.v(i,s,e);return[r,this.q(r,i,s,e)]}async v(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this.U(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async q(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}function U(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:6.5.3"]&&_()}catch(t){}function b(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class L{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class E{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.L.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.L=t}}let C,O;async function x(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=e?e(r):r,a=function(){if(void 0===C){const t=new Response("");if("body"in t)try{new Response(t.body),C=!0}catch(t){C=!1}C=!1}return C}()?i.body:await i.blob();return new Response(a,o)}class N extends q{constructor(t={}){t.cacheName=d(t.cacheName),super(t),this._=!1!==t.fallbackToNetwork,this.plugins.push(N.copyRedirectedCacheableResponsesPlugin)}async U(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.C(t,e):await this.O(t,e))}async O(t,e){let n;const i=e.params||{};if(!this._)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,o=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&o&&"no-cors"!==t.mode&&(this.N(),await e.cachePut(t,n.clone()))}return n}async C(t,e){this.N();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}N(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==N.copyRedirectedCacheableResponsesPlugin&&(n===N.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(N.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}N.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},N.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await x(t):t};class P{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.P=new Map,this.T=new Map,this.W=new Map,this.u=new N({cacheName:d(t),plugins:[...e,new E({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.u}precache(t){this.addToCacheList(t),this.k||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.k=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=b(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.P.has(i)&&this.P.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.P.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.W.has(t)&&this.W.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.W.set(t,n.integrity)}if(this.P.set(i,t),this.T.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return U(t,(async()=>{const e=new L;this.strategy.plugins.push(e);for(const[e,s]of this.P){const n=this.W.get(s),i=this.T.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(t){return U(t,(async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.P.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this.P}getCachedURLs(){return[...this.P.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.P.get(e.href)}getIntegrityForCacheKey(t){return this.W.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}const T=()=>(O||(O=new P),O);class W extends i{constructor(t,e){super((({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const o=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some((t=>t.test(s)))&&t.searchParams.delete(s);return t}(r,e);if(yield o.href,s&&o.pathname.endsWith("/")){const t=new URL(o.href);t.pathname+=s,yield t.href}if(n){const t=new URL(o.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}}),t.strategy)}}t.NavigationRoute=class extends i{constructor(t,{allowlist:e=[/./],denylist:s=[]}={}){super((t=>this.j(t)),t),this.K=e,this.M=s}j({url:t,request:e}){if(e&&"navigate"!==e.mode)return!1;const s=t.pathname+t.search;for(const t of this.M)if(t.test(s))return!1;return!!this.K.some((t=>t.test(s)))}},t.NetworkFirst=class extends q{constructor(t={}){super(t),this.plugins.some((t=>"cacheWillUpdate"in t))||this.plugins.unshift(u),this.S=t.networkTimeoutSeconds||0}async U(t,e){const n=[],i=[];let r;if(this.S){const{id:s,promise:o}=this.D({request:t,logs:n,handler:e});r=s,i.push(o)}const o=this.I({timeoutId:r,request:t,logs:n,handler:e});i.push(o);const a=await e.waitUntil((async()=>await e.waitUntil(Promise.race(i))||await o)());if(!a)throw new s("no-response",{url:t.url});return a}D({request:t,logs:e,handler:s}){let n;return{promise:new Promise((e=>{n=setTimeout((async()=>{e(await s.cacheMatch(t))}),1e3*this.S)})),id:n}}async I({timeoutId:t,request:e,logs:s,handler:n}){let i,r;try{r=await n.fetchAndCachePut(e)}catch(t){t instanceof Error&&(i=t)}return t&&clearTimeout(t),!i&&r||(r=await n.cacheMatch(e)),r}},t.clientsClaim=function(){self.addEventListener("activate",(()=>self.clients.claim()))},t.createHandlerBoundToURL=function(t){return T().createHandlerBoundToURL(t)},t.precacheAndRoute=function(t,e){!function(t){T().precache(t)}(t),function(t){const e=T();h(new W(e,t))}(e)},t.registerRoute=h,t.setCacheNameDetails=function(t){w(t)}}));