mirror of
https://github.com/tdurieux/anonymous_github.git
synced 2026-11-14 00:07:00 +01:00
feat(ui): follow-up polish from design review rounds 88-91
One-row phone toolbar, errors page opens on server errors, one-row submit bar, publish warning after a source loads, three-column FAQ with a help card, queue range control in the Throughput card, shared admin table cards, dark-mode contrast and a stronger phone code scroll cue. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
579ce970c7
commit
53cac6ac39
11 files changed
+122
-40
No files matched your search
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"core.min.js": "core.fefc61001a.min.js",
|
||||
"vendor.min.js": "vendor.35208cb3e7.min.js",
|
||||
"vendor.min.js": "vendor.ddf6179ad0.min.js",
|
||||
"mermaid.min.js": "mermaid.f848a72d16.min.js",
|
||||
"all.min.css": "all.40fdc12309.min.css",
|
||||
"all.min.css": "all.fb8a9e1005.min.css",
|
||||
"markdown.min.js": "markdown.1d3b1ed22a.min.js",
|
||||
"pdf.min.js": "pdf.4d9cc6ff49.min.js",
|
||||
"notebook.min.js": "notebook.c3144c18ae.min.js",
|
||||
|
||||
Vendored
+1
-1
@@ -6,4 +6,4 @@
|
||||
*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unsLine truncated
|
||||
* Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
*/.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{contentLine truncated
|
||||
*/.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{contentLine truncated
|
||||
@@ -11613,3 +11613,75 @@ input::placeholder, textarea::placeholder, .form-control::placeholder, #sourceUr
|
||||
.errors-page .kpi-filter:hover { border-color: var(--control-border, #CFC7B9) !important; }
|
||||
.errors-page .kpi-filter.is-selected { border-color: var(--accent) !important; box-shadow: inset 0 0 0 1px var(--accent) !important; }
|
||||
.errors-page .kpi-filter:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
||||
|
||||
/* ===== Round 94 ===== */
|
||||
/* outline: inactive items readable */
|
||||
.readme-toc a:not(.is-active) { color: #4F4A43 !important; }
|
||||
.readme-toc a.lvl-3:not(.is-active) { color: #625C53 !important; }
|
||||
/* find: a 1px ring so it doesn't double up with the toolbar's on-state */
|
||||
.md-find-input:focus, .ace_search .ace_search_field:focus { box-shadow: 0 0 0 2px var(--accent-soft) !important; border-color: var(--accent) !important; }
|
||||
/* phone toolbar: toggle sits on the file-name line */
|
||||
@media (max-width: 767px) { .file-card-head { align-items: flex-start !important; } .file-card-head .btn-sidebar-toggle, .file-card-head .mobile-files-toggle, .file-card-head > button:first-child { margin-top: 2px !important; } }
|
||||
/* phone dashboard: one 40px control height on both rows */
|
||||
@media (max-width: 767px) { .dashboard-page .dashboard-quota > summary, .dashboard-page #search, .dashboard-page .dashboard-heading-actions .btn, .dashboard-page .filters-toggle, .dashboard-page .btn-filters { height: 40px !important; min-height: 40px !important; } }
|
||||
/* profile: the Files tile gets a caption like its neighbours */
|
||||
.quota-panel .quota-item:has(.quota-unlimited)::after, .profile-page .quota-tile:has(.quota-unlimited)::after { content: "No limit on file count"; display: block; font-size: 12.5px; color: var(--ink-soft); margin-top: 6px; }
|
||||
/* admin user: absent values quieter than real ones */
|
||||
.admin-page .detail-value.is-empty, .admin-page .is-unsynced { color: #9A9389 !important; font-style: normal !important; }
|
||||
|
||||
/* ===== Round 95 ===== */
|
||||
/* submit bar: draft note beside the button, one compact row */
|
||||
@media (min-width: 768px) {
|
||||
.anonymize-form-col .anonymize-submit-bar { display: flex !important; align-items: center; gap: 16px; }
|
||||
.anonymize-submit-bar .draft-status { margin: 0 !important; flex: 0 1 auto; max-width: 46%; line-height: 1.35; }
|
||||
.anonymize-submit-bar .btn-ink { flex: 1 1 auto; }
|
||||
}
|
||||
/* the publish warning appears once a source is loaded, not on the empty first step */
|
||||
.anonymize-landing .repo-access-note > span:has(.ui-icon) { display: none !important; }
|
||||
/* sidebar ZIP button uses the same download glyph as the toolbar (CSS mask over the old icon) */
|
||||
/* phone code: a shadow edge marks more code to the right */
|
||||
@media (max-width: 767px) { .file-card.is-code.no-wrap .file-card-body::after { box-shadow: inset -8px 0 8px -8px rgba(40,32,24,.35) !important; border-right: 0 !important; } }
|
||||
/* dark: chrome and reading pane closer in tone */
|
||||
.dark-mode .leftCol { background: #1C1A17 !important; }
|
||||
.dark-mode .viewer-bar { background: #181614 !important; }
|
||||
@media (max-width: 767px) {
|
||||
.file-card.is-code.no-wrap .file-card-body::after { width: 44px !important; background: linear-gradient(to right, rgba(250,249,246,0) 0%, rgba(250,249,246,.92) 55%, rgba(226,220,210,.95) 100%) !important; box-shadow: inset -1px 0 0 rgba(40,32,24,.18) !important; }
|
||||
.dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, rgba(20,19,17,0) 0%, rgba(20,19,17,.92) 55%, rgba(44,40,35,.95) 100%) !important; box-shadow: inset -1px 0 0 rgba(255,255,255,.14) !important; }
|
||||
}
|
||||
|
||||
/* ===== Round 96: structural ===== */
|
||||
/* phone toolbar: one 48px row — sidebar toggle, file name, redaction count, Copy, ⋯ */
|
||||
@media (max-width: 767px) {
|
||||
.file-card-head { min-height: 48px !important; align-items: center !important; padding-top: 4px !important; padding-bottom: 4px !important; }
|
||||
.file-card-head .file-card-path { display: flex !important; flex-direction: row !important; align-items: center !important; flex-wrap: nowrap !important; gap: 8px !important; min-width: 0; }
|
||||
.file-card-head .file-card-path .breadcrumb { min-width: 0; flex: 0 1 auto; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
|
||||
.mobile-sub { margin: 0 !important; flex: 0 0 auto; white-space: nowrap; }
|
||||
.mobile-sub > span { display: none !important; }
|
||||
.mobile-sub span:has(+ b)::after { content: none !important; }
|
||||
.mobile-sub b { font-size: 12.5px !important; }
|
||||
}
|
||||
/* FAQ: contents rail + answers centred as one group in the container */
|
||||
/* landing: one section rhythm */
|
||||
.paper-section-head, .paper-qa, .paper-features, .paper-stats { margin-top: 88px !important; }
|
||||
.paper-hero + .paper-stats { margin-top: 40px !important; }
|
||||
|
||||
/* ===== Round 97 ===== */
|
||||
/* FAQ: contents | answers | a quiet help card, on the site grid */
|
||||
@media (min-width: 1100px) { .paper-faq-body { grid-template-columns: 180px minmax(0, 1fr) 220px !important; gap: 48px !important; } .paper-faq-help { display: block; } }
|
||||
.paper-faq-help { display: none; }
|
||||
.paper-faq-help-card { position: sticky; top: 96px; border: 1px solid var(--border-color); border-radius: 12px; background: var(--paper-card); padding: 18px; }
|
||||
.paper-faq-help-card strong { display: block; font-size: 14px; margin-bottom: 6px; }
|
||||
.paper-faq-help-card p { font-size: 13px; line-height: 1.5; color: var(--ink-soft); margin: 0 0 12px; }
|
||||
/* submit bar: draft status on one line */
|
||||
.anonymize-submit-bar .draft-status { white-space: nowrap; flex: 0 0 auto !important; max-width: none !important; }
|
||||
/* queues: range control lives in the Throughput card header */
|
||||
.q-throughput .q-range-btns { float: right; margin: -4px 0 0 12px; }
|
||||
/* admin tables share the card shell used on Errors */
|
||||
.admin-page .paper-table { border: 1px solid var(--border-color) !important; border-radius: 12px !important; overflow: hidden; background: var(--paper-card); }
|
||||
/* dark mode: tertiary text lifted to AA */
|
||||
.dark-mode { --ink-soft: #ADA699; --ink-muted: #8C8579; }
|
||||
/* hero mock swatch = product slot */
|
||||
.hero-mock-count::before { background: var(--slot-bg) !important; }
|
||||
@media (min-width: 1100px) { .paper-faq-help { display: block !important; } }
|
||||
.q-throughput { position: relative; }
|
||||
.q-throughput .q-range-btns { position: absolute !important; top: 12px; right: 16px; float: none !important; margin: 0 !important; width: auto !important; display: inline-flex !important; z-index: 2; }
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
<div class="ov-health" role="status" v-if="data?.system?.memPercent > 90 || data?.system?.diskPercent > 90">
|
||||
<svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-warning"></use></svg>
|
||||
<span><b>Server needs attention.</b> {{ [data?.system?.memPercent > 85 ? 'Memory at ' + Math.round(data.system.memPercent) + '%.' : '', data?.system?.diskPercent > 85 ? 'Disk at ' + Math.round(data.system.diskPercent) + '%.' : ''].filter(Boolean).join(' ') }} New anonymizations may fail until it drops.</span>
|
||||
<span><b>Server needs attention.</b> Memory or disk is running high (see the cards below). New anonymizations may fail until it drops.</span>
|
||||
</div>
|
||||
|
||||
<!-- ── Top KPI row ──────────────────────────────────────────── -->
|
||||
|
||||
@@ -4,12 +4,6 @@
|
||||
<div class="q-header">
|
||||
<h1 class="paper-page-title">Queues</h1>
|
||||
<div class="q-header-actions">
|
||||
<div class="q-range-btns">
|
||||
<button class="btn btn-sm" :class="{active: range == '1h'}" @click="setRange('1h')">1h</button>
|
||||
<button class="btn btn-sm" :class="{active: range == '6h'}" @click="setRange('6h')">6h</button>
|
||||
<button class="btn btn-sm" :class="{active: range == '24h'}" @click="setRange('24h')">24h</button>
|
||||
<button class="btn btn-sm" :class="{active: range == '7d'}" @click="setRange('7d')">7d</button>
|
||||
</div>
|
||||
<button class="btn btn-sm" @click="pauseAll()">Pause all queues</button>
|
||||
|
||||
</div>
|
||||
@@ -44,6 +38,12 @@
|
||||
<!-- Detail: throughput chart + stats panel -->
|
||||
<div class="q-detail" v-if="selectedStats">
|
||||
<div class="q-throughput">
|
||||
<div class="q-range-btns">
|
||||
<button class="btn btn-sm" :class="{active: range == '1h'}" @click="setRange('1h')">1h</button>
|
||||
<button class="btn btn-sm" :class="{active: range == '6h'}" @click="setRange('6h')">6h</button>
|
||||
<button class="btn btn-sm" :class="{active: range == '24h'}" @click="setRange('24h')">24h</button>
|
||||
<button class="btn btn-sm" :class="{active: range == '7d'}" @click="setRange('7d')">7d</button>
|
||||
</div>
|
||||
<div class="q-section-label">Throughput · {{ selectedQueue }} <span class="q-section-right" v-if="(selectedStats?.completed24h || 0) + (selectedStats?.failed24h || 0) > 0"><span class="q-legend-completed">●</span> completed <span class="q-legend-failed">●</span> failed <template v-if="(selectedStats?.completed24h || 0) + (selectedStats?.failed24h || 0) > 0"><span class="q-legend-exec" aria-hidden="true"></span> avg time · {{ range }}</template></span></div>
|
||||
<div class="q-chart-wrap">
|
||||
<canvas id="q-throughput-chart" height="180"></canvas>
|
||||
|
||||
@@ -362,7 +362,7 @@
|
||||
<button type="button" class="btn btn-outline-ink mobile-preview-jump" @click="selectMobilePane('preview')">Review preview <span aria-hidden="true">→</span></button>
|
||||
<div class="anonymize-submit-bar" v-show="detectedType">
|
||||
<div class="draft-status" role="status" v-if="draftRestored">Your unsaved draft was restored. <button type="button" class="draft-discard" @click="discardDraft()">Discard draft</button></div>
|
||||
<div class="draft-status" v-else-if="unsavedChanges">{{ draftSaved ? "Draft saved in this tab for 30 minutes." : "Unsaved changes. Keep this tab open until you save." }} <button type="button" class="draft-discard" @click="discardDraft()">{{ isUpdate ? "Restore saved settings" : "Discard changes" }}</button></div>
|
||||
<div class="draft-status" v-else-if="unsavedChanges">{{ draftSaved ? "Draft saved ·" : "Unsaved changes ·" }} <button type="button" class="draft-discard" @click="discardDraft()">{{ isUpdate ? "Restore saved" : "Discard" }}</button></div>
|
||||
<button type="submit" :disabled="sourceLoading" class="btn btn-ink" v-if="detectedType === 'repo' && !isUpdate" @click.prevent="submitForm($event, () => { anonymizeRepo($event) })">
|
||||
<svg class="ui-icon mr-1" aria-hidden="true"><use href="#ui-icon-shield"></use></svg> Anonymize Repository
|
||||
</button>
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<kbd class="tree-search-kbd" v-show="!(fileSearchQuery)">{{ isMac ? '⌘' : 'Ctrl+' }}K</kbd>
|
||||
<button class="tree-search-clear" aria-label="Clear search" v-show="fileSearchQuery" @click="fileSearchQuery = ''; onFileSearchChange()">×</button>
|
||||
</div>
|
||||
<a target="_self" class="search-zip" v-if="options?.download" aria-label="Download repository as ZIP" :title="'Download the repository (snapshot ' + fmt?.date(options?.sourceCommitDate || options?.anonymizedAt || options?.lastUpdateDate) + ') as ZIP'" :href="safeUrl("/api/repo/" + (repoId) + "/zip")"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-zip"></use></svg></a>
|
||||
<a target="_self" class="search-zip" v-if="options?.download" aria-label="Download repository as ZIP" :title="'Download the repository (snapshot ' + fmt?.date(options?.sourceCommitDate || options?.anonymizedAt || options?.lastUpdateDate) + ') as ZIP'" :href="safeUrl("/api/repo/" + (repoId) + "/zip")"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-download"></use></svg></a>
|
||||
</div>
|
||||
<div class="leftCol-body">
|
||||
<div class="paper-inline-warning" role="alert" v-if="options?.truncatedFolders?.length > 0">
|
||||
|
||||
@@ -429,5 +429,12 @@ anonymous_github</code></pre>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
<aside class="paper-faq-help" aria-label="More help">
|
||||
<div class="paper-faq-help-card">
|
||||
<strong>Still stuck?</strong>
|
||||
<p>Open an issue on GitHub about the service. For a paper's content, contact the conference instead.</p>
|
||||
<a class="btn btn-outline-ink btn-sm" target="_blank" rel="noopener" href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml">Open an issue</a>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
@@ -51,7 +51,7 @@
|
||||
<symbol id="ui-icon-chart" viewBox="0 0 24 24"><path d="M3 3v18h18M7 16V9m5 7V5m5 11v-5"/></symbol>
|
||||
<symbol id="ui-icon-sidebar" viewBox="0 0 24 24"><path d="M4 5h16v14H4zM9.5 5v14M6 8.5h1.5M6 11h1.5"/></symbol>
|
||||
<symbol id="ui-icon-zip" viewBox="0 0 24 24"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><path d="M12 10v6m-2.5-2.5L12 16l2.5-2.5"/></symbol>
|
||||
<symbol id="ui-icon-goto" viewBox="0 0 24 24"><path d="M3 12h11"/><path d="M10 8l4 4-4 4"/><path d="M18 5v14"/></symbol>
|
||||
<symbol id="ui-icon-goto" viewBox="0 0 24 24"><path d="M9 4 7 20M17 4l-2 16M4 9h16M3 15h16"/></symbol>
|
||||
<symbol id="ui-icon-wrap" viewBox="0 0 24 24"><path d="M3 6h18M3 12h14.5a3.5 3.5 0 0 1 0 7H13m2-2.5L12.5 19l2.5 2.5M3 18h6"/></symbol>
|
||||
<symbol id="ui-icon-list" viewBox="0 0 24 24"><path d="M9 5h12M9 12h12M9 19h12m-18-14 1 1 2-2m-3 8 1 1 2-2m-3 8 1 1 2-2"/></symbol>
|
||||
<symbol id="ui-icon-bug" viewBox="0 0 24 24"><rect x="7" y="7" width="10" height="14" rx="5"/><path d="M9 7V5a3 3 0 0 1 6 0v2M12 7v14M3 8l4 2m-4 5h4m-4 7 4-4M21 8l-4 2m4 5h-4m4 7-4-4"/></symbol>
|
||||
|
||||
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |
@@ -1628,7 +1628,9 @@ export const errorsAdminController = function (state, http, location, interval)
|
||||
// A filter that matches nothing in the loaded window keeps reading older pages
|
||||
// (bounded) so a 5xx counted in the tiles is not reported as "No errors captured".
|
||||
const filtering = !!(state.query.bucket || (state.query.search || "").trim());
|
||||
if (filtering && !rows.length && state.canLoadMore?.() && !state._autoLoading && state.entries.length < 2500) {
|
||||
// The default view also reads on until the server errors counted in the tiles appear.
|
||||
const errorsHidden = !filtering && (state.stats?.severity?.error || 0) > 0 && !rows.some((r) => r._bucket === "error") && state.entries.length < 1500;
|
||||
if (((filtering && !rows.length) || errorsHidden) && state.canLoadMore?.() && !state._autoLoading && state.entries.length < 2500) {
|
||||
state._autoLoading = true;
|
||||
loadEntries(true);
|
||||
}
|
||||
@@ -1674,6 +1676,7 @@ export const errorsAdminController = function (state, http, location, interval)
|
||||
buckets: s.buckets || [],
|
||||
dropped: s.dropped || 0,
|
||||
};
|
||||
recompute();
|
||||
},
|
||||
(err) => console.error(err)
|
||||
);
|
||||
|
||||
Vendored
+26
-26
@@ -1,34 +1,34 @@
|
||||
"use strict";(()=>{var ud=Object.defineProperty;var cd=(e,t)=>{for(var s in t)ud(e,s,{get:t[s],enumerable:!0})};var ge=["abap","abc","actionscript","ada","alda","apache_conf","apex","applescript","aql","asciidoc","asl","assembly_x86","autohotkey","batchfile","c9search","c_cpp","cirru","clojure","cobol","coffee","coldfusion","crystal","csharp","csound_document","csound_orchestra","csound_score","csp","css","curly","d","dart","diff","django","dockerfile","dot","drools","edifact","eiffel","ejs","elixir","elm","erlang","forth","fortran","fsharp","fsl","ftl","gcode","gherkin","gitignore","glsl","gobstones","golang","graphqlschema","groovy","haml","handlebars","haskell","haskell_cabal","haxe","hjson","html","html_elixir","html_ruby","ini","io","jack","jade","java","javascript","json","json5","jsoniq","jsp","jssm","jsx","julia","kotlin","latex","less","liquid","lisp","livescript","logiql","logtalk","lsl","lua","luapage","lucene","makefile","markdown","mask","matlab","maze","mediawiki","mel","mixal","mushcode","mysql","nginx","nim","nix","nsis","nunjucks","objectivec","ocaml","pascal","perl","perl6","pgsql","php","php_laravel_blade","pig","plain_text","powershell","praat","prisma","prolog","properties","protobuf","puppet","python","qml","r","razor","rdoc","red","redshift","rhtml","rst","ruby","rust","sass","scad","scala","scheme","scss","sh","sjs","slim","smarty","snippets","soy_template","space","sparql","sql","sqlserver","stylus","svg","swift","tcl","terraform","tex","text","textile","toml","tsx","turtle","twig","typescript","vala","vbscript","velocity","verilog","vhdl","visualforce","wollok","xml","xquery","yaml","zeek"];var be={markdown:"/script/markdown.1d3b1ed22a.min.js",org:"/script/org.f61f262915.min.js",notebook:"/script/notebook.c3144c18ae.min.js",pdf:"/script/pdf.4d9cc6ff49.min.js",editor:"/script/editor.4f142d3adc.min.js"};var ms=new Map,md=be;function en(e){if(!ms.has(e)){let t=document.createElement("script");t.src=md[e];let s=new Promise((r,o)=>{t.onload=r,t.onerror=()=>{ms.delete(e),t.remove(),o(new Error(`Unable to load ${e}. Please retry.`))}});ms.set(e,s),document.head.appendChild(t)}return ms.get(e)}async function hs(){await en("editor"),ace.config.set("basePath","/script/external/ace/")}function vn(e){let t=Object.create(null);for(let s of e.split(","))t[s]=1;return s=>s in t}var Me={},Zt=[],it=()=>{},uo=()=>!1,yn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),gn=e=>e.startsWith("onUpdate:"),je=Object.assign,In=(e,t)=>{let s=e.indexOf(t);s>-1&&e.splice(s,1)},hd=Object.prototype.hasOwnProperty,Ae=(e,t)=>hd.call(e,t),ke=Array.isArray,zt=e=>Pn(e)==="[object Map]",Ht=e=>Pn(e)==="[object Set]",yr=e=>Pn(e)==="[object Date]";var Ne=e=>typeof e=="function",Fe=e=>typeof e=="string",ft=e=>typeof e=="symbol",Pe=e=>e!==null&&typeof e=="object",co=e=>(Pe(e)||Ne(e))&&Ne(e.then)&&Ne(e.catch),kr=Object.prototype.toString,Pn=e=>kr.call(e),po=e=>Pn(e).slice(8,-1),vs=e=>Pn(e)==="[object Object]",ys=e=>Fe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bn=vn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var gs=e=>{let t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},vd=/-\w/g,Ye=gs(e=>e.replace(vd,t=>t.slice(1).toUpperCase())),yd=/\B([A-Z])/g,Tt=gs(e=>e.replace(yd,"-$1").toLowerCase()),tn=gs(e=>e.charAt(0).toUpperCase()+e.slice(1)),Vn=gs(e=>e?`on${tn(e)}`:""),gt=(e,t)=>!Object.is(e,t),wn=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},bs=(e,t,s,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:s})},kn=e=>{let t=parseFloat(e);return isNaN(t)?e:t};var gr,Mn=()=>gr||(gr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Te(e){if(ke(e)){let t={};for(let s=0;s<e.length;s++){let r=e[s],o=Fe(r)?kd(r):Te(r);if(o)for(let i in o)t[i]=o[i]}return t}else if(Fe(e)||Pe(e))return e}var gd=/;(?![^(]*\))/g,bd=/:([^]+)/,wd=/"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;function kd(e){let t={};return e.replace(wd,s=>s.startsWith("/*")?"":s).split(gd).forEach(s=>{if(s){let r=s.split(bd);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function T(e){let t="";if(Fe(e))t=e;else if(ke(e))for(let s=0;s<e.length;s++){let r=T(e[s]);r&&(t+=r+" ")}else if(Pe(e))for(let s in e)e[s]&&(t+=s+" ");return t.trim()}var Cr="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,playsinline,readonly",Er=vn(Cr),Cd=vn(Cr+",async,autofocus,autoplay,controls,default,defer,disabled,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected");function ws(e){return!!e||e===""}function Ed(e,t,s){if(e.length!==t.length)return!1;let r=!0;for(let o=0;r&&o<e.length;o++)r=Ot(e[o],t[o],s);return r}function br(e,t,s){if(e.size!==t.size)return!1;let r=Array.from(t),o=new Uint8Array(r.length);for(let i of e){let a=-1;for(let c=0;c<r.length;c++)if(!o[c]&&Ot(i,r[c],s)){a=c;break}if(a<0)retLine truncated
|
||||
`))),e[cn]=Ys(o);let i=r||o.props&&o.props.type==="number";un(e,t?"change":"input",a=>{a.target.composing||e[cn](Yo(e.value,s,i))}),(s||i)&&un(e,"change",()=>{e.value=Yo(e.value,s,i)}),t||(un(e,"compositionstart",mc),un(e,"compositionend",sa),un(e,"change",sa))},mounted(e,{value:t,modifiers:{trim:s,number:r}}){let o=t??"",i=e[Ws];delete e[Ws],i!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==i?e[cn](Yo(e.value,s,r)):e.value=o},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:r,trim:o,number:i}},a){if(e[cn]=Ys(a),e.composing)return;let c=(i||e.type==="number")&&!/^0\d/.test(e.value)?kn(e.value):e.value,f=t??"";if(c===f)return;let g=e.getRootNode();(g instanceof Document||g instanceof ShadowRoot)&&g.activeElement===e&&e.type!=="range"&&(r&&t===s||o&&e.value.trim()===f)||(e.value=f)}};var Qs={deep:!0,created(e,{value:t,modifiers:{number:s}},r){e._modelValue=t,un(e,"change",()=>{let o=Array.prototype.filter.call(e.options,f=>f.selected).map(f=>s?kn(Js(f)):Js(f)),i=e.multiple,a=i?Ht(e._modelValue)?new Set(o):o:o[0],c=e._pendingValue=[i,i?ke(a)?o.slice():o:a];try{e[cn](a)}finally{Ze(()=>{e._pendingValue===c&&(e._pendingValue=void 0)})}}),e[cn]=Ys(r)},mounted(e,{value:t}){oa(e,t)},beforeUpdate(e,{value:t},s){e._modelValue=t,e[cn]=Ys(s)},updated(e,{value:t}){let s=e._pendingValue;e._pendingValue=void 0,(!s||s[0]!==e.multiple||!hc(t,s[1],s[0]))&&oa(e,t)}};function hc(e,t,s){if(!s)return Ot(e,t);if(ke(e))return Ot(e,t);if(Ht(e)){if(e.size!==t.length)return!1;for(let r of t)if(!e.has(r))return!1;return!0}return!1}function oa(e,t){let s=e.multiple,r=ke(t);if(!(s&&!r&&!Ht(t))){for(let o=0,i=e.options.length;o<i;o++){let a=e.options[o],c=Js(a);if(s)if(r){let f=typeof c;f==="string"||f==="number"?a.selected=t.some(g=>String(g)===String(c)):a.selected=Sr(t,c)>-1}else a.selected=t.has(c);else if(Ot(Js(a),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Js(e){return"_value"in e?e._value:e.value}var vc=["ctrl","shift","alt","meta"],yc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>vc.some(s=>e[`${s}Key`]&&!t.includes(s))},ue=(e,t)=>{if(!e)return e;let s=e._withMods||(e._withMods={}),r=t.join(".");return s[r]||(s[r]=((o,...i)=>{for(let a=0;a<t.length;a++){let c=yc[t[a]];if(c&&c(o,t))return}return e(o,...i)}))},gc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},yt=(e,t)=>{let s=e._withKeys||(e._withKeys={}),r=t.join(".");return s[r]||(s[r]=(o=>{if(!("key"in o))return;let i=Tt(o.key);if(t.some(a=>a===i||gc[a]===i))return e(o)}))},bc=je({patchProp:cc},Ju),ra;function wc(){return ra||(ra=Ui(bc))}var la=((...e)=>{let t=wc().createApp(...e),{mount:s}=t;return t.mount=r=>{let o=Cc(r);if(!o)return;let i=t._component;!Ne(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.nodeType===1&&(o.textContent="");let a=s(o,!1,kc(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),a},t});function kc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Cc(e){return Fe(e)?document.querySelector(e):e}var mn=typeof document<"u";function ua(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Ec(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&ua(e.default)}var Ve=Object.assign;function Xs(e,t){let s={};for(let r in t){let o=t[r];s[r]=kt(o)?o.map(e):e(o)}return s}var Tn=()=>{},kt=Array.isArray;function Zo(e,t){let s={};for(let r in e)s[r]=r in t?t[r]:e[r];return s}var ca=/#/g,Sc=/&/g,Nc=/\//g,_c=/=/g,Dc=/\?/g,pa=/\+/g,Rc=/%5B/g,Tc=/%5D/g,fa=/%5E/g,Oc=/%60/g,ma=/%7B/g,Ac=/%7C/g,ha=/%7D/g,Ic=/%20/g;function xo(e){return e==null?"":encodeURI(""+e).replace(Ac,"|").replace(Rc,"[").replace(Tc,"]")}function va(e){return xo(e).replace(ma,"{").replace(ha,"}").replace(fa,"^")}function Qo(e){return xo(e).replace(pa,"%2B").replace(Ic,"+").replace(ca,"%23").replace(Sc,"%26").replace(Oc,"`").replace(ma,"{").replace(ha,"}").replace(fa,"^")}function Pc(e){return Qo(e).replace(_c,"%3D")}function Vc(e){return xo(e).replace(ca,"%23").replace(Dc,"%3F")}function ya(e){return Vc(e).replace(Nc,"%2F")}function Rn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}var Mc=/\/$/,qc=e=>e.replace(Mc,"");function Zs(e,t,s="/"){let r,o={},i="",a="",c=t.indexOf("#"),f=t.indexOf("?");return f=c>=0&&f>c?-1:f,f>=0&&(r=t.slice(0,f),i=t.slice(f,c>0?c:t.length),o=e(i.slice(1))),c>=0&&(r=r||t.slice(0,c),a=t.slice(c,t.length)),r=$c(r??t,s),{fullPath:r+i+a,path:r,query:o,hash:Rn(a)}}function ga(e,t){let s=t.query?e(t.query):"";return t.path+(s&&"?")+s+(t.hash||"")}function er(e,t){return!t||!e.toLowerCase().sLine truncated
|
||||
"use strict";(()=>{var ud=Object.defineProperty;var cd=(e,t)=>{for(var s in t)ud(e,s,{get:t[s],enumerable:!0})};var be=["abap","abc","actionscript","ada","alda","apache_conf","apex","applescript","aql","asciidoc","asl","assembly_x86","autohotkey","batchfile","c9search","c_cpp","cirru","clojure","cobol","coffee","coldfusion","crystal","csharp","csound_document","csound_orchestra","csound_score","csp","css","curly","d","dart","diff","django","dockerfile","dot","drools","edifact","eiffel","ejs","elixir","elm","erlang","forth","fortran","fsharp","fsl","ftl","gcode","gherkin","gitignore","glsl","gobstones","golang","graphqlschema","groovy","haml","handlebars","haskell","haskell_cabal","haxe","hjson","html","html_elixir","html_ruby","ini","io","jack","jade","java","javascript","json","json5","jsoniq","jsp","jssm","jsx","julia","kotlin","latex","less","liquid","lisp","livescript","logiql","logtalk","lsl","lua","luapage","lucene","makefile","markdown","mask","matlab","maze","mediawiki","mel","mixal","mushcode","mysql","nginx","nim","nix","nsis","nunjucks","objectivec","ocaml","pascal","perl","perl6","pgsql","php","php_laravel_blade","pig","plain_text","powershell","praat","prisma","prolog","properties","protobuf","puppet","python","qml","r","razor","rdoc","red","redshift","rhtml","rst","ruby","rust","sass","scad","scala","scheme","scss","sh","sjs","slim","smarty","snippets","soy_template","space","sparql","sql","sqlserver","stylus","svg","swift","tcl","terraform","tex","text","textile","toml","tsx","turtle","twig","typescript","vala","vbscript","velocity","verilog","vhdl","visualforce","wollok","xml","xquery","yaml","zeek"];var we={markdown:"/script/markdown.1d3b1ed22a.min.js",notebook:"/script/notebook.c3144c18ae.min.js",org:"/script/org.f61f262915.min.js",pdf:"/script/pdf.4d9cc6ff49.min.js",editor:"/script/editor.4f142d3adc.min.js"};var ms=new Map,md=we;function en(e){if(!ms.has(e)){let t=document.createElement("script");t.src=md[e];let s=new Promise((r,o)=>{t.onload=r,t.onerror=()=>{ms.delete(e),t.remove(),o(new Error(`Unable to load ${e}. Please retry.`))}});ms.set(e,s),document.head.appendChild(t)}return ms.get(e)}async function hs(){await en("editor"),ace.config.set("basePath","/script/external/ace/")}function vn(e){let t=Object.create(null);for(let s of e.split(","))t[s]=1;return s=>s in t}var Me={},Zt=[],it=()=>{},uo=()=>!1,yn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),gn=e=>e.startsWith("onUpdate:"),je=Object.assign,In=(e,t)=>{let s=e.indexOf(t);s>-1&&e.splice(s,1)},hd=Object.prototype.hasOwnProperty,Ae=(e,t)=>hd.call(e,t),Ce=Array.isArray,zt=e=>Pn(e)==="[object Map]",Ht=e=>Pn(e)==="[object Set]",yr=e=>Pn(e)==="[object Date]";var Ne=e=>typeof e=="function",Fe=e=>typeof e=="string",ft=e=>typeof e=="symbol",Pe=e=>e!==null&&typeof e=="object",co=e=>(Pe(e)||Ne(e))&&Ne(e.then)&&Ne(e.catch),kr=Object.prototype.toString,Pn=e=>kr.call(e),po=e=>Pn(e).slice(8,-1),vs=e=>Pn(e)==="[object Object]",ys=e=>Fe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bn=vn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var gs=e=>{let t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},vd=/-\w/g,Ye=gs(e=>e.replace(vd,t=>t.slice(1).toUpperCase())),yd=/\B([A-Z])/g,Tt=gs(e=>e.replace(yd,"-$1").toLowerCase()),tn=gs(e=>e.charAt(0).toUpperCase()+e.slice(1)),Vn=gs(e=>e?`on${tn(e)}`:""),gt=(e,t)=>!Object.is(e,t),wn=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},bs=(e,t,s,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:s})},kn=e=>{let t=parseFloat(e);return isNaN(t)?e:t};var gr,Mn=()=>gr||(gr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Te(e){if(Ce(e)){let t={};for(let s=0;s<e.length;s++){let r=e[s],o=Fe(r)?kd(r):Te(r);if(o)for(let i in o)t[i]=o[i]}return t}else if(Fe(e)||Pe(e))return e}var gd=/;(?![^(]*\))/g,bd=/:([^]+)/,wd=/"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;function kd(e){let t={};return e.replace(wd,s=>s.startsWith("/*")?"":s).split(gd).forEach(s=>{if(s){let r=s.split(bd);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function T(e){let t="";if(Fe(e))t=e;else if(Ce(e))for(let s=0;s<e.length;s++){let r=T(e[s]);r&&(t+=r+" ")}else if(Pe(e))for(let s in e)e[s]&&(t+=s+" ");return t.trim()}var Cr="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,playsinline,readonly",Er=vn(Cr),Cd=vn(Cr+",async,autofocus,autoplay,controls,default,defer,disabled,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected");function ws(e){return!!e||e===""}function Ed(e,t,s){if(e.length!==t.length)return!1;let r=!0;for(let o=0;r&&o<e.length;o++)r=Ot(e[o],t[o],s);return r}function br(e,t,s){if(e.size!==t.size)return!1;let r=Array.from(t),o=new Uint8Array(r.length);for(let i of e){let a=-1;for(let c=0;c<r.length;c++)if(!o[c]&&Ot(i,r[c],s)){a=c;break}if(a<0)retLine truncated
|
||||
`))),e[cn]=Ys(o);let i=r||o.props&&o.props.type==="number";un(e,t?"change":"input",a=>{a.target.composing||e[cn](Yo(e.value,s,i))}),(s||i)&&un(e,"change",()=>{e.value=Yo(e.value,s,i)}),t||(un(e,"compositionstart",mc),un(e,"compositionend",sa),un(e,"change",sa))},mounted(e,{value:t,modifiers:{trim:s,number:r}}){let o=t??"",i=e[Ws];delete e[Ws],i!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==i?e[cn](Yo(e.value,s,r)):e.value=o},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:r,trim:o,number:i}},a){if(e[cn]=Ys(a),e.composing)return;let c=(i||e.type==="number")&&!/^0\d/.test(e.value)?kn(e.value):e.value,f=t??"";if(c===f)return;let g=e.getRootNode();(g instanceof Document||g instanceof ShadowRoot)&&g.activeElement===e&&e.type!=="range"&&(r&&t===s||o&&e.value.trim()===f)||(e.value=f)}};var Qs={deep:!0,created(e,{value:t,modifiers:{number:s}},r){e._modelValue=t,un(e,"change",()=>{let o=Array.prototype.filter.call(e.options,f=>f.selected).map(f=>s?kn(Js(f)):Js(f)),i=e.multiple,a=i?Ht(e._modelValue)?new Set(o):o:o[0],c=e._pendingValue=[i,i?Ce(a)?o.slice():o:a];try{e[cn](a)}finally{Ze(()=>{e._pendingValue===c&&(e._pendingValue=void 0)})}}),e[cn]=Ys(r)},mounted(e,{value:t}){oa(e,t)},beforeUpdate(e,{value:t},s){e._modelValue=t,e[cn]=Ys(s)},updated(e,{value:t}){let s=e._pendingValue;e._pendingValue=void 0,(!s||s[0]!==e.multiple||!hc(t,s[1],s[0]))&&oa(e,t)}};function hc(e,t,s){if(!s)return Ot(e,t);if(Ce(e))return Ot(e,t);if(Ht(e)){if(e.size!==t.length)return!1;for(let r of t)if(!e.has(r))return!1;return!0}return!1}function oa(e,t){let s=e.multiple,r=Ce(t);if(!(s&&!r&&!Ht(t))){for(let o=0,i=e.options.length;o<i;o++){let a=e.options[o],c=Js(a);if(s)if(r){let f=typeof c;f==="string"||f==="number"?a.selected=t.some(g=>String(g)===String(c)):a.selected=Sr(t,c)>-1}else a.selected=t.has(c);else if(Ot(Js(a),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Js(e){return"_value"in e?e._value:e.value}var vc=["ctrl","shift","alt","meta"],yc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>vc.some(s=>e[`${s}Key`]&&!t.includes(s))},de=(e,t)=>{if(!e)return e;let s=e._withMods||(e._withMods={}),r=t.join(".");return s[r]||(s[r]=((o,...i)=>{for(let a=0;a<t.length;a++){let c=yc[t[a]];if(c&&c(o,t))return}return e(o,...i)}))},gc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},yt=(e,t)=>{let s=e._withKeys||(e._withKeys={}),r=t.join(".");return s[r]||(s[r]=(o=>{if(!("key"in o))return;let i=Tt(o.key);if(t.some(a=>a===i||gc[a]===i))return e(o)}))},bc=je({patchProp:cc},Ju),ra;function wc(){return ra||(ra=Ui(bc))}var la=((...e)=>{let t=wc().createApp(...e),{mount:s}=t;return t.mount=r=>{let o=Cc(r);if(!o)return;let i=t._component;!Ne(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.nodeType===1&&(o.textContent="");let a=s(o,!1,kc(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),a},t});function kc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Cc(e){return Fe(e)?document.querySelector(e):e}var mn=typeof document<"u";function ua(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Ec(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&ua(e.default)}var Ve=Object.assign;function Xs(e,t){let s={};for(let r in t){let o=t[r];s[r]=kt(o)?o.map(e):e(o)}return s}var Tn=()=>{},kt=Array.isArray;function Zo(e,t){let s={};for(let r in e)s[r]=r in t?t[r]:e[r];return s}var ca=/#/g,Sc=/&/g,Nc=/\//g,_c=/=/g,Dc=/\?/g,pa=/\+/g,Rc=/%5B/g,Tc=/%5D/g,fa=/%5E/g,Oc=/%60/g,ma=/%7B/g,Ac=/%7C/g,ha=/%7D/g,Ic=/%20/g;function xo(e){return e==null?"":encodeURI(""+e).replace(Ac,"|").replace(Rc,"[").replace(Tc,"]")}function va(e){return xo(e).replace(ma,"{").replace(ha,"}").replace(fa,"^")}function Qo(e){return xo(e).replace(pa,"%2B").replace(Ic,"+").replace(ca,"%23").replace(Sc,"%26").replace(Oc,"`").replace(ma,"{").replace(ha,"}").replace(fa,"^")}function Pc(e){return Qo(e).replace(_c,"%3D")}function Vc(e){return xo(e).replace(ca,"%23").replace(Dc,"%3F")}function ya(e){return Vc(e).replace(Nc,"%2F")}function Rn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}var Mc=/\/$/,qc=e=>e.replace(Mc,"");function Zs(e,t,s="/"){let r,o={},i="",a="",c=t.indexOf("#"),f=t.indexOf("?");return f=c>=0&&f>c?-1:f,f>=0&&(r=t.slice(0,f),i=t.slice(f,c>0?c:t.length),o=e(i.slice(1))),c>=0&&(r=r||t.slice(0,c),a=t.slice(c,t.length)),r=$c(r??t,s),{fullPath:r+i+a,path:r,query:o,hash:Rn(a)}}function ga(e,t){let s=t.query?e(t.query):"";return t.path+(s&&"?")+s+(t.hash||"")}function er(e,t){return!t||!e.toLowerCase().sLine truncated
|
||||
${JSON.stringify(e)}${t?`
|
||||
while being at
|
||||
`+JSON.stringify(t):""}`},[Be.NAVIGATION_GUARD_REDIRECT]({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${Bc(t)}" via a navigation guard.`},[Be.NAVIGATION_ABORTED]({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},[Be.NAVIGATION_CANCELLED]({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},[Be.NAVIGATION_DUPLICATED]({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function fn(e,t){return Ve(new Error,{type:e,[Na]:!0},t)}function Ft(e,t){return e instanceof Error&&Na in e&&(t==null||!!(e.type&t))}var Hc=["params","query","hash"];function Bc(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;let t={};for(let s of Hc)s in e&&(t[s]=e[s]);return JSON.stringify(t,null,2)}function _a(e){let t={};if(e===""||e==="?")return t;let s=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;r<s.length;++r){let o=s[r].replace(pa," "),i=o.indexOf("="),a=Rn(i<0?o:o.slice(0,i)),c=i<0?null:Rn(o.slice(i+1));if(a in t){let f=t[a];kt(f)||(f=t[a]=[f]),f.push(c)}else t[a]=c}return t}function or(e){let t="";for(let s in e){let r=e[s];if(s=Pc(s),r==null){r!==void 0&&(t+=(t.length?"&":"")+s);continue}(kt(r)?r.map(o=>o&&Qo(o)):[r&&Qo(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+s,o!=null&&(t+="="+o))})}return t}function Da(e){let t={};for(let s in e){let r=e[s];r!==void 0&&(t[s]=kt(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}var Ra=Symbol(""),rr=Symbol(""),to=Symbol(""),no=Symbol(""),so=Symbol("");function On(){let e=[];function t(r){return e.push(r),()=>{let o=e.indexOf(r);o>-1&&e.splice(o,1)}}function s(){e=[]}return{add:t,list:()=>e.slice(),reset:s}}function Jt(e,t,s,r,o,i=a=>a()){let a=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((c,f)=>{let g=m=>{m===!1?f(fn(Be.NAVIGATION_ABORTED,{from:s,to:t})):m instanceof Error?f(m):zc(m)?f(fn(Be.NAVIGATION_GUARD_REDIRECT,{from:t,to:m})):(a&&r.enterCallbacks[o]===a&&typeof m=="function"&&a.push(m),c())},b=i(()=>e.call(r&&r.instances[o],t,s,g)),k=Promise.resolve(b);e.length<3&&(k=k.then(g)),k.catch(m=>f(m))})}function oo(e,t,s,r,o=i=>i()){let i=[];for(let a of e)for(let c in a.components){let f=a.components[c];if(!(t!=="beforeRouteEnter"&&!a.instances[c]))if(ua(f)){let g=(f.__vccOpts||f)[t];g&&i.push(Jt(g,s,r,a,c,o))}else{let g=f();i.push(()=>g.then(b=>{if(!b)throw new Error(`Couldn't resolve component "${c}" at "${a.path}"`);let k=Ec(b)?b.default:b;a.mods[c]=b,a.components[c]=k;let m=(k.__vccOpts||k)[t];return m&&Jt(m,s,r,a,c,o)()}))}}return i}function Ta(e,t){let s=[],r=[],o=[],i=Math.max(t.matched.length,e.matched.length);for(let a=0;a<i;a++){let c=t.matched[a];c&&(e.matched.find(g=>pn(g,c))?r.push(c):s.push(c));let f=e.matched[a];f&&(t.matched.find(g=>pn(g,f))||o.push(f))}return[s,r,o]}var jc=()=>location.protocol+"//"+location.host;function Fa(e,t){let{pathname:s,search:r,hash:o}=t,i=e.indexOf("#");if(i>-1){let a=o.includes(e.slice(i))?e.slice(i).length:1,c=o.slice(a);return c[0]!=="/"&&(c="/"+c),er(c,"")}return er(s,e)+r+o}function Gc(e,t,s,r){let o=[],i=[],a=null,c=({state:m})=>{let C=Fa(e,location),A=s.value,h=t.value,E=0;if(m){if(s.value=C,t.value=m,a&&a===A){a=null;return}E=h?m.position-h.position:0}else r(C);o.forEach(N=>{N(s.value,A,{delta:E,type:xs.pop,direction:E?E>0?eo.forward:eo.back:eo.unknown})})};function f(){a=s.value}function g(m){o.push(m);let C=()=>{let A=o.indexOf(m);A>-1&&o.splice(A,1)};return i.push(C),C}function b(){if(document.visibilityState==="hidden"){let{history:m}=window;if(!m.state)return;m.replaceState(Ve({},m.state,{scroll:fs()}),"")}}function k(){for(let m of i)m();i=[],window.removeEventListener("popstate",c),window.removeEventListener("pagehide",b),document.removeEventListener("visibilitychange",b)}return window.addEventListener("popstate",c),window.addEventListener("pagehide",b),document.addEventListener("visibilitychange",b),{pauseListeners:f,listen:g,destroy:k}}function Oa(e,t,s,r=!1,o=!1){return{back:e,current:t,forward:s,replaced:r,position:window.history.length,scroll:o?fs():null}}function Wc(e){let{history:t,location:s}=window,r={value:Fa(e,s)},o={value:t.state};o.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(f,g,b){let k=e.indexOf("#"),m=k>-1?(s.host&&document.querySelector("base")?e:e.slice(k))+f:jc()+e+f;try{t[b?"replaceState":"pushState"](g,"",m),o.value=g}catch(C){console.error(C),s[b?"replace":"assign"](m)}}function a(f,g){i(f,Ve({},t.state,Oa(o.value.back,f,o.value.forward,!0),g,{position:o.value.position}),!0),r.value=f}function c(f,g){let b=Ve({},o.value,t.state,{forward:f,scroll:fs()});i(b.current,b,!0),i(f,Ve({},Oa(r.value,f,null),{position:b.position+1},g),!1),r.value=f}return{location:r,state:o,push:c,replace:a}}function za(e){e=wa(e);let t=Wc(e),s=Gc(e,t.state,t.location,t.replace);function r(i,a=!0){a||s.pauseListeners(),history.go(i)}let o=Ve({locatLine truncated
|
||||
`+JSON.stringify(t):""}`},[Be.NAVIGATION_GUARD_REDIRECT]({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${Bc(t)}" via a navigation guard.`},[Be.NAVIGATION_ABORTED]({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},[Be.NAVIGATION_CANCELLED]({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},[Be.NAVIGATION_DUPLICATED]({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function fn(e,t){return Ve(new Error,{type:e,[Na]:!0},t)}function Ft(e,t){return e instanceof Error&&Na in e&&(t==null||!!(e.type&t))}var Hc=["params","query","hash"];function Bc(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;let t={};for(let s of Hc)s in e&&(t[s]=e[s]);return JSON.stringify(t,null,2)}function _a(e){let t={};if(e===""||e==="?")return t;let s=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;r<s.length;++r){let o=s[r].replace(pa," "),i=o.indexOf("="),a=Rn(i<0?o:o.slice(0,i)),c=i<0?null:Rn(o.slice(i+1));if(a in t){let f=t[a];kt(f)||(f=t[a]=[f]),f.push(c)}else t[a]=c}return t}function or(e){let t="";for(let s in e){let r=e[s];if(s=Pc(s),r==null){r!==void 0&&(t+=(t.length?"&":"")+s);continue}(kt(r)?r.map(o=>o&&Qo(o)):[r&&Qo(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+s,o!=null&&(t+="="+o))})}return t}function Da(e){let t={};for(let s in e){let r=e[s];r!==void 0&&(t[s]=kt(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}var Ra=Symbol(""),rr=Symbol(""),to=Symbol(""),no=Symbol(""),so=Symbol("");function On(){let e=[];function t(r){return e.push(r),()=>{let o=e.indexOf(r);o>-1&&e.splice(o,1)}}function s(){e=[]}return{add:t,list:()=>e.slice(),reset:s}}function Jt(e,t,s,r,o,i=a=>a()){let a=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((c,f)=>{let g=m=>{m===!1?f(fn(Be.NAVIGATION_ABORTED,{from:s,to:t})):m instanceof Error?f(m):zc(m)?f(fn(Be.NAVIGATION_GUARD_REDIRECT,{from:t,to:m})):(a&&r.enterCallbacks[o]===a&&typeof m=="function"&&a.push(m),c())},b=i(()=>e.call(r&&r.instances[o],t,s,g)),k=Promise.resolve(b);e.length<3&&(k=k.then(g)),k.catch(m=>f(m))})}function oo(e,t,s,r,o=i=>i()){let i=[];for(let a of e)for(let c in a.components){let f=a.components[c];if(!(t!=="beforeRouteEnter"&&!a.instances[c]))if(ua(f)){let g=(f.__vccOpts||f)[t];g&&i.push(Jt(g,s,r,a,c,o))}else{let g=f();i.push(()=>g.then(b=>{if(!b)throw new Error(`Couldn't resolve component "${c}" at "${a.path}"`);let k=Ec(b)?b.default:b;a.mods[c]=b,a.components[c]=k;let m=(k.__vccOpts||k)[t];return m&&Jt(m,s,r,a,c,o)()}))}}return i}function Ta(e,t){let s=[],r=[],o=[],i=Math.max(t.matched.length,e.matched.length);for(let a=0;a<i;a++){let c=t.matched[a];c&&(e.matched.find(g=>pn(g,c))?r.push(c):s.push(c));let f=e.matched[a];f&&(t.matched.find(g=>pn(g,f))||o.push(f))}return[s,r,o]}var jc=()=>location.protocol+"//"+location.host;function Fa(e,t){let{pathname:s,search:r,hash:o}=t,i=e.indexOf("#");if(i>-1){let a=o.includes(e.slice(i))?e.slice(i).length:1,c=o.slice(a);return c[0]!=="/"&&(c="/"+c),er(c,"")}return er(s,e)+r+o}function Gc(e,t,s,r){let o=[],i=[],a=null,c=({state:m})=>{let C=Fa(e,location),A=s.value,h=t.value,E=0;if(m){if(s.value=C,t.value=m,a&&a===A){a=null;return}E=h?m.position-h.position:0}else r(C);o.forEach(N=>{N(s.value,A,{delta:E,type:xs.pop,direction:E?E>0?eo.forward:eo.back:eo.unknown})})};function f(){a=s.value}function g(m){o.push(m);let C=()=>{let A=o.indexOf(m);A>-1&&o.splice(A,1)};return i.push(C),C}function b(){if(document.visibilityState==="hidden"){let{history:m}=window;if(!m.state)return;m.replaceState(Ve({},m.state,{scroll:fs()}),"")}}function k(){for(let m of i)m();i=[],window.removeEventListener("popstate",c),window.removeEventListener("pagehide",b),document.removeEventListener("visibilitychange",b)}return window.addEventListener("popstate",c),window.addEventListener("pagehide",b),document.addEventListener("visibilitychange",b),{pauseListeners:f,listen:g,destroy:k}}function Oa(e,t,s,r=!1,o=!1){return{back:e,current:t,forward:s,replaced:r,position:window.history.length,scroll:o?fs():null}}function Wc(e){let{history:t,location:s}=window,r={value:Fa(e,s)},o={value:t.state};o.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(f,g,b){let k=e.indexOf("#"),m=k>-1?(s.host&&document.querySelector("base")?e:e.slice(k))+f:jc()+e+f;try{t[b?"replaceState":"pushState"](g,"",m),o.value=g}catch(C){console.error(C),s[b?"replace":"assign"](m)}}function a(f,g){i(f,Ve({},t.state,Oa(o.value.back,f,o.value.forward,!0),g,{position:o.value.position}),!0),r.value=f}function c(f,g){let b=Ve({},o.value,t.state,{forward:f,scroll:fs()});i(b.current,b,!0),i(f,Ve({},Oa(r.value,f,null),{position:b.position+1},g),!1),r.value=f}return{location:r,state:o,push:c,replace:a}}function za(e){e=wa(e);let t=Wc(e),s=Gc(e,t.state,t.location,t.replace);function r(i,a=!0){a||s.pauseListeners(),history.go(i)}let o=Ve({locatLine truncated
|
||||
`)),e.options=Object.assign({},e.options,g.options),i.restore()})}a();let c=null;e.saveDefault=f=>{if(f&&f.preventDefault&&f.preventDefault(),e.saving)return;let g=i.checkpoint(),b={terms:e.terms.split(`
|
||||
`).map(k=>k.trim()).filter(k=>k.length>0),options:e.options};e.saving=!0,e.error=null,t.post("/api/user/default",b).then(()=>{i.accept(g),e.saving=!1,e.message=e.unsavedChanges?null:"Saved",c&&r.cancel(c),c=r(()=>{e.message=null},2500)},k=>{e.saving=!1;let C="ERRORS."+(k&&k.data&&k.data.error);s(C).then(A=>{e.error=A&&A!==C?A:"Unable to save your defaults. Please try again."},()=>{e.error="Unable to save your defaults. Please try again."})})},e.deleteAccount=()=>{confirm("Delete your account? All your anonymized repositories, gists, and pull requests will be removed, and your personal data will be erased. This cannot be undone.")&&(e.deletingAccount=!0,t.delete("/api/user").then(()=>{window.location.href="/"},()=>{e.deletingAccount=!1,e.deleteError="Unable to delete the account. Please try again."}))}},Qa=function(e,t,s){e.repoId=null,e.repoUrl=null,e.claim=()=>{t.post("/api/repo/claim",{repoId:e.repoId,repoUrl:e.repoUrl}).then(r=>{s.url("/dashboard")},r=>{e.error=r.data,e.claimForm.repoUrl.setValidity("not_found",!1),e.claimForm.repoId.setValidity("not_found",!1)})}},Xa=function(e,t,s,r,o){e.user&&!e.user.status&&s.url("/dashboard"),e.watch("user.status",()=>{e.user&&!e.user.status&&s.url("/dashboard")}),e.features=[{key:"anonymize",num:"01",eyebrow:"Anonymize",title:"Double-anonymous,",accent:"your rules.",text:"Choose what reviewers may see: links, images, PDFs, notebooks, GitHub Pages. Add your own terms, with regex if you need it, and pick the expiration date.",cta:"Start an anonymization",href:"/anonymize",url:"anonymous.4open.science/anonymize",img:"/imgs/anonymize.png",alt:"The anonymize form: source repository, terms to redact, options and a live README preview"},{key:"review",num:"02",eyebrow:"Review",title:"Reviewers browse",accent:"the real thing.",text:"Highlighted source code, rendered PDFs, images, and notebooks, in a familiar file explorer. GitHub Pages is also supported.",cta:"Open the example",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/",target:"_self",url:"anonymous.4open.science/r/840c8c57-\u2026",img:"/imgs/explorer.png",alt:"The repository explorer with a file tree and a rendered README"},{key:"manage",num:"03",eyebrow:"Manage",title:"One dashboard,",accent:"until the decision.",text:"Monitor views, edit configuration, remove or update your repository. Program chairs can group submissions under a conference with one shared expiry.",cta:"Open the dashboard",href:"/dashboard",needsUser:!0,url:"anonymous.4open.science/dashboard",img:"/imgs/dashboard.png",alt:"The dashboard listing anonymized repositories with status, views and expiry"}],e.feature=e.features[0].key,e.selectFeature=function(c){e.feature=c},e.featureHref=function(c){return c.needsUser&&!e.user?"/signin":c.href},e.featureTarget=function(c){return c.needsUser&&!e.user?"_self":c.target||void 0},e.featureKeydown=function(c,f){let g={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:"first",End:"last"}[c.key];if(g===void 0)return;c.preventDefault();let b=e.features.length,k=g==="first"?0:g==="last"?b-1:(f+g+b)%b;e.feature=e.features[k].key,o(()=>{let m=r.document.getElementById("feature-tab-"+e.feature);m&&m.focus()})},e.demoText=`# DeepLearnUtils
|
||||
Developed by Jane Smith at MIT CSAIL.
|
||||
See Smith et al., "Attention That Works," 2026.
|
||||
Contact: jane.smith@mit.edu`,e.demoTerms="Jane Smith, Smith, MIT CSAIL, jane.smith@mit.edu",e.demoParts=function(){let c=(e.demoTerms||"").split(/[,\n]/).map(m=>m.trim()).filter(Boolean).sort((m,C)=>C.length-m.length),f=m=>m.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(!c.length)return[{text:e.demoText}];let g=new RegExp("("+c.map(f).join("|")+")","gi"),b={},k=0;return(e.demoText||"").split(g).filter(m=>m!=="").map(m=>{let C=c.find(A=>A.toLowerCase()===m.toLowerCase());return C?(b[C.toLowerCase()]||(b[C.toLowerCase()]=++k),{text:String(b[C.toLowerCase()]),redacted:!0,original:m}):{text:m}})},e.demoCount=()=>e.demoParts().filter(c=>c.redacted).length,e.cards=[{key:"repositories",total:0,label:"repositories anonymized"},{key:"users",total:0,label:"researchers"},{key:"pageViews",total:0,label:"page views"},{key:"pullRequests",total:0,label:"pull requests"}];function i(){t.get("/api/stat/").then(c=>{e.stat=c.data,e.cards[0].total=c.data.nbRepositories,e.cards[1].total=c.data.nbUsers,e.cards[2].total=c.data.nbPageViews,e.cards[3].total=c.data.nbPullRequests}).catch(()=>{})}i();function a(c){let f={series:c,bars:[],viewW:100,deltaToday:0,pctChange:0,pctAbs:0,isUp:!0};if(!c||c.length<2)return f;let g=new Array(c.length-1);for(let h=1;h<c.length;h++)g[h-1]=c[h]-c[h-1];let b=g.length,k=Math.max.apply(null,g),m=Math.min.apply(null,g),C=Math.min(0,m),A=k-C||1;f.viewW=b*2,f.bars=new Array(b);for(let h=0;h<b;h++){let E=(g[h]-C)/A,N=Math.max(1.5,E*34);f.bars[h]={x:(h*2+.25).toFixed(2),y:(36-N).toFixed(2),w:"1.5",h:N.toFixed(2)}}if(f.deltaToday=g[b-1],b>=2){let h=g[b-2];h&&(f.pctChange=(f.deltaToday-h)/h*100)}return f.pctAbs=Math.round(Math.abs(f.pctChange)),f.isUp=f.pctChange>=0,f}e.history={repositories:a([]),users:a([]),pageViews:a([]),pullRequests:a([])},t.get("/api/stat/history?days=60").then(c=>{let f=c.data||[];e.history={repositories:a(f.map(g=>g.nbRepositories||0)),users:a(f.map(g=>g.nbUsers||0)),pageViews:a(f.map(g=>g.nbPageViews||0)),pullRequests:a(f.map(g=>g.nbPullRequests||0))}}).catch(()=>{})},Za=function(e,t,s,r,o,i){let a=ut();e.on("routeLeave",function(){$('[data-toggle="tooltip"]').tooltip("dispose")}),e.watch("user.status",()=>{e.user==null&&s.url("/")}),e.user==null&&s.url("/"),a.timeout(()=>{$('[data-toggle="tooltip"]').tooltip()},250),e.quotaExpanded=!1,e.closeQuota=()=>{e.quotaExpanded=!1,Ze(()=>document.querySelector(".dashboard-quota > summary")?.focus())},Xt()(document,"click",_=>{e.quotaExpanded&&!_.target.closest?.(".dashboard-quota")&&(e.quotaExpanded=!1)}),e.filtersExpanded=!1,e.projectView="all",e.selectedProject=null,e.projectName="",e.nameSaving=!1,e.nameError="",e.nameMessage="",e.needsAttention=_=>_.status==="error"||_._broken||f(_.status)==="progress"&&_._stale,e.attentionCount=()=>e.dashboardTotals?.attention??e.items.filter(e.needsAttention).length,e.hasProjects=()=>(e.dashboardTotals?.total??e.items.length)>0,e.setProjectView=_=>{e.projectView=_,_==="attention"&&(e.filters.status.error=!0,e.filters.status.progress=!0)},e.projectDetailsId=_=>"project-details-"+encodeURIComponent(_._type+":"+(_._id||_._source||"unknown")),e.showProjectDetails=async _=>{e.selectedProject=_,e.projectName=_.projectName||"",e.nameError="",e.nameMessage="",await Ze();let j=document.getElementById(e.projectDetailsId(_));j?.focus(),j?.scrollIntoView?.({block:"nearest"})},e.closeProjectDetails=_=>{e.selectedProject=null,Ze(()=>document.querySelector(`[data-project-actions="${encodeURIComponent(_._type+":"+_._id)}"]`)?.focus())},e.saveProjectName=async _=>{if(e.nameSaving||!_._id)return;let j=e.projectName.trim();if(j.length>100){e.nameError="Use 100 characters or fewer.";return}e.nameSaving=!0,e.nameError="",e.nameMessage="";try{let ne=await t.post("/api/user/project-name",{type:_._type,id:_._id,name:j});_.projectName=ne.data.name,_._label=_.projectName||_._fallbackLabel,e.selectedProject===_&&(e.nameMessage=j?"Project name saved.":"Default project name restored."),R||(e.dashboardCursor=null,await H(),e.selectedProject===_&&(e.selectedProject=e.items.find(le=>le._type===_._type&&le._id===_._id)||null))}catch{e.selectedProject===_&&(e.nameError="The project name could not be saved. Try again.")}finally{e.nameSaving=!1}},e.copyingId=null,e.copyLink=async _=>{if(!_._viewUrl||e.copyingId)return;let j=new URL(_._viewUrl,o.location.origin).href;e.copyingId=_._type+":"+_._id;try{if(o.navigator.clipboard?.writeText)await o.navigator.clipboard.writeText(j);else{let ne=document.createElement("textarea");ne.value=j,ne.setAttribute("readonly",""),ne.style.position="fixed",ne.style.opacity="0";let le=document.activeElement;document.body.appendChild(ne);try{if(ne.select(),!document.execCommand?.("copy"))throw Error("Copy unavailable")}finally{ne.remove(),le?.focus()}}e.addToast({title:"Link copied",body:"The anonymous link is ready to share."})}catch{e.addToast({title:"Copy this anonymous link",body:j})}finally{e.copyingId=null}},e.items=[],e.search="",e.loading=!0,e.statusKeyLabels={ready:"Ready",progress:"In progress",error:
Line truncated
|
||||
`)),e.options=Object.assign({},e.options,B.options),e.options.expirationDate=B.options&&B.options.expirationDate?new Date(B.options.expirationDate):R(),!r.repoId&&!r.pullRequestId&&!r.gistId&&!e.anonymize?.terms?.dirty&&(e.terms=e.defaultTerms),S&&S()})}function z(S,I,B){e.anonymize&&e.anonymize[S]&&e.anonymize[S].setValidity(I,B)}function Z(S){try{let I=parseGithubUrl(S);if(I&&I.owner&&I.repo)return I.owner+"/"+I.repo}catch{}return null}e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,e.reconnectSource=async()=>{if(confirm("Reconnect to the repository currently at this GitHub URL? Review its branch and commit before saving. Saving will replace the published snapshot.")){e.reconnectingSource=!0,e.reconnectRepositoryId=void 0,e.source.commit="",e.source.branch="",e.readme="",e.branches=[];try{await ne()}catch{}}};function ae(){return e.reconnectingSource||!e.isUpdate||!e._originalRepositoryID?void 0:Z(e.sourceUrl)===e._originalFullName?e._originalRepositoryID:void 0}async function _(){e._preservingDraft=!0;try{await e.urlSelected(!0)}finally{e._preservingDraft=!1}}async function j(){let S;try{S=JSON.parse(sessionStorage.getItem("github-access-draft")||"null")}catch{return!1}if(!S||S.path!==o.path()||Date.now()-S.savedAt>=30*6e4)return E.restore()?(e.sourceUrl&&await _(),!0):!1;E.restore();for(let I of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(S.draft,I)&&(e[I]=S.draft[I]);return e.options.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),await _(),sessionStorage.removeItem("github-access-draft"),!0}q(()=>{!r.repoId&&!r.pullRequestId&&!r.gistId&&a(j,0),r.repoId&&r.repoId!=""&&(e.isUpdate=!0,e.detectedType="repo",e.repoId=r.repoId,t.get("/api/repo/"+e.repoId).then(async S=>{e.githubConnection=S.data.connection||"oauth",e.sourceUrl="https://github.com/"+S.data.source.fullName,e._originalFullName=S.data.source.fullName,e.terms=S.data.options.terms.filter(I=>I).join(`
|
||||
`),e.source=S.data.source,e.role=S.data.role||"owner",e.coauthors=S.data.coauthors||[],e._originalBranch=S.data.source.branch,e.options=Object.assign({},e.options,S.data.options),e.conference=S.data.conference,e._originalConference=S.data.conference,e.repositoryID=S.data.source.repositoryID,e._originalRepositoryID=S.data.source.repositoryID,S.data.options.expirationDate&&(e.options.expirationDate=new Date(S.data.options.expirationDate)),A=h(parseGithubUrl(e.sourceUrl)),!await j()&&(await Promise.all([ne(),le()]),_e())},()=>{o.url("/404")})),r.pullRequestId&&r.pullRequestId!=""&&(e.isUpdate=!0,e.detectedType="pr",e.pullRequestId=r.pullRequestId,t.get("/api/pr/"+e.pullRequestId).then(async S=>{if(e.githubConnection=S.data.connection||"oauth",e.sourceUrl="https://github.com/"+S.data.source.repositoryFullName+"/pull/"+S.data.source.pullRequestId,e.terms=S.data.options.terms.filter(I=>I).join(`
|
||||
`),e.source=S.data.source,e.options=Object.assign({},e.options,S.data.options),e.conference=S.data.conference,e._originalConference=S.data.conference,S.data.options.expirationDate&&(e.options.expirationDate=new Date(S.data.options.expirationDate)),A=h(parseGithubUrl(e.sourceUrl)),!await j())try{await Se()}catch{}},()=>{o.url("/404")})),r.gistId&&r.gistId!=""&&(e.isUpdate=!0,e.detectedType="gist",e.gistId=r.gistId,t.get("/api/gist/"+e.gistId).then(async S=>{e.sourceUrl="https://gist.github.com/"+S.data.source.gistId,e.terms=S.data.options.terms.filter(I=>I).join(`
|
||||
`),e.source=S.data.source,e.options=Object.assign({},e.options,S.data.options),e.conference=S.data.conference,e._originalConference=S.data.conference,S.data.options.expirationDate&&(e.options.expirationDate=new Date(S.data.options.expirationDate)),A=h(parseGithubUrl(e.sourceUrl)),!await j()&&await X()},()=>{o.url("/404")}))}),t.get("/github/connections").then(S=>{e.githubConnections=S.data,!r.repoId&&!r.pullRequestId&&!r.gistId&&e.githubConnection===void 0&&S.data.appEnabled&&S.data.appConnected&&(e.githubConnection="github-app",e.sourceUrl&&e.workspaceOpen&&_())}).catch(()=>{}),e.urlSelected=async(S=!1)=>{let I=++f,B;try{B=parseGithubUrl(e.sourceUrl.trim())}catch{e.sourceLoading=!1,ve.cancel(),L.cancel(),me.cancel(),e.previewStatus="idle",e.sourceUrlError=e.sourceUrl?"Please provide a valid GitHub URL.":"",z("sourceUrl","github",!1);return}let v=h(B),w=S||A===v;A=v,e.sourceUrlError="",z("sourceUrl","github",!0);let O=document.activeElement?.id==="sourceUrl-landing";e.workspaceOpen=!0,setTimeout(()=>{let P=window.document.getElementById("sourceUrl");if(P){try{P.setSelectionRange(0,0)}catch{}P.scrollLeft=0}},50),O&&a(()=>document.getElementById("sourceUrl")?.focus(),0),e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,!w&&!e.isUpdate&&(e.repoId="",e.pullRequestId="",e.gistId=""),e.details=null,e.branches=[],w||(e.source={type:"GitHubStream",branch:"",commit:""}),ve.cancel(),L.cancel(),me.cancel(),ye.clear(),J.clear(),e.previewStatus="idle",e.anonymize_readme="",e.readme="",e.html_readme="",e.detectedType=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1,e._preservingDraft=w;try{B.gistId&&!B.repo?(e.detectedType="gist",e.source={gistId:B.gistId},await X()):B.pullRequestId?(e.detectedType="pr",e.source={repositoryFullName:B.owner+"/"+B.repo,pullRequestId:B.pullRequestId},await Se()):(e.detectedType="repo",await Promise.all([ne(),le()]),_e())}catch{}finally{I===f&&(e._preservingDraft=!1)}$('[data-toggle="tooltip"]').tooltip()},$('[data-toggle="tooltip"]').tooltip(),e.watch("source.branch",async()=>{if(e.detectedType!=="repo")return;let S=e.branches.filter(B=>B.name==e.source.branch)[0];if(!S)return;!(!e.reconnectingSource&&e.isUpdate&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=S.commit),e.readme=S.readme,await le(),_e()}),e.getBranches=async S=>{let I=parseGithubUrl(e.sourceUrl),B=m();try{let v=await t.get(`/api/repo/${I.owner}/${I.repo}/branches`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&Z(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,force:S===!0||e.reconnectingSource?"1":"0",repositoryID:ae()}});if(!k(B))return;e.branches=v.data,e.sourceUnreachable=!1,e.source.branch||(e.source.branch=e.details.defaultBranch);let w=e.branches.filter(O=>O.name==e.source.branch);w.length>0&&(!(!e.reconnectingSource&&!S&&e.isUpdate&&!e.options.update&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=w[0].commit),e.readme=w[0].readme,await le(S))}catch(v){if(!k(B))return;e.branches=[],e.sourceUnreachable=v&&(v.status===404||v.data&&v.data.error==="repo_not_found");let w=v&&v.data&&v.data.error||(v&&v.status===404?"repo_not_found":"unknown_error");i("ERRORS."+w).then(O=>{e.toasts=e.toasts||[],e.addToast({title:"Error",date:new Date,body:O}),e.error=O},console.error),typeof z=="function"&&z("sourceUrl","missing",!1)}finally{C(B)}};async function ne(){let S=parseGithubUrl(e.sourceUrl),I=m();try{U();let B=await t.get(`/api/repo/${S.owner}/${S.repo}/`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&Z(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,repositoryID:ae(),force:"1"}});if(!k(I))return;e.details=B.data,e.reconnectingSource&&(e.reconnectRepositoryId=e.details.externalId),e.details&&e.details.id&&(e.repositoryID=e.details.id),e.repoId||(e.repoId=e.details.repo+"-"+generateRandomId(4)),await e.getBranches(e.reconnectingSource)}catch(B){if(!k(I))return;throw B.data&&(i("ERRORS."+B.data.error).then(v=>{e.addToast({title:"Error",date:new Date,body:v}),e.error=v},console.error),x(B.data.error)),z("sourceUrl","missing",!1),B}finally{C(I)}}async function le(S){if(e.readme&&!S)return e.readme;let I=parseGithubUrl(e.sourceUrl),B=m();try{let v=await t.get(`/api/repo/${I.owner}/${I.repo}/readme`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&Z(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,force:S===!0?"1":"0",branch:e.source.branch,repositoryID:ae()}});k(B,!0)&&(e.readme=v.data)}catch{k(B,!0)&&(e.readme="")}finally{C(B)}}function Ce(){let S={terms:e.terms?e.terms.split(`
|
||||
`):[],image:!!e.options.image,link:!!e.options.link,repoId:e.repoId};e.source&&e.source.branch&&(S.branchName=e.source.branch);try{let I=parseGithubUrl(e.sourceUrl);S.repoName=`${I.owner}/${I.repo}`}catch{}return S}function ce(S,I,B){let v=null,w=0,O=()=>{if(e.detectedType!==S)return;v&&a.cancel(v);let P=++w;e.previewStatus="loading",v=a(()=>{v=null;let M=I();if(!M){e.previewStatus="idle";return}t.post("/api/anonymize-preview",M).then(W=>{P===w&&(B(W.data,M),e.previewStatus="ready")}).catch(()=>{P===w&&(e.previewStatus="error")})},200)};return O.cancel=()=>{w++,v&&a.cancel(v),v=null},e.on("dispose",O.cancel),O}e.retryPreview=()=>{e.detectedType==="repo"&&ve(),e.detectedType==="pr"&&L(),e.detectedType==="gist"&&me()};let ve=ce("repo",()=>e.readme?{content:e.readme,options:Ce()}:null,S=>{if(typeof S?.content!="string")throw Error("Invalid preview response");e.anonymize_readme=S.content;let I="";try{let v=parseGithubUrl(e.sourceUrl),w=e.source.branch||e.details&&e.details.defaultBranch||"main";I=`https://github.com/${v.owner}/${v.repo}/raw/${w}/`}catch{}let B=renderMD(e.anonymize_readme,I);e.html_readme=B,a(Prism.highlightAll,150)});function _e(){!e.anonymize||!e.anonymize.terms||(e.termsRegexWarning=!!e.terms&&!!e.terms.match(/[-[\]{}()*+?.,\\^$|#]/g),ve())}async function Se(){let S=parseGithubUrl(e.sourceUrl),I=m();try{U();let B=await t.get(`/api/pr/${S.owner}/${S.repo}/${S.pullRequestId}`,{params:{connection:e.githubConnection}});if(!k(I))return;e.details=B.data,e.pullRequestId||(e.pullRequestId=S.repo+"-PR"+S.pullRequestId+"-"+generateRandomId(4))}catch(B){if(!k(I))return;throw B.data&&(i("ERRORS."+B.data.error).then(v=>{e.addToast({title:"Error",date:new Date,body:v}),e.error=v},console.error),x(B.data.error)),z("sourceUrl","missing",!1),B}finally{C(I)}}let ye=ze(new Map);function Ue(){let S=new Set,I=e.details&&e.details.pullRequest;if(!I)return S;typeof I.title=="string"&&S.add(I.title),typeof I.body=="string"&&S.add(I.body),typeof I.diff=="string"&&S.add(I.diff);let B=I.comments||[];for(let v of B)typeof v.author=="string"&&S.add(v.author),typeof v.body=="string"&&S.add(v.body);return S}let L=ce("pr",()=>{let S=Ue(),I=Array.from(S);return I.length===0?null:{contents:I,options:Ce()}},(S,I)=>{if(!Array.isArray(S?.contents)||S.contents.length!==I.contents.length||S.contents.some(w=>typeof w!="string"))throw Error("Invalid preview response");let B=I.contents,v=new Map;for(let w=0;w<B.length&&w<S.contents.length;w++)v.set(B[w],S.contents[w]);ye.clear(),v.forEach((w,O)=>ye.set(O,w))});e.anonymizePrContent=function(S){return S&&(ye.has(S)?ye.get(S):"")};async function X(){let S=parseGithubUrl(e.sourceUrl),I=m();try{U(),e.gistOAuthRequired=!1,e.gistAppRequired=!1;let B=await t.get(`/api/gist/source/${S.gistId}`);if(!k(I))return;e.details=B.data,e.gistId||(e.gistId="gist-"+S.gistId.substring(0,6)+"-"+generateRandomId(4))}catch(B){if(!k(I))return;if(B.data?.error==="github_app_reconnect_required"){e.gistAppRequired=!0,z("sourceUrl","missing",!1);return}if(B.data?.error==="github_oauth_required"){e.gistOAuthRequired=!0,z("sourceUrl","missing",!1);return}throw B.data&&(i("ERRORS."+B.data.error).then(v=>{e.addToast({title:"Error",date:new Date,body:v}),e.error=v},console.error),x(B.data.error)),z("sourceUrl","missing",!1),B}finally{C(I)}}let J=ze(new Map);function se(){let S=new Set,I=e.details&&e.details.gist;if(!I)return S;typeof I.description=="string"&&S.add(I.description),typeof I.ownerLogin=="string"&&S.add(I.ownerLogin);let B=I.files||[];for(let w of B)typeof w.filename=="string"&&S.add(w.filename),typeof w.content=="string"&&S.add(w.content);let v=I.comments||[];for(let w of v)typeof w.author=="string"&&S.add(w.author),typeof w.body=="string"&&S.add(w.body);return S}let me=ce("gist",()=>{let S=se(),I=Array.from(S);return I.length===0?null:{contents:I,options:Ce()}},(S,I)=>{if(!Array.isArray(S?.contents)||S.contents.length!==I.contents.length||S.contents.some(w=>typeof w!="string"))throw Error("Invalid preview response");let B=I.contents,v=new Map;for(let w=0;w<B.length&&w<S.contents.length;w++)v.set(B[w],S.contents[w]);J.clear(),v.forEach((w,O)=>J.set(O,w)),he()});e.anonymizeGistContent=function(S){return S&&(J.has(S)?J.get(S):"")},e.previewGistFiles=[];function he(){let S=e.details&&e.details.gist&&e.details.gist.files||[];e.previewGistFiles=S.map(I=>({filename:e.anonymizeGistContent(I.filename),content:e.anonymizeGistContent(I.content),language:I.language}))}e.watch("details.gist.files",he,!0),e.watch("terms",he);function re(){let S=e.conference;if(e.conference_data=null,!S)return;let I=e.isUpdate&&S===e._originalConference;t.get("/api/conferences/"+S).then(B=>{e.conference===S&&(e.conference_data=B.data,e.conference_data.startDate=new Date(e.conference_data.startDate),e.conference_data.endDate=new Date(e.conference_data.endDate),!I&&(e.options.expirationDate=new Date(e.conference_data.endDate),e.options.expirationMode="remove",e.options.update=e.conference_data.options.update,e.options.image=e.conferenc
Line truncated
|
||||
`).filter(O=>O),connection:e.githubConnection,fullName:`${B.owner}/${B.repo}`,repository:e.sourceUrl,reconnectRepositoryId:e.reconnectRepositoryId,options:e.options,source:e.source,conference:e.conference};e.details&&(v.options.pageSource=e.details.pageSource),U();let w=e.isUpdate?"/api/repo/"+e.repoId:"/api/repo/";t.post(w,v,{headers:{"Content-Type":"application/json"}}).then(()=>{E.clear(),window.location.href="/status/"+e.repoId},O=>{O.data&&(i("ERRORS."+O.data.error).then(P=>{e.error=P},console.error),x(O.data.error))}).finally(()=>{I.disabled=!1})},e.anonymizeGist=S=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(te())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let I=S.currentTarget||S.target.closest?.("button")||S.target;I.disabled=!0;let B=parseGithubUrl(e.sourceUrl),v={gistId:e.gistId,terms:e.terms.trim().split(`
|
||||
`).filter(O=>O),source:{gistId:B.gistId},options:e.options,conference:e.conference};U();let w=e.isUpdate?"/api/gist/"+e.gistId:"/api/gist/";t.post(w,v,{headers:{"Content-Type":"application/json"}}).then(()=>{E.clear(),window.location.href="/gist/"+e.gistId},O=>{O.data&&(i("ERRORS."+O.data.error).then(P=>{e.error=P},console.error),x(O.data.error))}).finally(()=>{I.disabled=!1})},e.anonymizePullRequest=S=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(te())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let I=S.currentTarget||S.target.closest?.("button")||S.target;I.disabled=!0;let B=parseGithubUrl(e.sourceUrl),v={pullRequestId:e.pullRequestId,connection:e.githubConnection,terms:e.terms.trim().split(`
|
||||
`).filter(O=>O),source:{repositoryFullName:`${B.owner}/${B.repo}`,pullRequestId:B.pullRequestId},options:e.options,conference:e.conference};U();let w=e.isUpdate?"/api/pr/"+e.pullRequestId:"/api/pr/";t.post(w,v,{headers:{"Content-Type":"application/json"}}).then(()=>{E.clear(),window.location.href="/pr/"+e.pullRequestId},O=>{O.data&&(i("ERRORS."+O.data.error).then(P=>{e.error=P},console.error),x(O.data.error))}).finally(()=>{I.disabled=!1})},e.watch("conference",()=>{re()}),e.watch("terms",()=>{e.detectedType==="repo"&&_e(),e.detectedType==="pr"&&L(),e.detectedType==="gist"&&me()}),e.watch("options.image",()=>{e.detectedType==="repo"&&_e(),e.detectedType==="pr"&&L(),e.detectedType==="gist"&&me()}),e.watch("options.link",()=>{e.detectedType==="repo"&&_e(),e.detectedType==="pr"&&L(),e.detectedType==="gist"&&me()}),e.watch("details",()=>{e.detectedType==="pr"&&L(),e.detectedType==="gist"&&me()},!0)},ur=function(e,t,s,r,o,i){let a=ut(),c=Xt();e.on("dark-mode",(L,X)=>{e.aceOption&&(X?e.aceOption.theme="nord_dark":e.aceOption.theme="chrome")});let f=0,g=null,b=null;e.fileLoadingSlow=!1,e.fileReceivedBytes=0;function k(){g&&(g.resolve(),g=null),b&&(a.timeout.cancel(b),b=null)}let m=!1;e.on("dispose",()=>{m=!0,f++,k(),C&&C.resolve()}),e.files=[],e.isMac=/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent),e.fileSearchQuery="",e.fileSearchResults=null,e.fileSearchLoading=!1,c(document,"click",L=>{e.symbolsOpen&&!L.target.closest?.(".symbols")&&(e.symbolsOpen=!1),e.moreOpen&&!L.target.closest?.(".tb-more")&&(e.moreOpen=!1),e.accountOpen&&!L.target.closest?.(".acct")&&(e.accountOpen=!1),e.helpOpen&&!L.target.closest?.(".vb-help")&&(e.helpOpen=!1)}),c(document,"keydown",L=>{L.key==="Escape"&&(e.symbolsOpen=!1,e.moreOpen=!1,e.accountOpen=!1,e.helpOpen=!1),(L.ctrlKey||L.metaKey)&&!L.altKey&&L.key&&L.key.toLowerCase()==="f"&&e.type==="html"&&window.document.querySelector(".reading-layout")&&(L.preventDefault(),e.toggleMdFind(!0))}),c(document,"keydown",function(L){if((L.metaKey||L.ctrlKey)&&L.key==="k"){L.preventDefault();var X=document.querySelector(".tree-search-input");X&&(X.focus(),X.select())}});var C=null;e.onFileSearchChange=function(){C&&(C.resolve(),C=null);let L=e.fileSearchQuery;if(!L||L.length<2){e.fileSearchResults=null,e.fileSearchLoading=!1;return}e.fileSearchLoading=!0;let X=i.defer();C=X,t.get(`/api/repo/${e.repoId}/files/search?q=${encodeURIComponent(L)}`,{timeout:X.promise}).then(function(J){if(!(m||C!==X)){C=null,e.fileSearchLoading=!1;var se={};e.files.forEach(function(M){se[(M.path||"")+"/"+M.name]=!0});for(var me=[],he={},re=0;re<J.data.length;re++){var U=J.data[re];if(U.path)for(var te=U.path.split("/"),x="",S=0;S<te.length;S++){var I=x;x=x?x+"/"+te[S]:te[S];var B=I+"/"+te[S];!se[B]&&!he[B]&&(he[B]=!0,me.push({name:te[S],path:I}))}}me.sort(function(M,W){return(M.path||"").split("/").length-(W.path||"").split("/").length}),me.length>0&&e.files.push.apply(e.files,me);for(var v=[],w=0;w<J.data.length;w++){var O=J.data[w],P=(O.path||"")+"/"+O.name;!se[P]&&O.size!=null&&(v.push(O),se[P]=!0)}v.length>0&&e.files.push.apply(e.files,v),e.fileSearchResults=J.data}},function(){!m&&C===X&&(C=null,e.fileSearchLoading=!1,e.fileSearchResults=[])})};let A={yml:"yaml",txt:"text",py:"python",js:"javascript",ts:"typescript"},h=["license","txt"],E=["png","jpg","jpeg","gif","svg","ico","bmp","tiff","tif","webp","avif","heif","heic"],N=["wav","mp3","ogg","wma","flac","aac","m4a"],R=["mp4","avi","webm","mov","mpg","mpeg","mkv","flv","wmv","3gp","3g2","m4v","f4v","f4p","f4a","f4b"];e.on("routeUpdate",function(L,X){if(e.repoId!=r.repoId)return Ue();if((r.path||"")!=e.filePath){e.filePath=r.path||"",e.paths=e.filePath.split("/").filter(J=>J&&J.trim().length>0),ye();for(let J=0;J<e.paths.length-1;J++){let se=J>0?e.paths.slice(0,J).join("/"):"";e.files.some(he=>he.path===se)||e.getFiles(se)}}});function V(){if(e.paths[0]!="")return;let L=["readme.md","readme.txt","readme.org","readme.1st","readme"],X={};for(let se of e.files)se.name.toLowerCase().indexOf("readme")>-1&&(X[se.name.toLowerCase()]=se.name);let J=null;for(let se of L)if(X[se]){J=se;break}if(!J&&Object.keys(X).length>0&&(J=Object.keys(X)[0]),J){let se=s.url();se[se.length-1]!="/"&&(se+="/"),s.url(se+encodePathForUrl(X[J]))}}e.getFiles=function(L,X=!1){let J=e.repoId;return t.get(`/api/repo/${e.repoId}/files/?path=${encodeURIComponent(L)}&v=${e.options.lastUpdateDate}`).then(function(se){if(m||J!==e.repoId)return[];let me=L||"";return e.files=e.files.filter(he=>he.path!==me),e.files.push(...se.data),se.data},function(se){if(m||J!==e.repoId)return[];X||(e.type="error",e.content=dr(se),e.files=[])})};function H(){return e.files.filter(L=>L.name==e.paths[e.paths.length-1]&&L.path==e.paths.slice(0,e.paths.length-1).join("/"))[0]}var q=null;e.on("dispose",function(){q&&a.interval.cancel(q)});function z(L){if(m)return;let X=e.repoId;t.get(`/api/repo/${e.repoId}/options`).then(J=>{if(!(m||X!==e.repoId)){if(e.options=J.data,e.options.url){window.location=e.o
Line truncated
|
||||
`).forEach((X,J)=>{for(let[se,me]of j){let he=se.exec(X);if(he&&!/^(if|for|while|switch|return|catch)$/.test(he[1])){L.push({name:he[1],kind:me,line:J+1});break}}}),ne={content:e.content,list:L.slice(0,300)},ne.list},e.goToSymbol=function(L){e.symbolsOpen=!1;let X=e.codeEditor;X&&(X.scrollToLine(L-1,!0,!0,()=>{}),X.gotoLine(L,0,!0),window.history.replaceState(null,"",window.location.pathname+window.location.search+"#L"+L),window.dispatchEvent(new HashChangeEvent("hashchange")))},e.gotoLine=function(){let L=e.codeEditor;L&&(L.focus(),L.execCommand("gotoline"))},e.rootEntries=function(){return[...e.files||[]].sort((L,X)=>{let J=L.size==null,se=X.size==null;return J!==se?J?-1:1:L.name.localeCompare(X.name)})},e.formatSize=function(L){if(L==null)return"";if(L<1024)return L+" B";let X=L/1024;return X<1024?X.toFixed(1)+" KB":(X/1024).toFixed(1)+" MB"},e.fileSize=function(L){if(!L)return null;let X=L.replace(/^\/+/,""),J=(e.files||[]).find(se=>(se.path?se.path+"/":"")+se.name===X);return J&&J.size!=null?J.size:null},e.revealFolder=function(L){e.sidebarHidden=!1,e.sidebarCollapsed=!1,Ze(()=>{let X=window.document.querySelector('.files a[data-path="/'+(window.CSS?.escape?window.CSS.escape(L):L)+'"]');X&&(X.closest("li")?.classList.contains("open")||X.click(),X.scrollIntoView({block:"nearest"}),X.focus())})};let le=/\bXXXX-\d+\b/g;e.redactionCount=function(){return typeof e.content!="string"?0:((e.type==="html"?e.content.replace(/<[^>]*>/g," "):e.content).match(le)||[]).length},e.renderRedacted=function(L){if(!L||L.indexOf("XXXX-")===-1||typeof window.DOMParser!="function")return L;let X=new window.DOMParser().parseFromString("<div>"+L+"</div>","text/html"),J=X.createTreeWalker(X.body,4),se=[];for(;J.nextNode();)le.test(J.currentNode.nodeValue)&&se.push(J.currentNode);for(let me of se){le.lastIndex=0;let he=X.createDocumentFragment(),re=0,U,te=me.nodeValue;for(;U=le.exec(te);){he.appendChild(X.createTextNode(te.slice(re,U.index)));let x=X.createElement("mark");x.className="redact-chip",x.setAttribute("title","Redacted term "+U[0].slice(5)+" \u2014 the same term everywhere in this snapshot");let S=U[0].slice(5);x.textContent="";let I=X.createElement("i");I.textContent=S,x.appendChild(I),x.dataset.term=U[0],x.setAttribute("aria-label","Redacted term "+S);let B=/^[.,;:!?)\]]+/.exec(te.slice(U.index+U[0].length));if(B){let v=X.createElement("span");v.className="redact-glue",v.appendChild(x),v.appendChild(X.createTextNode(B[0])),he.appendChild(v),re=U.index+U[0].length+B[0].length}else he.appendChild(x),re=U.index+U[0].length}he.appendChild(X.createTextNode(te.slice(re))),me.parentNode.replaceChild(he,me)}return X.body.firstChild.innerHTML};let Ce=L=>L.toLowerCase().trim().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").slice(0,60)||"section";e.renderReadme=function(L){let X=e.renderRedacted(L);if(!X||typeof window.DOMParser!="function")return X;let J=new window.DOMParser().parseFromString("<div>"+X+"</div>","text/html"),se={};return J.querySelectorAll("h1, h2, h3").forEach(me=>{let he=me.id||Ce(me.textContent);se[he]?he+="-"+ ++se[he]:se[he]=1,me.id=he}),J.body.firstChild.innerHTML};let ce={content:null,list:[]};e.readmeToc=function(){if(e.type!=="html"||typeof e.content!="string")return[];if(ce.content===e.content)return ce.list;let X=[...new window.DOMParser().parseFromString("<div>"+e.renderReadme(e.sanitize?e.sanitize(e.content):e.content)+"</div>","text/html").querySelectorAll("h2, h3")].map(J=>({id:J.id,text:J.textContent.trim(),level:J.tagName==="H3"?3:2})).slice(0,40);return ce={content:e.content,list:X},X},e.activeHeading=null,c(window,"scroll",()=>{let L=e.readmeToc?e.readmeToc():[];if(!L.length)return;let X=150,J="",se="";for(let me of L){let he=window.document.getElementById(me.id);if(!he)continue;let re=he.getBoundingClientRect().top;re<X?J=me.id:!se&&re<window.innerHeight-80&&(se=me.id)}se&&(J=se),e.activeHeading!==J&&(e.activeHeading=J)},{capture:!0,passive:!0}),e.scrollToHeading=function(L){if(!L){(window.document.querySelector(".explorer-content, .file-card-body, .main-pane")||window).scrollTo({top:0,behavior:"smooth"}),e.activeHeading="";return}let X=window.document.getElementById(L);X&&X.scrollIntoView({behavior:"smooth",block:"start"}),e.activeHeading=L},e.redactParts=function(L){let X=[],J=0,se,me=/\bXXXX-(\d+)\b/g;for(L=String(L||"");se=me.exec(L);)se.index>J&&X.push({t:L.slice(J,se.index)}),X.push({n:se[1]}),J=se.index+se[0].length;return J<L.length&&X.push({t:L.slice(J)}),X},e.pathCopied=!1,e.copyPath=async function(){window.navigator.clipboard?.writeText&&(await window.navigator.clipboard.writeText(e.filePath||""),e.pathCopied=!0,setTimeout(()=>{e.pathCopied=!1},1600))},e.contentCopied=!1,e.copyContent=async function(){if(typeof e.content!="string"||!window.navigator.clipboard?.writeText)return;let L=e.content;if(e.type==="html"&&e.url)try{L=await(await window.fetch(e.url,{credentials:"same-origin"})).text()}catch{return}await window.navigator.clipboard.writeText(L),e.contentCopied=!0,setTimeout
Line truncated
|
||||
Contact: jane.smith@mit.edu`,e.demoTerms="Jane Smith, Smith, MIT CSAIL, jane.smith@mit.edu",e.demoParts=function(){let c=(e.demoTerms||"").split(/[,\n]/).map(m=>m.trim()).filter(Boolean).sort((m,C)=>C.length-m.length),f=m=>m.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(!c.length)return[{text:e.demoText}];let g=new RegExp("("+c.map(f).join("|")+")","gi"),b={},k=0;return(e.demoText||"").split(g).filter(m=>m!=="").map(m=>{let C=c.find(A=>A.toLowerCase()===m.toLowerCase());return C?(b[C.toLowerCase()]||(b[C.toLowerCase()]=++k),{text:String(b[C.toLowerCase()]),redacted:!0,original:m}):{text:m}})},e.demoCount=()=>e.demoParts().filter(c=>c.redacted).length,e.cards=[{key:"repositories",total:0,label:"repositories anonymized"},{key:"users",total:0,label:"researchers"},{key:"pageViews",total:0,label:"page views"},{key:"pullRequests",total:0,label:"pull requests"}];function i(){t.get("/api/stat/").then(c=>{e.stat=c.data,e.cards[0].total=c.data.nbRepositories,e.cards[1].total=c.data.nbUsers,e.cards[2].total=c.data.nbPageViews,e.cards[3].total=c.data.nbPullRequests}).catch(()=>{})}i();function a(c){let f={series:c,bars:[],viewW:100,deltaToday:0,pctChange:0,pctAbs:0,isUp:!0};if(!c||c.length<2)return f;let g=new Array(c.length-1);for(let h=1;h<c.length;h++)g[h-1]=c[h]-c[h-1];let b=g.length,k=Math.max.apply(null,g),m=Math.min.apply(null,g),C=Math.min(0,m),A=k-C||1;f.viewW=b*2,f.bars=new Array(b);for(let h=0;h<b;h++){let E=(g[h]-C)/A,N=Math.max(1.5,E*34);f.bars[h]={x:(h*2+.25).toFixed(2),y:(36-N).toFixed(2),w:"1.5",h:N.toFixed(2)}}if(f.deltaToday=g[b-1],b>=2){let h=g[b-2];h&&(f.pctChange=(f.deltaToday-h)/h*100)}return f.pctAbs=Math.round(Math.abs(f.pctChange)),f.isUp=f.pctChange>=0,f}e.history={repositories:a([]),users:a([]),pageViews:a([]),pullRequests:a([])},t.get("/api/stat/history?days=60").then(c=>{let f=c.data||[];e.history={repositories:a(f.map(g=>g.nbRepositories||0)),users:a(f.map(g=>g.nbUsers||0)),pageViews:a(f.map(g=>g.nbPageViews||0)),pullRequests:a(f.map(g=>g.nbPullRequests||0))}}).catch(()=>{})},Za=function(e,t,s,r,o,i){let a=ut();e.on("routeLeave",function(){$('[data-toggle="tooltip"]').tooltip("dispose")}),e.watch("user.status",()=>{e.user==null&&s.url("/")}),e.user==null&&s.url("/"),a.timeout(()=>{$('[data-toggle="tooltip"]').tooltip()},250),e.quotaExpanded=!1,e.closeQuota=()=>{e.quotaExpanded=!1,Ze(()=>document.querySelector(".dashboard-quota > summary")?.focus())},Xt()(document,"click",_=>{e.quotaExpanded&&!_.target.closest?.(".dashboard-quota")&&(e.quotaExpanded=!1)}),e.filtersExpanded=!1,e.projectView="all",e.selectedProject=null,e.projectName="",e.nameSaving=!1,e.nameError="",e.nameMessage="",e.needsAttention=_=>_.status==="error"||_._broken||f(_.status)==="progress"&&_._stale,e.attentionCount=()=>e.dashboardTotals?.attention??e.items.filter(e.needsAttention).length,e.hasProjects=()=>(e.dashboardTotals?.total??e.items.length)>0,e.setProjectView=_=>{e.projectView=_,_==="attention"&&(e.filters.status.error=!0,e.filters.status.progress=!0)},e.projectDetailsId=_=>"project-details-"+encodeURIComponent(_._type+":"+(_._id||_._source||"unknown")),e.showProjectDetails=async _=>{e.selectedProject=_,e.projectName=_.projectName||"",e.nameError="",e.nameMessage="",await Ze();let Y=document.getElementById(e.projectDetailsId(_));Y?.focus(),Y?.scrollIntoView?.({block:"nearest"})},e.closeProjectDetails=_=>{e.selectedProject=null,Ze(()=>document.querySelector(`[data-project-actions="${encodeURIComponent(_._type+":"+_._id)}"]`)?.focus())},e.saveProjectName=async _=>{if(e.nameSaving||!_._id)return;let Y=e.projectName.trim();if(Y.length>100){e.nameError="Use 100 characters or fewer.";return}e.nameSaving=!0,e.nameError="",e.nameMessage="";try{let Z=await t.post("/api/user/project-name",{type:_._type,id:_._id,name:Y});_.projectName=Z.data.name,_._label=_.projectName||_._fallbackLabel,e.selectedProject===_&&(e.nameMessage=Y?"Project name saved.":"Default project name restored."),R||(e.dashboardCursor=null,await H(),e.selectedProject===_&&(e.selectedProject=e.items.find(he=>he._type===_._type&&he._id===_._id)||null))}catch{e.selectedProject===_&&(e.nameError="The project name could not be saved. Try again.")}finally{e.nameSaving=!1}},e.copyingId=null,e.copyLink=async _=>{if(!_._viewUrl||e.copyingId)return;let Y=new URL(_._viewUrl,o.location.origin).href;e.copyingId=_._type+":"+_._id;try{if(o.navigator.clipboard?.writeText)await o.navigator.clipboard.writeText(Y);else{let Z=document.createElement("textarea");Z.value=Y,Z.setAttribute("readonly",""),Z.style.position="fixed",Z.style.opacity="0";let he=document.activeElement;document.body.appendChild(Z);try{if(Z.select(),!document.execCommand?.("copy"))throw Error("Copy unavailable")}finally{Z.remove(),he?.focus()}}e.addToast({title:"Link copied",body:"The anonymous link is ready to share."})}catch{e.addToast({title:"Copy this anonymous link",body:Y})}finally{e.copyingId=null}},e.items=[],e.search="",e.loading=!0,e.statusKeyLabels={ready:"Ready",progress:"In progress",error:"Error",ex
Line truncated
|
||||
`)),e.options=Object.assign({},e.options,B.options),e.options.expirationDate=B.options&&B.options.expirationDate?new Date(B.options.expirationDate):R(),!r.repoId&&!r.pullRequestId&&!r.gistId&&!e.anonymize?.terms?.dirty&&(e.terms=e.defaultTerms),S&&S()})}function z(S,I,B){e.anonymize&&e.anonymize[S]&&e.anonymize[S].setValidity(I,B)}function ie(S){try{let I=parseGithubUrl(S);if(I&&I.owner&&I.repo)return I.owner+"/"+I.repo}catch{}return null}e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,e.reconnectSource=async()=>{if(confirm("Reconnect to the repository currently at this GitHub URL? Review its branch and commit before saving. Saving will replace the published snapshot.")){e.reconnectingSource=!0,e.reconnectRepositoryId=void 0,e.source.commit="",e.source.branch="",e.readme="",e.branches=[];try{await Z()}catch{}}};function ae(){return e.reconnectingSource||!e.isUpdate||!e._originalRepositoryID?void 0:ie(e.sourceUrl)===e._originalFullName?e._originalRepositoryID:void 0}async function _(){e._preservingDraft=!0;try{await e.urlSelected(!0)}finally{e._preservingDraft=!1}}async function Y(){let S;try{S=JSON.parse(sessionStorage.getItem("github-access-draft")||"null")}catch{return!1}if(!S||S.path!==o.path()||Date.now()-S.savedAt>=30*6e4)return E.restore()?(e.sourceUrl&&await _(),!0):!1;E.restore();for(let I of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(S.draft,I)&&(e[I]=S.draft[I]);return e.options.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),await _(),sessionStorage.removeItem("github-access-draft"),!0}q(()=>{!r.repoId&&!r.pullRequestId&&!r.gistId&&a(Y,0),r.repoId&&r.repoId!=""&&(e.isUpdate=!0,e.detectedType="repo",e.repoId=r.repoId,t.get("/api/repo/"+e.repoId).then(async S=>{e.githubConnection=S.data.connection||"oauth",e.sourceUrl="https://github.com/"+S.data.source.fullName,e._originalFullName=S.data.source.fullName,e.terms=S.data.options.terms.filter(I=>I).join(`
|
||||
`),e.source=S.data.source,e.role=S.data.role||"owner",e.coauthors=S.data.coauthors||[],e._originalBranch=S.data.source.branch,e.options=Object.assign({},e.options,S.data.options),e.conference=S.data.conference,e._originalConference=S.data.conference,e.repositoryID=S.data.source.repositoryID,e._originalRepositoryID=S.data.source.repositoryID,S.data.options.expirationDate&&(e.options.expirationDate=new Date(S.data.options.expirationDate)),A=h(parseGithubUrl(e.sourceUrl)),!await Y()&&(await Promise.all([Z(),he()]),_e())},()=>{o.url("/404")})),r.pullRequestId&&r.pullRequestId!=""&&(e.isUpdate=!0,e.detectedType="pr",e.pullRequestId=r.pullRequestId,t.get("/api/pr/"+e.pullRequestId).then(async S=>{if(e.githubConnection=S.data.connection||"oauth",e.sourceUrl="https://github.com/"+S.data.source.repositoryFullName+"/pull/"+S.data.source.pullRequestId,e.terms=S.data.options.terms.filter(I=>I).join(`
|
||||
`),e.source=S.data.source,e.options=Object.assign({},e.options,S.data.options),e.conference=S.data.conference,e._originalConference=S.data.conference,S.data.options.expirationDate&&(e.options.expirationDate=new Date(S.data.options.expirationDate)),A=h(parseGithubUrl(e.sourceUrl)),!await Y())try{await Se()}catch{}},()=>{o.url("/404")})),r.gistId&&r.gistId!=""&&(e.isUpdate=!0,e.detectedType="gist",e.gistId=r.gistId,t.get("/api/gist/"+e.gistId).then(async S=>{e.sourceUrl="https://gist.github.com/"+S.data.source.gistId,e.terms=S.data.options.terms.filter(I=>I).join(`
|
||||
`),e.source=S.data.source,e.options=Object.assign({},e.options,S.data.options),e.conference=S.data.conference,e._originalConference=S.data.conference,S.data.options.expirationDate&&(e.options.expirationDate=new Date(S.data.options.expirationDate)),A=h(parseGithubUrl(e.sourceUrl)),!await Y()&&await X()},()=>{o.url("/404")}))}),t.get("/github/connections").then(S=>{e.githubConnections=S.data,!r.repoId&&!r.pullRequestId&&!r.gistId&&e.githubConnection===void 0&&S.data.appEnabled&&S.data.appConnected&&(e.githubConnection="github-app",e.sourceUrl&&e.workspaceOpen&&_())}).catch(()=>{}),e.urlSelected=async(S=!1)=>{let I=++f,B;try{B=parseGithubUrl(e.sourceUrl.trim())}catch{e.sourceLoading=!1,ye.cancel(),L.cancel(),me.cancel(),e.previewStatus="idle",e.sourceUrlError=e.sourceUrl?"Please provide a valid GitHub URL.":"",z("sourceUrl","github",!1);return}let v=h(B),w=S||A===v;A=v,e.sourceUrlError="",z("sourceUrl","github",!0);let O=document.activeElement?.id==="sourceUrl-landing";e.workspaceOpen=!0,setTimeout(()=>{let V=window.document.getElementById("sourceUrl");if(V){try{V.setSelectionRange(0,0)}catch{}V.scrollLeft=0}},50),O&&a(()=>document.getElementById("sourceUrl")?.focus(),0),e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,!w&&!e.isUpdate&&(e.repoId="",e.pullRequestId="",e.gistId=""),e.details=null,e.branches=[],w||(e.source={type:"GitHubStream",branch:"",commit:""}),ye.cancel(),L.cancel(),me.cancel(),ge.clear(),J.clear(),e.previewStatus="idle",e.anonymize_readme="",e.readme="",e.html_readme="",e.detectedType=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1,e._preservingDraft=w;try{B.gistId&&!B.repo?(e.detectedType="gist",e.source={gistId:B.gistId},await X()):B.pullRequestId?(e.detectedType="pr",e.source={repositoryFullName:B.owner+"/"+B.repo,pullRequestId:B.pullRequestId},await Se()):(e.detectedType="repo",await Promise.all([Z(),he()]),_e())}catch{}finally{I===f&&(e._preservingDraft=!1)}$('[data-toggle="tooltip"]').tooltip()},$('[data-toggle="tooltip"]').tooltip(),e.watch("source.branch",async()=>{if(e.detectedType!=="repo")return;let S=e.branches.filter(B=>B.name==e.source.branch)[0];if(!S)return;!(!e.reconnectingSource&&e.isUpdate&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=S.commit),e.readme=S.readme,await he(),_e()}),e.getBranches=async S=>{let I=parseGithubUrl(e.sourceUrl),B=m();try{let v=await t.get(`/api/repo/${I.owner}/${I.repo}/branches`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&ie(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,force:S===!0||e.reconnectingSource?"1":"0",repositoryID:ae()}});if(!k(B))return;e.branches=v.data,e.sourceUnreachable=!1,e.source.branch||(e.source.branch=e.details.defaultBranch);let w=e.branches.filter(O=>O.name==e.source.branch);w.length>0&&(!(!e.reconnectingSource&&!S&&e.isUpdate&&!e.options.update&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=w[0].commit),e.readme=w[0].readme,await he(S))}catch(v){if(!k(B))return;e.branches=[],e.sourceUnreachable=v&&(v.status===404||v.data&&v.data.error==="repo_not_found");let w=v&&v.data&&v.data.error||(v&&v.status===404?"repo_not_found":"unknown_error");i("ERRORS."+w).then(O=>{e.toasts=e.toasts||[],e.addToast({title:"Error",date:new Date,body:O}),e.error=O},console.error),typeof z=="function"&&z("sourceUrl","missing",!1)}finally{C(B)}};async function Z(){let S=parseGithubUrl(e.sourceUrl),I=m();try{U();let B=await t.get(`/api/repo/${S.owner}/${S.repo}/`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&ie(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,repositoryID:ae(),force:"1"}});if(!k(I))return;e.details=B.data,e.reconnectingSource&&(e.reconnectRepositoryId=e.details.externalId),e.details&&e.details.id&&(e.repositoryID=e.details.id),e.repoId||(e.repoId=e.details.repo+"-"+generateRandomId(4)),await e.getBranches(e.reconnectingSource)}catch(B){if(!k(I))return;throw B.data&&(i("ERRORS."+B.data.error).then(v=>{e.addToast({title:"Error",date:new Date,body:v}),e.error=v},console.error),x(B.data.error)),z("sourceUrl","missing",!1),B}finally{C(I)}}async function he(S){if(e.readme&&!S)return e.readme;let I=parseGithubUrl(e.sourceUrl),B=m();try{let v=await t.get(`/api/repo/${I.owner}/${I.repo}/readme`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&ie(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,force:S===!0?"1":"0",branch:e.source.branch,repositoryID:ae()}});k(B,!0)&&(e.readme=v.data)}catch{k(B,!0)&&(e.readme="")}finally{C(B)}}function ue(){let S={terms:e.terms?e.terms.split(`
|
||||
`):[],image:!!e.options.image,link:!!e.options.link,repoId:e.repoId};e.source&&e.source.branch&&(S.branchName=e.source.branch);try{let I=parseGithubUrl(e.sourceUrl);S.repoName=`${I.owner}/${I.repo}`}catch{}return S}function ce(S,I,B){let v=null,w=0,O=()=>{if(e.detectedType!==S)return;v&&a.cancel(v);let V=++w;e.previewStatus="loading",v=a(()=>{v=null;let M=I();if(!M){e.previewStatus="idle";return}t.post("/api/anonymize-preview",M).then(G=>{V===w&&(B(G.data,M),e.previewStatus="ready")}).catch(()=>{V===w&&(e.previewStatus="error")})},200)};return O.cancel=()=>{w++,v&&a.cancel(v),v=null},e.on("dispose",O.cancel),O}e.retryPreview=()=>{e.detectedType==="repo"&&ye(),e.detectedType==="pr"&&L(),e.detectedType==="gist"&&me()};let ye=ce("repo",()=>e.readme?{content:e.readme,options:ue()}:null,S=>{if(typeof S?.content!="string")throw Error("Invalid preview response");e.anonymize_readme=S.content;let I="";try{let v=parseGithubUrl(e.sourceUrl),w=e.source.branch||e.details&&e.details.defaultBranch||"main";I=`https://github.com/${v.owner}/${v.repo}/raw/${w}/`}catch{}let B=renderMD(e.anonymize_readme,I);e.html_readme=B,a(Prism.highlightAll,150)});function _e(){!e.anonymize||!e.anonymize.terms||(e.termsRegexWarning=!!e.terms&&!!e.terms.match(/[-[\]{}()*+?.,\\^$|#]/g),ye())}async function Se(){let S=parseGithubUrl(e.sourceUrl),I=m();try{U();let B=await t.get(`/api/pr/${S.owner}/${S.repo}/${S.pullRequestId}`,{params:{connection:e.githubConnection}});if(!k(I))return;e.details=B.data,e.pullRequestId||(e.pullRequestId=S.repo+"-PR"+S.pullRequestId+"-"+generateRandomId(4))}catch(B){if(!k(I))return;throw B.data&&(i("ERRORS."+B.data.error).then(v=>{e.addToast({title:"Error",date:new Date,body:v}),e.error=v},console.error),x(B.data.error)),z("sourceUrl","missing",!1),B}finally{C(I)}}let ge=ze(new Map);function Ue(){let S=new Set,I=e.details&&e.details.pullRequest;if(!I)return S;typeof I.title=="string"&&S.add(I.title),typeof I.body=="string"&&S.add(I.body),typeof I.diff=="string"&&S.add(I.diff);let B=I.comments||[];for(let v of B)typeof v.author=="string"&&S.add(v.author),typeof v.body=="string"&&S.add(v.body);return S}let L=ce("pr",()=>{let S=Ue(),I=Array.from(S);return I.length===0?null:{contents:I,options:ue()}},(S,I)=>{if(!Array.isArray(S?.contents)||S.contents.length!==I.contents.length||S.contents.some(w=>typeof w!="string"))throw Error("Invalid preview response");let B=I.contents,v=new Map;for(let w=0;w<B.length&&w<S.contents.length;w++)v.set(B[w],S.contents[w]);ge.clear(),v.forEach((w,O)=>ge.set(O,w))});e.anonymizePrContent=function(S){return S&&(ge.has(S)?ge.get(S):"")};async function X(){let S=parseGithubUrl(e.sourceUrl),I=m();try{U(),e.gistOAuthRequired=!1,e.gistAppRequired=!1;let B=await t.get(`/api/gist/source/${S.gistId}`);if(!k(I))return;e.details=B.data,e.gistId||(e.gistId="gist-"+S.gistId.substring(0,6)+"-"+generateRandomId(4))}catch(B){if(!k(I))return;if(B.data?.error==="github_app_reconnect_required"){e.gistAppRequired=!0,z("sourceUrl","missing",!1);return}if(B.data?.error==="github_oauth_required"){e.gistOAuthRequired=!0,z("sourceUrl","missing",!1);return}throw B.data&&(i("ERRORS."+B.data.error).then(v=>{e.addToast({title:"Error",date:new Date,body:v}),e.error=v},console.error),x(B.data.error)),z("sourceUrl","missing",!1),B}finally{C(I)}}let J=ze(new Map);function ne(){let S=new Set,I=e.details&&e.details.gist;if(!I)return S;typeof I.description=="string"&&S.add(I.description),typeof I.ownerLogin=="string"&&S.add(I.ownerLogin);let B=I.files||[];for(let w of B)typeof w.filename=="string"&&S.add(w.filename),typeof w.content=="string"&&S.add(w.content);let v=I.comments||[];for(let w of v)typeof w.author=="string"&&S.add(w.author),typeof w.body=="string"&&S.add(w.body);return S}let me=ce("gist",()=>{let S=ne(),I=Array.from(S);return I.length===0?null:{contents:I,options:ue()}},(S,I)=>{if(!Array.isArray(S?.contents)||S.contents.length!==I.contents.length||S.contents.some(w=>typeof w!="string"))throw Error("Invalid preview response");let B=I.contents,v=new Map;for(let w=0;w<B.length&&w<S.contents.length;w++)v.set(B[w],S.contents[w]);J.clear(),v.forEach((w,O)=>J.set(O,w)),ve()});e.anonymizeGistContent=function(S){return S&&(J.has(S)?J.get(S):"")},e.previewGistFiles=[];function ve(){let S=e.details&&e.details.gist&&e.details.gist.files||[];e.previewGistFiles=S.map(I=>({filename:e.anonymizeGistContent(I.filename),content:e.anonymizeGistContent(I.content),language:I.language}))}e.watch("details.gist.files",ve,!0),e.watch("terms",ve);function oe(){let S=e.conference;if(e.conference_data=null,!S)return;let I=e.isUpdate&&S===e._originalConference;t.get("/api/conferences/"+S).then(B=>{e.conference===S&&(e.conference_data=B.data,e.conference_data.startDate=new Date(e.conference_data.startDate),e.conference_data.endDate=new Date(e.conference_data.endDate),!I&&(e.options.expirationDate=new Date(e.conference_data.endDate),e.options.expirationMode="remove",e.options.update=e.conference_data.options.update,e.options.image=e.conferenc
Line truncated
|
||||
`).filter(O=>O),connection:e.githubConnection,fullName:`${B.owner}/${B.repo}`,repository:e.sourceUrl,reconnectRepositoryId:e.reconnectRepositoryId,options:e.options,source:e.source,conference:e.conference};e.details&&(v.options.pageSource=e.details.pageSource),U();let w=e.isUpdate?"/api/repo/"+e.repoId:"/api/repo/";t.post(w,v,{headers:{"Content-Type":"application/json"}}).then(()=>{E.clear(),window.location.href="/status/"+e.repoId},O=>{O.data&&(i("ERRORS."+O.data.error).then(V=>{e.error=V},console.error),x(O.data.error))}).finally(()=>{I.disabled=!1})},e.anonymizeGist=S=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(te())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let I=S.currentTarget||S.target.closest?.("button")||S.target;I.disabled=!0;let B=parseGithubUrl(e.sourceUrl),v={gistId:e.gistId,terms:e.terms.trim().split(`
|
||||
`).filter(O=>O),source:{gistId:B.gistId},options:e.options,conference:e.conference};U();let w=e.isUpdate?"/api/gist/"+e.gistId:"/api/gist/";t.post(w,v,{headers:{"Content-Type":"application/json"}}).then(()=>{E.clear(),window.location.href="/gist/"+e.gistId},O=>{O.data&&(i("ERRORS."+O.data.error).then(V=>{e.error=V},console.error),x(O.data.error))}).finally(()=>{I.disabled=!1})},e.anonymizePullRequest=S=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(te())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let I=S.currentTarget||S.target.closest?.("button")||S.target;I.disabled=!0;let B=parseGithubUrl(e.sourceUrl),v={pullRequestId:e.pullRequestId,connection:e.githubConnection,terms:e.terms.trim().split(`
|
||||
`).filter(O=>O),source:{repositoryFullName:`${B.owner}/${B.repo}`,pullRequestId:B.pullRequestId},options:e.options,conference:e.conference};U();let w=e.isUpdate?"/api/pr/"+e.pullRequestId:"/api/pr/";t.post(w,v,{headers:{"Content-Type":"application/json"}}).then(()=>{E.clear(),window.location.href="/pr/"+e.pullRequestId},O=>{O.data&&(i("ERRORS."+O.data.error).then(V=>{e.error=V},console.error),x(O.data.error))}).finally(()=>{I.disabled=!1})},e.watch("conference",()=>{oe()}),e.watch("terms",()=>{e.detectedType==="repo"&&_e(),e.detectedType==="pr"&&L(),e.detectedType==="gist"&&me()}),e.watch("options.image",()=>{e.detectedType==="repo"&&_e(),e.detectedType==="pr"&&L(),e.detectedType==="gist"&&me()}),e.watch("options.link",()=>{e.detectedType==="repo"&&_e(),e.detectedType==="pr"&&L(),e.detectedType==="gist"&&me()}),e.watch("details",()=>{e.detectedType==="pr"&&L(),e.detectedType==="gist"&&me()},!0)},ur=function(e,t,s,r,o,i){let a=ut(),c=Xt();e.on("dark-mode",(L,X)=>{e.aceOption&&(X?e.aceOption.theme="nord_dark":e.aceOption.theme="chrome")});let f=0,g=null,b=null;e.fileLoadingSlow=!1,e.fileReceivedBytes=0;function k(){g&&(g.resolve(),g=null),b&&(a.timeout.cancel(b),b=null)}let m=!1;e.on("dispose",()=>{m=!0,f++,k(),C&&C.resolve()}),e.files=[],e.isMac=/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent),e.fileSearchQuery="",e.fileSearchResults=null,e.fileSearchLoading=!1,c(document,"click",L=>{e.symbolsOpen&&!L.target.closest?.(".symbols")&&(e.symbolsOpen=!1),e.moreOpen&&!L.target.closest?.(".tb-more")&&(e.moreOpen=!1),e.accountOpen&&!L.target.closest?.(".acct")&&(e.accountOpen=!1),e.helpOpen&&!L.target.closest?.(".vb-help")&&(e.helpOpen=!1)}),c(document,"keydown",L=>{L.key==="Escape"&&(e.symbolsOpen=!1,e.moreOpen=!1,e.accountOpen=!1,e.helpOpen=!1),(L.ctrlKey||L.metaKey)&&!L.altKey&&L.key&&L.key.toLowerCase()==="f"&&e.type==="html"&&window.document.querySelector(".reading-layout")&&(L.preventDefault(),e.toggleMdFind(!0))}),c(document,"keydown",function(L){if((L.metaKey||L.ctrlKey)&&L.key==="k"){L.preventDefault();var X=document.querySelector(".tree-search-input");X&&(X.focus(),X.select())}});var C=null;e.onFileSearchChange=function(){C&&(C.resolve(),C=null);let L=e.fileSearchQuery;if(!L||L.length<2){e.fileSearchResults=null,e.fileSearchLoading=!1;return}e.fileSearchLoading=!0;let X=i.defer();C=X,t.get(`/api/repo/${e.repoId}/files/search?q=${encodeURIComponent(L)}`,{timeout:X.promise}).then(function(J){if(!(m||C!==X)){C=null,e.fileSearchLoading=!1;var ne={};e.files.forEach(function(M){ne[(M.path||"")+"/"+M.name]=!0});for(var me=[],ve={},oe=0;oe<J.data.length;oe++){var U=J.data[oe];if(U.path)for(var te=U.path.split("/"),x="",S=0;S<te.length;S++){var I=x;x=x?x+"/"+te[S]:te[S];var B=I+"/"+te[S];!ne[B]&&!ve[B]&&(ve[B]=!0,me.push({name:te[S],path:I}))}}me.sort(function(M,G){return(M.path||"").split("/").length-(G.path||"").split("/").length}),me.length>0&&e.files.push.apply(e.files,me);for(var v=[],w=0;w<J.data.length;w++){var O=J.data[w],V=(O.path||"")+"/"+O.name;!ne[V]&&O.size!=null&&(v.push(O),ne[V]=!0)}v.length>0&&e.files.push.apply(e.files,v),e.fileSearchResults=J.data}},function(){!m&&C===X&&(C=null,e.fileSearchLoading=!1,e.fileSearchResults=[])})};let A={yml:"yaml",txt:"text",py:"python",js:"javascript",ts:"typescript"},h=["license","txt"],E=["png","jpg","jpeg","gif","svg","ico","bmp","tiff","tif","webp","avif","heif","heic"],N=["wav","mp3","ogg","wma","flac","aac","m4a"],R=["mp4","avi","webm","mov","mpg","mpeg","mkv","flv","wmv","3gp","3g2","m4v","f4v","f4p","f4a","f4b"];e.on("routeUpdate",function(L,X){if(e.repoId!=r.repoId)return Ue();if((r.path||"")!=e.filePath){e.filePath=r.path||"",e.paths=e.filePath.split("/").filter(J=>J&&J.trim().length>0),ge();for(let J=0;J<e.paths.length-1;J++){let ne=J>0?e.paths.slice(0,J).join("/"):"";e.files.some(ve=>ve.path===ne)||e.getFiles(ne)}}});function P(){if(e.paths[0]!="")return;let L=["readme.md","readme.txt","readme.org","readme.1st","readme"],X={};for(let ne of e.files)ne.name.toLowerCase().indexOf("readme")>-1&&(X[ne.name.toLowerCase()]=ne.name);let J=null;for(let ne of L)if(X[ne]){J=ne;break}if(!J&&Object.keys(X).length>0&&(J=Object.keys(X)[0]),J){let ne=s.url();ne[ne.length-1]!="/"&&(ne+="/"),s.url(ne+encodePathForUrl(X[J]))}}e.getFiles=function(L,X=!1){let J=e.repoId;return t.get(`/api/repo/${e.repoId}/files/?path=${encodeURIComponent(L)}&v=${e.options.lastUpdateDate}`).then(function(ne){if(m||J!==e.repoId)return[];let me=L||"";return e.files=e.files.filter(ve=>ve.path!==me),e.files.push(...ne.data),ne.data},function(ne){if(m||J!==e.repoId)return[];X||(e.type="error",e.content=dr(ne),e.files=[])})};function H(){return e.files.filter(L=>L.name==e.paths[e.paths.length-1]&&L.path==e.paths.slice(0,e.paths.length-1).join("/"))[0]}var q=null;e.on("dispose",function(){q&&a.interval.cancel(q)});function z(L){if(m)return;let X=e.repoId;t.get(`/api/repo/${e.repoId}/options`).then(J=>{if(!(m||X!==e.repoId)){if(e.options=J.data,e.options.url){window.location=e.o
Line truncated
|
||||
`).forEach((X,J)=>{for(let[ne,me]of Y){let ve=ne.exec(X);if(ve&&!/^(if|for|while|switch|return|catch)$/.test(ve[1])){L.push({name:ve[1],kind:me,line:J+1});break}}}),Z={content:e.content,list:L.slice(0,300)},Z.list},e.goToSymbol=function(L){e.symbolsOpen=!1;let X=e.codeEditor;X&&(X.scrollToLine(L-1,!0,!0,()=>{}),X.gotoLine(L,0,!0),window.history.replaceState(null,"",window.location.pathname+window.location.search+"#L"+L),window.dispatchEvent(new HashChangeEvent("hashchange")))},e.gotoLine=function(){let L=e.codeEditor;L&&(L.focus(),L.execCommand("gotoline"))},e.rootEntries=function(){return[...e.files||[]].sort((L,X)=>{let J=L.size==null,ne=X.size==null;return J!==ne?J?-1:1:L.name.localeCompare(X.name)})},e.formatSize=function(L){if(L==null)return"";if(L<1024)return L+" B";let X=L/1024;return X<1024?X.toFixed(1)+" KB":(X/1024).toFixed(1)+" MB"},e.fileSize=function(L){if(!L)return null;let X=L.replace(/^\/+/,""),J=(e.files||[]).find(ne=>(ne.path?ne.path+"/":"")+ne.name===X);return J&&J.size!=null?J.size:null},e.revealFolder=function(L){e.sidebarHidden=!1,e.sidebarCollapsed=!1,Ze(()=>{let X=window.document.querySelector('.files a[data-path="/'+(window.CSS?.escape?window.CSS.escape(L):L)+'"]');X&&(X.closest("li")?.classList.contains("open")||X.click(),X.scrollIntoView({block:"nearest"}),X.focus())})};let he=/\bXXXX-\d+\b/g;e.redactionCount=function(){return typeof e.content!="string"?0:((e.type==="html"?e.content.replace(/<[^>]*>/g," "):e.content).match(he)||[]).length},e.renderRedacted=function(L){if(!L||L.indexOf("XXXX-")===-1||typeof window.DOMParser!="function")return L;let X=new window.DOMParser().parseFromString("<div>"+L+"</div>","text/html"),J=X.createTreeWalker(X.body,4),ne=[];for(;J.nextNode();)he.test(J.currentNode.nodeValue)&&ne.push(J.currentNode);for(let me of ne){he.lastIndex=0;let ve=X.createDocumentFragment(),oe=0,U,te=me.nodeValue;for(;U=he.exec(te);){ve.appendChild(X.createTextNode(te.slice(oe,U.index)));let x=X.createElement("mark");x.className="redact-chip",x.setAttribute("title","Redacted term "+U[0].slice(5)+" \u2014 the same term everywhere in this snapshot");let S=U[0].slice(5);x.textContent="";let I=X.createElement("i");I.textContent=S,x.appendChild(I),x.dataset.term=U[0],x.setAttribute("aria-label","Redacted term "+S);let B=/^[.,;:!?)\]]+/.exec(te.slice(U.index+U[0].length));if(B){let v=X.createElement("span");v.className="redact-glue",v.appendChild(x),v.appendChild(X.createTextNode(B[0])),ve.appendChild(v),oe=U.index+U[0].length+B[0].length}else ve.appendChild(x),oe=U.index+U[0].length}ve.appendChild(X.createTextNode(te.slice(oe))),me.parentNode.replaceChild(ve,me)}return X.body.firstChild.innerHTML};let ue=L=>L.toLowerCase().trim().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").slice(0,60)||"section";e.renderReadme=function(L){let X=e.renderRedacted(L);if(!X||typeof window.DOMParser!="function")return X;let J=new window.DOMParser().parseFromString("<div>"+X+"</div>","text/html"),ne={};return J.querySelectorAll("h1, h2, h3").forEach(me=>{let ve=me.id||ue(me.textContent);ne[ve]?ve+="-"+ ++ne[ve]:ne[ve]=1,me.id=ve}),J.body.firstChild.innerHTML};let ce={content:null,list:[]};e.readmeToc=function(){if(e.type!=="html"||typeof e.content!="string")return[];if(ce.content===e.content)return ce.list;let X=[...new window.DOMParser().parseFromString("<div>"+e.renderReadme(e.sanitize?e.sanitize(e.content):e.content)+"</div>","text/html").querySelectorAll("h2, h3")].map(J=>({id:J.id,text:J.textContent.trim(),level:J.tagName==="H3"?3:2})).slice(0,40);return ce={content:e.content,list:X},X},e.activeHeading=null,c(window,"scroll",()=>{let L=e.readmeToc?e.readmeToc():[];if(!L.length)return;let X=150,J="",ne="";for(let me of L){let ve=window.document.getElementById(me.id);if(!ve)continue;let oe=ve.getBoundingClientRect().top;oe<X?J=me.id:!ne&&oe<window.innerHeight-80&&(ne=me.id)}ne&&(J=ne),e.activeHeading!==J&&(e.activeHeading=J)},{capture:!0,passive:!0}),e.scrollToHeading=function(L){if(!L){(window.document.querySelector(".explorer-content, .file-card-body, .main-pane")||window).scrollTo({top:0,behavior:"smooth"}),e.activeHeading="";return}let X=window.document.getElementById(L);X&&X.scrollIntoView({behavior:"smooth",block:"start"}),e.activeHeading=L},e.redactParts=function(L){let X=[],J=0,ne,me=/\bXXXX-(\d+)\b/g;for(L=String(L||"");ne=me.exec(L);)ne.index>J&&X.push({t:L.slice(J,ne.index)}),X.push({n:ne[1]}),J=ne.index+ne[0].length;return J<L.length&&X.push({t:L.slice(J)}),X},e.pathCopied=!1,e.copyPath=async function(){window.navigator.clipboard?.writeText&&(await window.navigator.clipboard.writeText(e.filePath||""),e.pathCopied=!0,setTimeout(()=>{e.pathCopied=!1},1600))},e.contentCopied=!1,e.copyContent=async function(){if(typeof e.content!="string"||!window.navigator.clipboard?.writeText)return;let L=e.content;if(e.type==="html"&&e.url)try{L=await(await window.fetch(e.url,{credentials:"same-origin"})).text()}catch{return}await window.navigator.clipboard.writeText(L),e.contentCopied=!0,setTimeout((
Line truncated
|
||||
`+h.join(`
|
||||
`)],{type:"text/csv"}),N=document.createElement("a");N.href=URL.createObjectURL(E),N.download=r.username+"-repositories.csv",N.click()},e.showStatusMessage=m=>{let C=m.statusMessage||"(no message)";window.prompt(`Status message for ${m.repoId} (${m.status}):`,C)},e.fetchGithubInfo=m=>{let C=window.open("","_blank");C&&C.document.write("<pre>Loading GitHub info for "+m.repoId+"...</pre>"),t.get("/api/admin/repos/"+m.repoId+"/github").then(A=>{C&&(C.document.open(),C.document.write('<pre style="font:13px monospace;padding:16px;white-space:pre-wrap">'+JSON.stringify(A.data,null,2).replace(/[<>]/g,h=>h==="<"?"<":">")+"</pre>"),C.document.close())},A=>{let h=A&&A.data?JSON.stringify(A.data,null,2):String(A);C&&(C.document.body.innerHTML='<pre style="color:#B42318;padding:16px">'+h+"</pre>")})};function f(m){t.get("/api/admin/users/"+m+"/repos",{}).then(C=>{e.repositories=C.data},C=>{console.error(C)})}function g(m){t.get("/api/admin/users/"+m,{}).then(C=>{e.userInfo=C.data},C=>{console.error(C)})}g(r.username),f(r.username),e.banUser=()=>{confirm(`Ban user ${r.username}?`)&&t.post(`/api/admin/users/${r.username}/ban`).then(()=>g(r.username),m=>console.error(m))},e.activateUser=()=>{t.post(`/api/admin/users/${r.username}/activate`).then(()=>g(r.username),m=>console.error(m))},e.promoteUser=()=>{confirm(`Promote ${r.username} to admin?`)&&t.post(`/api/admin/users/${r.username}/promote`).then(()=>g(r.username),m=>console.error(m))},e.demoteUser=()=>{confirm(`Remove admin privileges from ${r.username}?`)&&t.post(`/api/admin/users/${r.username}/demote`).then(()=>g(r.username),m=>console.error(m))},e.tokens=[],e.tokenForm={name:"",plaintext:null};function b(){t.get("/api/admin/tokens").then(m=>{e.tokens=m.data||[]},m=>{m.status!==401&&m.status!==403&&console.error(m)})}b(),e.createToken=()=>{e.tokenForm.name&&t.post("/api/admin/tokens",{name:e.tokenForm.name}).then(m=>{e.tokenForm.plaintext=m.data.token,e.tokenForm.name="",b()},m=>console.error(m))},e.revokeToken=m=>{confirm(`Revoke token "${m.name}"?`)&&t.delete("/api/admin/tokens/"+m.id).then(()=>b(),C=>console.error(C))},e.removeCache=m=>{confirm("Remove cached files for "+m.repoId+"?")&&t.delete("/api/admin/repos/"+m.repoId).then(()=>f(r.username),C=>console.error(C))},e.removeRepository=m=>{confirm("Remove repository "+m.repoId+"?")&&t.delete("/api/repo/"+m.repoId+"/").then(()=>f(r.username),C=>console.error(C))},e.updateRepository=m=>{let C=ze({title:`Refreshing ${m.repoId}...`,date:new Date,body:`The repository ${m.repoId} is going to be refreshed.`});e.toasts.push(C),t.post(`/api/repo/${m.repoId}/refresh`).then(A=>{A.data.status=="ready"?C.title=`${m.repoId} is refreshed.`:C.title=`Refreshing of ${m.repoId}.`},A=>{C.title=`Error during the refresh of ${m.repoId}.`,C.body=A.body})},e.getGitHubRepositories=m=>{t.get(`/api/user/${e.userInfo.username}/all_repositories`,{params:{force:"1"}}).then(C=>{e.userInfo.repositories=C.data})};let k=null;e.watch("query",()=>{o.timeout.cancel(k),k=o.timeout(()=>{f(r.username)},500)},!0)},dl=function(e,t,s){let r=ut(),o=Xt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&s.url("/")}),e.user==null&&s.url("/"),e.conferences=[],e.total=-1,e.totalPage=0,e.statusCounts=[];let i=A=>{if(A.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){A.preventDefault();let h=document.querySelector('.admin-filter-toolbar input[type="search"]');h&&h.focus()}};o(document,"keydown",i),e.on("dispose",()=>document.removeEventListener("keydown",i)),e.clearFilter=A=>{A==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[A]="",e.query.page=1},e.chips=[];let a=()=>{let A=[];(e.query.dateFrom||e.query.dateTo)&&A.push({key:"dateRange",label:"Date",value:(e.query.dateFrom||"\u2026")+" \u2013 "+(e.query.dateTo||"\u2026")}),e.chips=A};e.statusCountFor=A=>{let h=(e.statusCounts||[]).find(E=>E._id===A);return h?h.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=A=>{e.query.sort===A?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=A,e.query.direction="desc"),e.query.page=1},e.sortIcon=A=>e.query.sort===A?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let c="admin.conferences.filterPrefs",f={page:1,limit:25,sort:"name",direction:"asc",search:"",dateFrom:"",dateTo:"",ready:!0,expired:!0,removed:!1,error:!0,preparing:!0},g=loadFilterPrefs(c)||{};e.query=Object.assign({},f,g,{page:1,search:""});let b=s.search();b.search&&(e.query.search=b.search);let k="admin.conferences.presets";e.presets=JSON.parse(localStorage.getItem(k)||"[]"),e.savePreset=()=>{let A=window.prompt("Preset name:");if(!A)return;let h=Object.assign({},e.query);delete h.page,e.presets=(e.presets||[]).filter(E=>E.name!==A),e.presets.push({name:A,query:h}),localStorage.setItem(k,JSON.stringify(e.presets))},e.applyPreset=A=>{Object.assign(e.query,A.query,{page:1})},e.deletePreset=A=>{e.presets=(e.presets||[]).filter(h=>h.name!==A.name),localStorage.setItem(k,JS
Line truncated
|
||||
`).map((_e,Se)=>Se===0?_e:ve+_e).join(`
|
||||
`)}else typeof _=="number"||typeof _=="boolean"?ce=String(_):ce=JSON.stringify(_);Z.push(`${le}${ce}${Ce}`)}),Z.push("}"),Z.join(`
|
||||
`)}function g(N){let R=[],V="",H=/(\w+):(>=|<=|!=|>|<|=)?([^\s]+)/g,q=0,z;for(;z=H.exec(N);)V+=N.slice(q,z.index),q=H.lastIndex,R.push({key:z[1],op:z[2]||"=",val:z[3]});return V+=N.slice(q),{filters:R,free:V.trim().toLowerCase()}}function b(N,R){for(let V of R.filters){let H=(z,Z,ae)=>{let _=parseFloat(z),j=parseFloat(Z);return ae==="="?String(z)===String(Z):ae==="!="?String(z)!==String(Z):ae===">="?_>=j:ae==="<="?_<=j:ae===">"?_>j:ae==="<"?_<j:!0},q;if(V.key==="code")q=N.displayMessage;else if(V.key==="module")q=N.module;else if(V.key==="status")q=N._status;else if(V.key==="url")q=N._url;else if(V.key==="repo")q=N._repoId;else if(V.key==="level")q=N.level;else continue;if(q==null||!H(q,V.val,V.op))return!1}return!(R.free&&((N.displayMessage||"")+" "+(N.module||"")+" "+(N._url||"")+" "+JSON.stringify(N.raw||[])).toLowerCase().indexOf(R.free)===-1)}function k(){let N=g(e.query.search||"");e.parsedFilterCount=N.filters.length;let R=e.query.bucket,V=e.entries.filter(Z=>R&&Z._bucket!==R?!1:b(Z,N)),H=e.query.group;if(H){let Z=j=>H==="module"?j.module:j.displayMessage||j.message||"_",ae=new Map;for(let j of V){let ne=Z(j);if(ae.has(ne)){let le=ae.get(ne);le.count++,le._related.push(j),new Date(j.ts)>new Date(le.ts)&&(le.ts=j.ts,le._url=j._url,le._status=j._status),new Date(j.ts)<new Date(le._firstSeen)&&(le._firstSeen=j.ts)}else{let le=Object.assign({},j);le._key=`${H}:${ne}`,le._related=[j],le._firstSeen=j.ts,le._lastHourCount=0,le.count=1,ae.set(ne,le)}}let _=Date.now()-3600*1e3;for(let j of ae.values())j._lastHourCount=j._related.filter(ne=>new Date(ne.ts).getTime()>=_).length;V=Array.from(ae.values())}else V=V.map((Z,ae)=>(Z._key="row:"+ae+":"+Z.ts,Z._related=[Z],Z._firstSeen=Z.ts,Z._lastHourCount=0,Z.count=1,Z));let q=Z=>({error:0,warn:1,info:2})[Z._bucket]??1;e.query.sort==="count"?V.sort((Z,ae)=>q(Z)-q(ae)||ae.count-Z.count||new Date(ae.ts)-new Date(Z.ts)):V.sort((Z,ae)=>q(Z)-q(ae)||new Date(ae.ts)-new Date(Z.ts)),e.visible=V,(e.query.bucket||(e.query.search||"").trim())&&!V.length&&e.canLoadMore?.()&&!e._autoLoading&&e.entries.length<2500&&(e._autoLoading=!0,m(!0))}function m(N){let R=N?e.entries.length:0,V=N?e.pageSize:Math.max(e.pageSize,e.entries.length||e.pageSize);t.get("/api/admin/errors",{params:{offset:R,limit:V}}).then(H=>{let q=(H.data.entries||[]).map(c);e.entries=N?e.entries.concat(q):q,e.available=!!H.data.available,e.cap=H.data.max||e.cap,e.total=H.data.total||e.entries.length,e._autoLoading=!1,k()},H=>{e._autoLoading=!1,console.error(H)})}e.loadMore=()=>m(!0),e.canLoadMore=()=>e.entries.length<e.total;function C(){t.get("/api/admin/errors/stats").then(N=>{let R=N.data||{},V=R.prev24h?Math.round((R.last24h-R.prev24h)/R.prev24h*100):0;e.stats={last24h:R.last24h||0,prev24h:R.prev24h||0,delta:V,severity:R.severity||{error:0,warn:0,info:0},unique:R.unique||{error:0,warn:0,info:0},buckets:R.buckets||[],dropped:R.dropped||0}},N=>console.error(N))}function A(){m(),C()}e.barPx=(N,R)=>{let V=e.stats.buckets||[],H=0,q=0;for(let _ of V)H=Math.max(H,(_.error||0)+(_.warn||0)),q=Math.max(q,_.info||0);let z=N[R]||0;if(!z)return 0;if(R==="info")return q?Math.max(2,Math.round(z/q*(H?16:60))):0;let Z=(N.error||0)+(N.warn||0),ae=Math.round(Z/H*44);return Math.max(4,Math.round(z/Z*ae))},e.bucketTitle=N=>`${new Date(N.hour).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})} \xB7 ${N.error||0} err \xB7 ${N.warn||0} warn \xB7 ${N.info||0} info`,e.toggle=N=>{e.expanded[N._key]=!e.expanded[N._key]},e.setBucket=N=>{e.query.bucket=N},e.refreshNow=A,e.clearAll=()=>{confirm("Clear all captured errors?")&&t.delete("/api/admin/errors").then(A,N=>console.error(N))},e.exportCsv=()=>{let N=["ts","level","module","displayMessage","_status","_url","_repoId"],R=[N.join(",")];for(let z of e.visible)R.push(N.map(Z=>{let ae=z[Z]==null?"":String(z[Z]);return/[",\n]/.test(ae)?`"${ae.replace(/"/g,'""')}"`:ae}).join(","));let V=new Blob([R.join(`
|
||||
`)],{type:"text/csv;charset=utf-8"}),H=URL.createObjectURL(V),q=document.createElement("a");q.href=H,q.download=`errors-${new Date().toISOString().slice(0,19)}.csv`,document.body.appendChild(q),q.click(),document.body.removeChild(q),URL.revokeObjectURL(H)};function h(N){e.copyHint=`${N} copied`,o.timeout(()=>{e.copyHint=""},1500)}e.copyJson=N=>{navigator.clipboard.writeText(N._detailJson).then(()=>h("JSON"))},e.copyCurl=N=>{if(!N._url)return;let V=`curl -X ${N._method||"GET"} '${window.location.origin}${N._url}'`;navigator.clipboard.writeText(V).then(()=>h("curl"))},A();let E=r(()=>{e.query.autoRefresh&&A()},15e3);e.on("dispose",()=>r.cancel(E)),e.watch("query.search",k),e.watch("query.bucket",k),e.watch("query.sort",k),e.watch("query.group",k)},pl=function(e,t,s,r){if(e.Math=Math,e.watch("user.status",()=>{e.user==null&&s.url("/")}),e.user==null){s.url("/");return}e.data=null,e.loading=!0,e.error=null,e.performance=null,e.performanceMinutes=15,e.performanceTab="routes",e.cacheReport=null,e.cacheError=null,e.cacheMinutes=60,e.cacheTraffic="all";var o=!1;e.loadCache=function(){if(!o){o=!0;var h=e.cacheMinutes;t.get("/api/admin/cache",{params:{minutes:h}}).then(function(E){h===e.cacheMinutes&&(e.cacheReport=E.data,e.cacheError=E.data.available?null:E.data.reason||"Cache monitoring is unavailable.")},function(){e.cacheError="Could not refresh cache monitoring. Displayed values may be stale."}).finally(function(){o=!1,h!==e.cacheMinutes&&e.loadCache()})}},e.cacheRows=function(){return(e.cacheReport?.rows||[]).filter(function(h){return e.cacheTraffic==="all"||h.traffic===e.cacheTraffic})},e.cacheRate=function(h,E){var N=e.cacheRows(),R=function(q){return N.filter(function(z){return z.name===q}).reduce(function(z,Z){return z+Z[E]},0)},V=R(h+"_hit"),H=R(h+"_miss");return V+H?(100*V/(V+H)).toFixed(1)+"%":"No samples"},e.cacheEventName=function(h){return h.replaceAll("_"," ")},e.cacheP95=function(h){var E=0,N=e.cacheReport?.latencyBucketsMs||[];if(!h.count)return"No samples";if(!h.ms)return"Not timed";for(var R=0;R<=N.length;R++)if(E+=h["b"+R]||0,E>=Math.ceil(h.count*.95))return R<N.length?"\u2264 "+N[R]+" ms":"> 10 s";return"No samples"},e.performanceError=null,e.latencyBound=function(h,E){return h.count?h[E]==null?"> 60 s":"\u2264 "+h[E]+" ms":"No samples"},e.firstByteBound=function(h){return e.latencyBound({count:h.firstByteCount,p95UpperMs:h.firstByteP95UpperMs},"p95UpperMs")},e.sampleAge=function(h){return Math.max(0,Math.round((Date.now()-h.sampledAt)/1e3))},e.peakRss=function(h){return(e.performance.runtimeSeries||[]).filter(function(E){return E.instance===h.instance}).reduce(function(E,N){return Math.max(E,N.rss)},h.memory.rss)},e.performanceWarning=function(h){return e.sampleAge(h)>45||h.droppedBatches||h.droppedMetrics||h.sockets?.closeWait>0||h.eventLoop?.p95Ms>100||h.memoryLimitBytes&&h.memory.rss>h.memoryLimitBytes*.8};var i=!1;e.loadPerformance=function(){var h=e.performanceMinutes;e.performance?.windowMinutes&&e.performance.windowMinutes!==h&&(e.performance=null),!i&&(i=!0,t.get("/api/admin/performance",{params:{minutes:h}}).then(function(E){h===e.performanceMinutes&&(e.performance=E.data,e.performanceError=E.data.available?null:"Performance monitoring is unavailable. Request history may be incomplete.")},function(){h===e.performanceMinutes&&(e.performanceError="Could not refresh performance monitoring. Displayed samples may be stale.")}).finally(function(){i=!1,h!==e.performanceMinutes&&e.loadPerformance()}))};function a(h){if(h==null)return"\u2014";for(var E=["B","KB","MB","GB","TB"],N=0,R=h;R>=1024&&N<E.length-1;)R/=1024,N++;return R.toFixed(N>0?1:0)+" "+E[N]}e.humanBytes=a;function c(h){if(!h)return"\u2014";var E=Math.floor(h/86400),N=Math.floor(h%86400/3600),R=Math.floor(h%3600/60);return E>0?E+"d "+(N<10?"0":"")+N+"h":N>0?N+"h "+(R<10?"0":"")+R+"m":R+"m"}e.humanDuration=c;function f(h){return h==null?"\u2014":h>=1e6?(h/1e6).toFixed(1)+"M":h>=1e3?(h/1e3).toFixed(1)+"K":String(h)}e.humanNum=f,e.queueTotal=function(h){return h?(h.waiting||0)+(h.active||0)+(h.delayed||0)+(h.failed||0):0},e.statusCount=function(h){if(!e.data||!e.data.repos)return 0;for(var E=e.data.repos.statusBreakdown||[],N=0;N<E.length;N++)if(E[N]._id===h)return E[N].count;return 0},e.barPct=function(h){var E=e.data&&e.data.repos?e.data.repos.total:0;if(!E)return 0;var N=[h];h==="expired"&&N.push("expiring"),h==="removed"&&N.push("removing"),h==="preparing"&&N.push("download");var R=0;return N.forEach(function(V){R+=e.statusCount(V)}),Math.max(.4,R/E*100)},e.errPct=function(h){if(!e.data||!e.data.errors)return 0;var E=Math.max(e.data.errors.severity.error,e.data.errors.severity.warn,e.data.errors.severity.info,1);return e.data.errors.severity[h]/E*100};function g(h){var E=h||[];return E.map(function(N,R){var V=E[R-1]||{},H=Object.assign({},N);return H.dailyRepositories=R?Math.max(0,(N.nbRepositories||0)-(V.nbRepositories||0)):0,H.dailyUsers=R?Math.max(0,(N.nbUsers||0)-(V.nbUsers||0)):0,H.dailyPageViews=R?Math.max(0,(N.nbPageViews
Line truncated
|
||||
`)],{type:"text/csv"}),N=document.createElement("a");N.href=URL.createObjectURL(E),N.download=r.username+"-repositories.csv",N.click()},e.showStatusMessage=m=>{let C=m.statusMessage||"(no message)";window.prompt(`Status message for ${m.repoId} (${m.status}):`,C)},e.fetchGithubInfo=m=>{let C=window.open("","_blank");C&&C.document.write("<pre>Loading GitHub info for "+m.repoId+"...</pre>"),t.get("/api/admin/repos/"+m.repoId+"/github").then(A=>{C&&(C.document.open(),C.document.write('<pre style="font:13px monospace;padding:16px;white-space:pre-wrap">'+JSON.stringify(A.data,null,2).replace(/[<>]/g,h=>h==="<"?"<":">")+"</pre>"),C.document.close())},A=>{let h=A&&A.data?JSON.stringify(A.data,null,2):String(A);C&&(C.document.body.innerHTML='<pre style="color:#B42318;padding:16px">'+h+"</pre>")})};function f(m){t.get("/api/admin/users/"+m+"/repos",{}).then(C=>{e.repositories=C.data},C=>{console.error(C)})}function g(m){t.get("/api/admin/users/"+m,{}).then(C=>{e.userInfo=C.data},C=>{console.error(C)})}g(r.username),f(r.username),e.banUser=()=>{confirm(`Ban user ${r.username}?`)&&t.post(`/api/admin/users/${r.username}/ban`).then(()=>g(r.username),m=>console.error(m))},e.activateUser=()=>{t.post(`/api/admin/users/${r.username}/activate`).then(()=>g(r.username),m=>console.error(m))},e.promoteUser=()=>{confirm(`Promote ${r.username} to admin?`)&&t.post(`/api/admin/users/${r.username}/promote`).then(()=>g(r.username),m=>console.error(m))},e.demoteUser=()=>{confirm(`Remove admin privileges from ${r.username}?`)&&t.post(`/api/admin/users/${r.username}/demote`).then(()=>g(r.username),m=>console.error(m))},e.tokens=[],e.tokenForm={name:"",plaintext:null};function b(){t.get("/api/admin/tokens").then(m=>{e.tokens=m.data||[]},m=>{m.status!==401&&m.status!==403&&console.error(m)})}b(),e.createToken=()=>{e.tokenForm.name&&t.post("/api/admin/tokens",{name:e.tokenForm.name}).then(m=>{e.tokenForm.plaintext=m.data.token,e.tokenForm.name="",b()},m=>console.error(m))},e.revokeToken=m=>{confirm(`Revoke token "${m.name}"?`)&&t.delete("/api/admin/tokens/"+m.id).then(()=>b(),C=>console.error(C))},e.removeCache=m=>{confirm("Remove cached files for "+m.repoId+"?")&&t.delete("/api/admin/repos/"+m.repoId).then(()=>f(r.username),C=>console.error(C))},e.removeRepository=m=>{confirm("Remove repository "+m.repoId+"?")&&t.delete("/api/repo/"+m.repoId+"/").then(()=>f(r.username),C=>console.error(C))},e.updateRepository=m=>{let C=ze({title:`Refreshing ${m.repoId}...`,date:new Date,body:`The repository ${m.repoId} is going to be refreshed.`});e.toasts.push(C),t.post(`/api/repo/${m.repoId}/refresh`).then(A=>{A.data.status=="ready"?C.title=`${m.repoId} is refreshed.`:C.title=`Refreshing of ${m.repoId}.`},A=>{C.title=`Error during the refresh of ${m.repoId}.`,C.body=A.body})},e.getGitHubRepositories=m=>{t.get(`/api/user/${e.userInfo.username}/all_repositories`,{params:{force:"1"}}).then(C=>{e.userInfo.repositories=C.data})};let k=null;e.watch("query",()=>{o.timeout.cancel(k),k=o.timeout(()=>{f(r.username)},500)},!0)},dl=function(e,t,s){let r=ut(),o=Xt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&s.url("/")}),e.user==null&&s.url("/"),e.conferences=[],e.total=-1,e.totalPage=0,e.statusCounts=[];let i=A=>{if(A.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){A.preventDefault();let h=document.querySelector('.admin-filter-toolbar input[type="search"]');h&&h.focus()}};o(document,"keydown",i),e.on("dispose",()=>document.removeEventListener("keydown",i)),e.clearFilter=A=>{A==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[A]="",e.query.page=1},e.chips=[];let a=()=>{let A=[];(e.query.dateFrom||e.query.dateTo)&&A.push({key:"dateRange",label:"Date",value:(e.query.dateFrom||"\u2026")+" \u2013 "+(e.query.dateTo||"\u2026")}),e.chips=A};e.statusCountFor=A=>{let h=(e.statusCounts||[]).find(E=>E._id===A);return h?h.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=A=>{e.query.sort===A?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=A,e.query.direction="desc"),e.query.page=1},e.sortIcon=A=>e.query.sort===A?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let c="admin.conferences.filterPrefs",f={page:1,limit:25,sort:"name",direction:"asc",search:"",dateFrom:"",dateTo:"",ready:!0,expired:!0,removed:!1,error:!0,preparing:!0},g=loadFilterPrefs(c)||{};e.query=Object.assign({},f,g,{page:1,search:""});let b=s.search();b.search&&(e.query.search=b.search);let k="admin.conferences.presets";e.presets=JSON.parse(localStorage.getItem(k)||"[]"),e.savePreset=()=>{let A=window.prompt("Preset name:");if(!A)return;let h=Object.assign({},e.query);delete h.page,e.presets=(e.presets||[]).filter(E=>E.name!==A),e.presets.push({name:A,query:h}),localStorage.setItem(k,JSON.stringify(e.presets))},e.applyPreset=A=>{Object.assign(e.query,A.query,{page:1})},e.deletePreset=A=>{e.presets=(e.presets||[]).filter(h=>h.name!==A.name),localStorage.setItem(k,JS
Line truncated
|
||||
`).map((_e,Se)=>Se===0?_e:ye+_e).join(`
|
||||
`)}else typeof _=="number"||typeof _=="boolean"?ce=String(_):ce=JSON.stringify(_);ie.push(`${he}${ce}${ue}`)}),ie.push("}"),ie.join(`
|
||||
`)}function g(N){let R=[],P="",H=/(\w+):(>=|<=|!=|>|<|=)?([^\s]+)/g,q=0,z;for(;z=H.exec(N);)P+=N.slice(q,z.index),q=H.lastIndex,R.push({key:z[1],op:z[2]||"=",val:z[3]});return P+=N.slice(q),{filters:R,free:P.trim().toLowerCase()}}function b(N,R){for(let P of R.filters){let H=(z,ie,ae)=>{let _=parseFloat(z),Y=parseFloat(ie);return ae==="="?String(z)===String(ie):ae==="!="?String(z)!==String(ie):ae===">="?_>=Y:ae==="<="?_<=Y:ae===">"?_>Y:ae==="<"?_<Y:!0},q;if(P.key==="code")q=N.displayMessage;else if(P.key==="module")q=N.module;else if(P.key==="status")q=N._status;else if(P.key==="url")q=N._url;else if(P.key==="repo")q=N._repoId;else if(P.key==="level")q=N.level;else continue;if(q==null||!H(q,P.val,P.op))return!1}return!(R.free&&((N.displayMessage||"")+" "+(N.module||"")+" "+(N._url||"")+" "+JSON.stringify(N.raw||[])).toLowerCase().indexOf(R.free)===-1)}function k(){let N=g(e.query.search||"");e.parsedFilterCount=N.filters.length;let R=e.query.bucket,P=e.entries.filter(ae=>R&&ae._bucket!==R?!1:b(ae,N)),H=e.query.group;if(H){let ae=Z=>H==="module"?Z.module:Z.displayMessage||Z.message||"_",_=new Map;for(let Z of P){let he=ae(Z);if(_.has(he)){let ue=_.get(he);ue.count++,ue._related.push(Z),new Date(Z.ts)>new Date(ue.ts)&&(ue.ts=Z.ts,ue._url=Z._url,ue._status=Z._status),new Date(Z.ts)<new Date(ue._firstSeen)&&(ue._firstSeen=Z.ts)}else{let ue=Object.assign({},Z);ue._key=`${H}:${he}`,ue._related=[Z],ue._firstSeen=Z.ts,ue._lastHourCount=0,ue.count=1,_.set(he,ue)}}let Y=Date.now()-3600*1e3;for(let Z of _.values())Z._lastHourCount=Z._related.filter(he=>new Date(he.ts).getTime()>=Y).length;P=Array.from(_.values())}else P=P.map((ae,_)=>(ae._key="row:"+_+":"+ae.ts,ae._related=[ae],ae._firstSeen=ae.ts,ae._lastHourCount=0,ae.count=1,ae));let q=ae=>({error:0,warn:1,info:2})[ae._bucket]??1;e.query.sort==="count"?P.sort((ae,_)=>q(ae)-q(_)||_.count-ae.count||new Date(_.ts)-new Date(ae.ts)):P.sort((ae,_)=>q(ae)-q(_)||new Date(_.ts)-new Date(ae.ts)),e.visible=P;let z=!!(e.query.bucket||(e.query.search||"").trim()),ie=!z&&(e.stats?.severity?.error||0)>0&&!P.some(ae=>ae._bucket==="error")&&e.entries.length<1500;(z&&!P.length||ie)&&e.canLoadMore?.()&&!e._autoLoading&&e.entries.length<2500&&(e._autoLoading=!0,m(!0))}function m(N){let R=N?e.entries.length:0,P=N?e.pageSize:Math.max(e.pageSize,e.entries.length||e.pageSize);t.get("/api/admin/errors",{params:{offset:R,limit:P}}).then(H=>{let q=(H.data.entries||[]).map(c);e.entries=N?e.entries.concat(q):q,e.available=!!H.data.available,e.cap=H.data.max||e.cap,e.total=H.data.total||e.entries.length,e._autoLoading=!1,k()},H=>{e._autoLoading=!1,console.error(H)})}e.loadMore=()=>m(!0),e.canLoadMore=()=>e.entries.length<e.total;function C(){t.get("/api/admin/errors/stats").then(N=>{let R=N.data||{},P=R.prev24h?Math.round((R.last24h-R.prev24h)/R.prev24h*100):0;e.stats={last24h:R.last24h||0,prev24h:R.prev24h||0,delta:P,severity:R.severity||{error:0,warn:0,info:0},unique:R.unique||{error:0,warn:0,info:0},buckets:R.buckets||[],dropped:R.dropped||0},k()},N=>console.error(N))}function A(){m(),C()}e.barPx=(N,R)=>{let P=e.stats.buckets||[],H=0,q=0;for(let _ of P)H=Math.max(H,(_.error||0)+(_.warn||0)),q=Math.max(q,_.info||0);let z=N[R]||0;if(!z)return 0;if(R==="info")return q?Math.max(2,Math.round(z/q*(H?16:60))):0;let ie=(N.error||0)+(N.warn||0),ae=Math.round(ie/H*44);return Math.max(4,Math.round(z/ie*ae))},e.bucketTitle=N=>`${new Date(N.hour).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})} \xB7 ${N.error||0} err \xB7 ${N.warn||0} warn \xB7 ${N.info||0} info`,e.toggle=N=>{e.expanded[N._key]=!e.expanded[N._key]},e.setBucket=N=>{e.query.bucket=N},e.refreshNow=A,e.clearAll=()=>{confirm("Clear all captured errors?")&&t.delete("/api/admin/errors").then(A,N=>console.error(N))},e.exportCsv=()=>{let N=["ts","level","module","displayMessage","_status","_url","_repoId"],R=[N.join(",")];for(let z of e.visible)R.push(N.map(ie=>{let ae=z[ie]==null?"":String(z[ie]);return/[",\n]/.test(ae)?`"${ae.replace(/"/g,'""')}"`:ae}).join(","));let P=new Blob([R.join(`
|
||||
`)],{type:"text/csv;charset=utf-8"}),H=URL.createObjectURL(P),q=document.createElement("a");q.href=H,q.download=`errors-${new Date().toISOString().slice(0,19)}.csv`,document.body.appendChild(q),q.click(),document.body.removeChild(q),URL.revokeObjectURL(H)};function h(N){e.copyHint=`${N} copied`,o.timeout(()=>{e.copyHint=""},1500)}e.copyJson=N=>{navigator.clipboard.writeText(N._detailJson).then(()=>h("JSON"))},e.copyCurl=N=>{if(!N._url)return;let P=`curl -X ${N._method||"GET"} '${window.location.origin}${N._url}'`;navigator.clipboard.writeText(P).then(()=>h("curl"))},A();let E=r(()=>{e.query.autoRefresh&&A()},15e3);e.on("dispose",()=>r.cancel(E)),e.watch("query.search",k),e.watch("query.bucket",k),e.watch("query.sort",k),e.watch("query.group",k)},pl=function(e,t,s,r){if(e.Math=Math,e.watch("user.status",()=>{e.user==null&&s.url("/")}),e.user==null){s.url("/");return}e.data=null,e.loading=!0,e.error=null,e.performance=null,e.performanceMinutes=15,e.performanceTab="routes",e.cacheReport=null,e.cacheError=null,e.cacheMinutes=60,e.cacheTraffic="all";var o=!1;e.loadCache=function(){if(!o){o=!0;var h=e.cacheMinutes;t.get("/api/admin/cache",{params:{minutes:h}}).then(function(E){h===e.cacheMinutes&&(e.cacheReport=E.data,e.cacheError=E.data.available?null:E.data.reason||"Cache monitoring is unavailable.")},function(){e.cacheError="Could not refresh cache monitoring. Displayed values may be stale."}).finally(function(){o=!1,h!==e.cacheMinutes&&e.loadCache()})}},e.cacheRows=function(){return(e.cacheReport?.rows||[]).filter(function(h){return e.cacheTraffic==="all"||h.traffic===e.cacheTraffic})},e.cacheRate=function(h,E){var N=e.cacheRows(),R=function(q){return N.filter(function(z){return z.name===q}).reduce(function(z,ie){return z+ie[E]},0)},P=R(h+"_hit"),H=R(h+"_miss");return P+H?(100*P/(P+H)).toFixed(1)+"%":"No samples"},e.cacheEventName=function(h){return h.replaceAll("_"," ")},e.cacheP95=function(h){var E=0,N=e.cacheReport?.latencyBucketsMs||[];if(!h.count)return"No samples";if(!h.ms)return"Not timed";for(var R=0;R<=N.length;R++)if(E+=h["b"+R]||0,E>=Math.ceil(h.count*.95))return R<N.length?"\u2264 "+N[R]+" ms":"> 10 s";return"No samples"},e.performanceError=null,e.latencyBound=function(h,E){return h.count?h[E]==null?"> 60 s":"\u2264 "+h[E]+" ms":"No samples"},e.firstByteBound=function(h){return e.latencyBound({count:h.firstByteCount,p95UpperMs:h.firstByteP95UpperMs},"p95UpperMs")},e.sampleAge=function(h){return Math.max(0,Math.round((Date.now()-h.sampledAt)/1e3))},e.peakRss=function(h){return(e.performance.runtimeSeries||[]).filter(function(E){return E.instance===h.instance}).reduce(function(E,N){return Math.max(E,N.rss)},h.memory.rss)},e.performanceWarning=function(h){return e.sampleAge(h)>45||h.droppedBatches||h.droppedMetrics||h.sockets?.closeWait>0||h.eventLoop?.p95Ms>100||h.memoryLimitBytes&&h.memory.rss>h.memoryLimitBytes*.8};var i=!1;e.loadPerformance=function(){var h=e.performanceMinutes;e.performance?.windowMinutes&&e.performance.windowMinutes!==h&&(e.performance=null),!i&&(i=!0,t.get("/api/admin/performance",{params:{minutes:h}}).then(function(E){h===e.performanceMinutes&&(e.performance=E.data,e.performanceError=E.data.available?null:"Performance monitoring is unavailable. Request history may be incomplete.")},function(){h===e.performanceMinutes&&(e.performanceError="Could not refresh performance monitoring. Displayed samples may be stale.")}).finally(function(){i=!1,h!==e.performanceMinutes&&e.loadPerformance()}))};function a(h){if(h==null)return"\u2014";for(var E=["B","KB","MB","GB","TB"],N=0,R=h;R>=1024&&N<E.length-1;)R/=1024,N++;return R.toFixed(N>0?1:0)+" "+E[N]}e.humanBytes=a;function c(h){if(!h)return"\u2014";var E=Math.floor(h/86400),N=Math.floor(h%86400/3600),R=Math.floor(h%3600/60);return E>0?E+"d "+(N<10?"0":"")+N+"h":N>0?N+"h "+(R<10?"0":"")+R+"m":R+"m"}e.humanDuration=c;function f(h){return h==null?"\u2014":h>=1e6?(h/1e6).toFixed(1)+"M":h>=1e3?(h/1e3).toFixed(1)+"K":String(h)}e.humanNum=f,e.queueTotal=function(h){return h?(h.waiting||0)+(h.active||0)+(h.delayed||0)+(h.failed||0):0},e.statusCount=function(h){if(!e.data||!e.data.repos)return 0;for(var E=e.data.repos.statusBreakdown||[],N=0;N<E.length;N++)if(E[N]._id===h)return E[N].count;return 0},e.barPct=function(h){var E=e.data&&e.data.repos?e.data.repos.total:0;if(!E)return 0;var N=[h];h==="expired"&&N.push("expiring"),h==="removed"&&N.push("removing"),h==="preparing"&&N.push("download");var R=0;return N.forEach(function(P){R+=e.statusCount(P)}),Math.max(.4,R/E*100)},e.errPct=function(h){if(!e.data||!e.data.errors)return 0;var E=Math.max(e.data.errors.severity.error,e.data.errors.severity.warn,e.data.errors.severity.info,1);return e.data.errors.severity[h]/E*100};function g(h){var E=h||[];return E.map(function(N,R){var P=E[R-1]||{},H=Object.assign({},N);return H.dailyRepositories=R?Math.max(0,(N.nbRepositories||0)-(P.nbRepositories||0)):0,H.dailyUsers=R?Math.max(0,(N.nbUsers||0)-(P.nbUsers||0)):0,H.dailyPageViews=R?Math.max(0,(N.nbPageVie
Line truncated
|
||||
MIT CSAIL
|
||||
jane.smith@example.org`},null,2),[[o,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"anonymize",options:{debounce:250}}]]),n("small",vS,[t[68]||(t[68]=y("One term per line (regex allowed). Replaced by ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK)+"-[N]",1),t[69]||(t[69]=y(", or use ",-1)),t[70]||(t[70]=n("code",null,"term=>replacement",-1)),t[71]||(t[71]=y(" to pick your own (e.g. ",-1)),t[72]||(t[72]=n("code",null,"Anonymous=>ABC",-1)),t[73]||(t[73]=y(").",-1))]),D(n("div",yS,"Regex characters detected. Escape them if unintentional.",512),[[Q,e.termsRegexWarning]]),D(n("div",gS,"Terms are in an invalid format.",512),[[Q,e.anonymize?.terms?.errors?.format]])])],512),[[Q,e.detectedType]]),D(n("section",bS,[t[96]||(t[96]=n("div",{class:"paper-section-eyebrow"},"Display",-1)),D(n("div",null,[n("div",wS,[D(n("input",kS,null,512),[[o,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"anonymize",options:{}}]]),t[76]||(t[76]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1))]),n("div",CS,[D(n("input",ES,null,512),[[o,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"anonymize",options:{}}]]),t[77]||(t[77]=n("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[78]||(t[78]=n("small",{class:"form-text text-muted"},"Images are served unchanged and may contain names or affiliations.",-1))]),n("div",SS,[D(n("input",NS,null,512),[[o,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"anonymize",options:{}}]]),t[79]||(t[79]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[80]||(t[80]=n("small",{class:"form-text text-muted"},[y("PDF contents and metadata are served unchanged. "),n("a",{href:"/faq#formats"},"About supported formats")],-1))]),n("div",_S,[D(n("input",DS,null,512),[[o,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"anonymize",options:{}}]]),t[81]||(t[81]=n("label",{class:"form-check-label",for:"notebook"},"Display Notebooks",-1))]),n("div",RS,[D(n("input",{class:"form-check-input",type:"checkbox",id:"page",name:"page",disabled:!e.details?.hasPage||e.details?.pageSource&&e.details?.pageSource?.branch!==e.source?.branch},null,8,TS),[[o,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"anonymize",options:{}}]]),t[82]||(t[82]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),e.details?.hasPage?p("v-if",!0):(l(),d("small",OS,u(e.fmt?.translate("WARNINGS.page_not_enabled_on_repo")),1)),e.details?.hasPage&&e.details?.pageSource?.branch&&e.source?.branch&&e.details.pageSource.branch!==e.source.branch?(l(),d("small",AS,u(e.fmt?.translate("WARNINGS.page_branch_mismatch",{pageBranch:e.details?.pageSource?.branch,selectedBranch:e.source?.branch})),1)):p("v-if",!0)])],512),[[Q,e.detectedType==="repo"]]),D(n("div",null,[n("div",IS,[D(n("input",PS,null,512),[[o,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[83]||(t[83]=n("label",{class:"form-check-label",for:"title-gist"},"Gist description",-1))]),n("div",VS,[D(n("input",MS,null,512),[[o,{state:e.viewState,set:a=>{e.options.content=a},value:e.options?.content,form:"anonymize",options:{}}]]),t[84]||(t[84]=n("label",{class:"form-check-label",for:"content-gist"},"File contents",-1))]),n("div",qS,[D(n("input",LS,null,512),[[o,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[85]||(t[85]=n("label",{class:"form-check-label",for:"comments-gist"},"Comments",-1))]),n("div",$S,[D(n("input",US,null,512),[[o,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[86]||(t[86]=n("label",{class:"form-check-label",for:"username-gist"},"Usernames",-1))]),n("div",FS,[D(n("input",zS,null,512),[[o,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[87]||(t[87]=n("label",{class:"form-check-label",for:"date-gist"},"Dates",-1))]),n("div",HS,[D(n("input",BS,null,512),[[o,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[88]||(t[88]=n("label",{class:"form-check-label",for:"origin-gist"},"Source gist ID",-1))])],512),[[Q,e.detectedType==="gist"]]),D(n("div",null,[n("div",jS,[D(n("input",GS,null,512),[[o,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[89]||(t[89]=n("label",{class:"form-check-label",for:"title"},"PR title",-1))]),n("div",WS,[D(n("input",KS,null,512),[[o,{state:e.viewState,set:a=>{e.options.body=a},value:e.options?.body,form:"anonymize",options:{}}]]),t[90]||(t[90]=n("label",{class:"form-check-label",for:"body"},"PR body",-1))]),n("div",YS,[D(n("input",JS,null,512),[[o,{state:e.viewState,set:a=>{e.options.diff=a},value:e.options?.diff,form:"anonymize",options:{}}]]),t[91]||(t[91]=n("label",{class:"form-check-label",for:"diff"},"Diff",-1))]),n("div",QS,[
Line truncated
|
||||
anonymous_github`)])])])])]),p(" Limitations "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})]),y("Limitations ")]),n("div",{class:"panel-group",id:"faq-limitations",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingLimitation"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-limitations",href:"#limitation","aria-expanded":"false","aria-controls":"limitation"}," What are the limitations of Anonymous GitHub? ")])]),n("div",{id:"limitation",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingLimitation"},[n("div",{class:"panel-body p-3"},[n("ul",null,[n("li",null," Anonymous GitHub only anonymizes text-based files. Binary files (compiled executables, archives, etc.) are served as-is without anonymization. "),n("li",null," Files larger than 8 MB are not supported. "),n("li",null," Static site generators (such as Jekyll) used with GitHub Pages are not fully supported, although Markdown files are converted to HTML. "),n("li",null," The anonymization of terms within source code may change the behavior of the program (e.g., if a replaced term appears in a string literal or identifier). ")])])])])]),p(" Privacy & Security "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})]),y("Privacy & Security ")]),n("div",{class:"panel-group",id:"faq-privacy",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingData"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#data","aria-expanded":"false","aria-controls":"data"}," How is my data handled? ")])]),n("div",{id:"data",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingData"},[n("div",{class:"panel-body p-3"},[n("p",null," Data stored on Anonymous GitHub is never shared or used for any purpose beyond providing the anonymization service. When a repository is removed or expires, only its configuration is retained \u2014 this makes it easy to restore the repository if needed and ensures that no future repository reuses the same ID. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPermissions"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#permissions","aria-expanded":"false","aria-controls":"permissions"}," Why does GitHub say Anonymous GitHub asks for write access? ")])]),n("div",{id:"permissions",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPermissions"},[n("div",{class:"panel-body p-3"},[n("p",null,[y("The GitHub App has read-only access to the repositories you choose. You can change repository access on your "),n("a",{href:"/connections"},"GitHub connections"),y(" page.")]),n("p",null,"Legacy GitHub OAuth includes write access to private repositories because GitHub's OAuth scopes do not offer a read-only option for them. Existing OAuth anonymizations and gists can still use this connection."),n("p",null,"Anonymous GitHub reads repository content. It never pushes, modifies, or deletes files on GitHub.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingViewer"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#viewer","aria-expanded":"false","aria-controls":"viewer"}," Can repository owners see who viewed their anonymized repository? ")])]),n("div",{id:"viewer",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingViewer"},[n("div",{class:"panel-body p-3"},[n("p",null," No. Only the total number of views is tracked as an incremental counter. It is not possible for the repository owner or for Anonymous GitHub to identify individual viewers. Reviewer anonymity is fully preserved. ")])])])]),p(" Self-Hosting "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#project-icon-storage"})]),y("Self-Hosting ")]),n("div",{class:"panel-group",id:"faq-hosting",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingDeploy"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-hosting",href:"#deploy","aria-expanded":"false","aria-controls":"deploy"}," Can I deploy my own instance? ")])]),n("div",{id:"deploy",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDeploy"},[n("div",{class:"panel-body p-3"},[n("p",null,[y(" Yes. Anonymous Git
Line truncated
|
||||
jane.smith@example.org`},null,2),[[o,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"anonymize",options:{debounce:250}}]]),n("small",vS,[t[68]||(t[68]=y("One term per line (regex allowed). Replaced by ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK)+"-[N]",1),t[69]||(t[69]=y(", or use ",-1)),t[70]||(t[70]=n("code",null,"term=>replacement",-1)),t[71]||(t[71]=y(" to pick your own (e.g. ",-1)),t[72]||(t[72]=n("code",null,"Anonymous=>ABC",-1)),t[73]||(t[73]=y(").",-1))]),D(n("div",yS,"Regex characters detected. Escape them if unintentional.",512),[[Q,e.termsRegexWarning]]),D(n("div",gS,"Terms are in an invalid format.",512),[[Q,e.anonymize?.terms?.errors?.format]])])],512),[[Q,e.detectedType]]),D(n("section",bS,[t[96]||(t[96]=n("div",{class:"paper-section-eyebrow"},"Display",-1)),D(n("div",null,[n("div",wS,[D(n("input",kS,null,512),[[o,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"anonymize",options:{}}]]),t[76]||(t[76]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1))]),n("div",CS,[D(n("input",ES,null,512),[[o,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"anonymize",options:{}}]]),t[77]||(t[77]=n("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[78]||(t[78]=n("small",{class:"form-text text-muted"},"Images are served unchanged and may contain names or affiliations.",-1))]),n("div",SS,[D(n("input",NS,null,512),[[o,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"anonymize",options:{}}]]),t[79]||(t[79]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[80]||(t[80]=n("small",{class:"form-text text-muted"},[y("PDF contents and metadata are served unchanged. "),n("a",{href:"/faq#formats"},"About supported formats")],-1))]),n("div",_S,[D(n("input",DS,null,512),[[o,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"anonymize",options:{}}]]),t[81]||(t[81]=n("label",{class:"form-check-label",for:"notebook"},"Display Notebooks",-1))]),n("div",RS,[D(n("input",{class:"form-check-input",type:"checkbox",id:"page",name:"page",disabled:!e.details?.hasPage||e.details?.pageSource&&e.details?.pageSource?.branch!==e.source?.branch},null,8,TS),[[o,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"anonymize",options:{}}]]),t[82]||(t[82]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),e.details?.hasPage?p("v-if",!0):(l(),d("small",OS,u(e.fmt?.translate("WARNINGS.page_not_enabled_on_repo")),1)),e.details?.hasPage&&e.details?.pageSource?.branch&&e.source?.branch&&e.details.pageSource.branch!==e.source.branch?(l(),d("small",AS,u(e.fmt?.translate("WARNINGS.page_branch_mismatch",{pageBranch:e.details?.pageSource?.branch,selectedBranch:e.source?.branch})),1)):p("v-if",!0)])],512),[[Q,e.detectedType==="repo"]]),D(n("div",null,[n("div",IS,[D(n("input",PS,null,512),[[o,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[83]||(t[83]=n("label",{class:"form-check-label",for:"title-gist"},"Gist description",-1))]),n("div",VS,[D(n("input",MS,null,512),[[o,{state:e.viewState,set:a=>{e.options.content=a},value:e.options?.content,form:"anonymize",options:{}}]]),t[84]||(t[84]=n("label",{class:"form-check-label",for:"content-gist"},"File contents",-1))]),n("div",qS,[D(n("input",LS,null,512),[[o,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[85]||(t[85]=n("label",{class:"form-check-label",for:"comments-gist"},"Comments",-1))]),n("div",$S,[D(n("input",US,null,512),[[o,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[86]||(t[86]=n("label",{class:"form-check-label",for:"username-gist"},"Usernames",-1))]),n("div",FS,[D(n("input",zS,null,512),[[o,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[87]||(t[87]=n("label",{class:"form-check-label",for:"date-gist"},"Dates",-1))]),n("div",HS,[D(n("input",BS,null,512),[[o,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[88]||(t[88]=n("label",{class:"form-check-label",for:"origin-gist"},"Source gist ID",-1))])],512),[[Q,e.detectedType==="gist"]]),D(n("div",null,[n("div",jS,[D(n("input",GS,null,512),[[o,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[89]||(t[89]=n("label",{class:"form-check-label",for:"title"},"PR title",-1))]),n("div",WS,[D(n("input",KS,null,512),[[o,{state:e.viewState,set:a=>{e.options.body=a},value:e.options?.body,form:"anonymize",options:{}}]]),t[90]||(t[90]=n("label",{class:"form-check-label",for:"body"},"PR body",-1))]),n("div",YS,[D(n("input",JS,null,512),[[o,{state:e.viewState,set:a=>{e.options.diff=a},value:e.options?.diff,form:"anonymize",options:{}}]]),t[91]||(t[91]=n("label",{class:"form-check-label",for:"diff"},"Diff",-1))]),n("div",QS,[
Line truncated
|
||||
anonymous_github`)])])])])]),p(" Limitations "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})]),y("Limitations ")]),n("div",{class:"panel-group",id:"faq-limitations",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingLimitation"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-limitations",href:"#limitation","aria-expanded":"false","aria-controls":"limitation"}," What are the limitations of Anonymous GitHub? ")])]),n("div",{id:"limitation",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingLimitation"},[n("div",{class:"panel-body p-3"},[n("ul",null,[n("li",null," Anonymous GitHub only anonymizes text-based files. Binary files (compiled executables, archives, etc.) are served as-is without anonymization. "),n("li",null," Files larger than 8 MB are not supported. "),n("li",null," Static site generators (such as Jekyll) used with GitHub Pages are not fully supported, although Markdown files are converted to HTML. "),n("li",null," The anonymization of terms within source code may change the behavior of the program (e.g., if a replaced term appears in a string literal or identifier). ")])])])])]),p(" Privacy & Security "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})]),y("Privacy & Security ")]),n("div",{class:"panel-group",id:"faq-privacy",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingData"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#data","aria-expanded":"false","aria-controls":"data"}," How is my data handled? ")])]),n("div",{id:"data",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingData"},[n("div",{class:"panel-body p-3"},[n("p",null," Data stored on Anonymous GitHub is never shared or used for any purpose beyond providing the anonymization service. When a repository is removed or expires, only its configuration is retained \u2014 this makes it easy to restore the repository if needed and ensures that no future repository reuses the same ID. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPermissions"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#permissions","aria-expanded":"false","aria-controls":"permissions"}," Why does GitHub say Anonymous GitHub asks for write access? ")])]),n("div",{id:"permissions",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPermissions"},[n("div",{class:"panel-body p-3"},[n("p",null,[y("The GitHub App has read-only access to the repositories you choose. You can change repository access on your "),n("a",{href:"/connections"},"GitHub connections"),y(" page.")]),n("p",null,"Legacy GitHub OAuth includes write access to private repositories because GitHub's OAuth scopes do not offer a read-only option for them. Existing OAuth anonymizations and gists can still use this connection."),n("p",null,"Anonymous GitHub reads repository content. It never pushes, modifies, or deletes files on GitHub.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingViewer"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#viewer","aria-expanded":"false","aria-controls":"viewer"}," Can repository owners see who viewed their anonymized repository? ")])]),n("div",{id:"viewer",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingViewer"},[n("div",{class:"panel-body p-3"},[n("p",null," No. Only the total number of views is tracked as an incremental counter. It is not possible for the repository owner or for Anonymous GitHub to identify individual viewers. Reviewer anonymity is fully preserved. ")])])])]),p(" Self-Hosting "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#project-icon-storage"})]),y("Self-Hosting ")]),n("div",{class:"panel-group",id:"faq-hosting",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingDeploy"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-hosting",href:"#deploy","aria-expanded":"false","aria-controls":"deploy"}," Can I deploy my own instance? ")])]),n("div",{id:"deploy",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDeploy"},[n("div",{class:"panel-body p-3"},[n("p",null,[y(" Yes. Anonymous Git
Line truncated
|
||||
anonymized repository often think it is about the paper, so the
|
||||
label names the service and the tooltip says who to contact. `),t[13]||(t[13]=fe('<li class="nav-item d-none d-lg-block"><a class="nav-link" target="_blank" rel="noopener" href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml" title="Report a problem with the Anonymous GitHub service. Questions about an anonymized repository or paper go to its authors." data-offset="30"><svg class="ui-icon d-lg-none mr-1" aria-hidden="true"><use href="#ui-icon-bug"></use></svg>Report a bug </a></li><li class="nav-item nav-support-item d-none d-lg-block"><a class="nav-link nav-support-inline" href="https://ko-fi.com/tdurieux" target="_blank" rel="noopener" title="Donate on Ko-fi to help cover hosting costs"><svg class="ui-icon nav-heart" aria-hidden="true"><use href="#ui-icon-heart"></use></svg>Support </a></li>',2)),e.isDarkMode?p("v-if",!0):(l(),d("li",i5,[n("button",{type:"button",class:"nav-link nav-icon",title:"Switch to dark mode","aria-label":"Switch to dark mode",onClick:t[0]||(t[0]=s=>{e.darkMode(!0)})},[...t[8]||(t[8]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-moon"})],-1)])])])),e.isDarkMode?(l(),d("li",a5,[n("button",{type:"button",class:"nav-link nav-icon",title:"Switch to light mode","aria-label":"Switch to light mode",onClick:t[1]||(t[1]=s=>{e.darkMode(!1)})},[...t[9]||(t[9]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sun"})],-1)])])])):p("v-if",!0),e.user?p("v-if",!0):(l(),d("li",l5,[...t[10]||(t[10]=[n("a",{class:"nav-link btn-signin",target:"_self",href:"/signin","data-offset":"30"},[n("i",{class:"fab fa-github mr-1"}),y(" Sign in ")],-1)])])),e.user?(l(),d("li",d5,[n("a",u5,[e.user?.photo?(l(),d("img",{key:0,width:"22",height:"22",class:"rounded-circle",src:e.safeUrl(e.user?.photo)},null,8,c5)):p("v-if",!0),n("span",p5,u(e.user?.username),1)]),n("div",f5,[n("h6",m5,"Signed in as @"+u(e.user?.username),1),t[11]||(t[11]=fe('<a class="dropdown-item" href="/profile"><svg class="ui-icon" aria-hidden="true"><use href="#project-icon-filter"></use></svg><span>Settings<small>Defaults, quotas, account</small></span></a><a class="dropdown-item" href="/connections"><i class="fab fa-github" aria-hidden="true"></i><span>GitHub connections<small>Repository access and OAuth</small></span></a><a class="dropdown-item" href="/claim"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-link"></use></svg><span>Claim an anonymization<small>Attach an existing mirror to your account</small></span></a><div class="dropdown-divider"></div><a class="dropdown-item" href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml" target="_blank" rel="noopener"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-bug"></use></svg><span>Report a bug<small>About this service, not a paper</small></span></a><a class="dropdown-item" href="https://github.com/tdurieux/anonymous_github/" target="_blank" rel="noopener"><i class="fab fa-github" aria-hidden="true"></i><span>Source code</span></a><a class="dropdown-item" href="https://ko-fi.com/tdurieux" target="_blank" rel="noopener"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-heart"></use></svg><span>Support the project</span></a><div class="dropdown-divider"></div><a class="dropdown-item" href="/api/user/logout" target="_self"><svg class="ui-icon" aria-hidden="true"><use href="#ui-icon-logout"></use></svg><span>Sign out</span></a>',9))])])):p("v-if",!0)])])],2),e.generalMessage?(l(),d("div",{key:0,class:"navbar shadow generalMessage",innerHTML:e.sanitize(e.generalMessage)},null,8,h5)):p("v-if",!0)],64)}var v5={class:"paper-landing"},y5={class:"paper-hero"},g5={class:"paper-hero-copy"},b5={class:"paper-cta-row"},w5={key:0,href:"/signin",target:"_self",class:"btn-hero"},k5={key:1,href:"/anonymize",class:"btn-hero"},C5={class:"paper-stats paper-wrap",id:"metrics","aria-label":"Usage over the last 60 days"},E5={class:"paper-stats-grid"},S5={class:"paper-stat-label"},N5={key:0,class:"paper-stat-delta"},_5={class:"demo paper-wrap","aria-label":"Try redaction"},D5={class:"demo-terms"},R5={class:"demo-panes"},T5={class:"pane"},O5={class:"demo-input-wrap"},A5={class:"pane-body demo-backdrop","aria-hidden":"true"},I5={key:0,class:"demo-match"},P5={class:"pane pane-after"},V5={class:"pane-header"},M5={class:"pane-url"},q5={class:"pane-body demo-output","aria-live":"polite"},L5=["title"],$5={class:"paper-features paper-wrap","aria-label":"Product features"},U5={class:"paper-features-list",role:"tablist","aria-label":"Features","aria-orientation":"vertical"},F5=["onClick","onKeydown","id","aria-controls","aria-selected","tabindex"],z5={class:"paper-eyebrow"},H5={class:"paper-feature-title"},B5={class:"paper-feature-more"},j5={class:"paper-feature-title paper-feature-title-m","aria-hidden":"true"},G5=["href","target"],W5={class:"paper-features-stage"},K5=["id","aria-labelledby"],Y5={class:"paper-frame"},J5={class:"paper-frame-bar","aria-hidden":"true"},
Line truncated
|
||||
python experiments/run.py`),n("p",null,[y("Contact: "),n("span",{class:"redact",role:"img","aria-label":"Redacted term 3"},[n("i",null,"3")])])])])])])],-1))]),p(" Live stats "),n("section",C5,[t[9]||(t[9]=n("div",{class:"paper-stats-meta"},[n("div",{class:"paper-stats-meta-left"},[n("span",{class:"paper-stats-dot","aria-hidden":"true"}),y(" Live \xB7 last 60 days \xB7 updated daily")]),n("div",{class:"paper-stats-meta-right"},"Used by authors at ICSE \xB7 FSE \xB7 OOPSLA")],-1)),n("div",E5,[(l(!0),d(Y,null,ie(e.cards,(s,r)=>(l(),d("div",{class:"paper-stat-card",key:s?.key},[n("div",{class:T(["paper-stat-value",{"is-pending":!e.stat}])},u(e.stat?e.fmt?.bigNum(s?.total):"\u2014"),3),n("div",S5,u(s?.label),1),e.history[s?.key].bars?.length>1?(l(),d("div",N5," +"+u(e.fmt?.number(e.history[s?.key].deltaToday))+" today ",1)):p("v-if",!0)]))),128))])]),p(" Before / after "),t[25]||(t[25]=n("section",{class:"paper-section-head paper-wrap"},[n("div",null,[n("div",{class:"paper-eyebrow"},"Try it"),n("h2",null,[y("The same repository, "),n("em",null,"minus you.")])]),n("p",null," Names, affiliations, emails, and any term you list are replaced across the README, source files, notebooks, and PDF links. Reviewers browse the real thing, not a zip. ")],-1)),n("div",_5,[n("div",D5,[t[10]||(t[10]=n("label",{for:"demo-terms"},[y("Terms to redact "),n("span",null,"comma-separated, try adding your own")],-1)),D(n("input",{id:"demo-terms",type:"text","onUpdate:modelValue":t[0]||(t[0]=s=>e.demoTerms=s),spellcheck:"false",autocomplete:"off"},null,512),[[ps,e.demoTerms]])]),n("div",R5,[n("div",T5,[t[12]||(t[12]=n("div",{class:"pane-header"},[n("span",{class:"pane-label"},"Your repository"),n("span",{class:"pane-url"},"github.com/jane-smith/DeepLearnUtils")],-1)),n("div",O5,[n("div",A5,[(l(!0),d(Y,null,ie(e.demoParts(),(s,r)=>(l(),d(Y,{key:r},[s.redacted?(l(),d("mark",I5,u(s.original),1)):(l(),d(Y,{key:1},[y(u(s.text),1)],64))],64))),128)),t[11]||(t[11]=y("\u200B",-1))]),D(n("textarea",{class:"pane-body demo-input","onUpdate:modelValue":t[1]||(t[1]=s=>e.demoText=s),spellcheck:"false","aria-label":"Sample README to anonymize"},null,512),[[ps,e.demoText]])])]),n("div",P5,[n("div",V5,[t[13]||(t[13]=n("span",{class:"pane-label"},"What reviewers see",-1)),n("span",M5,u(e.demoCount())+" redacted \xB7 anonymous.4open.science/r/paper-7f2a",1)]),n("div",q5,[(l(!0),d(Y,null,ie(e.demoParts(),(s,r)=>(l(),d(Y,{key:r},[s.redacted?(l(),d("span",{key:0,class:"redact-chip",title:"Replaces \u201C"+s.original+"\u201D"},u(s.text),9,L5)):(l(),d(Y,{key:1},[y(u(s.text),1)],64))],64))),128))])])])]),p(" What you get: one screenshot, three tabs "),t[26]||(t[26]=n("section",{class:"paper-section-head paper-wrap",id:"about"},[n("div",null,[n("div",{class:"paper-eyebrow"},"What you get"),n("h2",null,[y("Anonymize, review, "),n("em",null,"manage.")])]),n("p",null," Terms are redacted in text files. Enabled images and PDFs are served unchanged, so review them for identifying content before sharing. Monitor your mirror, update it, or remove it when the review is over. ")],-1)),n("section",$5,[n("div",U5,[(l(!0),d(Y,null,ie(e.features,(s,r)=>(l(),d("div",{class:T(["paper-feature",{"is-on":e.feature===s?.key}]),key:s?.key},[n("button",{type:"button",class:"paper-feature-tab",role:"tab",onClick:o=>e.selectFeature(s.key),onKeydown:o=>e.featureKeydown(o,r),id:"feature-tab-"+s?.key,"aria-controls":"feature-panel-"+s?.key,"aria-selected":e.feature===s?.key,tabindex:e.feature===s?.key?0:-1},[n("span",z5,u(s?.num)+" \xB7 "+u(s?.eyebrow),1),n("span",H5,[y(u(s?.title)+" ",1),n("em",null,u(s?.accent),1)])],40,F5),n("div",B5,[n("span",j5,[y(u(s?.title)+" ",1),n("em",null,u(s?.accent),1)]),n("p",null,u(s?.text),1),n("a",{class:"paper-link-arrow",href:e.safeUrl(e.featureHref(s)),target:e.featureTarget(s)},u(s?.cta)+" \u2192",9,G5)])],2))),128))]),n("div",W5,[(l(!0),d(Y,null,ie(e.features,(s,r)=>D((l(),d("div",{class:"paper-feature-panel",role:"tabpanel",key:s?.key,id:"feature-panel-"+s?.key,"aria-labelledby":"feature-tab-"+s?.key},[n("div",Y5,[n("div",J5,[t[14]||(t[14]=n("span",{class:"dots"},[n("i"),n("i"),n("i")],-1)),n("span",Q5,u(s?.url),1)]),n("div",{class:T(["feat-mock","is-"+s?.key]),role:"img","aria-label":s?.alt},[s?.key==="anonymize"?(l(),d("div",Z5,[...t[15]||(t[15]=[fe('<div class="fm-label">GitHub repository</div><div class="fm-input">github.com/jane-smith/DeepLearnUtils</div><div class="fm-label">Terms to redact</div><div class="fm-chips"><span>Jane Smith</span><span>MIT CSAIL</span><span>jane.smith@mit.edu</span><span class="fm-chip-add">+ Add term</span></div><div class="fm-row"><div><div class="fm-label">Reviewers can see</div><div class="fm-toggles"><span class="is-on">Images</span><span class="is-on">PDFs</span><span>Links</span><span class="is-on">Notebooks</span></div></div><div><div class="fm-label">Expires</div><div class="fm-input fm-input-sm">Mar 31, 2027</div></div></div><div class="fm-actions"><span class="fm-share">anonymous.4open.science/r/paper-7
Line truncated
|
||||
python experiments/run.py`),n("p",null,[y("Contact: "),n("span",{class:"redact",role:"img","aria-label":"Redacted term 3"},[n("i",null,"3")])])])])])])],-1))]),p(" Live stats "),n("section",C5,[t[9]||(t[9]=n("div",{class:"paper-stats-meta"},[n("div",{class:"paper-stats-meta-left"},[n("span",{class:"paper-stats-dot","aria-hidden":"true"}),y(" Live \xB7 last 60 days \xB7 updated daily")]),n("div",{class:"paper-stats-meta-right"},"Used by authors at ICSE \xB7 FSE \xB7 OOPSLA")],-1)),n("div",E5,[(l(!0),d(K,null,re(e.cards,(s,r)=>(l(),d("div",{class:"paper-stat-card",key:s?.key},[n("div",{class:T(["paper-stat-value",{"is-pending":!e.stat}])},u(e.stat?e.fmt?.bigNum(s?.total):"\u2014"),3),n("div",S5,u(s?.label),1),e.history[s?.key].bars?.length>1?(l(),d("div",N5," +"+u(e.fmt?.number(e.history[s?.key].deltaToday))+" today ",1)):p("v-if",!0)]))),128))])]),p(" Before / after "),t[25]||(t[25]=n("section",{class:"paper-section-head paper-wrap"},[n("div",null,[n("div",{class:"paper-eyebrow"},"Try it"),n("h2",null,[y("The same repository, "),n("em",null,"minus you.")])]),n("p",null," Names, affiliations, emails, and any term you list are replaced across the README, source files, notebooks, and PDF links. Reviewers browse the real thing, not a zip. ")],-1)),n("div",_5,[n("div",D5,[t[10]||(t[10]=n("label",{for:"demo-terms"},[y("Terms to redact "),n("span",null,"comma-separated, try adding your own")],-1)),D(n("input",{id:"demo-terms",type:"text","onUpdate:modelValue":t[0]||(t[0]=s=>e.demoTerms=s),spellcheck:"false",autocomplete:"off"},null,512),[[ps,e.demoTerms]])]),n("div",R5,[n("div",T5,[t[12]||(t[12]=n("div",{class:"pane-header"},[n("span",{class:"pane-label"},"Your repository"),n("span",{class:"pane-url"},"github.com/jane-smith/DeepLearnUtils")],-1)),n("div",O5,[n("div",A5,[(l(!0),d(K,null,re(e.demoParts(),(s,r)=>(l(),d(K,{key:r},[s.redacted?(l(),d("mark",I5,u(s.original),1)):(l(),d(K,{key:1},[y(u(s.text),1)],64))],64))),128)),t[11]||(t[11]=y("\u200B",-1))]),D(n("textarea",{class:"pane-body demo-input","onUpdate:modelValue":t[1]||(t[1]=s=>e.demoText=s),spellcheck:"false","aria-label":"Sample README to anonymize"},null,512),[[ps,e.demoText]])])]),n("div",P5,[n("div",V5,[t[13]||(t[13]=n("span",{class:"pane-label"},"What reviewers see",-1)),n("span",M5,u(e.demoCount())+" redacted \xB7 anonymous.4open.science/r/paper-7f2a",1)]),n("div",q5,[(l(!0),d(K,null,re(e.demoParts(),(s,r)=>(l(),d(K,{key:r},[s.redacted?(l(),d("span",{key:0,class:"redact-chip",title:"Replaces \u201C"+s.original+"\u201D"},u(s.text),9,L5)):(l(),d(K,{key:1},[y(u(s.text),1)],64))],64))),128))])])])]),p(" What you get: one screenshot, three tabs "),t[26]||(t[26]=n("section",{class:"paper-section-head paper-wrap",id:"about"},[n("div",null,[n("div",{class:"paper-eyebrow"},"What you get"),n("h2",null,[y("Anonymize, review, "),n("em",null,"manage.")])]),n("p",null," Terms are redacted in text files. Enabled images and PDFs are served unchanged, so review them for identifying content before sharing. Monitor your mirror, update it, or remove it when the review is over. ")],-1)),n("section",$5,[n("div",U5,[(l(!0),d(K,null,re(e.features,(s,r)=>(l(),d("div",{class:T(["paper-feature",{"is-on":e.feature===s?.key}]),key:s?.key},[n("button",{type:"button",class:"paper-feature-tab",role:"tab",onClick:o=>e.selectFeature(s.key),onKeydown:o=>e.featureKeydown(o,r),id:"feature-tab-"+s?.key,"aria-controls":"feature-panel-"+s?.key,"aria-selected":e.feature===s?.key,tabindex:e.feature===s?.key?0:-1},[n("span",z5,u(s?.num)+" \xB7 "+u(s?.eyebrow),1),n("span",H5,[y(u(s?.title)+" ",1),n("em",null,u(s?.accent),1)])],40,F5),n("div",B5,[n("span",j5,[y(u(s?.title)+" ",1),n("em",null,u(s?.accent),1)]),n("p",null,u(s?.text),1),n("a",{class:"paper-link-arrow",href:e.safeUrl(e.featureHref(s)),target:e.featureTarget(s)},u(s?.cta)+" \u2192",9,G5)])],2))),128))]),n("div",W5,[(l(!0),d(K,null,re(e.features,(s,r)=>D((l(),d("div",{class:"paper-feature-panel",role:"tabpanel",key:s?.key,id:"feature-panel-"+s?.key,"aria-labelledby":"feature-tab-"+s?.key},[n("div",Y5,[n("div",J5,[t[14]||(t[14]=n("span",{class:"dots"},[n("i"),n("i"),n("i")],-1)),n("span",Q5,u(s?.url),1)]),n("div",{class:T(["feat-mock","is-"+s?.key]),role:"img","aria-label":s?.alt},[s?.key==="anonymize"?(l(),d("div",Z5,[...t[15]||(t[15]=[fe('<div class="fm-label">GitHub repository</div><div class="fm-input">github.com/jane-smith/DeepLearnUtils</div><div class="fm-label">Terms to redact</div><div class="fm-chips"><span>Jane Smith</span><span>MIT CSAIL</span><span>jane.smith@mit.edu</span><span class="fm-chip-add">+ Add term</span></div><div class="fm-row"><div><div class="fm-label">Reviewers can see</div><div class="fm-toggles"><span class="is-on">Images</span><span class="is-on">PDFs</span><span>Links</span><span class="is-on">Notebooks</span></div></div><div><div class="fm-label">Expires</div><div class="fm-input fm-input-sm">Mar 31, 2027</div></div></div><div class="fm-actions"><span class="fm-share">anonymous.4open.science/r/paper-7
Line truncated
|
||||
<span class="ln">2</span><span class="c"># Author: <span class="redact">XXXX-1</span>, <span class="redact">XXXX-2</span></span>
|
||||
<span class="ln">3</span><span class="k">import</span> torch
|
||||
<span class="ln">4</span><span class="k">from</span> utils <span class="k">import</span> load_config
|
||||
@@ -37,12 +37,12 @@ python experiments/run.py`),n("p",null,[y("Contact: "),n("span",{class:"redact",
|
||||
<span class="ln">7</span> model = build_model(config)
|
||||
<span class="ln">8</span> <span class="k">for</span> epoch <span class="k">in</span> range(config.epochs):
|
||||
<span class="ln">9</span> loss = step(model)
|
||||
<span class="ln">10</span> log(<span class="s">"epoch %d: %.3f"</span>, epoch, loss)</pre></div>`,2)])])):(l(),d("div",eP,[...t[17]||(t[17]=[fe('<div class="fm-dash-head"><span>Project</span><span>Status</span><span>Views</span><span>Expires</span></div><div class="fm-dash-row"><span><b>DeepLearnUtils</b><i>paper-7f2a \xB7 ICSE 2027</i></span><span class="st is-ready">Ready</span><span>41</span><span>Mar 31, 2027</span></div><div class="fm-dash-row"><span><b>vision-bench#212</b><i>pull request \xB7 FSE 2027</i></span><span class="st is-ready">Ready</span><span>12</span><span>Never</span></div><div class="fm-dash-row"><span><b>graph-repair</b><i>gr-91ab</i></span><span class="st is-progress">Updating</span><span>5</span><span>Jan 5, 2027</span></div><div class="fm-dash-row is-muted"><span><b>JarSift</b><i>OOPSLA 2025</i></span><span class="st is-expired">Expired</span><span>72</span><span>Sep 28, 2026</span></div>',5)])]))],10,X5)])],8,K5)),[[Q,e.feature===s?.key]])),128))])]),p(" FAQ teaser "),t[27]||(t[27]=fe('<section class="paper-qa paper-wrap" aria-labelledby="qa-heading"><div><div class="paper-eyebrow">Before you sign in</div><h2 id="qa-heading">The questions that <em>come up most.</em></h2><a class="paper-link-arrow" href="/faq">Read the full FAQ \u2192</a></div><div><div class="q"><a href="/faq#permissions">What access does GitHub sign-in require?</a><p> The GitHub App has read-only access to gists and the repositories you choose. Legacy OAuth uses broader permissions. Anonymous GitHub never writes to your repositories. </p></div><div class="q"><a href="/faq#formats">Which file formats are supported?</a><p> Source code with syntax highlighting, Markdown, Jupyter notebooks, PDFs, images, and GitHub Pages sites. Text files are anonymized; enabled images and PDFs are served unchanged. </p></div><div class="q"><a href="/faq#expiration">What happens when an anonymized repository expires?</a><p> You choose: the mirror is removed, or visitors are redirected to the original GitHub repository once the review is over. </p></div></div></section>',1)),n("footer",tP,[n("div",nP,[t[21]||(t[21]=n("div",{class:"paper-footer-brand"},[n("div",{class:"paper-footer-mark"},[y("Anonymous "),n("em",null,"GitHub")]),n("p",{class:"paper-footer-tag"}," A read-only, identity-stripped mirror of your repository, built for double-anonymous peer review. ")],-1)),n("div",sP,[t[18]||(t[18]=n("div",{class:"paper-footer-head"},"Product",-1)),t[19]||(t[19]=n("a",{href:"/anonymize"},"Anonymize",-1)),e.user?(l(),d("a",oP,"My work")):p("v-if",!0),e.user?(l(),d("a",rP,"Conferences")):p("v-if",!0),t[20]||(t[20]=n("a",{href:"/faq"},"FAQ",-1))]),t[22]||(t[22]=fe('<div class="paper-footer-col"><div class="paper-footer-head">Project</div><a href="https://github.com/tdurieux/anonymous_github/" target="_blank" rel="noopener">Source code</a><a href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml" target="_blank" rel="noopener">Report a bug</a><a href="https://github.com/sponsors/tdurieux/" target="_blank" rel="noopener">Support</a></div><div class="paper-footer-col"><div class="paper-footer-head">Contact</div><a href="mailto:tdurieux@anonymous.4open.science">Email maintainer</a><a href="https://github.com/tdurieux" target="_blank" rel="noopener">@tdurieux</a></div>',2))]),t[24]||(t[24]=n("div",{class:"paper-footer-rule"},null,-1)),n("div",iP,[n("span",null,"\xA9 "+u(e.year||2026)+" Anonymous GitHub \xB7 GPL-3.0 licensed",1),t[23]||(t[23]=n("span",{class:"paper-footer-meta"},"Built for reviewers, by researchers.",-1))])])])}var aP={class:"paper-empty"},lP={class:"paper-empty-inner"},dP={key:0,class:"paper-eyebrow"},uP={key:1,class:"paper-eyebrow"},cP={key:2,class:"paper-empty-title"},pP=["textContent"];function Ml(e,t){return l(),d("div",aP,[n("div",lP,[e.error?p("v-if",!0):(l(),d("div",dP,"Working")),e.error?(l(),d("div",uP,"Error")):p("v-if",!0),e.error?p("v-if",!0):(l(),d("h1",cP,[...t[0]||(t[0]=[y(" Loading",-1),n("span",{class:"dot-anim"},"\u2026",-1)])])),e.error?(l(),d("h1",{key:3,class:"paper-empty-title",textContent:u(e.fmt.translate(e.error))},null,8,pP)):p("v-if",!0)])])}var fP={class:"container paper-page paper-settings"},mP={class:"paper-crumbs"},hP={class:"here"},vP={class:"paper-page-title"},yP={class:"paper-settings-body"},gP={class:"paper-settings-toc"},bP={href:"#conf-billing"},wP={class:"form needs-validation paper-settings-main",name:"conference",novalidate:""},kP={id:"conf-basics",class:"paper-settings-section"},CP={class:"form-group"},EP={class:"invalid-feedback"},SP={class:"invalid-feedback"},NP={class:"form-group"},_P={class:"invalid-feedback"},DP={class:"form-group"},RP={class:"invalid-feedback"},TP={class:"invalid-feedback"},OP={id:"conf-window",class:"paper-settings-section"},AP={class:"form-grid-2"},IP={class:"form-group"},PP={class:"invalid-feedback"},VP={class:"invalid-feedback"},MP={class:"form-group"},qP={class:"invalid-feedback"},LP={class:"invalid-feedback"},$P={Line truncated
|
||||
`).length))+" lines",1)):p("v-if",!0),e.type=="html"&&e.fileSize(e.filePath)!=null?(l(),d("span",PV,u(e.formatSize(e.fileSize(e.filePath))),1)):p("v-if",!0),e.redactionCount()?(l(),d("b",VV,u(e.redactionCount())+" redacted",1)):p("v-if",!0)]),D(n("button",{type:"button",class:"btn btn-sm btn-icon-only btn-ghost copy-path-btn","aria-label":e.pathCopied?"Path copied":"Copy path",title:e.pathCopied?"Path copied":"Copy path",onClick:t[2]||(t[2]=a=>e.copyPath())},[(l(),d("svg",qV,[n("use",{href:e.pathCopied?"#ui-icon-check":"#ui-icon-link"},null,8,LV)]))],8,MV),[[Q,e.filePath]])]),e.type!="html"&&typeof e.content=="string"?(l(),d("span",$V,[e.languageName?(l(),d(Y,{key:0},[y(u(e.languageName),1),t[31]||(t[31]=n("span",{class:"sep"},"\xB7",-1))],64)):p("v-if",!0),y(u(e.fmt?.number(e.content.split(`
|
||||
`).length))+" lines",1),n("span",UV,[t[32]||(t[32]=n("span",{class:"sep"},"\xB7",-1)),y(u(e.content.length<1024?e.content.length+" B":(e.content.length/1024).toFixed(1)+" KB"),1)]),e.redactionCount()?(l(),d(Y,{key:1},[t[33]||(t[33]=n("span",{class:"sep"},"\xB7",-1)),n("span",FV,u(e.redactionCount())+" redacted",1)],64)):p("v-if",!0)])):p("v-if",!0),e.type=="html"?(l(),d("span",zV,[t[36]||(t[36]=y("Markdown",-1)),e.fileSize(e.filePath)!=null?(l(),d(Y,{key:0},[t[34]||(t[34]=n("span",{class:"sep"},"\xB7",-1)),y(u(e.formatSize(e.fileSize(e.filePath))),1)],64)):p("v-if",!0),e.redactionCount()?(l(),d(Y,{key:1},[t[35]||(t[35]=n("span",{class:"sep"},"\xB7",-1)),n("span",HV,u(e.redactionCount())+" redacted",1)],64)):p("v-if",!0)])):p("v-if",!0),n("div",BV,[e.type!="html"&&e.symbols().length>1?(l(),d("div",jV,[n("button",{type:"button",class:T(["btn btn-sm btn-ghost btn-symbols",{"is-on":e.symbolsOpen}]),"aria-expanded":e.symbolsOpen?"true":"false","aria-haspopup":"true",title:"Symbols in this file",onClick:t[3]||(t[3]=a=>e.symbolsOpen=!e.symbolsOpen)},[...t[37]||(t[37]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-list"})],-1),n("span",{class:"btn-find-label"},"Symbols",-1)])],10,GV),e.symbolsOpen?(l(),d("div",WV,[n("div",KV,u(e.symbols().length)+" "+u(e.symbols().length===1?"symbol":"symbols"),1),(l(!0),d(Y,null,ie(e.symbols(),a=>(l(),d("button",{type:"button",class:"symbols-item",role:"menuitem",key:a.line+a.name,onClick:c=>e.goToSymbol(a.line)},[n("span",{class:T(["symbols-kind","is-"+a.kind])},u(a.kind==="class"?"C":a.kind==="function"?"\u0192":"v"),3),n("span",JV,u(a.name),1),n("span",QV,u(a.line),1)],8,YV))),128))])):p("v-if",!0)])):p("v-if",!0),e.type=="html"?(l(),d("button",{key:1,type:"button",class:T(["btn btn-sm btn-ghost btn-icon-only btn-find btn-md-find",{"is-on":e.mdFindOpen}]),"aria-label":"Find on this page",title:"Find on this page ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[4]||(t[4]=a=>e.toggleMdFind())},[...t[38]||(t[38]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],10,XV)):p("v-if",!0),e.type!="html"?(l(),d("button",{key:2,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-find","aria-label":"Find in file",title:"Find in file ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[5]||(t[5]=a=>e.findInFile())},[...t[39]||(t[39]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],8,ZV)):p("v-if",!0),e.type!="html"?(l(),d("button",{key:3,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-goto","aria-label":"Go to line",title:"Go to line ("+(e.isMac?"\u2318":"Ctrl+")+"G)",onClick:t[6]||(t[6]=a=>e.gotoLine())},[...t[40]||(t[40]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-goto"})],-1)])],8,xV)):p("v-if",!0),e.type!="html"?(l(),d("button",{key:4,type:"button",class:T(["btn btn-sm btn-icon-only btn-ghost btn-toggle",{"is-on":e.wrapLines}]),"aria-pressed":e.wrapLines?"true":"false","aria-label":"Wrap long lines",title:"Wrap long lines (Alt+Z)",onClick:t[7]||(t[7]=a=>e.toggleWrap())},[...t[41]||(t[41]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-wrap"})],-1)])],10,eM)):p("v-if",!0),n("div",tM,[n("a",{target:"_self",class:"tb-seg-btn",title:e.type=="html"?"Open the Markdown source":"Open the raw file",href:e.safeUrl(e.url)},"Raw",8,nM),typeof e.content=="string"?(l(),d("button",{key:0,type:"button",class:"tb-seg-btn tb-seg-icon","aria-label":e.contentCopied?"Copied":"Copy file contents",title:e.contentCopied?"Copied":"Copy file contents",onClick:t[8]||(t[8]=a=>e.copyContent())},[(l(),d("svg",oM,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,rM)]))],8,sM)):p("v-if",!0),n("a",{target:"_self",class:"tb-seg-btn tb-seg-icon","aria-label":"Download file",title:"Download file",href:e.safeUrl(e.url+"&download=true")},[...t[42]||(t[42]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1)])],8,iM)]),typeof e.content=="string"?(l(),d("button",{key:5,type:"button",class:"btn btn-sm btn-icon-only btn-ghost tb-copy-m","aria-label":e.contentCopied?"Copied":"Copy file contents",onClick:t[9]||(t[9]=a=>e.copyContent())},[(l(),d("svg",lM,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,dM)]))],8,aM)):p("v-if",!0),n("div",uM,[n("button",{type:"button",class:T(["btn btn-sm btn-icon-only btn-ghost tb-more-btn",{"is-on":e.moreOpen}]),"aria-label":"More actions","aria-haspopup":"true","aria-expanded":e.moreOpen?"true":"false",onClick:t[10]||(t[10]=ue(a=>e.moreOpen=!e.moreOpen,["stop"]))},[(l(),d("svg",pM,[...t[43]||(t[43]=[n("circle",{cx:"5",cy:"12",r:"1.8"},null,-1),n("circle",{cx:"12",cy:"12",r:"1.8"},null,-1),n("circle",{cx:"19",cy:"12",r:"1.8"},null,-1)])]))],10,cM),e.moreOpen?(l(),d("div",{key:0,class:"tb-menu",role:"menu",onClick:t[16]||(t[16]=a=>e.moreOpen=!1)},[e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.last
Line truncated
|
||||
<span class="ln">10</span> log(<span class="s">"epoch %d: %.3f"</span>, epoch, loss)</pre></div>`,2)])])):(l(),d("div",eP,[...t[17]||(t[17]=[fe('<div class="fm-dash-head"><span>Project</span><span>Status</span><span>Views</span><span>Expires</span></div><div class="fm-dash-row"><span><b>DeepLearnUtils</b><i>paper-7f2a \xB7 ICSE 2027</i></span><span class="st is-ready">Ready</span><span>41</span><span>Mar 31, 2027</span></div><div class="fm-dash-row"><span><b>vision-bench#212</b><i>pull request \xB7 FSE 2027</i></span><span class="st is-ready">Ready</span><span>12</span><span>Never</span></div><div class="fm-dash-row"><span><b>graph-repair</b><i>gr-91ab</i></span><span class="st is-progress">Updating</span><span>5</span><span>Jan 5, 2027</span></div><div class="fm-dash-row is-muted"><span><b>JarSift</b><i>OOPSLA 2025</i></span><span class="st is-expired">Expired</span><span>72</span><span>Sep 28, 2026</span></div>',5)])]))],10,X5)])],8,K5)),[[Q,e.feature===s?.key]])),128))])]),p(" FAQ teaser "),t[27]||(t[27]=fe('<section class="paper-qa paper-wrap" aria-labelledby="qa-heading"><div><div class="paper-eyebrow">Before you sign in</div><h2 id="qa-heading">The questions that <em>come up most.</em></h2><a class="paper-link-arrow" href="/faq">Read the full FAQ \u2192</a></div><div><div class="q"><a href="/faq#permissions">What access does GitHub sign-in require?</a><p> The GitHub App has read-only access to gists and the repositories you choose. Legacy OAuth uses broader permissions. Anonymous GitHub never writes to your repositories. </p></div><div class="q"><a href="/faq#formats">Which file formats are supported?</a><p> Source code with syntax highlighting, Markdown, Jupyter notebooks, PDFs, images, and GitHub Pages sites. Text files are anonymized; enabled images and PDFs are served unchanged. </p></div><div class="q"><a href="/faq#expiration">What happens when an anonymized repository expires?</a><p> You choose: the mirror is removed, or visitors are redirected to the original GitHub repository once the review is over. </p></div></div></section>',1)),n("footer",tP,[n("div",nP,[t[21]||(t[21]=n("div",{class:"paper-footer-brand"},[n("div",{class:"paper-footer-mark"},[y("Anonymous "),n("em",null,"GitHub")]),n("p",{class:"paper-footer-tag"}," A read-only, identity-stripped mirror of your repository, built for double-anonymous peer review. ")],-1)),n("div",sP,[t[18]||(t[18]=n("div",{class:"paper-footer-head"},"Product",-1)),t[19]||(t[19]=n("a",{href:"/anonymize"},"Anonymize",-1)),e.user?(l(),d("a",oP,"My work")):p("v-if",!0),e.user?(l(),d("a",rP,"Conferences")):p("v-if",!0),t[20]||(t[20]=n("a",{href:"/faq"},"FAQ",-1))]),t[22]||(t[22]=fe('<div class="paper-footer-col"><div class="paper-footer-head">Project</div><a href="https://github.com/tdurieux/anonymous_github/" target="_blank" rel="noopener">Source code</a><a href="https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml" target="_blank" rel="noopener">Report a bug</a><a href="https://github.com/sponsors/tdurieux/" target="_blank" rel="noopener">Support</a></div><div class="paper-footer-col"><div class="paper-footer-head">Contact</div><a href="mailto:tdurieux@anonymous.4open.science">Email maintainer</a><a href="https://github.com/tdurieux" target="_blank" rel="noopener">@tdurieux</a></div>',2))]),t[24]||(t[24]=n("div",{class:"paper-footer-rule"},null,-1)),n("div",iP,[n("span",null,"\xA9 "+u(e.year||2026)+" Anonymous GitHub \xB7 GPL-3.0 licensed",1),t[23]||(t[23]=n("span",{class:"paper-footer-meta"},"Built for reviewers, by researchers.",-1))])])])}var aP={class:"paper-empty"},lP={class:"paper-empty-inner"},dP={key:0,class:"paper-eyebrow"},uP={key:1,class:"paper-eyebrow"},cP={key:2,class:"paper-empty-title"},pP=["textContent"];function Ml(e,t){return l(),d("div",aP,[n("div",lP,[e.error?p("v-if",!0):(l(),d("div",dP,"Working")),e.error?(l(),d("div",uP,"Error")):p("v-if",!0),e.error?p("v-if",!0):(l(),d("h1",cP,[...t[0]||(t[0]=[y(" Loading",-1),n("span",{class:"dot-anim"},"\u2026",-1)])])),e.error?(l(),d("h1",{key:3,class:"paper-empty-title",textContent:u(e.fmt.translate(e.error))},null,8,pP)):p("v-if",!0)])])}var fP={class:"container paper-page paper-settings"},mP={class:"paper-crumbs"},hP={class:"here"},vP={class:"paper-page-title"},yP={class:"paper-settings-body"},gP={class:"paper-settings-toc"},bP={href:"#conf-billing"},wP={class:"form needs-validation paper-settings-main",name:"conference",novalidate:""},kP={id:"conf-basics",class:"paper-settings-section"},CP={class:"form-group"},EP={class:"invalid-feedback"},SP={class:"invalid-feedback"},NP={class:"form-group"},_P={class:"invalid-feedback"},DP={class:"form-group"},RP={class:"invalid-feedback"},TP={class:"invalid-feedback"},OP={id:"conf-window",class:"paper-settings-section"},AP={class:"form-grid-2"},IP={class:"form-group"},PP={class:"invalid-feedback"},VP={class:"invalid-feedback"},MP={class:"form-group"},qP={class:"invalid-feedback"},LP={class:"invalid-feedback"},$P={Line truncated
|
||||
`).length))+" lines",1)):p("v-if",!0),e.type=="html"&&e.fileSize(e.filePath)!=null?(l(),d("span",PV,u(e.formatSize(e.fileSize(e.filePath))),1)):p("v-if",!0),e.redactionCount()?(l(),d("b",VV,u(e.redactionCount())+" redacted",1)):p("v-if",!0)]),D(n("button",{type:"button",class:"btn btn-sm btn-icon-only btn-ghost copy-path-btn","aria-label":e.pathCopied?"Path copied":"Copy path",title:e.pathCopied?"Path copied":"Copy path",onClick:t[2]||(t[2]=a=>e.copyPath())},[(l(),d("svg",qV,[n("use",{href:e.pathCopied?"#ui-icon-check":"#ui-icon-link"},null,8,LV)]))],8,MV),[[Q,e.filePath]])]),e.type!="html"&&typeof e.content=="string"?(l(),d("span",$V,[e.languageName?(l(),d(K,{key:0},[y(u(e.languageName),1),t[31]||(t[31]=n("span",{class:"sep"},"\xB7",-1))],64)):p("v-if",!0),y(u(e.fmt?.number(e.content.split(`
|
||||
`).length))+" lines",1),n("span",UV,[t[32]||(t[32]=n("span",{class:"sep"},"\xB7",-1)),y(u(e.content.length<1024?e.content.length+" B":(e.content.length/1024).toFixed(1)+" KB"),1)]),e.redactionCount()?(l(),d(K,{key:1},[t[33]||(t[33]=n("span",{class:"sep"},"\xB7",-1)),n("span",FV,u(e.redactionCount())+" redacted",1)],64)):p("v-if",!0)])):p("v-if",!0),e.type=="html"?(l(),d("span",zV,[t[36]||(t[36]=y("Markdown",-1)),e.fileSize(e.filePath)!=null?(l(),d(K,{key:0},[t[34]||(t[34]=n("span",{class:"sep"},"\xB7",-1)),y(u(e.formatSize(e.fileSize(e.filePath))),1)],64)):p("v-if",!0),e.redactionCount()?(l(),d(K,{key:1},[t[35]||(t[35]=n("span",{class:"sep"},"\xB7",-1)),n("span",HV,u(e.redactionCount())+" redacted",1)],64)):p("v-if",!0)])):p("v-if",!0),n("div",BV,[e.type!="html"&&e.symbols().length>1?(l(),d("div",jV,[n("button",{type:"button",class:T(["btn btn-sm btn-ghost btn-symbols",{"is-on":e.symbolsOpen}]),"aria-expanded":e.symbolsOpen?"true":"false","aria-haspopup":"true",title:"Symbols in this file",onClick:t[3]||(t[3]=a=>e.symbolsOpen=!e.symbolsOpen)},[...t[37]||(t[37]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-list"})],-1),n("span",{class:"btn-find-label"},"Symbols",-1)])],10,GV),e.symbolsOpen?(l(),d("div",WV,[n("div",KV,u(e.symbols().length)+" "+u(e.symbols().length===1?"symbol":"symbols"),1),(l(!0),d(K,null,re(e.symbols(),a=>(l(),d("button",{type:"button",class:"symbols-item",role:"menuitem",key:a.line+a.name,onClick:c=>e.goToSymbol(a.line)},[n("span",{class:T(["symbols-kind","is-"+a.kind])},u(a.kind==="class"?"C":a.kind==="function"?"\u0192":"v"),3),n("span",JV,u(a.name),1),n("span",QV,u(a.line),1)],8,YV))),128))])):p("v-if",!0)])):p("v-if",!0),e.type=="html"?(l(),d("button",{key:1,type:"button",class:T(["btn btn-sm btn-ghost btn-icon-only btn-find btn-md-find",{"is-on":e.mdFindOpen}]),"aria-label":"Find on this page",title:"Find on this page ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[4]||(t[4]=a=>e.toggleMdFind())},[...t[38]||(t[38]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],10,XV)):p("v-if",!0),e.type!="html"?(l(),d("button",{key:2,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-find","aria-label":"Find in file",title:"Find in file ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[5]||(t[5]=a=>e.findInFile())},[...t[39]||(t[39]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],8,ZV)):p("v-if",!0),e.type!="html"?(l(),d("button",{key:3,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-goto","aria-label":"Go to line",title:"Go to line ("+(e.isMac?"\u2318":"Ctrl+")+"G)",onClick:t[6]||(t[6]=a=>e.gotoLine())},[...t[40]||(t[40]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-goto"})],-1)])],8,xV)):p("v-if",!0),e.type!="html"?(l(),d("button",{key:4,type:"button",class:T(["btn btn-sm btn-icon-only btn-ghost btn-toggle",{"is-on":e.wrapLines}]),"aria-pressed":e.wrapLines?"true":"false","aria-label":"Wrap long lines",title:"Wrap long lines (Alt+Z)",onClick:t[7]||(t[7]=a=>e.toggleWrap())},[...t[41]||(t[41]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-wrap"})],-1)])],10,eM)):p("v-if",!0),n("div",tM,[n("a",{target:"_self",class:"tb-seg-btn",title:e.type=="html"?"Open the Markdown source":"Open the raw file",href:e.safeUrl(e.url)},"Raw",8,nM),typeof e.content=="string"?(l(),d("button",{key:0,type:"button",class:"tb-seg-btn tb-seg-icon","aria-label":e.contentCopied?"Copied":"Copy file contents",title:e.contentCopied?"Copied":"Copy file contents",onClick:t[8]||(t[8]=a=>e.copyContent())},[(l(),d("svg",oM,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,rM)]))],8,sM)):p("v-if",!0),n("a",{target:"_self",class:"tb-seg-btn tb-seg-icon","aria-label":"Download file",title:"Download file",href:e.safeUrl(e.url+"&download=true")},[...t[42]||(t[42]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1)])],8,iM)]),typeof e.content=="string"?(l(),d("button",{key:5,type:"button",class:"btn btn-sm btn-icon-only btn-ghost tb-copy-m","aria-label":e.contentCopied?"Copied":"Copy file contents",onClick:t[9]||(t[9]=a=>e.copyContent())},[(l(),d("svg",lM,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,dM)]))],8,aM)):p("v-if",!0),n("div",uM,[n("button",{type:"button",class:T(["btn btn-sm btn-icon-only btn-ghost tb-more-btn",{"is-on":e.moreOpen}]),"aria-label":"More actions","aria-haspopup":"true","aria-expanded":e.moreOpen?"true":"false",onClick:t[10]||(t[10]=de(a=>e.moreOpen=!e.moreOpen,["stop"]))},[(l(),d("svg",pM,[...t[43]||(t[43]=[n("circle",{cx:"5",cy:"12",r:"1.8"},null,-1),n("circle",{cx:"12",cy:"12",r:"1.8"},null,-1),n("circle",{cx:"19",cy:"12",r:"1.8"},null,-1)])]))],10,cM),e.moreOpen?(l(),d("div",{key:0,class:"tb-menu",role:"menu",onClick:t[16]||(t[16]=a=>e.moreOpen=!1)},[e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.last
Line truncated
|
||||
MIT CSAIL
|
||||
jane.smith@example.org`},hq={id:"termsHelp",class:"form-text text-muted"},vq={class:"invalid-feedback"},yq={id:"settings-display",class:"paper-settings-section"},gq={class:"form-group paper-check-list"},bq={class:"form-check"},wq={class:"form-check-input",type:"checkbox",id:"link",name:"link"},kq={class:"form-check"},Cq={class:"form-check-input",type:"checkbox",id:"image",name:"image"},Eq={class:"form-check"},Sq={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},Nq={class:"form-check"},_q={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},Dq={id:"settings-features",class:"paper-settings-section"},Rq={class:"form-group paper-check-list"},Tq={class:"form-check"},Oq={class:"form-check-input",type:"checkbox",id:"page",name:"page"},Aq={class:"form-check"},Iq={class:"form-check-input",type:"checkbox",id:"loc",name:"loc"},Pq={class:"form-check"},Vq={class:"form-check-input",type:"checkbox",id:"update",name:"update"},Mq={class:"form-group"},qq={class:"form-control",id:"mode",name:"mode"},Lq={class:"form-text text-muted"},$q={id:"settings-expiration",class:"paper-settings-section"},Uq={class:"form-group"},Fq={class:"form-control",id:"expiration",name:"expiration"},zq={key:0,class:"draft-status",role:"status"},Hq={key:1,class:"draft-status"},Bq={class:"paper-settings-footer"},jq={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},Gq=["textContent"],Wq={class:"paper-settings-actions"},Kq=["disabled"],Yq={key:0,class:"ui-icon mr-1","aria-hidden":"true"},Jq={id:"settings-account",class:"paper-settings-section"},Qq={class:"paper-account-card"},Xq=["src"],Zq={class:"paper-account-identity"},xq={class:"paper-account-name"},e6={class:"paper-danger-zone"},t6={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},n6=["textContent"],s6=["disabled"];function Ul(e,t){let s=Ge("quota-usage"),r=Ee("paper-scrollspy"),o=Ee("field"),i=Ee("form");return l(),d("div",rq,[t[52]||(t[52]=fe('<div class="paper-crumbs"><a href="/dashboard">My work</a> \xA0/\xA0 <span class="here">Settings</span></div><h1 class="paper-page-title">Your <em>settings</em></h1><p class="paper-page-lede">Defaults applied to every new anonymization, your quotas, and your account.</p>',3)),n("div",iq,[D((l(),d("aside",aq,[...t[4]||(t[4]=[fe('<div class="paper-settings-toc-head">On this page</div><nav><a href="#settings-quota">Quota</a><a href="#settings-terms">Terms to redact</a><a href="#settings-display">Display</a><a href="#settings-features">Features</a><a href="#settings-expiration">Expiration</a><a href="#settings-account">Account</a></nav>',2)])])),[[r]]),n("div",lq,[p(" Account usage shares the dashboard component. "),n("section",dq,[t[6]||(t[6]=n("div",{class:"paper-section-eyebrow"},"Quota",-1)),t[7]||(t[7]=n("p",{class:"paper-section-copy"},"What you are using across all your anonymizations. Conferences can lift these limits during a review window.",-1)),e.quota?(l(),Ut(s,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):p("v-if",!0),e.quota?p("v-if",!0):(l(),d("div",uq,[(l(),d(Y,null,ie([1,2,3],(a,c)=>n("div",cq,[...t[5]||(t[5]=[n("div",{class:"quota-header"},[n("span",{class:"skeleton skeleton-line",style:{width:"40%"}}),n("span",{class:"skeleton skeleton-line",style:{width:"25%"}})],-1),n("div",{class:"quota-track"},null,-1)])])),64))]))]),D((l(),d("form",{class:"form needs-validation",name:"defaultsForm",novalidate:"",onSubmit:t[2]||(t[2]=ue(a=>e.submitForm(a,()=>{e.saveDefault(a)}),["prevent"]))},[n("section",pq,[t[13]||(t[13]=n("div",{class:"paper-section-eyebrow"},"Terms to redact",-1)),t[14]||(t[14]=n("p",{class:"paper-section-copy"},"Pre-filled in every new anonymization. You can still edit the list per anonymization.",-1)),n("div",fq,[t[12]||(t[12]=n("label",{class:"paper-field-label",for:"terms"},"Default terms",-1)),D(n("textarea",mq,null,512),[[o,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"defaultsForm",options:{debounce:250}}]]),n("small",hq,[t[8]||(t[8]=y(" One term per line (regex allowed). Each match is replaced by ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK||"XXX")+"-[N]",1),t[9]||(t[9]=y(", or use ",-1)),t[10]||(t[10]=n("code",null,"term=>replacement",-1)),t[11]||(t[11]=y(" to pick your own. ",-1))]),D(n("div",vq," Terms are in an invalid format ",512),[[Q,e.defaultsForm?.terms?.errors?.format]])])]),n("section",yq,[t[23]||(t[23]=n("div",{class:"paper-section-eyebrow"},"Display",-1)),t[24]||(t[24]=n("p",{class:"paper-section-copy"},"What reviewers can see inside an anonymized repository.",-1)),n("div",gq,[n("div",bq,[D(n("input",wq,null,512),[[o,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"defaultsForm",options:{}}]]),t[15]||(t[15]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[16]||(t[16]=n("small",{class:"form-text text-muted"},"Unchecked, every link in text files is removed.",-1))]),n("div",kq,[D(n("input",Cq,null,512),[[o,{state:e.viewState,set:a=>{e.options.image=a},value:e.op
Line truncated
|
||||
`);for(let k=0;k<b.length;k++){let m=b[k];if(m.startsWith("diff --git")){g(),f();continue}if(m.startsWith("--- ")){i&&i.lines.length&&g(),f().oldPath=m.replace(/^--- (a\/)?/,"").trim();continue}if(m.startsWith("+++ ")){f().newPath=m.replace(/^\+\+\+ (b\/)?/,"").trim();continue}if(!(m.startsWith("index ")||m.startsWith("similarity index")||m.startsWith("rename ")||m.startsWith("new file mode")||m.startsWith("deleted file mode")||m.startsWith("Binary files"))){if(m.startsWith("@@")){let C=m.match(/@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);C&&(a=parseInt(C[1],10),c=parseInt(C[2],10)),f().lines.push({kind:"hunk",oldNo:"",newNo:"",text:m});continue}i&&(m.startsWith("+")?(i.lines.push({kind:"add",oldNo:"",newNo:c,text:m.slice(1)}),c++):m.startsWith("-")?(i.lines.push({kind:"remove",oldNo:a,newNo:"",text:m.slice(1)}),a++):(i.lines.push({kind:"ctx",oldNo:a,newNo:c,text:m.startsWith(" ")?m.slice(1):m}),a++,c++))}}return s(o,i),o.join("")}})({trustAsHtml:e=>e});function gL(e,t){return e==null?"":Number(e).toLocaleString(void 0,t==null?{}:{minimumFractionDigits:t,maximumFractionDigits:t})}function bL(e){return String(e??"").toUpperCase()}function wL(e,t,s=0){return(e||[]).slice(s,s+t)}function kL(e,t){return Array.isArray(e)?typeof t=="function"?e.filter(t):e:[]}function CL(e,t){if(!t)return e||[];let s=Array.isArray(t)?t:[t];return[...e||[]].sort((r,o)=>{for(let i of s){let a=i[0]==="-"?-1:1;i=i.replace(/^[+-]/,"");let c=i.split(".").reduce((g,b)=>g?.[b],r),f=i.split(".").reduce((g,b)=>g?.[b],o);if(typeof c=="string"&&(c=c.toLowerCase()),typeof f=="string"&&(f=f.toLowerCase()),c!==f)return(c==null?-1:f==null?1:c<f?-1:1)*a}return 0})}function EL(e,t){if(!e)return"";let s=new Date(e);if(isNaN(s))return String(e);if(!t||t==="mediumDate")return s.toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"});let r={yyyy:s.getFullYear(),MMM:s.toLocaleDateString(void 0,{month:"short"}),MM:String(s.getMonth()+1).padStart(2,"0"),dd:String(s.getDate()).padStart(2,"0"),d:s.getDate(),HH:String(s.getHours()).padStart(2,"0"),mm:String(s.getMinutes()).padStart(2,"0"),ss:String(s.getSeconds()).padStart(2,"0")};return t.replace(/yyyy|MMM|MM|dd|HH|mm|ss|d/g,o=>r[o])}function SL(e,t){return(t?.[e]??t?.[e===1?"one":"other"]??"").replace(/\{\}/g,e??0)}var Kl={name:"htmlDoc",props:["content","baseUrl","allowScripts"],setup(e){let t=et(null);return $t(()=>{let r=[t.value][0];r.classList.add("html-doc");function o(){r.innerHTML="";let i=e.content;if(typeof i!="string")return;let a=document.createElement("iframe");a.className="html-doc-frame",a.setAttribute("title","Rendered HTML document");let c=["allow-popups","allow-popups-to-escape-sandbox"];e.allowScripts&&c.push("allow-scripts","allow-forms","allow-modals"),a.setAttribute("sandbox",c.join(" ")),a.setAttribute("referrerpolicy","no-referrer"),r.appendChild(a);let f="";e.baseUrl&&(f='<base href="'+e.baseUrl.replace(/&/g,"&").replace(/"/g,""")+'">'),a.srcdoc=f+i}He(()=>e.content,o,{immediate:!0}),He(()=>e.baseUrl,o,{immediate:!0}),He(()=>e.allowScripts,o,{immediate:!0})}),()=>De("html-doc",{ref:t})}};var Yl={name:"pdfviewer",props:["src"],setup(e){let t=et(null);return $t(()=>{let s=[t.value],r=400,o=[.5,.75,1,1.25,1.5,2,3],i=1e3,a=s[0];a.classList.add("pdf-viewer");let c=null,f=[],g=!1,b=null,k=1,m=1,C=0,A=0,h=612/792,E=0,N=null,R=new Map,V=0;function H(v){let w=R.get(v);w&&(w.cancelled=!0,w.task?.cancel?.(),R.delete(v));let O=v.querySelector("canvas");O&&(O.width=0,O.height=0),v.innerHTML="",delete v.dataset.state}let q=document.createElement("div");q.className="pdf-toolbar";let z=document.createElement("div");z.className="pdf-pages",z.tabIndex=0,z.setAttribute("aria-label","PDF pages"),a.appendChild(q),a.appendChild(z);function Z(v,w,O){let P=document.createElement("button");return P.type="button",P.className="pdf-toolbar-btn",P.title=w,P.setAttribute("aria-label",w),P.innerHTML='<i class="fas '+v+'"></i>',P.addEventListener("click",O),P}let ae=Z("fa-chevron-up","Previous page",function(){L(m-1)}),_=Z("fa-chevron-down","Next page",function(){L(m+1)}),j=document.createElement("input");j.type="text",j.className="pdf-toolbar-page",j.setAttribute("aria-label","Page number"),j.title="Page number \u2014 type a page and press Enter",j.addEventListener("keydown",function(v){v.key==="Enter"&&(L(parseInt(j.value,10)),j.blur())}),j.addEventListener("blur",function(){j.value=String(m)});let ne=document.createElement("span");ne.className="pdf-toolbar-count";let le=Z("fa-search-minus","Zoom out",function(){S(o[Math.max(0,Se()-1)])}),Ce=Z("fa-search-plus","Zoom in",function(){S(o[Math.min(o.length-1,Se()+1)])}),ce=document.createElement("button");ce.type="button",ce.className="pdf-toolbar-btn pdf-toolbar-zoom",ce.title="Reset zoom to fit the width",ce.setAttribute("aria-label","Reset zoom to fit the width"),ce.addEventListener("click",function(){S(1)}),q.appendChild(ae),q.appendChild(_);let ve=document.createElement("span");ve.className="pdf-toolbar-group",ve.appendChild(j),ve
Line truncated
|
||||
jane.smith@example.org`},hq={id:"termsHelp",class:"form-text text-muted"},vq={class:"invalid-feedback"},yq={id:"settings-display",class:"paper-settings-section"},gq={class:"form-group paper-check-list"},bq={class:"form-check"},wq={class:"form-check-input",type:"checkbox",id:"link",name:"link"},kq={class:"form-check"},Cq={class:"form-check-input",type:"checkbox",id:"image",name:"image"},Eq={class:"form-check"},Sq={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},Nq={class:"form-check"},_q={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},Dq={id:"settings-features",class:"paper-settings-section"},Rq={class:"form-group paper-check-list"},Tq={class:"form-check"},Oq={class:"form-check-input",type:"checkbox",id:"page",name:"page"},Aq={class:"form-check"},Iq={class:"form-check-input",type:"checkbox",id:"loc",name:"loc"},Pq={class:"form-check"},Vq={class:"form-check-input",type:"checkbox",id:"update",name:"update"},Mq={class:"form-group"},qq={class:"form-control",id:"mode",name:"mode"},Lq={class:"form-text text-muted"},$q={id:"settings-expiration",class:"paper-settings-section"},Uq={class:"form-group"},Fq={class:"form-control",id:"expiration",name:"expiration"},zq={key:0,class:"draft-status",role:"status"},Hq={key:1,class:"draft-status"},Bq={class:"paper-settings-footer"},jq={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},Gq=["textContent"],Wq={class:"paper-settings-actions"},Kq=["disabled"],Yq={key:0,class:"ui-icon mr-1","aria-hidden":"true"},Jq={id:"settings-account",class:"paper-settings-section"},Qq={class:"paper-account-card"},Xq=["src"],Zq={class:"paper-account-identity"},xq={class:"paper-account-name"},e6={class:"paper-danger-zone"},t6={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},n6=["textContent"],s6=["disabled"];function Ul(e,t){let s=Ge("quota-usage"),r=Ee("paper-scrollspy"),o=Ee("field"),i=Ee("form");return l(),d("div",rq,[t[52]||(t[52]=fe('<div class="paper-crumbs"><a href="/dashboard">My work</a> \xA0/\xA0 <span class="here">Settings</span></div><h1 class="paper-page-title">Your <em>settings</em></h1><p class="paper-page-lede">Defaults applied to every new anonymization, your quotas, and your account.</p>',3)),n("div",iq,[D((l(),d("aside",aq,[...t[4]||(t[4]=[fe('<div class="paper-settings-toc-head">On this page</div><nav><a href="#settings-quota">Quota</a><a href="#settings-terms">Terms to redact</a><a href="#settings-display">Display</a><a href="#settings-features">Features</a><a href="#settings-expiration">Expiration</a><a href="#settings-account">Account</a></nav>',2)])])),[[r]]),n("div",lq,[p(" Account usage shares the dashboard component. "),n("section",dq,[t[6]||(t[6]=n("div",{class:"paper-section-eyebrow"},"Quota",-1)),t[7]||(t[7]=n("p",{class:"paper-section-copy"},"What you are using across all your anonymizations. Conferences can lift these limits during a review window.",-1)),e.quota?(l(),Ut(s,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):p("v-if",!0),e.quota?p("v-if",!0):(l(),d("div",uq,[(l(),d(K,null,re([1,2,3],(a,c)=>n("div",cq,[...t[5]||(t[5]=[n("div",{class:"quota-header"},[n("span",{class:"skeleton skeleton-line",style:{width:"40%"}}),n("span",{class:"skeleton skeleton-line",style:{width:"25%"}})],-1),n("div",{class:"quota-track"},null,-1)])])),64))]))]),D((l(),d("form",{class:"form needs-validation",name:"defaultsForm",novalidate:"",onSubmit:t[2]||(t[2]=de(a=>e.submitForm(a,()=>{e.saveDefault(a)}),["prevent"]))},[n("section",pq,[t[13]||(t[13]=n("div",{class:"paper-section-eyebrow"},"Terms to redact",-1)),t[14]||(t[14]=n("p",{class:"paper-section-copy"},"Pre-filled in every new anonymization. You can still edit the list per anonymization.",-1)),n("div",fq,[t[12]||(t[12]=n("label",{class:"paper-field-label",for:"terms"},"Default terms",-1)),D(n("textarea",mq,null,512),[[o,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"defaultsForm",options:{debounce:250}}]]),n("small",hq,[t[8]||(t[8]=y(" One term per line (regex allowed). Each match is replaced by ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK||"XXX")+"-[N]",1),t[9]||(t[9]=y(", or use ",-1)),t[10]||(t[10]=n("code",null,"term=>replacement",-1)),t[11]||(t[11]=y(" to pick your own. ",-1))]),D(n("div",vq," Terms are in an invalid format ",512),[[Q,e.defaultsForm?.terms?.errors?.format]])])]),n("section",yq,[t[23]||(t[23]=n("div",{class:"paper-section-eyebrow"},"Display",-1)),t[24]||(t[24]=n("p",{class:"paper-section-copy"},"What reviewers can see inside an anonymized repository.",-1)),n("div",gq,[n("div",bq,[D(n("input",wq,null,512),[[o,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"defaultsForm",options:{}}]]),t[15]||(t[15]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[16]||(t[16]=n("small",{class:"form-text text-muted"},"Unchecked, every link in text files is removed.",-1))]),n("div",kq,[D(n("input",Cq,null,512),[[o,{state:e.viewState,set:a=>{e.options.image=a},value:e.op
Line truncated
|
||||
`);for(let k=0;k<b.length;k++){let m=b[k];if(m.startsWith("diff --git")){g(),f();continue}if(m.startsWith("--- ")){i&&i.lines.length&&g(),f().oldPath=m.replace(/^--- (a\/)?/,"").trim();continue}if(m.startsWith("+++ ")){f().newPath=m.replace(/^\+\+\+ (b\/)?/,"").trim();continue}if(!(m.startsWith("index ")||m.startsWith("similarity index")||m.startsWith("rename ")||m.startsWith("new file mode")||m.startsWith("deleted file mode")||m.startsWith("Binary files"))){if(m.startsWith("@@")){let C=m.match(/@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);C&&(a=parseInt(C[1],10),c=parseInt(C[2],10)),f().lines.push({kind:"hunk",oldNo:"",newNo:"",text:m});continue}i&&(m.startsWith("+")?(i.lines.push({kind:"add",oldNo:"",newNo:c,text:m.slice(1)}),c++):m.startsWith("-")?(i.lines.push({kind:"remove",oldNo:a,newNo:"",text:m.slice(1)}),a++):(i.lines.push({kind:"ctx",oldNo:a,newNo:c,text:m.startsWith(" ")?m.slice(1):m}),a++,c++))}}return s(o,i),o.join("")}})({trustAsHtml:e=>e});function gL(e,t){return e==null?"":Number(e).toLocaleString(void 0,t==null?{}:{minimumFractionDigits:t,maximumFractionDigits:t})}function bL(e){return String(e??"").toUpperCase()}function wL(e,t,s=0){return(e||[]).slice(s,s+t)}function kL(e,t){return Array.isArray(e)?typeof t=="function"?e.filter(t):e:[]}function CL(e,t){if(!t)return e||[];let s=Array.isArray(t)?t:[t];return[...e||[]].sort((r,o)=>{for(let i of s){let a=i[0]==="-"?-1:1;i=i.replace(/^[+-]/,"");let c=i.split(".").reduce((g,b)=>g?.[b],r),f=i.split(".").reduce((g,b)=>g?.[b],o);if(typeof c=="string"&&(c=c.toLowerCase()),typeof f=="string"&&(f=f.toLowerCase()),c!==f)return(c==null?-1:f==null?1:c<f?-1:1)*a}return 0})}function EL(e,t){if(!e)return"";let s=new Date(e);if(isNaN(s))return String(e);if(!t||t==="mediumDate")return s.toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"});let r={yyyy:s.getFullYear(),MMM:s.toLocaleDateString(void 0,{month:"short"}),MM:String(s.getMonth()+1).padStart(2,"0"),dd:String(s.getDate()).padStart(2,"0"),d:s.getDate(),HH:String(s.getHours()).padStart(2,"0"),mm:String(s.getMinutes()).padStart(2,"0"),ss:String(s.getSeconds()).padStart(2,"0")};return t.replace(/yyyy|MMM|MM|dd|HH|mm|ss|d/g,o=>r[o])}function SL(e,t){return(t?.[e]??t?.[e===1?"one":"other"]??"").replace(/\{\}/g,e??0)}var Kl={name:"htmlDoc",props:["content","baseUrl","allowScripts"],setup(e){let t=et(null);return $t(()=>{let r=[t.value][0];r.classList.add("html-doc");function o(){r.innerHTML="";let i=e.content;if(typeof i!="string")return;let a=document.createElement("iframe");a.className="html-doc-frame",a.setAttribute("title","Rendered HTML document");let c=["allow-popups","allow-popups-to-escape-sandbox"];e.allowScripts&&c.push("allow-scripts","allow-forms","allow-modals"),a.setAttribute("sandbox",c.join(" ")),a.setAttribute("referrerpolicy","no-referrer"),r.appendChild(a);let f="";e.baseUrl&&(f='<base href="'+e.baseUrl.replace(/&/g,"&").replace(/"/g,""")+'">'),a.srcdoc=f+i}He(()=>e.content,o,{immediate:!0}),He(()=>e.baseUrl,o,{immediate:!0}),He(()=>e.allowScripts,o,{immediate:!0})}),()=>De("html-doc",{ref:t})}};var Yl={name:"pdfviewer",props:["src"],setup(e){let t=et(null);return $t(()=>{let s=[t.value],r=400,o=[.5,.75,1,1.25,1.5,2,3],i=1e3,a=s[0];a.classList.add("pdf-viewer");let c=null,f=[],g=!1,b=null,k=1,m=1,C=0,A=0,h=612/792,E=0,N=null,R=new Map,P=0;function H(v){let w=R.get(v);w&&(w.cancelled=!0,w.task?.cancel?.(),R.delete(v));let O=v.querySelector("canvas");O&&(O.width=0,O.height=0),v.innerHTML="",delete v.dataset.state}let q=document.createElement("div");q.className="pdf-toolbar";let z=document.createElement("div");z.className="pdf-pages",z.tabIndex=0,z.setAttribute("aria-label","PDF pages"),a.appendChild(q),a.appendChild(z);function ie(v,w,O){let V=document.createElement("button");return V.type="button",V.className="pdf-toolbar-btn",V.title=w,V.setAttribute("aria-label",w),V.innerHTML='<i class="fas '+v+'"></i>',V.addEventListener("click",O),V}let ae=ie("fa-chevron-up","Previous page",function(){L(m-1)}),_=ie("fa-chevron-down","Next page",function(){L(m+1)}),Y=document.createElement("input");Y.type="text",Y.className="pdf-toolbar-page",Y.setAttribute("aria-label","Page number"),Y.title="Page number \u2014 type a page and press Enter",Y.addEventListener("keydown",function(v){v.key==="Enter"&&(L(parseInt(Y.value,10)),Y.blur())}),Y.addEventListener("blur",function(){Y.value=String(m)});let Z=document.createElement("span");Z.className="pdf-toolbar-count";let he=ie("fa-search-minus","Zoom out",function(){S(o[Math.max(0,Se()-1)])}),ue=ie("fa-search-plus","Zoom in",function(){S(o[Math.min(o.length-1,Se()+1)])}),ce=document.createElement("button");ce.type="button",ce.className="pdf-toolbar-btn pdf-toolbar-zoom",ce.title="Reset zoom to fit the width",ce.setAttribute("aria-label","Reset zoom to fit the width"),ce.addEventListener("click",function(){S(1)}),q.appendChild(ae),q.appendChild(_);let ye=document.createElement("span");ye.className="pdf-toolbar-group",ye.appendChild(Y)
Line truncated
|
||||
/*! Bundled license information:
|
||||
|
||||
@vue/shared/dist/shared.esm-bundler.js:
|
||||
|
||||
Reference in new issue
Block a user