shreyask commited on
Commit
4dc9720
·
verified ·
1 Parent(s): fec12a7

wire AnyUp: pixel-accurate segmentation masks via anyup.onnx + segm_head

Browse files
README.md CHANGED
@@ -9,8 +9,8 @@ license: apache-2.0
9
  short_description: Open-vocabulary detection in-browser via WebGPU
10
  ---
11
 
12
- # Falcon Perception — In-Browser Demo
13
 
14
- Interactive demo of [tiiuae/Falcon-Perception](https://huggingface.co/tiiuae/Falcon-Perception). Image / webcam / video modes, three render modes (Detection / Segment / Tracker). Multi-threaded WASM via coi-serviceworker; example images base64-inlined.
15
 
16
  Weights: [shreyask/falcon-perception-onnx-webgpu](https://huggingface.co/shreyask/falcon-perception-onnx-webgpu).
 
9
  short_description: Open-vocabulary detection in-browser via WebGPU
10
  ---
11
 
12
+ # Falcon Perception
13
 
14
+ Browser demo for [tiiuae/Falcon-Perception](https://huggingface.co/tiiuae/Falcon-Perception). Image, webcam, and video input with Detection / Segment / Tracker render modes. Multi-threaded WASM via coi-serviceworker. Pixel-accurate segmentation masks via the AnyUp upsampler running in ORT Web.
15
 
16
  Weights: [shreyask/falcon-perception-onnx-webgpu](https://huggingface.co/shreyask/falcon-perception-onnx-webgpu).
assets/index-BIGvobfH.css ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-900:oklch(39.6% .141 25.723);--color-red-950:oklch(25.8% .092 26.042);--color-emerald-500:oklch(69.6% .17 162.48);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.left-3{left:calc(var(--spacing) * 3)}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-2{margin-left:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-80{width:calc(var(--spacing) * 80)}.w-full{width:100%}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[60\%\]{max-width:60%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-gray-700{border-color:var(--color-gray-700)}.border-gray-800{border-color:var(--color-gray-800)}.border-gray-800\/60{border-color:#1e293999}@supports (color:color-mix(in lab, red, red)){.border-gray-800\/60{border-color:color-mix(in oklab, var(--color-gray-800) 60%, transparent)}}.border-gray-800\/70{border-color:#1e2939b3}@supports (color:color-mix(in lab, red, red)){.border-gray-800\/70{border-color:color-mix(in oklab, var(--color-gray-800) 70%, transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab, red, red)){.border-red-500\/30{border-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)}}.border-red-900\/40{border-color:#82181a66}@supports (color:color-mix(in lab, red, red)){.border-red-900\/40{border-color:color-mix(in oklab, var(--color-red-900) 40%, transparent)}}.border-t-blue-500{border-top-color:var(--color-blue-500)}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/10{background-color:color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.bg-blue-500\/15{background-color:#3080ff26}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/15{background-color:color-mix(in oklab, var(--color-blue-500) 15%, transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-gray-900\/40{background-color:#10182866}@supports (color:color-mix(in lab, red, red)){.bg-gray-900\/40{background-color:color-mix(in oklab, var(--color-gray-900) 40%, transparent)}}.bg-gray-900\/60{background-color:#10182899}@supports (color:color-mix(in lab, red, red)){.bg-gray-900\/60{background-color:color-mix(in oklab, var(--color-gray-900) 60%, transparent)}}.bg-gray-950{background-color:var(--color-gray-950)}.bg-gray-950\/80{background-color:#030712cc}@supports (color:color-mix(in lab, red, red)){.bg-gray-950\/80{background-color:color-mix(in oklab, var(--color-gray-950) 80%, transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.bg-red-950\/20{background-color:#46080933}@supports (color:color-mix(in lab, red, red)){.bg-red-950\/20{background-color:color-mix(in oklab, var(--color-red-950) 20%, transparent)}}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing) * 1)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-400\/80{color:#ff6568cc}@supports (color:color-mix(in lab, red, red)){.text-red-400\/80{color:color-mix(in oklab, var(--color-red-400) 80%, transparent)}}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-gray-500::placeholder{color:var(--color-gray-500)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-blue-600\/20{--tw-shadow-color:#155dfc33}@supports (color:color-mix(in lab, red, red)){.shadow-blue-600\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-600) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-blue-600\/25{--tw-shadow-color:#155dfc40}@supports (color:color-mix(in lab, red, red)){.shadow-blue-600\/25{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-600) 25%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-blue-500\/20{--tw-ring-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.ring-blue-500\/20{--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.ring-gray-800{--tw-ring-color:var(--color-gray-800)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}}.placeholder\:text-gray-500::placeholder{color:var(--color-gray-500)}@media (hover:hover){.hover\:border-gray-700:hover{border-color:var(--color-gray-700)}.hover\:bg-blue-500:hover{background-color:var(--color-blue-500)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\:bg-gray-900:hover{background-color:var(--color-gray-900)}.hover\:text-gray-200:hover{color:var(--color-gray-200)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-gray-400:hover{color:var(--color-gray-400)}.hover\:ring-blue-500:hover{--tw-ring-color:var(--color-blue-500)}}.focus\:border-blue-500:focus{border-color:var(--color-blue-500)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:scale-\[0\.98\]:active{scale:.98}.disabled\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\:hover\:bg-blue-600:disabled:hover{background-color:var(--color-blue-600)}}@media (width>=40rem){.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif}button,input{transition-property:background-color,border-color,color,opacity;transition-duration:.15s}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
assets/index-Cv8MqGH9.js ADDED
The diff for this file is too large to render. See raw diff
 
assets/inference.worker-BODVQac6.js ADDED
@@ -0,0 +1 @@
 
 
1
+ const e=`shreyask/falcon-perception-onnx-webgpu`,t=`https://huggingface.co/${e}/resolve/main`,n={unified:{file:`unified_v2.onnx`,size:203e7},embed_tokens:{file:`embed_tokens.onnx`,size:256e6},coord_decoder:{file:`coord_decoder.onnx`,size:96e6},size_decoder:{file:`size_decoder.onnx`,size:96e6},anyup:{file:`anyup.onnx`,size:81e6},segm_head:{file:`segm_head.onnx`,size:9e6},img_projector:{file:`img_projector.onnx`,size:3e6},coord_encoder:{file:`coord_encoder.onnx`,size:2e6},size_encoder:{file:`size_encoder.onnx`,size:2e6}},r={dim:1024,n_layers:28,n_heads:16,head_dim:128,n_kv_heads:8,vocab_size:65536,max_seq_len:8192,segm_out_dim:256,coord_out_dim:2048,size_out_dim:2048,coord_token_id:240,size_token_id:241,seg_token_id:262,eos_id:11,img_id:227,image_cls_token_id:244,img_end_id:230,spatial_patch_size:16,temporal_patch_size:1,channel_size:3,rope_theta:1e4,presence_token_id:268,absence_token_id:269,end_of_query_token_id:263,start_of_query_token_id:264,ref_seg_token_id:258};function i(e,t=.6){if(e.length<=1)return e;let n=e.map((e,t)=>({det:e,idx:t,area:o(e.box)}));n.sort((e,t)=>t.area-e.area);let r=new Set,i=[];for(let{det:e,idx:o}of n){let n=!1;for(let r of i)if(a(e.box,r)>t){n=!0;break}n||(r.add(o),i.push(e.box))}return e.filter((e,t)=>r.has(t))}function a(e,t){let n=Math.max(e.x1,t.x1),r=Math.max(e.y1,t.y1),i=Math.min(e.x2,t.x2),a=Math.min(e.y2,t.y2),s=i-n,c=a-r;if(s<=0||c<=0)return 0;let l=s*c,u=o(e)+o(t)-l;return u>0?l/u:0}function o(e){return Math.max(0,e.x2-e.x1)*Math.max(0,e.y2-e.y1)}let s,c=null,l=!1,u=null;const d={};function f(e){self.postMessage(e)}function p(e){let t=d[e];if(!t)throw Error(`ONNX session not loaded: ${e}`);return t}async function m(e,n){let r=`${t}/${e}`,i=await fetch(r);if(!i.ok)throw Error(`Failed to fetch ${e}: ${i.status}`);let a=i.body?.getReader();if(!a)return i.arrayBuffer();let o=[],s=0;for(;;){let{done:t,value:r}=await a.read();if(t)break;o.push(r),s+=r.length,f({type:`progress`,progress:Math.round(s/n*100),loaded:s,total:n,file:e})}let c=new Uint8Array(s),l=0;for(let e of o)c.set(e,l),l+=e.length;return c.buffer}async function h(e,t,n,r){let i=`${t}.data`,[a,o]=await Promise.all([m(t,n*.01),m(i,n*.99)]),c=await s.InferenceSession.create(a,{executionProviders:r,externalData:[{path:i,data:new Uint8Array(o)}]});return console.log(`Loaded ${e}: inputs=[${c.inputNames}] outputs=[${c.outputNames}]`),c}async function ee(){try{s=await import(`./ort.bundle.min-BZrO1_VY.js`);let t=typeof SharedArrayBuffer<`u`;s.env.wasm.numThreads=t?Math.min(4,navigator.hardwareConcurrency||2):1;let r=import(`./transformers.web-DaZ4EEMB.js`).then(async({AutoTokenizer:t})=>{try{c=await t.from_pretrained(e),console.log(`Tokenizer loaded`)}catch(e){console.warn(`AutoTokenizer failed, will use fallback:`,b(e,`unknown error`))}}),i=[`unified`,`embed_tokens`,`coord_decoder`,`size_decoder`,`segm_head`,`anyup`,`img_projector`,`coord_encoder`,`size_encoder`],a=0,o=Object.values(n).reduce((e,t)=>e+t.size,0),l=new Set([`unified`]);for(let e of i){let{file:t,size:r}=n[e];f({type:`progress`,progress:Math.round(a/o*100),loaded:a,total:o,file:t});let i=l.has(e)?[`wasm`]:[`webgpu`,`wasm`];try{d[e]=await h(e,t,r,i)}catch(n){console.warn(`${i[0]} failed for ${e}, trying WASM:`,b(n,`unknown error`));try{d[e]=await h(e,t,r,[`wasm`])}catch(t){console.error(`Failed to load ${e}:`,b(t,`unknown error`))}}a+=r}await r,c||console.log(`Using fallback tokenizer (hardcoded prompt tokens)`),f({type:`loaded`})}catch(e){f({type:`error`,message:b(e,`Failed to load models`)})}}function te(e){let t=r.spatial_patch_size,n=new OffscreenCanvas(256,256).getContext(`2d`);n.drawImage(e,0,0,256,256);let i=n.getImageData(0,0,256,256),a=new Float32Array(256*256*3),o=new Float32Array(3*256*256),s=256*256;for(let e=0;e<s;e++){let t=i.data[e*4+0]/255*2-1,n=i.data[e*4+1]/255*2-1,r=i.data[e*4+2]/255*2-1;a[e*3+0]=t,a[e*3+1]=n,a[e*3+2]=r,o[0*s+e]=t,o[1*s+e]=n,o[2*s+e]=r}return{pixels:a,pixelsChw:o,width:256,height:256,patchH:256/t,patchW:256/t}}function ne(e,t){let n=Math.sqrt(t/e),r=Math.sqrt(e/t),i=new Float32Array(e*t*2);for(let a=0;a<e;a++){let o=e>1?r*(2*a/(e-1)-1):0;for(let e=0;e<t;e++){let r=t>1?n*(2*e/(t-1)-1):0,s=a*t+e;i[s*2+0]=o,i[s*2+1]=r}}return i}function g(e){u?.image&&u.image!==e.image&&u.image.close(),u=e}function _(e){if(l){g(e),console.log(`[detect] queued latest frame while inference is running`);return}v(e)}async function v(e){l=!0;let{image:t,query:n,requestId:a,sourceTimestampMs:o,capturedAtMs:m}=e,h=(e,t)=>{f({type:`result`,detections:e,inferenceMs:t,query:n,requestId:a,sourceTimestampMs:o,capturedAtMs:m})};if(console.log(`[detect] query="${n}" image=${t.width}x${t.height}`),!d.unified||!d.embed_tokens){f({type:`error`,message:`Not ready. Sessions: ${Object.keys(d).join(`,`)}`}),l=!1;return}try{let e=performance.now(),a=r.dim,o=r.spatial_patch_size,l=o*o*r.channel_size,{pixels:u,pixelsChw:f,width:m,height:ee,patchH:g,patchW:_}=te(t),v=g*_;console.log(`[detect] image: ${m}px, ${g}x${_}=${v} patches`);let b=`Segment these expressions in the image:<|start_of_query|>${n}<|REF_SEG|>`,x;if(c){let e=c.encode(b,{add_special_tokens:!1});x=Array.from(e),console.log(`[detect] text tokens (${x.length}):`,x)}else x=[37462,1978,20528,821,790,6883,549,264,258],console.log(`[detect] using fallback tokens (no query text):`,x);let ie=[245,246,247,248],S=1+ie.length+v+1+x.length,C=new BigInt64Array(S),w=0;C[w++]=BigInt(r.image_cls_token_id);for(let e of ie)C[w++]=BigInt(e);let T=w;for(let e=0;e<v;e++)C[w++]=BigInt(r.img_id);C[w++]=BigInt(r.img_end_id);for(let e of x)C[w++]=BigInt(e);console.log(`[detect] total seq_len=${S}, token IDs: [${Array.from(C.slice(0,5)).map(Number)}...${Array.from(C.slice(-5)).map(Number)}]`);let ae=await p(`embed_tokens`).run({token_ids:new s.Tensor(`int64`,C,[1,S])}),E=new Float32Array(ae.embeddings.data),D=new Float32Array(v*l);for(let e=0;e<g;e++)for(let t=0;t<_;t++){let n=e*_+t;for(let r=0;r<o;r++)for(let i=0;i<o;i++){let a=e*o+r,s=t*o+i,c=(a*m+s)*3,d=n*l+(r*o+i)*3;D[d+0]=u[c+0],D[d+1]=u[c+1],D[d+2]=u[c+2]}}let oe=(await p(`img_projector`).run({pixel_patches:new s.Tensor(`float32`,D,[v,l])})).projected.data;for(let e=0;e<v;e++){let t=T*a+e*a,n=e*a;for(let e=0;e<a;e++)E[t+e]=oe[n+e]}let se=E.slice(0,5);console.log(`[detect] embedding[0][0:5]: [${Array.from(se).map(e=>e.toFixed(3)).join(`, `)}]`);let ce=E.slice(T*a,T*a+5);console.log(`[detect] embedding[imgStart][0:5]: [${Array.from(ce).map(e=>e.toFixed(3)).join(`, `)}]`);let le=E.slice((S-1)*a,(S-1)*a+5);console.log(`[detect] embedding[last][0:5]: [${Array.from(le).map(e=>e.toFixed(3)).join(`, `)}]`),console.log(`[detect] running encoder (seq_len=${S})...`);let O=new Float32Array(S),k=T+v+1,ue=new Set([245,246,247,248,r.img_id,r.img_end_id]),A=new Float32Array(S);for(let e=0;e<S;e++){let t=Number(C[e]);A[e]=ue.has(t)&&e<k?0:1}let de=0;for(let e=0;e<S;e++)de+=A[e],O[e]=de-1;let j=r.head_dim/4,M=r.rope_theta,N=new Float32Array(S*j*2);for(let e=0;e<S;e++){let t=O[e];for(let n=0;n<j;n++){let r=t/M**(2*n/(j*2));N[(e*j+n)*2+0]=Math.cos(r),N[(e*j+n)*2+1]=Math.sin(r)}}let P=new Uint8Array(S*S);for(let e=0;e<S;e++)for(let t=0;t<=e;t++)P[e*S+t]=1;for(let e=0;e<k;e++)for(let t=0;t<k;t++)P[e*S+t]=1;let F=r.vocab_size,I=r.coord_out_dim/2,L=r.n_layers,R=r.n_heads,z=r.head_dim,fe=new Float32Array(L*2*1*R*0*z),B=new Float32Array(S*2);B.fill(NaN);let V=ne(g,_);for(let e=0;e<v;e++){let t=(T+e)*2;B[t+0]=V[e*2+0],B[t+1]=V[e*2+1]}console.log(`[detect] prefill (seq_len=${S})...`);let H=await p(`unified`).run({token_embeddings:new s.Tensor(`float32`,E,[1,S,a]),freqs_cis:new s.Tensor(`float32`,N,[1,S,j,2]),pos_hw:new s.Tensor(`float32`,B,[1,S,2]),attention_mask:new s.Tensor(`bool`,P,[1,S,S]),past_kv:new s.Tensor(`float32`,fe,[L,2,1,R,0,z]),past_len:new s.Tensor(`int64`,new BigInt64Array([0n]),[])}),U=H.logits.data,pe=H.new_kv,W=S,me=(S-1)*F,G=U[me+r.presence_token_id],K=U[me+r.absence_token_id];console.log(`[detect] prefill done: presence=${G.toFixed(2)}, absence=${K.toFixed(2)}`);let q=[];if(G<=K&&G<0){console.log(`[detect] object "${n}" not found`),h(q,performance.now()-e);return}let he=H.hidden_states.data,J=null,ge=d.anyup;if(ge){let e=new Float32Array(a*g*_),t=g*_;for(let n=0;n<v;n++){let r=(T+n)*a,i=Math.floor(n/_),o=n%_,s=i*_+o;for(let n=0;n<a;n++)e[n*t+s]=he[r+n]}let n=performance.now();try{J=(await ge.run({images:new s.Tensor(`float32`,f,[1,3,ee,m]),lr_tokens:new s.Tensor(`float32`,e,[1,a,g,_])})).hr_features,console.log(`[detect] anyup done in ${(performance.now()-n).toFixed(0)}ms, hr_features=${J.dims.join(`x`)}`)}catch(e){console.warn(`[detect] anyup failed; segmentation will fall back:`,e),J=null}}let Y=new Float32Array(he.subarray((S-1)*a,S*a)),X=U,_e=O[S-1]+1,Z=null,Q=null,ve=new Set([r.eos_id,r.end_of_query_token_id]);for(let t=0;t<510;t++){let i=X.length,o=y(X,i-F,F);if(ve.has(o)){console.log(`[detect] stop token ${o} (${re(o)}) at step ${t}`);break}if(o===r.absence_token_id){console.log(`[detect] <absence> at step ${t}, stopping`);break}if(o===r.coord_token_id){let e=await p(`coord_decoder`).run({hidden:new s.Tensor(`float32`,Y,[1,a])}),n=new Float32Array(e.logits.data),r=.01,i=0,o=0,c=0,l=0;for(let e=0;e<100&&(i=y(n,0,I),o=y(n,I,I),c=i/(I-1),l=o/(I-1),q.some(e=>{let t=(e.box.x1+e.box.x2)/2,n=(e.box.y1+e.box.y2)/2;return Math.abs(t-c)<r&&Math.abs(n-l)<r}));e++)n[i]=-1/0,n[I+o]=-1/0;Z=[c,l],console.log(`[detect] step ${t}: <coord> → (${c.toFixed(3)}, ${l.toFixed(3)})`)}else if(o===r.size_token_id){let e=(await p(`size_decoder`).run({hidden:new s.Tensor(`float32`,Y,[1,a])})).logits.data,n=y(e,0,I),r=y(e,I,I),i=Math.log2(1/I),o=2**(n/(I-1)*-i+i),c=2**(r/(I-1)*-i+i);Q=[o,c],console.log(`[detect] step ${t}: <size> → (h=${o.toFixed(3)}, w=${c.toFixed(3)})`)}else if(o===r.seg_token_id){if(Z&&Q){let[r,i]=Z,[o,c]=Q,l;if(J&&d.segm_head)try{let e=await p(`segm_head`).run({seg_token_hidden:new s.Tensor(`float32`,Y,[1,a]),hr_features:J}),t=e.masks.data,[,n,r]=e.masks.dims,i=new Uint8Array(n*r);for(let e=0;e<i.length;e++)i[e]=t[e]>0?255:0;l={data:i,width:r,height:n}}catch(e){console.warn(`[detect] segm_head failed for object #${q.length+1}:`,e)}if(q.push({label:n,score:1/(1+Math.exp(-(G-K))),box:{x1:Math.max(0,r-c/2),y1:Math.max(0,i-o/2),x2:Math.min(1,r+c/2),y2:Math.min(1,i+o/2)},mask:l}),console.log(`[detect] step ${t}: <seg> → object #${q.length} xy=(${r.toFixed(2)},${i.toFixed(2)}) hw=(${o.toFixed(2)},${c.toFixed(2)})${l?` +mask`:``}`),h([...q],performance.now()-e),q.length>=100){console.log(`[detect] reached max 100 objects`);break}Z=null,Q=null}}else console.log(`[detect] step ${t}: ${re(o)} (${o})`);let c;if(o===r.coord_token_id&&Z){let e=await p(`coord_encoder`).run({coords:new s.Tensor(`float32`,new Float32Array(Z),[1,2])});c=new Float32Array(e.encoded.data)}else if(o===r.size_token_id&&Q){let e=await p(`size_encoder`).run({sizes:new s.Tensor(`float32`,new Float32Array(Q),[1,2])});c=new Float32Array(e.encoded.data)}else{let e=await p(`embed_tokens`).run({token_ids:new s.Tensor(`int64`,new BigInt64Array([BigInt(o)]),[1,1])});c=new Float32Array(e.embeddings.data)}let l=new Float32Array(j*2);for(let e=0;e<j;e++){let t=_e/M**(2*e/(j*2));l[e*2+0]=Math.cos(t),l[e*2+1]=Math.sin(t)}let u=new Uint8Array(W+1);u.fill(1);let f=new Float32Array([NaN,NaN]),m=await p(`unified`).run({token_embeddings:new s.Tensor(`float32`,c,[1,1,a]),freqs_cis:new s.Tensor(`float32`,l,[1,1,j,2]),pos_hw:new s.Tensor(`float32`,f,[1,1,2]),attention_mask:new s.Tensor(`bool`,u,[1,1,W+1]),past_kv:pe,past_len:new s.Tensor(`int64`,new BigInt64Array([BigInt(W)]),[])});Y=new Float32Array(m.hidden_states.data),X=m.logits.data,pe=m.new_kv,W+=1,_e+=1}let ye=q.length,$=i(q,.6),be=performance.now()-e;console.log(`[detect] done in ${be.toFixed(0)}ms, ${$.length} detections (${ye} raw, ${ye-$.length} merged by bbox-IoU NMS)`),h($,be)}catch(e){console.error(`[detect] error:`,e),f({type:`error`,message:b(e,`Inference failed`)})}finally{t.close(),l=!1;let e=u;u=null,e&&_(e)}}function y(e,t,n){let r=0,i=-1/0;for(let a=0;a<n;a++)e[t+a]>i&&(i=e[t+a],r=a);return r}function b(e,t){return e instanceof Error?e.message:t}function re(e){return{[r.coord_token_id]:`<coord>`,[r.size_token_id]:`<size>`,[r.seg_token_id]:`<seg>`,[r.eos_id]:`<eos>`,[r.presence_token_id]:`<presence>`,[r.absence_token_id]:`<absence>`,[r.end_of_query_token_id]:`<end_of_query>`}[e]??`token_${e}`}self.onmessage=async e=>{switch(e.data.type){case`load`:await ee();break;case`detect`:_(e.data);break}};
index.html CHANGED
@@ -10,8 +10,8 @@
10
  auto-handles the one-time reload required to enter a cross-origin
11
  isolated context. Must run before anything else. -->
12
  <script src="/coi-serviceworker.js"></script>
13
- <script type="module" crossorigin src="/assets/index-CG2tS2IC.js"></script>
14
- <link rel="stylesheet" crossorigin href="/assets/index-DpjQuLKn.css">
15
  </head>
16
  <body class="bg-gray-950 text-gray-100 antialiased">
17
  <div id="root"></div>
 
10
  auto-handles the one-time reload required to enter a cross-origin
11
  isolated context. Must run before anything else. -->
12
  <script src="/coi-serviceworker.js"></script>
13
+ <script type="module" crossorigin src="/assets/index-Cv8MqGH9.js"></script>
14
+ <link rel="stylesheet" crossorigin href="/assets/index-BIGvobfH.css">
15
  </head>
16
  <body class="bg-gray-950 text-gray-100 antialiased">
17
  <div id="root"></div>