From 65a89c4aeb00705581a345b1f25c0ce33b24dd27 Mon Sep 17 00:00:00 2001 From: Qualzz20m Date: Sat, 1 Oct 2022 20:14:32 +0200 Subject: [PATCH] gallery_v1 --- frontend/css/streamlit.main.css | 10 +- .../dist/assets/index.3ab9729b.css | 0 .../dist/assets/index.b5b962e4.js | 0 .../concept-browser}/dist/index.html | 0 .../sd-gallery/dist/assets/index.4194368f.css | 1 + .../sd-gallery/dist/assets/index.aeaed602.js | 216 ++++++++++++++++++ .../sd-gallery/dist/assets/lg.22b72ba5.ttf | Bin 0 -> 4756 bytes .../sd-gallery/dist/assets/lg.f2fe1c00.svg | 54 +++++ .../sd-gallery/dist/assets/lg.fefc5c0d.woff | Bin 0 -> 4832 bytes .../dist/assets/loading.298ad3ff.gif | Bin 0 -> 4178 bytes frontend/dists/sd-gallery/dist/index.html | 13 ++ frontend/js/index.js | 196 ---------------- scripts/sd_concept_library.py | 4 +- scripts/txt2img.py | 124 +++++++--- 14 files changed, 376 insertions(+), 242 deletions(-) rename frontend/{ => dists/concept-browser}/dist/assets/index.3ab9729b.css (100%) rename frontend/{ => dists/concept-browser}/dist/assets/index.b5b962e4.js (100%) rename frontend/{ => dists/concept-browser}/dist/index.html (100%) create mode 100644 frontend/dists/sd-gallery/dist/assets/index.4194368f.css create mode 100644 frontend/dists/sd-gallery/dist/assets/index.aeaed602.js create mode 100644 frontend/dists/sd-gallery/dist/assets/lg.22b72ba5.ttf create mode 100644 frontend/dists/sd-gallery/dist/assets/lg.f2fe1c00.svg create mode 100644 frontend/dists/sd-gallery/dist/assets/lg.fefc5c0d.woff create mode 100644 frontend/dists/sd-gallery/dist/assets/loading.298ad3ff.gif create mode 100644 frontend/dists/sd-gallery/dist/index.html delete mode 100644 frontend/js/index.js diff --git a/frontend/css/streamlit.main.css b/frontend/css/streamlit.main.css index 26e61e9..8bb5db7 100644 --- a/frontend/css/streamlit.main.css +++ b/frontend/css/streamlit.main.css @@ -37,16 +37,10 @@ button[data-baseweb="tab"] { /* Main streamlit container (below header) //reduce the empty spaces*/ .css-18e3th9 { - padding-top: 2rem; + padding-top: 1rem; } -/* @media only for widescreen, to ensure enough space to see all */ -@media (min-width: 1024px) { - /* Main streamlit container (below header) //reduce the empty spaces, can go fully to the top on widescreen devices*/ - .css-18e3th9 { - padding-top: 0px; - } -} + /*********************************************************** * Additional CSS for streamlit custom/3rd party components * diff --git a/frontend/dist/assets/index.3ab9729b.css b/frontend/dists/concept-browser/dist/assets/index.3ab9729b.css similarity index 100% rename from frontend/dist/assets/index.3ab9729b.css rename to frontend/dists/concept-browser/dist/assets/index.3ab9729b.css diff --git a/frontend/dist/assets/index.b5b962e4.js b/frontend/dists/concept-browser/dist/assets/index.b5b962e4.js similarity index 100% rename from frontend/dist/assets/index.b5b962e4.js rename to frontend/dists/concept-browser/dist/assets/index.b5b962e4.js diff --git a/frontend/dist/index.html b/frontend/dists/concept-browser/dist/index.html similarity index 100% rename from frontend/dist/index.html rename to frontend/dists/concept-browser/dist/index.html diff --git a/frontend/dists/sd-gallery/dist/assets/index.4194368f.css b/frontend/dists/sd-gallery/dist/assets/index.4194368f.css new file mode 100644 index 0000000..d56609c --- /dev/null +++ b/frontend/dists/sd-gallery/dist/assets/index.4194368f.css @@ -0,0 +1 @@ +@font-face{font-family:lg;src:url(data:font/woff2;base64,d09GMgABAAAAAAkcAAsAAAAAEogAAAjNAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgSQRCAqcLJZKCzoAATYCJANwBCAFgkoHIBupDgDm53Gzej8JpU0wqygVVyoWwphIsuuw60jpmBY6ppTa7mk7jtx57UQ0V2ulvfmteSIQji061T2HvfDEECASKizU5VUQXFjFRtgYTVg+woiYDVezOThR4tAvr/YYgOO/RZ+BAABzYtMA8Kl8Neg3UIDCoCkOyWBuLcCvSHycH78QvhFxmUCK03A0RwGSvXBAHgR8UB8DMvocJYAgbiZiJnqmYGbXjG3mz7P8nHhe8Uvxr0j+fzwPABAjWT1E83IJHh/x87G/jv1l7JtYR+y+WF2MKAai/qfDtfIRt7hBikI8D1IpipXqWqYSDgDBfwE7qDLw5EEALqFRDMKAsApNwchXAJgFL/WETMbKcDVSifR6QkjwkDaRTEugqlBtKVcL6Smi1dHlIqUmuii6Pic1JTIlFTX3uRenMNpiCiKOCZBm2ges0b/ScigDVgcb2MEHfloel7e1z208KrZUeQFjK0dIkbl6FOFczRhFE6zaRklPlz52tOXcKtmpdqisgHnbxRatg66vsZNHaWMPQ/eZmH6jaavlNASsipbKwVZSYrRm1mywI0670UEdhLy+yuscolSZJHKwg5IyNzRJQbKRZiicwnYiChjO1vSbKCBpkAgCjGIb6KCvA5GL0VHeUDwAQEHkSC2ToBJhKN9KAneim2ekLf1vENf3mjT3vAS295XY2MMgzRpSqTVWpt4ang+ksXynRUQPlkFOu+b6Yw0jBp8krbXbYbjc5mn6KpsNWKtqtcNz0D8xTTQKzthbZYAxLev3NkFgyYWsngBjGo8jg6a9Y3rKR9Pfqun10RvJi9X9foZGvrltMkJgWR7dhI7SSITEaBWIQQTMUSOJkTi5nlqpZUfNKcYD1Do/ZdkbR8UeVpKLSbMVgKLX0flzQYqCrLpll+/vus2IM9+lbdTgWWRLQJqvaq7eHKulgL2ssp7LrpxR2DBI/ja1zXvi7cS1E0Gr0uhy7PUGwPmdkkdjEYOjpGnQRXowC/GBq51eymLRXrsXsTzXX37VlXzeVxoI6m8Gy67oBnzsB6DoQYY7GHM2fbT4oS9zON45lPnwbmww2BL0G89EnfaVPi5eJ3NZFtjc277Wb9M1A+UWG2WZyrj6PMKmLHRoH04iZLuivlsHTmm9/qYJ1r2Z90DtuKYduK6SdNZ3dRRxHAoE+l4HGM6MyIe+0se+zHEfsP4s2sqqnVdSTE/8lCVYMRVsuBVEJOvT3fa1Xr4X2iDZflVFmxyDmpu1r8b9IsVzXUB9w1/l9ccf7WCszaI1ATtUx7oRztk1dtbBcciudJAi83Vv2yaTg9uON6toxLlIM2GVxClo2eVBt5gcOHRwHLIpptC92TeKRi3MjtBkTAOaoU+6P1q364+kdgt/+xh2fRvlOf2p5xR4ut7P4s0sPwY63OguajQWuYqMjUWaA9100ya6yHdHr/BMyxN9QmGa2zjPnbZr17KTy9weKwqXYtqjcMunRkgE9kP+Refvml14hAZw8WFQGmZnnaEi0eLUQTCc+tLSphVyaUH6lAJoXjF1MDiaFSOexNCRKYW8TOkhKzDEDjPDvHHI3c5hXbQLhujhUuPmBYd+N/EaktFsDqoDo4/G0yx70s3SSuXJDIvjMNsIQ7TDqb+/sv8NHGl6BvDAMOnsCpv9PQcP9tS6N294zEnwtNdt2tfTXSz7JGwAqALmbKpr90BaeqA9tlvduWP4/xa0thZcJMNDC6XqrFuy2xGF7YaiQkN7UfhEbMaNkOxQHezh7YVFBsP9TcoybgmzhaExmpxb/78Naf89LmVWthVvvSWh3rZUWtlMFStWENDf5uqEd2LiP/M/fvWEWUntjnTynpI2ainnLdjPUIvL2uGFJvoUQy0taZvPePLqxy0lK6mUo8yp6B+WtdyyTHivdrgLZrhbvAOlWMbQEJtJZ7JuXgRLC+hwe/kb90WvW4U4/PGGRUmLk995J1loWLRhQwVCKkve4JOS8YJASY+P8KQNe/vahGNU8TJRe/eCaaG7ozsrt6Ixu623v/ck0rvlG2EYBoAh6abIxoZ9UeHoNQAiMPKv/8pIi+47EAMHcfLh7dyX8q0Po+Iap94fFob+4fr/DXr96x+j1x2dhZ0dBfRqardjBIZ+M+S6Lo6ojE+4HKF7Kz7zG+eCOkwQ98UfOirDqrckKPVz3sR8srT/gsev3H0p3Rq7wkD1JLE/XZ+2Ze5pV5eqPiqqmBkc1PQYDBvlk5MdqQff21UyInvyhyjMsHXV33tD3zaQ7Us/NKfX44qLQ/8ffOtzXIjnymRNXampDWkGDR5yOyThG2/9UXC6liWEEz0hX+uR1Xg780i4eNOSig3Fk2pSkPpBqrrmx3/+TbB2ya9ePfrGJx98H8rvjKsRQoSh/G0s8cO6bhwwUI8vUz1c21B04cscrjVV1q8zzCVJkmv/T8y21/bLszJpxeqptculJZpleUyKrPX/X3QZBL+rl+hTWuR/2At7LhYVX9BBsULaqi9LWh+6xMDLW6V65dy2gsMbszemQ96XMDvrSfRM60ceo5R/oGDXB0KrxJsTACBhbV48S4Cd5IeyAVdU5Yg+2nPGKS+XAwmOljrwpIdMmdJPexI9ndnIXUIVgety83YzRdXD6E6YvF0gVGJRMhpOyQW6xGM0Zbq7zw8AoAcWAYa7cSOsARF+Fm8DBAAYgDUq07ZSWvm3UIoAAIAfde39SB7Hz+K/xR9vAkMBg0YE8PKEChkH47+9MDggitAdAEObxnBmZAFu5C4eyMxqN/2c3ZUK2qJ+tDUvrTR/BGHDbqZplsDNZVVQjIaim4XA6TE4YLCfEdweIwAKaArx8aN1JETYMNMDEWGYZdRjMJDAB4T7+EEiwAdiBKCBlRQCfnwjEgohbttG2AYb3yS+7tWIDW1rd/6mMedAM+yEHbAvWge0XgNevwdW20Cmdfb6NXBYqm+DtZHUyUW88R/abjA/OxeYpIa9sNmNGMqHbMgd2CAZPzVuOfQFg5H275pWwx73mQMODQAAAA==) format("woff2"),url(./lg.22b72ba5.ttf?io9a6k) format("truetype"),url(./lg.fefc5c0d.woff?io9a6k) format("woff"),url(./lg.f2fe1c00.svg?io9a6k#lg) format("svg");font-weight:400;font-style:normal;font-display:block}.lg-icon{font-family:lg!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg-container{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.lg-next,.lg-prev{background-color:#00000073;border-radius:2px;color:#999;cursor:pointer;display:block;font-size:22px;margin-top:-10px;padding:8px 10px 9px;position:absolute;top:50%;z-index:1084;outline:none;border:none}.lg-next.disabled,.lg-prev.disabled{opacity:0!important;cursor:default}.lg-next:hover:not(.disabled),.lg-prev:hover:not(.disabled){color:#fff}.lg-single-item .lg-next,.lg-single-item .lg-prev{display:none}.lg-next{right:20px}.lg-next:before{content:"\e095"}.lg-prev{left:20px}.lg-prev:after{content:"\e094"}@-webkit-keyframes lg-right-end{0%{left:0}50%{left:-30px}to{left:0}}@-moz-keyframes lg-right-end{0%{left:0}50%{left:-30px}to{left:0}}@-ms-keyframes lg-right-end{0%{left:0}50%{left:-30px}to{left:0}}@keyframes lg-right-end{0%{left:0}50%{left:-30px}to{left:0}}@-webkit-keyframes lg-left-end{0%{left:0}50%{left:30px}to{left:0}}@-moz-keyframes lg-left-end{0%{left:0}50%{left:30px}to{left:0}}@-ms-keyframes lg-left-end{0%{left:0}50%{left:30px}to{left:0}}@keyframes lg-left-end{0%{left:0}50%{left:30px}to{left:0}}.lg-outer.lg-right-end .lg-object{-webkit-animation:lg-right-end .3s;-o-animation:lg-right-end .3s;animation:lg-right-end .3s;position:relative}.lg-outer.lg-left-end .lg-object{-webkit-animation:lg-left-end .3s;-o-animation:lg-left-end .3s;animation:lg-left-end .3s;position:relative}.lg-toolbar{z-index:1082;left:0;position:absolute;top:0;width:100%}.lg-media-overlap .lg-toolbar{background-image:linear-gradient(0deg,rgba(0,0,0,0),rgba(0,0,0,.4))}.lg-toolbar .lg-icon{color:#999;cursor:pointer;float:right;font-size:24px;height:47px;line-height:27px;padding:10px 0;text-align:center;width:50px;text-decoration:none!important;outline:medium none;will-change:color;-webkit-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear;background:none;border:none;box-shadow:none}.lg-toolbar .lg-icon.lg-icon-18{font-size:18px}.lg-toolbar .lg-icon:hover{color:#fff}.lg-toolbar .lg-close:after{content:"\e070"}.lg-toolbar .lg-maximize{font-size:22px}.lg-toolbar .lg-maximize:after{content:"\e90a"}.lg-toolbar .lg-download:after{content:"\e0f2"}.lg-sub-html{color:#eee;font-size:16px;padding:10px 40px;text-align:center;z-index:1080;opacity:0;-webkit-transition:opacity .2s ease-out 0s;-o-transition:opacity .2s ease-out 0s;transition:opacity .2s ease-out 0s}.lg-sub-html h4{margin:0;font-size:13px;font-weight:700}.lg-sub-html p{font-size:12px;margin:5px 0 0}.lg-sub-html a{color:inherit}.lg-sub-html a:hover{text-decoration:underline}.lg-media-overlap .lg-sub-html{background-image:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.6))}.lg-item .lg-sub-html{position:absolute;bottom:0;right:0;left:0}.lg-error-msg{font-size:14px;color:#999}.lg-counter{color:#999;display:inline-block;font-size:16px;padding-left:20px;padding-top:12px;height:47px;vertical-align:middle}.lg-closing .lg-toolbar,.lg-closing .lg-prev,.lg-closing .lg-next,.lg-closing .lg-sub-html{opacity:0;-webkit-transition:-webkit-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;-moz-transition:-moz-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;-o-transition:-o-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;transition:transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-video-cont{opacity:0;-moz-transform:scale3d(.5,.5,.5);-o-transform:scale3d(.5,.5,.5);-ms-transform:scale3d(.5,.5,.5);-webkit-transform:scale3d(.5,.5,.5);transform:scale3d(.5,.5,.5);will-change:transform,opacity;-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1)!important;-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1)!important;-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1)!important;transition:transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1)!important}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-video-cont{opacity:1;-moz-transform:scale3d(1,1,1);-o-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}.lg-icon:focus-visible{color:#fff;border-radius:3px;outline:1px dashed rgba(255,255,255,.6)}.lg-toolbar .lg-icon:focus-visible{border-radius:8px;outline-offset:-5px}.lg-group:after{content:"";display:table;clear:both}.lg-container{display:none;outline:none}.lg-container.lg-show{display:block}.lg-on{scroll-behavior:unset}.lg-overlay-open{overflow:hidden}.lg-toolbar,.lg-prev,.lg-next,.lg-pager-outer,.lg-hide-sub-html .lg-sub-html{opacity:0;will-change:transform,opacity;-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;transition:transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s}.lg-show-in .lg-toolbar,.lg-show-in .lg-prev,.lg-show-in .lg-next,.lg-show-in .lg-pager-outer,.lg-show-in.lg-hide-sub-html .lg-sub-html{opacity:1}.lg-show-in .lg-hide-items .lg-prev{opacity:0;-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}.lg-show-in .lg-hide-items .lg-next{opacity:0;-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}.lg-show-in .lg-hide-items .lg-toolbar{opacity:0;-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html{opacity:0;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}.lg-outer{width:100%;height:100%;position:fixed;top:0;left:0;z-index:1050;text-align:left;opacity:.001;outline:none;will-change:auto;overflow:hidden;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-outer *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.lg-outer.lg-zoom-from-image,.lg-outer.lg-visible{opacity:1}.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide,.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide,.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current{-webkit-transition-duration:inherit!important;transition-duration:inherit!important;-webkit-transition-timing-function:inherit!important;transition-timing-function:inherit!important}.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide,.lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide,.lg-outer.lg-css3.lg-dragging .lg-item.lg-current{-webkit-transition-duration:0s!important;transition-duration:0s!important;opacity:1}.lg-outer.lg-grab img.lg-object{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer.lg-grabbing img.lg-object{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-content{position:absolute;top:0;left:0;right:0;bottom:0}.lg-outer .lg-inner{width:100%;position:absolute;left:0;top:0;bottom:0;-webkit-transition:opacity 0s;-o-transition:opacity 0s;transition:opacity 0s;white-space:nowrap}.lg-outer .lg-item{display:none!important}.lg-outer .lg-item:not(.lg-start-end-progress){background:url(./loading.298ad3ff.gif) no-repeat scroll center center transparent}.lg-outer.lg-css3 .lg-prev-slide,.lg-outer.lg-css3 .lg-current,.lg-outer.lg-css3 .lg-next-slide,.lg-outer.lg-css .lg-current{display:inline-block!important}.lg-outer .lg-item,.lg-outer .lg-img-wrap{display:inline-block;text-align:center;position:absolute;width:100%;height:100%}.lg-outer .lg-item:before,.lg-outer .lg-img-wrap:before{content:"";display:inline-block;height:100%;vertical-align:middle}.lg-outer .lg-img-wrap{position:absolute;left:0;right:0;top:0;bottom:0;white-space:nowrap;font-size:0}.lg-outer .lg-item.lg-complete{background-image:none}.lg-outer .lg-item.lg-current{z-index:1060}.lg-outer .lg-object{display:inline-block;vertical-align:middle;max-width:100%;max-height:100%;width:auto;height:auto;position:relative}.lg-outer .lg-empty-html.lg-sub-html,.lg-outer .lg-empty-html .lg-sub-html{display:none}.lg-outer.lg-hide-download .lg-download{opacity:.75;pointer-events:none}.lg-outer .lg-first-slide .lg-dummy-img{position:absolute;top:50%;left:50%}.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components{-webkit-transform:translate3d(0,0%,0);transform:translateZ(0);opacity:1}.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html{opacity:1;transition:opacity .2s ease-out .15s}.lg-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1040;background-color:#000;opacity:0;will-change:auto;-webkit-transition:opacity 333ms ease-in 0s;-o-transition:opacity 333ms ease-in 0s;transition:opacity 333ms ease-in 0s}.lg-backdrop.in{opacity:1}.lg-css3.lg-no-trans .lg-prev-slide,.lg-css3.lg-no-trans .lg-next-slide,.lg-css3.lg-no-trans .lg-current{-webkit-transition:none 0s ease 0s!important;-moz-transition:none 0s ease 0s!important;-o-transition:none 0s ease 0s!important;transition:none 0s ease 0s!important}.lg-css3.lg-use-css3 .lg-item{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-css3.lg-fade .lg-item{opacity:0}.lg-css3.lg-fade .lg-item.lg-current{opacity:1}.lg-css3.lg-fade .lg-item.lg-prev-slide,.lg-css3.lg-fade .lg-item.lg-next-slide,.lg-css3.lg-fade .lg-item.lg-current{-webkit-transition:opacity .1s ease 0s;-moz-transition:opacity .1s ease 0s;-o-transition:opacity .1s ease 0s;transition:opacity .1s ease 0s}.lg-css3.lg-use-css3 .lg-item.lg-start-progress{-webkit-transition:-webkit-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;-moz-transition:-moz-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;-o-transition:-o-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;transition:transform 1s cubic-bezier(.175,.885,.32,1.275) 0s}.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s}.lg-css3.lg-slide.lg-use-css3 .lg-item{opacity:0}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);opacity:1}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-container{display:none}.lg-container.lg-show{display:block}.lg-container.lg-dragging-vertical .lg-backdrop{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current{-webkit-transition-duration:0s!important;transition-duration:0s!important;opacity:1}.lg-inline .lg-backdrop,.lg-inline .lg-outer{position:absolute}.lg-inline .lg-backdrop{z-index:1}.lg-inline .lg-outer{z-index:2}.lg-inline .lg-maximize:after{content:"\e909"}.lg-components{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);will-change:transform;-webkit-transition:-webkit-transform .35s ease-out 0s;-moz-transition:-moz-transform .35s ease-out 0s;-o-transition:-o-transform .35s ease-out 0s;transition:transform .35s ease-out 0s;z-index:1080;position:absolute;bottom:0;right:0;left:0}.lg-outer .lg-thumb-outer{background-color:#0d0a0a;width:100%;max-height:350px;overflow:hidden;float:left}.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb,.lg-outer .lg-thumb-outer.lg-rebuilding-thumbnails .lg-thumb{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer .lg-thumb-outer.lg-thumb-align-middle{text-align:center}.lg-outer .lg-thumb-outer.lg-thumb-align-left{text-align:left}.lg-outer .lg-thumb-outer.lg-thumb-align-right{text-align:right}.lg-outer.lg-single-item .lg-thumb-outer{display:none}.lg-outer .lg-thumb{padding:5px 0;height:100%;margin-bottom:-5px;display:inline-block;vertical-align:middle}@media (min-width: 768px){.lg-outer .lg-thumb{padding:10px 0}}.lg-outer .lg-thumb-item{cursor:pointer;float:left;overflow:hidden;height:100%;border-radius:2px;margin-bottom:5px;will-change:border-color}@media (min-width: 768px){.lg-outer .lg-thumb-item{border-radius:4px;border:2px solid #fff;-webkit-transition:border-color .25s ease;-o-transition:border-color .25s ease;transition:border-color .25s ease}}.lg-outer .lg-thumb-item.active,.lg-outer .lg-thumb-item:hover{border-color:#a90707}.lg-outer .lg-thumb-item img{width:100%;height:100%;object-fit:cover;display:block}.lg-outer.lg-can-toggle .lg-item{padding-bottom:0}.lg-outer .lg-toggle-thumb:after{content:"\e1ff"}.lg-outer.lg-animate-thumb .lg-thumb{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap,.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image{-webkit-transition-duration:0ms!important;transition-duration:0ms!important}.lg-outer.lg-use-transition-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap{will-change:transform;-webkit-transition:-webkit-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;-moz-transition:-moz-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;-o-transition:-o-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;transition:transform .5s cubic-bezier(.12,.415,.01,1.19) 0s}.lg-outer.lg-use-transition-for-zoom.lg-zoom-drag-transition .lg-item.lg-complete.lg-zoomable .lg-img-wrap{will-change:transform;-webkit-transition:-webkit-transform .8s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .8s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .8s cubic-bezier(0,0,.25,1) 0s;transition:transform .8s cubic-bezier(0,0,.25,1) 0s}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1);-webkit-transition:-webkit-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-moz-transition:-moz-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-o-transition:-o-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;transition:transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.no-transition,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.no-transition{transition:none!important}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition{transform:scaleZ(1) translate3d(-50%,-50%,0)!important;max-width:none!important;max-height:none!important;top:50%!important;left:50%!important}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-x,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-x{transform:scaleZ(1) translate3d(-50%,0,0)!important;top:0!important;left:50%!important;max-width:none!important;max-height:none!important}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-y,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-y{transform:scaleZ(1) translate3d(0,-50%,0)!important;top:50%!important;left:0%!important;max-width:none!important;max-height:none!important}.lg-icon.lg-zoom-in:after{content:"\e311"}.lg-actual-size .lg-icon.lg-zoom-in{opacity:.5;pointer-events:none}.lg-icon.lg-actual-size{font-size:20px}.lg-icon.lg-actual-size:after{content:"\e033"}.lg-icon.lg-zoom-out{opacity:.5;pointer-events:none}.lg-icon.lg-zoom-out:after{content:"\e312"}.lg-zoomed .lg-icon.lg-zoom-out{opacity:1;pointer-events:auto}.lg-outer[data-lg-slide-type=video] .lg-zoom-in,.lg-outer[data-lg-slide-type=video] .lg-actual-size,.lg-outer[data-lg-slide-type=video] .lg-zoom-out,.lg-outer[data-lg-slide-type=iframe] .lg-zoom-in,.lg-outer[data-lg-slide-type=iframe] .lg-actual-size,.lg-outer[data-lg-slide-type=iframe] .lg-zoom-out,.lg-outer.lg-first-slide-loading .lg-zoom-in,.lg-outer.lg-first-slide-loading .lg-actual-size,.lg-outer.lg-first-slide-loading .lg-zoom-out{opacity:.75;pointer-events:none}#lg-outer-1,.lg-backdrop{max-height:640px}.gallery-item{width:200px;padding:5px}.gallery-container{width:500px;height:500px;margin:0 auto}.hide-img{max-width:0px;max-height:0px}#lightgallery{min-height:640px}.lg-backdrop{background-color:var(--background-color)}.lg-next,.lg-prev{background-color:var(--secondary-background-color);color:var(--text-color)}.lg-toolbar .lg-icon{color:var(--text-color)}.lg-toolbar .lg-icon:hover{color:var(--primary-color)}.lg-next:hover:not(.disabled),.lg-prev:hover:not(.disabled){color:var(--primary-color)}.lg-outer .lg-thumb-outer{background-color:var(--secondary-background-color)}.lg-sub-html{color:var(--text-color)}.lg-outer .lg-thumb-item.active,.lg-outer .lg-thumb-item:hover{border:2px solid var(--primary-color)}.err__title[data-v-4d5bb78e],.err__msg[data-v-4d5bb78e]{margin:0} diff --git a/frontend/dists/sd-gallery/dist/assets/index.aeaed602.js b/frontend/dists/sd-gallery/dist/assets/index.aeaed602.js new file mode 100644 index 0000000..b31940d --- /dev/null +++ b/frontend/dists/sd-gallery/dist/assets/index.aeaed602.js @@ -0,0 +1,216 @@ +const zm=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerpolicy&&(o.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?o.credentials="include":i.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}};zm();function fr(e,t){const n=Object.create(null),r=e.split(",");for(let i=0;i!!n[i.toLowerCase()]:i=>!!n[i]}const km="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt",Hm=fr(km),Wm="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Ym=fr(Wm);function Dd(e){return!!e||e===""}function no(e){if(vt(e)){const t={};for(let n=0;n{if(n){const r=n.split(Km);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function ro(e){let t="";if(xe(e))t=e;else if(vt(e))for(let n=0;nPr(n,t))}const Rd=e=>xe(e)?e:e==null?"":vt(e)||re(e)&&(e.toString===Ld||!At(e.toString))?JSON.stringify(e,Md,2):String(e),Md=(e,t)=>t&&t.__v_isRef?Md(e,t.value):ri(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,i])=>(n[`${r} =>`]=i,n),{})}:yi(t)?{[`Set(${t.size})`]:[...t.values()]}:re(t)&&!vt(t)&&!_d(t)?String(t):t,ee=Object.freeze({}),Mi=Object.freeze([]),qe=()=>{},Pd=()=>!1,ny=/^on[^a-z]/,ss=e=>ny.test(e),Jo=e=>e.startsWith("onUpdate:"),ve=Object.assign,Tc=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},ry=Object.prototype.hasOwnProperty,Xt=(e,t)=>ry.call(e,t),vt=Array.isArray,ri=e=>io(e)==="[object Map]",yi=e=>io(e)==="[object Set]",lf=e=>io(e)==="[object Date]",At=e=>typeof e=="function",xe=e=>typeof e=="string",Ns=e=>typeof e=="symbol",re=e=>e!==null&&typeof e=="object",Ca=e=>re(e)&&At(e.then)&&At(e.catch),Ld=Object.prototype.toString,io=e=>Ld.call(e),xc=e=>io(e).slice(8,-1),_d=e=>io(e)==="[object Object]",Oc=e=>xe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ss=fr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),iy=fr("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),Ba=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},sy=/-(\w)/g,gn=Ba(e=>e.replace(sy,(t,n)=>n?n.toUpperCase():"")),oy=/\B([A-Z])/g,In=Ba(e=>e.replace(oy,"-$1").toLowerCase()),Lr=Ba(e=>e.charAt(0).toUpperCase()+e.slice(1)),rr=Ba(e=>e?`on${Lr(e)}`:""),ki=(e,t)=>!Object.is(e,t),xr=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},_r=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let cf;const Nd=()=>cf||(cf=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});function Qo(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let un;class Ac{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&un&&(this.parent=un,this.index=(un.scopes||(un.scopes=[])).push(this)-1)}run(t){if(this.active){const n=un;try{return un=this,t()}finally{un=n}}else Qo("cannot run an inactive effect scope.")}on(){un=this}off(){un=this.parent}stop(t){if(this.active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},jd=e=>(e.w&Nr)>0,$d=e=>(e.n&Nr)>0,uy=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(f==="length"||f>=r)&&a.push(c)});else switch(n!==void 0&&a.push(s.get(n)),t){case"add":vt(e)?Oc(n)&&a.push(s.get("length")):(a.push(s.get(ii)),ri(e)&&a.push(s.get(kl)));break;case"delete":vt(e)||(a.push(s.get(ii)),ri(e)&&a.push(s.get(kl)));break;case"set":ri(e)&&a.push(s.get(ii));break}const l={target:e,type:t,key:n,newValue:r,oldValue:i,oldTarget:o};if(a.length===1)a[0]&&Hl(a[0],l);else{const c=[];for(const f of a)f&&c.push(...f);Hl(Ec(c),l)}}function Hl(e,t){const n=vt(e)?e:[...e];for(const r of n)r.computed&&ff(r,t);for(const r of n)r.computed||ff(r,t)}function ff(e,t){(e!==Xe||e.allowRecurse)&&(e.onTrigger&&e.onTrigger(ve({effect:e},t)),e.scheduler?e.scheduler():e.run())}const py=fr("__proto__,__v_isRef,__isVue"),kd=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ns)),gy=Fa(),my=Fa(!1,!0),yy=Fa(!0),vy=Fa(!0,!0),df=by();function by(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=$t(this);for(let o=0,s=this.length;o{e[t]=function(...n){vi();const r=$t(this)[t].apply(this,n);return bi(),r}}),e}function Fa(e=!1,t=!1){return function(r,i,o){if(i==="__v_isReactive")return!e;if(i==="__v_isReadonly")return e;if(i==="__v_isShallow")return t;if(i==="__v_raw"&&o===(e?t?Zd:Jd:t?Xd:Kd).get(r))return r;const s=vt(r);if(!e&&s&&Xt(df,i))return Reflect.get(df,i,o);const a=Reflect.get(r,i,o);return(Ns(i)?kd.has(i):py(i))||(e||mn(r,"get",i),t)?a:Pe(a)?s&&Oc(i)?a:a.value:re(a)?e?Bc(a):Ma(a):a}}const wy=Hd(),Sy=Hd(!0);function Hd(e=!1){return function(n,r,i,o){let s=n[r];if(lr(s)&&Pe(s)&&!Pe(i))return!1;if(!e&&(!Us(i)&&!lr(i)&&(s=$t(s),i=$t(i)),!vt(n)&&Pe(s)&&!Pe(i)))return s.value=i,!0;const a=vt(n)&&Oc(r)?Number(r)e,Da=e=>Reflect.getPrototypeOf(e);function Eo(e,t,n=!1,r=!1){e=e.__v_raw;const i=$t(e),o=$t(t);n||(t!==o&&mn(i,"get",t),mn(i,"get",o));const{has:s}=Da(i),a=r?Cc:n?Dc:$s;if(s.call(i,t))return a(e.get(t));if(s.call(i,o))return a(e.get(o));e!==i&&e.get(t)}function Co(e,t=!1){const n=this.__v_raw,r=$t(n),i=$t(e);return t||(e!==i&&mn(r,"has",e),mn(r,"has",i)),e===i?n.has(e):n.has(e)||n.has(i)}function Bo(e,t=!1){return e=e.__v_raw,!t&&mn($t(e),"iterate",ii),Reflect.get(e,"size",e)}function hf(e){e=$t(e);const t=$t(this);return Da(t).has.call(t,e)||(t.add(e),ar(t,"add",e,e)),this}function pf(e,t){t=$t(t);const n=$t(this),{has:r,get:i}=Da(n);let o=r.call(n,e);o?Gd(n,r,e):(e=$t(e),o=r.call(n,e));const s=i.call(n,e);return n.set(e,t),o?ki(t,s)&&ar(n,"set",e,t,s):ar(n,"add",e,t),this}function gf(e){const t=$t(this),{has:n,get:r}=Da(t);let i=n.call(t,e);i?Gd(t,n,e):(e=$t(e),i=n.call(t,e));const o=r?r.call(t,e):void 0,s=t.delete(e);return i&&ar(t,"delete",e,void 0,o),s}function mf(){const e=$t(this),t=e.size!==0,n=ri(e)?new Map(e):new Set(e),r=e.clear();return t&&ar(e,"clear",void 0,void 0,n),r}function Fo(e,t){return function(r,i){const o=this,s=o.__v_raw,a=$t(s),l=t?Cc:e?Dc:$s;return!e&&mn(a,"iterate",ii),s.forEach((c,f)=>r.call(i,l(c),l(f),o))}}function Do(e,t,n){return function(...r){const i=this.__v_raw,o=$t(i),s=ri(o),a=e==="entries"||e===Symbol.iterator&&s,l=e==="keys"&&s,c=i[e](...r),f=n?Cc:t?Dc:$s;return!t&&mn(o,"iterate",l?kl:ii),{next(){const{value:d,done:h}=c.next();return h?{value:d,done:h}:{value:a?[f(d[0]),f(d[1])]:f(d),done:h}},[Symbol.iterator](){return this}}}}function mr(e){return function(...t){{const n=t[0]?`on key "${t[0]}" `:"";console.warn(`${Lr(e)} operation ${n}failed: target is readonly.`,$t(this))}return e==="delete"?!1:this}}function Ey(){const e={get(o){return Eo(this,o)},get size(){return Bo(this)},has:Co,add:hf,set:pf,delete:gf,clear:mf,forEach:Fo(!1,!1)},t={get(o){return Eo(this,o,!1,!0)},get size(){return Bo(this)},has:Co,add:hf,set:pf,delete:gf,clear:mf,forEach:Fo(!1,!0)},n={get(o){return Eo(this,o,!0)},get size(){return Bo(this,!0)},has(o){return Co.call(this,o,!0)},add:mr("add"),set:mr("set"),delete:mr("delete"),clear:mr("clear"),forEach:Fo(!0,!1)},r={get(o){return Eo(this,o,!0,!0)},get size(){return Bo(this,!0)},has(o){return Co.call(this,o,!0)},add:mr("add"),set:mr("set"),delete:mr("delete"),clear:mr("clear"),forEach:Fo(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Do(o,!1,!1),n[o]=Do(o,!0,!1),t[o]=Do(o,!1,!0),r[o]=Do(o,!0,!0)}),[e,n,t,r]}const[Cy,By,Fy,Dy]=Ey();function Ra(e,t){const n=t?e?Dy:Fy:e?By:Cy;return(r,i,o)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?r:Reflect.get(Xt(n,i)&&i in r?n:r,i,o)}const Ry={get:Ra(!1,!1)},My={get:Ra(!1,!0)},Py={get:Ra(!0,!1)},Ly={get:Ra(!0,!0)};function Gd(e,t,n){const r=$t(n);if(r!==n&&t.call(e,r)){const i=xc(e);console.warn(`Reactive ${i} contains both the raw and reactive versions of the same object${i==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}const Kd=new WeakMap,Xd=new WeakMap,Jd=new WeakMap,Zd=new WeakMap;function _y(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ny(e){return e.__v_skip||!Object.isExtensible(e)?0:_y(xc(e))}function Ma(e){return lr(e)?e:Pa(e,!1,Wd,Ry,Kd)}function Qd(e){return Pa(e,!1,Oy,My,Xd)}function Bc(e){return Pa(e,!0,Yd,Py,Jd)}function ti(e){return Pa(e,!0,Ay,Ly,Zd)}function Pa(e,t,n,r,i){if(!re(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=i.get(e);if(o)return o;const s=Ny(e);if(s===0)return e;const a=new Proxy(e,s===2?r:n);return i.set(e,a),a}function Br(e){return lr(e)?Br(e.__v_raw):!!(e&&e.__v_isReactive)}function lr(e){return!!(e&&e.__v_isReadonly)}function Us(e){return!!(e&&e.__v_isShallow)}function js(e){return Br(e)||lr(e)}function $t(e){const t=e&&e.__v_raw;return t?$t(t):e}function Fc(e){return Zo(e,"__v_skip",!0),e}const $s=e=>re(e)?Ma(e):e,Dc=e=>re(e)?Bc(e):e;function Rc(e){Cr&&Xe&&(e=$t(e),zd(e.dep||(e.dep=Ec()),{target:e,type:"get",key:"value"}))}function La(e,t){e=$t(e),e.dep&&Hl(e.dep,{target:e,type:"set",key:"value",newValue:t})}function Pe(e){return!!(e&&e.__v_isRef===!0)}function Pi(e){return qd(e,!1)}function Uy(e){return qd(e,!0)}function qd(e,t){return Pe(e)?e:new jy(e,t)}class jy{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:$t(t),this._value=n?t:$s(t)}get value(){return Rc(this),this._value}set value(t){const n=this.__v_isShallow||Us(t)||lr(t);t=n?t:$t(t),ki(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:$s(t),La(this,t))}}function $y(e){La(e,e.value)}function Mc(e){return Pe(e)?e.value:e}const Vy={get:(e,t,n)=>Mc(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const i=e[t];return Pe(i)&&!Pe(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function Pc(e){return Br(e)?e:new Proxy(e,Vy)}class zy{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Rc(this),()=>La(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function ky(e){return new zy(e)}function Hy(e){js(e)||console.warn("toRefs() expects a reactive object but received a plain one.");const t=vt(e)?new Array(e.length):{};for(const n in e)t[n]=th(e,n);return t}class Wy{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function th(e,t,n){const r=e[t];return Pe(r)?r:new Wy(e,t,n)}var eh;class Yy{constructor(t,n,r,i){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[eh]=!1,this._dirty=!0,this.effect=new so(t,()=>{this._dirty||(this._dirty=!0,La(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!i,this.__v_isReadonly=r}get value(){const t=$t(this);return Rc(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}eh="__v_isReadonly";function Gy(e,t,n=!1){let r,i;const o=At(e);o?(r=e,i=()=>{console.warn("Write operation failed: computed value is readonly")}):(r=e.get,i=e.set);const s=new Yy(r,i,o||!i,n);return t&&!n&&(s.effect.onTrack=t.onTrack,s.effect.onTrigger=t.onTrigger),s}const si=[];function Is(e){si.push(e)}function Ts(){si.pop()}function G(e,...t){vi();const n=si.length?si[si.length-1].component:null,r=n&&n.appContext.config.warnHandler,i=Ky();if(r)Yn(r,n,11,[e+t.join(""),n&&n.proxy,i.map(({vnode:o})=>`at <${Wa(n,o.type)}>`).join(` +`),i]);else{const o=[`[Vue warn]: ${e}`,...t];i.length&&o.push(` +`,...Xy(i)),console.warn(...o)}bi()}function Ky(){let e=si[si.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const r=e.component&&e.component.parent;e=r&&r.vnode}return t}function Xy(e){const t=[];return e.forEach((n,r)=>{t.push(...r===0?[]:[` +`],...Jy(n))}),t}function Jy({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",r=e.component?e.component.parent==null:!1,i=` at <${Wa(e.component,e.type,r)}`,o=">"+n;return e.props?[i,...Zy(e.props),o]:[i+o]}function Zy(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(r=>{t.push(...nh(r,e[r]))}),n.length>3&&t.push(" ..."),t}function nh(e,t,n){return xe(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:Pe(t)?(t=nh(e,$t(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):At(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=$t(t),n?t:[`${e}=`,t])}const Lc={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",[0]:"setup function",[1]:"render function",[2]:"watcher getter",[3]:"watcher callback",[4]:"watcher cleanup function",[5]:"native event handler",[6]:"component event handler",[7]:"vnode hook",[8]:"directive hook",[9]:"transition hook",[10]:"app errorHandler",[11]:"app warnHandler",[12]:"ref function",[13]:"async component loader",[14]:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function Yn(e,t,n,r){let i;try{i=r?e(...r):e()}catch(o){wi(o,t,n)}return i}function hn(e,t,n,r){if(At(e)){const o=Yn(e,t,n,r);return o&&Ca(o)&&o.catch(s=>{wi(s,t,n)}),o}const i=[];for(let o=0;o>>1;Vs(We[r])kn&&We.splice(t,1)}function _a(e){vt(e)?Li.push(...e):(!Vn||!Vn.includes(e,e.allowRecurse?Ir+1:Ir))&&Li.push(e),ih()}function yf(e,t=kn){for(e=e||new Map;tVs(n)-Vs(r)),Ir=0;Ire.id==null?1/0:e.id,nv=(e,t)=>{const n=Vs(e)-Vs(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function sh(e){Wl=!1,qo=!0,e=e||new Map,We.sort(nv);const t=n=>Uc(e,n);try{for(kn=0;knqy){const r=t.ownerInstance,i=r&&Hs(r.type);return G(`Maximum recursive updates exceeded${i?` in component <${i}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`),!0}else e.set(t,n+1)}}let Fr=!1;const Bi=new Set;Nd().__VUE_HMR_RUNTIME__={createRecord:bl(oh),rerender:bl(sv),reload:bl(ov)};const li=new Map;function rv(e){const t=e.type.__hmrId;let n=li.get(t);n||(oh(t,e.type),n=li.get(t)),n.instances.add(e)}function iv(e){li.get(e.type.__hmrId).instances.delete(e)}function oh(e,t){return li.has(e)?!1:(li.set(e,{initialDef:xs(t),instances:new Set}),!0)}function xs(e){return tp(e)?e.__vccOpts:e}function sv(e,t){const n=li.get(e);!n||(n.initialDef.render=t,[...n.instances].forEach(r=>{t&&(r.render=t,xs(r.type).render=t),r.renderCache=[],Fr=!0,r.update(),Fr=!1}))}function ov(e,t){const n=li.get(e);if(!n)return;t=xs(t),vf(n.initialDef,t);const r=[...n.instances];for(const i of r){const o=xs(i.type);Bi.has(o)||(o!==n.initialDef&&vf(o,t),Bi.add(o)),i.appContext.optionsCache.delete(i.type),i.ceReload?(Bi.add(o),i.ceReload(t.styles),Bi.delete(o)):i.parent?(oo(i.parent.update),i.parent.type.__asyncLoader&&i.parent.ceReload&&i.parent.ceReload(t.styles)):i.appContext.reload?i.appContext.reload():typeof window!="undefined"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}_a(()=>{for(const i of r)Bi.delete(xs(i.type))})}function vf(e,t){ve(e,t);for(const n in e)n!=="__file"&&!(n in t)&&delete e[n]}function bl(e){return(t,n)=>{try{return e(t,n)}catch(r){console.error(r),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Or,bs=[],Yl=!1;function ao(e,...t){Or?Or.emit(e,...t):Yl||bs.push({event:e,args:t})}function jc(e,t){var n,r;Or=e,Or?(Or.enabled=!0,bs.forEach(({event:i,args:o})=>Or.emit(i,...o)),bs=[]):typeof window!="undefined"&&window.HTMLElement&&!(!((r=(n=window.navigator)===null||n===void 0?void 0:n.userAgent)===null||r===void 0)&&r.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(o=>{jc(o,t)}),setTimeout(()=>{Or||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Yl=!0,bs=[])},3e3)):(Yl=!0,bs=[])}function av(e,t){ao("app:init",e,t,{Fragment:Re,Text:ui,Comment:De,Static:Dr})}function lv(e){ao("app:unmount",e)}const Gl=$c("component:added"),ah=$c("component:updated"),cv=$c("component:removed");function $c(e){return t=>{ao(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const uv=lh("perf:start"),fv=lh("perf:end");function lh(e){return(t,n,r)=>{ao(e,t.appContext.app,t.uid,t,n,r)}}function dv(e,t,n){ao("component:emit",e.appContext.app,e,t,n)}function hv(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ee;{const{emitsOptions:f,propsOptions:[d]}=e;if(f)if(!(t in f))(!d||!(rr(t)in d))&&G(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${rr(t)}" prop.`);else{const h=f[t];At(h)&&(h(...n)||G(`Invalid event arguments: event validation failed for event "${t}".`))}}let i=n;const o=t.startsWith("update:"),s=o&&t.slice(7);if(s&&s in r){const f=`${s==="modelValue"?"model":s}Modifiers`,{number:d,trim:h}=r[f]||ee;h&&(i=n.map(p=>p.trim())),d&&(i=n.map(_r))}dv(e,t,i);{const f=t.toLowerCase();f!==t&&r[rr(f)]&&G(`Event "${f}" is emitted in component ${Wa(e,e.type)} but the handler is registered for "${t}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${In(t)}" instead of "${t}".`)}let a,l=r[a=rr(t)]||r[a=rr(gn(t))];!l&&o&&(l=r[a=rr(In(t))]),l&&hn(l,e,6,i);const c=r[a+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,hn(c,e,6,i)}}function ch(e,t,n=!1){const r=t.emitsCache,i=r.get(e);if(i!==void 0)return i;const o=e.emits;let s={},a=!1;if(!At(e)){const l=c=>{const f=ch(c,t,!0);f&&(a=!0,ve(s,f))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!a?(re(e)&&r.set(e,null),null):(vt(o)?o.forEach(l=>s[l]=null):ve(s,o),re(e)&&r.set(e,s),s)}function Na(e,t){return!e||!ss(t)?!1:(t=t.slice(2).replace(/Once$/,""),Xt(e,t[0].toLowerCase()+t.slice(1))||Xt(e,In(t))||Xt(e,t))}let Ne=null,Ua=null;function zs(e){const t=Ne;return Ne=e,Ua=e&&e.type.__scopeId||null,t}function uh(e){Ua=e}function fh(){Ua=null}const pv=e=>lo;function lo(e,t=Ne,n){if(!t||e._n)return e;const r=(...i)=>{r._d&&nc(-1);const o=zs(t),s=e(...i);return zs(o),r._d&&nc(1),ah(t),s};return r._n=!0,r._c=!0,r._d=!0,r}let Kl=!1;function ea(){Kl=!0}function Vo(e){const{type:t,vnode:n,proxy:r,withProxy:i,props:o,propsOptions:[s],slots:a,attrs:l,emit:c,render:f,renderCache:d,data:h,setupState:p,ctx:b,inheritAttrs:A}=e;let F,O;const m=zs(e);Kl=!1;try{if(n.shapeFlag&4){const N=i||r;F=Qe(f.call(N,N,d,o,p,h,b)),O=l}else{const N=t;l===o&&ea(),F=Qe(N.length>1?N(o,{get attrs(){return ea(),l},slots:a,emit:c}):N(o,null)),O=t.props?l:mv(l)}}catch(N){Bs.length=0,wi(N,e,1),F=me(De)}let I=F,E;if(F.patchFlag>0&&F.patchFlag&2048&&([I,E]=gv(F)),O&&A!==!1){const N=Object.keys(O),{shapeFlag:P}=I;if(N.length){if(P&7)s&&N.some(Jo)&&(O=yv(O,s)),I=xn(I,O);else if(!Kl&&I.type!==De){const R=Object.keys(l),C=[],L=[];for(let U=0,z=R.length;U renders non-element root node that cannot be animated."),I.transition=n.transition),E?E(I):F=I,zs(m),F}const gv=e=>{const t=e.children,n=e.dynamicChildren,r=Vc(t);if(!r)return[e,void 0];const i=t.indexOf(r),o=n?n.indexOf(r):-1,s=a=>{t[i]=a,n&&(o>-1?n[o]=a:a.patchFlag>0&&(e.dynamicChildren=[...n,a]))};return[Qe(r),s]};function Vc(e){let t;for(let n=0;n{let t;for(const n in e)(n==="class"||n==="style"||ss(n))&&((t||(t={}))[n]=e[n]);return t},yv=(e,t)=>{const n={};for(const r in e)(!Jo(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n},bf=e=>e.shapeFlag&7||e.type===De;function vv(e,t,n){const{props:r,children:i,component:o}=e,{props:s,children:a,patchFlag:l}=t,c=o.emitsOptions;if((i||a)&&Fr||t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?wf(r,s,c):!!s;if(l&8){const f=t.dynamicProps;for(let d=0;de.__isSuspense,bv={name:"Suspense",__isSuspense:!0,process(e,t,n,r,i,o,s,a,l,c){e==null?Sv(t,n,r,i,o,s,a,l,c):Iv(e,t,n,r,i,s,a,l,c)},hydrate:Tv,create:kc,normalize:xv},wv=bv;function ks(e,t){const n=e.props&&e.props[t];At(n)&&n()}function Sv(e,t,n,r,i,o,s,a,l){const{p:c,o:{createElement:f}}=l,d=f("div"),h=e.suspense=kc(e,i,r,t,d,n,o,s,a,l);c(null,h.pendingBranch=e.ssContent,d,null,r,h,o,s),h.deps>0?(ks(e,"onPending"),ks(e,"onFallback"),c(null,e.ssFallback,t,n,r,null,o,s),_i(h,e.ssFallback)):h.resolve()}function Iv(e,t,n,r,i,o,s,a,{p:l,um:c,o:{createElement:f}}){const d=t.suspense=e.suspense;d.vnode=t,t.el=e.el;const h=t.ssContent,p=t.ssFallback,{activeBranch:b,pendingBranch:A,isInFallback:F,isHydrating:O}=d;if(A)d.pendingBranch=h,Hn(h,A)?(l(A,h,d.hiddenContainer,null,i,d,o,s,a),d.deps<=0?d.resolve():F&&(l(b,p,n,r,i,null,o,s,a),_i(d,p))):(d.pendingId++,O?(d.isHydrating=!1,d.activeBranch=A):c(A,i,d),d.deps=0,d.effects.length=0,d.hiddenContainer=f("div"),F?(l(null,h,d.hiddenContainer,null,i,d,o,s,a),d.deps<=0?d.resolve():(l(b,p,n,r,i,null,o,s,a),_i(d,p))):b&&Hn(h,b)?(l(b,h,n,r,i,d,o,s,a),d.resolve(!0)):(l(null,h,d.hiddenContainer,null,i,d,o,s,a),d.deps<=0&&d.resolve()));else if(b&&Hn(h,b))l(b,h,n,r,i,d,o,s,a),_i(d,h);else if(ks(t,"onPending"),d.pendingBranch=h,d.pendingId++,l(null,h,d.hiddenContainer,null,i,d,o,s,a),d.deps<=0)d.resolve();else{const{timeout:m,pendingId:I}=d;m>0?setTimeout(()=>{d.pendingId===I&&d.fallback(p)},m):m===0&&d.fallback(p)}}let Sf=!1;function kc(e,t,n,r,i,o,s,a,l,c,f=!1){Sf||(Sf=!0,console[console.info?"info":"log"](" is an experimental feature and its API will likely change."));const{p:d,m:h,um:p,n:b,o:{parentNode:A,remove:F}}=c,O=_r(e.props&&e.props.timeout),m={vnode:e,parent:t,parentComponent:n,isSVG:s,container:r,hiddenContainer:i,anchor:o,deps:0,pendingId:0,timeout:typeof O=="number"?O:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:f,isUnmounted:!1,effects:[],resolve(I=!1){{if(!I&&!m.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(m.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.")}const{vnode:E,activeBranch:N,pendingBranch:P,pendingId:R,effects:C,parentComponent:L,container:U}=m;if(m.isHydrating)m.isHydrating=!1;else if(!I){const rt=N&&P.transition&&P.transition.mode==="out-in";rt&&(N.transition.afterLeave=()=>{R===m.pendingId&&h(P,U,Q,0)});let{anchor:Q}=m;N&&(Q=b(N),p(N,L,m,!0)),rt||h(P,U,Q,0)}_i(m,P),m.pendingBranch=null,m.isInFallback=!1;let z=m.parent,V=!1;for(;z;){if(z.pendingBranch){z.effects.push(...C),V=!0;break}z=z.parent}V||_a(C),m.effects=[],ks(E,"onResolve")},fallback(I){if(!m.pendingBranch)return;const{vnode:E,activeBranch:N,parentComponent:P,container:R,isSVG:C}=m;ks(E,"onFallback");const L=b(N),U=()=>{!m.isInFallback||(d(null,I,R,L,P,null,C,a,l),_i(m,I))},z=I.transition&&I.transition.mode==="out-in";z&&(N.transition.afterLeave=U),m.isInFallback=!0,p(N,P,null,!0),z||U()},move(I,E,N){m.activeBranch&&h(m.activeBranch,I,E,N),m.container=I},next(){return m.activeBranch&&b(m.activeBranch)},registerDep(I,E){const N=!!m.pendingBranch;N&&m.deps++;const P=I.vnode.el;I.asyncDep.catch(R=>{wi(R,I,0)}).then(R=>{if(I.isUnmounted||m.isUnmounted||m.pendingId!==I.suspenseId)return;I.asyncResolved=!0;const{vnode:C}=I;Is(C),sc(I,R,!1),P&&(C.el=P);const L=!P&&I.subTree.el;E(I,C,A(P||I.subTree.el),P?null:b(I.subTree),m,s,l),L&&F(L),zc(I,C.el),Ts(),N&&--m.deps===0&&m.resolve()})},unmount(I,E){m.isUnmounted=!0,m.activeBranch&&p(m.activeBranch,n,I,E),m.pendingBranch&&p(m.pendingBranch,n,I,E)}};return m}function Tv(e,t,n,r,i,o,s,a,l){const c=t.suspense=kc(t,r,n,e.parentNode,document.createElement("div"),null,i,o,s,a,!0),f=l(e,c.pendingBranch=t.ssContent,n,c,o,s);return c.deps===0&&c.resolve(),f}function xv(e){const{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=If(r?n.default:n),e.ssFallback=r?If(n.fallback):me(De)}function If(e){let t;if(At(e)){const n=fi&&e._c;n&&(e._d=!1,Fn()),e=e(),n&&(e._d=!0,t=tn,kh())}if(vt(e)){const n=Vc(e);n||G(" slots expect a single root node."),e=n}return e=Qe(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function hh(e,t){t&&t.pendingBranch?vt(e)?t.effects.push(...e):t.effects.push(e):_a(e)}function _i(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e,i=n.el=t.el;r&&r.subTree===n&&(r.vnode.el=i,zc(r,i))}function ph(e,t){if(!Me)G("provide() can only be used inside setup().");else{let n=Me.provides;const r=Me.parent&&Me.parent.provides;r===n&&(n=Me.provides=Object.create(r)),n[e]=t}}function Os(e,t,n=!1){const r=Me||Ne;if(r){const i=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(i&&e in i)return i[e];if(arguments.length>1)return n&&At(t)?t.call(r.proxy):t;G(`injection "${String(e)}" not found.`)}else G("inject() can only be used inside setup() or functional components.")}function Ov(e,t){return co(e,null,t)}function gh(e,t){return co(e,null,Object.assign(Object.assign({},t),{flush:"post"}))}function Av(e,t){return co(e,null,Object.assign(Object.assign({},t),{flush:"sync"}))}const Tf={};function As(e,t,n){return At(t)||G("`watch(fn, options?)` signature has been moved to a separate API. Use `watchEffect(fn, options?)` instead. `watch` now only supports `watch(source, cb, options?) signature."),co(e,t,n)}function co(e,t,{immediate:n,deep:r,flush:i,onTrack:o,onTrigger:s}=ee){t||(n!==void 0&&G('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),r!==void 0&&G('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'));const a=m=>{G("Invalid watch source: ",m,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},l=Me;let c,f=!1,d=!1;if(Pe(e)?(c=()=>e.value,f=Us(e)):Br(e)?(c=()=>e,r=!0):vt(e)?(d=!0,f=e.some(m=>Br(m)||Us(m)),c=()=>e.map(m=>{if(Pe(m))return m.value;if(Br(m))return ei(m);if(At(m))return Yn(m,l,2);a(m)})):At(e)?t?c=()=>Yn(e,l,2):c=()=>{if(!(l&&l.isUnmounted))return h&&h(),hn(e,l,3,[p])}:(c=qe,a(e)),t&&r){const m=c;c=()=>ei(m())}let h,p=m=>{h=O.onStop=()=>{Yn(m,l,4)}};if(Yi)return p=qe,t?n&&hn(t,l,3,[c(),d?[]:void 0,p]):c(),qe;let b=d?[]:Tf;const A=()=>{if(!!O.active)if(t){const m=O.run();(r||f||(d?m.some((I,E)=>ki(I,b[E])):ki(m,b)))&&(h&&h(),hn(t,l,3,[m,b===Tf?void 0:b,p]),b=m)}else O.run()};A.allowRecurse=!!t;let F;i==="sync"?F=A:i==="post"?F=()=>Ve(A,l&&l.suspense):(A.pre=!0,l&&(A.id=l.uid),F=()=>oo(A));const O=new so(c,F);return O.onTrack=o,O.onTrigger=s,t?n?A():b=O.run():i==="post"?Ve(O.run.bind(O),l&&l.suspense):O.run(),()=>{O.stop(),l&&l.scope&&Tc(l.scope.effects,O)}}function Ev(e,t,n){const r=this.proxy,i=xe(e)?e.includes(".")?mh(r,e):()=>r[e]:e.bind(r,r);let o;At(t)?o=t:(o=t.handler,n=t);const s=Me;Ur(this);const a=co(i,o.bind(r),n);return s?Ur(s):Rr(),a}function mh(e,t){const n=t.split(".");return()=>{let r=e;for(let i=0;i{ei(n,t)});else if(_d(e))for(const n in e)ei(e[n],t);return e}function Hc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Si(()=>{e.isMounted=!0}),Va(()=>{e.isUnmounting=!0}),e}const wn=[Function,Array],Cv={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:wn,onEnter:wn,onAfterEnter:wn,onEnterCancelled:wn,onBeforeLeave:wn,onLeave:wn,onAfterLeave:wn,onLeaveCancelled:wn,onBeforeAppear:wn,onAppear:wn,onAfterAppear:wn,onAppearCancelled:wn},setup(e,{slots:t}){const n=Hr(),r=Hc();let i;return()=>{const o=t.default&&ja(t.default(),!0);if(!o||!o.length)return;let s=o[0];if(o.length>1){let A=!1;for(const F of o)if(F.type!==De){if(A){G(" can only be used on a single element or component. Use for lists.");break}s=F,A=!0}}const a=$t(e),{mode:l}=a;if(l&&l!=="in-out"&&l!=="out-in"&&l!=="default"&&G(`invalid mode: ${l}`),r.isLeaving)return wl(s);const c=xf(s);if(!c)return wl(s);const f=Hi(c,a,r,n);ci(c,f);const d=n.subTree,h=d&&xf(d);let p=!1;const{getTransitionKey:b}=c.type;if(b){const A=b();i===void 0?i=A:A!==i&&(i=A,p=!0)}if(h&&h.type!==De&&(!Hn(c,h)||p)){const A=Hi(h,a,r,n);if(ci(h,A),l==="out-in")return r.isLeaving=!0,A.afterLeave=()=>{r.isLeaving=!1,n.update()},wl(s);l==="in-out"&&c.type!==De&&(A.delayLeave=(F,O,m)=>{const I=yh(r,h);I[String(h.key)]=h,F._leaveCb=()=>{O(),F._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=m})}return s}}},Wc=Cv;function yh(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Hi(e,t,n,r){const{appear:i,mode:o,persisted:s=!1,onBeforeEnter:a,onEnter:l,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:d,onLeave:h,onAfterLeave:p,onLeaveCancelled:b,onBeforeAppear:A,onAppear:F,onAfterAppear:O,onAppearCancelled:m}=t,I=String(e.key),E=yh(n,e),N=(C,L)=>{C&&hn(C,r,9,L)},P=(C,L)=>{const U=L[1];N(C,L),vt(C)?C.every(z=>z.length<=1)&&U():C.length<=1&&U()},R={mode:o,persisted:s,beforeEnter(C){let L=a;if(!n.isMounted)if(i)L=A||a;else return;C._leaveCb&&C._leaveCb(!0);const U=E[I];U&&Hn(e,U)&&U.el._leaveCb&&U.el._leaveCb(),N(L,[C])},enter(C){let L=l,U=c,z=f;if(!n.isMounted)if(i)L=F||l,U=O||c,z=m||f;else return;let V=!1;const rt=C._enterCb=Q=>{V||(V=!0,Q?N(z,[C]):N(U,[C]),R.delayedLeave&&R.delayedLeave(),C._enterCb=void 0)};L?P(L,[C,rt]):rt()},leave(C,L){const U=String(e.key);if(C._enterCb&&C._enterCb(!0),n.isUnmounting)return L();N(d,[C]);let z=!1;const V=C._leaveCb=rt=>{z||(z=!0,L(),rt?N(b,[C]):N(p,[C]),C._leaveCb=void 0,E[U]===e&&delete E[U])};E[U]=e,h?P(h,[C,V]):V()},clone(C){return Hi(C,t,n,r)}};return R}function wl(e){if(as(e))return e=xn(e),e.children=null,e}function xf(e){return as(e)?e.children?e.children[0]:void 0:e}function ci(e,t){e.shapeFlag&6&&e.component?ci(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ja(e,t=!1,n){let r=[],i=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;function Bv(e){At(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:i=200,timeout:o,suspensible:s=!0,onError:a}=e;let l=null,c,f=0;const d=()=>(f++,l=null,h()),h=()=>{let p;return l||(p=l=t().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),a)return new Promise((A,F)=>{a(b,()=>A(d()),()=>F(b),f+1)});throw b}).then(b=>{if(p!==l&&l)return l;if(b||G("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),b&&!re(b)&&!At(b))throw new Error(`Invalid async component load result: ${b}`);return c=b,b}))};return os({name:"AsyncComponentWrapper",__asyncLoader:h,get __asyncResolved(){return c},setup(){const p=Me;if(c)return()=>Sl(c,p);const b=m=>{l=null,wi(m,p,13,!r)};if(s&&p.suspense||Yi)return h().then(m=>()=>Sl(m,p)).catch(m=>(b(m),()=>r?me(r,{error:m}):null));const A=Pi(!1),F=Pi(),O=Pi(!!i);return i&&setTimeout(()=>{O.value=!1},i),o!=null&&setTimeout(()=>{if(!A.value&&!F.value){const m=new Error(`Async component timed out after ${o}ms.`);b(m),F.value=m}},o),h().then(()=>{A.value=!0,p.parent&&as(p.parent.vnode)&&oo(p.parent.update)}).catch(m=>{b(m),F.value=m}),()=>{if(A.value&&c)return Sl(c,p);if(F.value&&r)return me(r,{error:F.value});if(n&&!O.value)return me(n)}}})}function Sl(e,{vnode:{ref:t,props:n,children:r,shapeFlag:i},parent:o}){const s=me(e,n,r);return s.ref=t,s}const as=e=>e.type.__isKeepAlive,Fv={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Hr(),r=n.ctx;if(!r.renderer)return()=>{const m=t.default&&t.default();return m&&m.length===1?m[0]:m};const i=new Map,o=new Set;let s=null;n.__v_cache=i;const a=n.suspense,{renderer:{p:l,m:c,um:f,o:{createElement:d}}}=r,h=d("div");r.activate=(m,I,E,N,P)=>{const R=m.component;c(m,I,E,0,a),l(R.vnode,m,I,E,R,a,N,m.slotScopeIds,P),Ve(()=>{R.isDeactivated=!1,R.a&&xr(R.a);const C=m.props&&m.props.onVnodeMounted;C&&Ze(C,R.parent,m)},a),Gl(R)},r.deactivate=m=>{const I=m.component;c(m,h,null,1,a),Ve(()=>{I.da&&xr(I.da);const E=m.props&&m.props.onVnodeUnmounted;E&&Ze(E,I.parent,m),I.isDeactivated=!0},a),Gl(I)};function p(m){Il(m),f(m,n,a,!0)}function b(m){i.forEach((I,E)=>{const N=Hs(I.type);N&&(!m||!m(N))&&A(E)})}function A(m){const I=i.get(m);!s||I.type!==s.type?p(I):s&&Il(s),i.delete(m),o.delete(m)}As(()=>[e.include,e.exclude],([m,I])=>{m&&b(E=>ws(m,E)),I&&b(E=>!ws(I,E))},{flush:"post",deep:!0});let F=null;const O=()=>{F!=null&&i.set(F,Tl(n.subTree))};return Si(O),ls(O),Va(()=>{i.forEach(m=>{const{subTree:I,suspense:E}=n,N=Tl(I);if(m.type===N.type){Il(N);const P=N.component.da;P&&Ve(P,E);return}p(m)})}),()=>{if(F=null,!t.default)return null;const m=t.default(),I=m[0];if(m.length>1)return G("KeepAlive should contain exactly one component child."),s=null,m;if(!cr(I)||!(I.shapeFlag&4)&&!(I.shapeFlag&128))return s=null,I;let E=Tl(I);const N=E.type,P=Hs(oi(E)?E.type.__asyncResolved||{}:N),{include:R,exclude:C,max:L}=e;if(R&&(!P||!ws(R,P))||C&&P&&ws(C,P))return s=E,I;const U=E.key==null?N:E.key,z=i.get(U);return E.el&&(E=xn(E),I.shapeFlag&128&&(I.ssContent=E)),F=U,z?(E.el=z.el,E.component=z.component,E.transition&&ci(E,E.transition),E.shapeFlag|=512,o.delete(U),o.add(U)):(o.add(U),L&&o.size>parseInt(L,10)&&A(o.values().next().value)),E.shapeFlag|=256,s=E,dh(I.type)?I:E}}},Dv=Fv;function ws(e,t){return vt(e)?e.some(n=>ws(n,t)):xe(e)?e.split(",").includes(t):e.test?e.test(t):!1}function vh(e,t){wh(e,"a",t)}function bh(e,t){wh(e,"da",t)}function wh(e,t,n=Me){const r=e.__wdc||(e.__wdc=()=>{let i=n;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if($a(t,r,n),n){let i=n.parent;for(;i&&i.parent;)as(i.parent.vnode)&&Rv(r,t,n,i),i=i.parent}}function Rv(e,t,n,r){const i=$a(t,e,r,!0);uo(()=>{Tc(r[t],i)},n)}function Il(e){let t=e.shapeFlag;t&256&&(t-=256),t&512&&(t-=512),e.shapeFlag=t}function Tl(e){return e.shapeFlag&128?e.ssContent:e}function $a(e,t,n=Me,r=!1){if(n){const i=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...s)=>{if(n.isUnmounted)return;vi(),Ur(n);const a=hn(t,n,e,s);return Rr(),bi(),a});return r?i.unshift(o):i.push(o),o}else{const i=rr(Lc[e].replace(/ hook$/,""));G(`${i} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.`)}}const dr=e=>(t,n=Me)=>(!Yi||e==="sp")&&$a(e,t,n),Sh=dr("bm"),Si=dr("m"),Ih=dr("bu"),ls=dr("u"),Va=dr("bum"),uo=dr("um"),Th=dr("sp"),xh=dr("rtg"),Oh=dr("rtc");function Yc(e,t=Me){$a("ec",e,t)}function Ah(e){iy(e)&&G("Do not use built-in directive ids as custom directive id: "+e)}function Mv(e,t){const n=Ne;if(n===null)return G("withDirectives can only be used inside render functions."),e;const r=Ha(n)||n.proxy,i=e.dirs||(e.dirs=[]);for(let o=0;ot(s,a,void 0,o&&o[a]));else{const s=Object.keys(e);i=new Array(s.length);for(let a=0,l=s.length;a{const o=r.fn(...i);return o.key=r.key,o}:r.fn)}return e}function Bh(e,t,n={},r,i){if(Ne.isCE||Ne.parent&&oi(Ne.parent)&&Ne.parent.isCE)return me("slot",t==="default"?null:{name:t},r&&r());let o=e[t];o&&o.length>1&&(G("SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template."),o=()=>[]),o&&o._c&&(o._d=!1),Fn();const s=o&&Fh(o(n)),a=za(Re,{key:n.key||s&&s.key||`_${t}`},s||(r?r():[]),s&&e._===1?64:-2);return!i&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),o&&o._c&&(o._d=!0),a}function Fh(e){return e.some(t=>cr(t)?!(t.type===De||t.type===Re&&!Fh(t.children)):!0)?e:null}function Uv(e,t){const n={};if(!re(e))return G("v-on with no argument expects an object value."),n;for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:rr(r)]=e[r];return n}const Jl=e=>e?Jh(e)?Ha(e)||e.proxy:Jl(e.parent):null,Wi=ve(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>ti(e.props),$attrs:e=>ti(e.attrs),$slots:e=>ti(e.slots),$refs:e=>ti(e.refs),$parent:e=>Jl(e.parent),$root:e=>Jl(e.root),$emit:e=>e.emit,$options:e=>Rh(e),$forceUpdate:e=>e.f||(e.f=()=>oo(e.update)),$nextTick:e=>e.n||(e.n=Nc.bind(e.proxy)),$watch:e=>Ev.bind(e)}),Kc=e=>e==="_"||e==="$",Es={get({_:e},t){const{ctx:n,setupState:r,data:i,props:o,accessCache:s,type:a,appContext:l}=e;if(t==="__isVue")return!0;if(r!==ee&&r.__isScriptSetup&&Xt(r,t))return r[t];let c;if(t[0]!=="$"){const p=s[t];if(p!==void 0)switch(p){case 1:return r[t];case 2:return i[t];case 4:return n[t];case 3:return o[t]}else{if(r!==ee&&Xt(r,t))return s[t]=1,r[t];if(i!==ee&&Xt(i,t))return s[t]=2,i[t];if((c=e.propsOptions[0])&&Xt(c,t))return s[t]=3,o[t];if(n!==ee&&Xt(n,t))return s[t]=4,n[t];Zl&&(s[t]=0)}}const f=Wi[t];let d,h;if(f)return t==="$attrs"&&(mn(e,"get",t),ea()),f(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(n!==ee&&Xt(n,t))return s[t]=4,n[t];if(h=l.config.globalProperties,Xt(h,t))return h[t];Ne&&(!xe(t)||t.indexOf("__v")!==0)&&(i!==ee&&Kc(t[0])&&Xt(i,t)?G(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===Ne&&G(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,n){const{data:r,setupState:i,ctx:o}=e;return i!==ee&&Xt(i,t)?(i[t]=n,!0):r!==ee&&Xt(r,t)?(r[t]=n,!0):Xt(e.props,t)?(G(`Attempting to mutate prop "${t}". Props are readonly.`,e),!1):t[0]==="$"&&t.slice(1)in e?(G(`Attempting to mutate public property "${t}". Properties starting with $ are reserved and readonly.`,e),!1):(t in e.appContext.config.globalProperties?Object.defineProperty(o,t,{enumerable:!0,configurable:!0,value:n}):o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,propsOptions:o}},s){let a;return!!n[s]||e!==ee&&Xt(e,s)||t!==ee&&Xt(t,s)||(a=o[0])&&Xt(a,s)||Xt(r,s)||Xt(Wi,s)||Xt(i.config.globalProperties,s)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Xt(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};Es.ownKeys=e=>(G("Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead."),Reflect.ownKeys(e));const jv=ve({},Es,{get(e,t){if(t!==Symbol.unscopables)return Es.get(e,t,e)},has(e,t){const n=t[0]!=="_"&&!Hm(t);return!n&&Es.has(e,t)&&G(`Property ${JSON.stringify(t)} should not start with _ which is a reserved prefix for Vue internals.`),n}});function $v(e){const t={};return Object.defineProperty(t,"_",{configurable:!0,enumerable:!1,get:()=>e}),Object.keys(Wi).forEach(n=>{Object.defineProperty(t,n,{configurable:!0,enumerable:!1,get:()=>Wi[n](e),set:qe})}),t}function Vv(e){const{ctx:t,propsOptions:[n]}=e;n&&Object.keys(n).forEach(r=>{Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>e.props[r],set:qe})})}function zv(e){const{ctx:t,setupState:n}=e;Object.keys($t(n)).forEach(r=>{if(!n.__isScriptSetup){if(Kc(r[0])){G(`setup() return property ${JSON.stringify(r)} should not start with "$" or "_" which are reserved prefixes for Vue internals.`);return}Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>n[r],set:qe})}})}function kv(){const e=Object.create(null);return(t,n)=>{e[n]?G(`${t} property "${n}" is already defined in ${e[n]}.`):e[n]=t}}let Zl=!0;function Hv(e){const t=Rh(e),n=e.proxy,r=e.ctx;Zl=!1,t.beforeCreate&&Af(t.beforeCreate,e,"bc");const{data:i,computed:o,methods:s,watch:a,provide:l,inject:c,created:f,beforeMount:d,mounted:h,beforeUpdate:p,updated:b,activated:A,deactivated:F,beforeDestroy:O,beforeUnmount:m,destroyed:I,unmounted:E,render:N,renderTracked:P,renderTriggered:R,errorCaptured:C,serverPrefetch:L,expose:U,inheritAttrs:z,components:V,directives:rt,filters:Q}=t,bt=kv();{const[pt]=e.propsOptions;if(pt)for(const dt in pt)bt("Props",dt)}if(c&&Wv(c,r,bt,e.appContext.config.unwrapInjectedRef),s)for(const pt in s){const dt=s[pt];At(dt)?(Object.defineProperty(r,pt,{value:dt.bind(n),configurable:!0,enumerable:!0,writable:!0}),bt("Methods",pt)):G(`Method "${pt}" has type "${typeof dt}" in the component definition. Did you reference the function correctly?`)}if(i){At(i)||G("The data option must be a function. Plain object usage is no longer supported.");const pt=i.call(n,n);if(Ca(pt)&&G("data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + ."),!re(pt))G("data() should return an object.");else{e.data=Ma(pt);for(const dt in pt)bt("Data",dt),Kc(dt[0])||Object.defineProperty(r,dt,{configurable:!0,enumerable:!0,get:()=>pt[dt],set:qe})}}if(Zl=!0,o)for(const pt in o){const dt=o[pt],qt=At(dt)?dt.bind(n,n):At(dt.get)?dt.get.bind(n,n):qe;qt===qe&&G(`Computed property "${pt}" has no getter.`);const Ft=!At(dt)&&At(dt.set)?dt.set.bind(n):()=>{G(`Write operation failed: computed property "${pt}" is readonly.`)},se=ep({get:qt,set:Ft});Object.defineProperty(r,pt,{enumerable:!0,configurable:!0,get:()=>se.value,set:ce=>se.value=ce}),bt("Computed",pt)}if(a)for(const pt in a)Dh(a[pt],r,n,pt);if(l){const pt=At(l)?l.call(n):l;Reflect.ownKeys(pt).forEach(dt=>{ph(dt,pt[dt])})}f&&Af(f,e,"c");function st(pt,dt){vt(dt)?dt.forEach(qt=>pt(qt.bind(n))):dt&&pt(dt.bind(n))}if(st(Sh,d),st(Si,h),st(Ih,p),st(ls,b),st(vh,A),st(bh,F),st(Yc,C),st(Oh,P),st(xh,R),st(Va,m),st(uo,E),st(Th,L),vt(U))if(U.length){const pt=e.exposed||(e.exposed={});U.forEach(dt=>{Object.defineProperty(pt,dt,{get:()=>n[dt],set:qt=>n[dt]=qt})})}else e.exposed||(e.exposed={});N&&e.render===qe&&(e.render=N),z!=null&&(e.inheritAttrs=z),V&&(e.components=V),rt&&(e.directives=rt)}function Wv(e,t,n=qe,r=!1){vt(e)&&(e=Ql(e));for(const i in e){const o=e[i];let s;re(o)?"default"in o?s=Os(o.from||i,o.default,!0):s=Os(o.from||i):s=Os(o),Pe(s)?r?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>s.value,set:a=>s.value=a}):(G(`injected property "${i}" is a ref and will be auto-unwrapped and no longer needs \`.value\` in the next minor release. To opt-in to the new behavior now, set \`app.config.unwrapInjectedRef = true\` (this config is temporary and will not be needed in the future.)`),t[i]=s):t[i]=s,n("Inject",i)}}function Af(e,t,n){hn(vt(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Dh(e,t,n,r){const i=r.includes(".")?mh(n,r):()=>n[r];if(xe(e)){const o=t[e];At(o)?As(i,o):G(`Invalid watch handler specified by key "${e}"`,o)}else if(At(e))As(i,e.bind(n));else if(re(e))if(vt(e))e.forEach(o=>Dh(o,t,n,r));else{const o=At(e.handler)?e.handler.bind(n):t[e.handler];At(o)?As(i,o,e):G(`Invalid watch handler specified by key "${e.handler}"`,o)}else G(`Invalid watch option: "${r}"`,e)}function Rh(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:o,config:{optionMergeStrategies:s}}=e.appContext,a=o.get(t);let l;return a?l=a:!i.length&&!n&&!r?l=t:(l={},i.length&&i.forEach(c=>ra(l,c,s,!0)),ra(l,t,s)),re(t)&&o.set(t,l),l}function ra(e,t,n,r=!1){const{mixins:i,extends:o}=t;o&&ra(e,o,n,!0),i&&i.forEach(s=>ra(e,s,n,!0));for(const s in t)if(r&&s==="expose")G('"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.');else{const a=Yv[s]||n&&n[s];e[s]=a?a(e[s],t[s]):t[s]}return e}const Yv={data:Ef,props:Qr,emits:Qr,methods:Qr,computed:Qr,beforeCreate:Ge,created:Ge,beforeMount:Ge,mounted:Ge,beforeUpdate:Ge,updated:Ge,beforeDestroy:Ge,beforeUnmount:Ge,destroyed:Ge,unmounted:Ge,activated:Ge,deactivated:Ge,errorCaptured:Ge,serverPrefetch:Ge,components:Qr,directives:Qr,watch:Kv,provide:Ef,inject:Gv};function Ef(e,t){return t?e?function(){return ve(At(e)?e.call(this,this):e,At(t)?t.call(this,this):t)}:t:e}function Gv(e,t){return Qr(Ql(e),Ql(t))}function Ql(e){if(vt(e)){const t={};for(let n=0;n0)&&!(s&16)){if(s&8){const f=e.vnode.dynamicProps;for(let d=0;d{l=!0;const[h,p]=Ph(d,t,!0);ve(s,h),p&&a.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!l)return re(e)&&r.set(e,Mi),Mi;if(vt(o))for(let f=0;f-1,p[1]=A<0||b-1||Xt(p,"default"))&&a.push(d)}}}}const c=[s,a];return re(e)&&r.set(e,c),c}function Cf(e){return e[0]!=="$"?!0:(G(`Invalid prop name: "${e}" is a reserved property.`),!1)}function tc(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function Bf(e,t){return tc(e)===tc(t)}function Ff(e,t){return vt(t)?t.findIndex(n=>Bf(n,e)):At(t)&&Bf(t,e)?0:-1}function Lh(e,t,n){const r=$t(t),i=n.propsOptions[0];for(const o in i){let s=i[o];s!=null&&Qv(o,r[o],s,!Xt(e,o)&&!Xt(e,In(o)))}}function Qv(e,t,n,r){const{type:i,required:o,validator:s}=n;if(o&&r){G('Missing required prop: "'+e+'"');return}if(!(t==null&&!n.required)){if(i!=null&&i!==!0){let a=!1;const l=vt(i)?i:[i],c=[];for(let f=0;fe.toLowerCase()===n)}function nb(...e){return e.some(t=>t.toLowerCase()==="boolean")}const _h=e=>e[0]==="_"||e==="$stable",Xc=e=>vt(e)?e.map(Qe):[Qe(e)],rb=(e,t,n)=>{if(t._n)return t;const r=lo((...i)=>(Me&&G(`Slot "${e}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`),Xc(t(...i))),n);return r._c=!1,r},Nh=(e,t,n)=>{const r=e._ctx;for(const i in e){if(_h(i))continue;const o=e[i];if(At(o))t[i]=rb(i,o,r);else if(o!=null){G(`Non-function value encountered for slot "${i}". Prefer function slots for better performance.`);const s=Xc(o);t[i]=()=>s}}},Uh=(e,t)=>{as(e.vnode)||G("Non-function value encountered for default slot. Prefer function slots for better performance.");const n=Xc(t);e.slots.default=()=>n},ib=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=$t(t),Zo(t,"_",n)):Nh(t,e.slots={})}else e.slots={},t&&Uh(e,t);Zo(e.slots,ka,1)},sb=(e,t,n)=>{const{vnode:r,slots:i}=e;let o=!0,s=ee;if(r.shapeFlag&32){const a=t._;a?Fr?ve(i,t):n&&a===1?o=!1:(ve(i,t),!n&&a===1&&delete i._):(o=!t.$stable,Nh(t,i)),s=t}else t&&(Uh(e,t),s={default:1});if(o)for(const a in i)!_h(a)&&!(a in s)&&delete i[a]};function jh(){return{app:null,config:{isNativeTag:Pd,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ob=0;function ab(e,t){return function(r,i=null){At(r)||(r=Object.assign({},r)),i!=null&&!re(i)&&(G("root props passed to app.mount() must be an object."),i=null);const o=jh(),s=new Set;let a=!1;const l=o.app={_uid:ob++,_component:r,_props:i,_container:null,_context:o,_instance:null,version:ac,get config(){return o.config},set config(c){G("app.config cannot be replaced. Modify individual options instead.")},use(c,...f){return s.has(c)?G("Plugin has already been applied to target app."):c&&At(c.install)?(s.add(c),c.install(l,...f)):At(c)?(s.add(c),c(l,...f)):G('A plugin must either be a function or an object with an "install" function.'),l},mixin(c){return o.mixins.includes(c)?G("Mixin has already been applied to target app"+(c.name?`: ${c.name}`:"")):o.mixins.push(c),l},component(c,f){return ic(c,o.config),f?(o.components[c]&&G(`Component "${c}" has already been registered in target app.`),o.components[c]=f,l):o.components[c]},directive(c,f){return Ah(c),f?(o.directives[c]&&G(`Directive "${c}" has already been registered in target app.`),o.directives[c]=f,l):o.directives[c]},mount(c,f,d){if(a)G("App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. `const createMyApp = () => createApp(App)`");else{c.__vue_app__&&G("There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling `app.unmount()` first.");const h=me(r,i);return h.appContext=o,o.reload=()=>{e(xn(h),c,d)},f&&t?t(h,c):e(h,c,d),a=!0,l._container=c,c.__vue_app__=l,l._instance=h.component,av(l,ac),Ha(h.component)||h.component.proxy}},unmount(){a?(e(null,l._container),l._instance=null,lv(l),delete l._container.__vue_app__):G("Cannot unmount an app that is not mounted.")},provide(c,f){return c in o.provides&&G(`App already provides property with key "${String(c)}". It will be overwritten with the new value.`),o.provides[c]=f,l}};return l}}function ia(e,t,n,r,i=!1){if(vt(e)){e.forEach((h,p)=>ia(h,t&&(vt(t)?t[p]:t),n,r,i));return}if(oi(r)&&!i)return;const o=r.shapeFlag&4?Ha(r.component)||r.component.proxy:r.el,s=i?null:o,{i:a,r:l}=e;if(!a){G("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.");return}const c=t&&t.r,f=a.refs===ee?a.refs={}:a.refs,d=a.setupState;if(c!=null&&c!==l&&(xe(c)?(f[c]=null,Xt(d,c)&&(d[c]=null)):Pe(c)&&(c.value=null)),At(l))Yn(l,a,12,[s,f]);else{const h=xe(l),p=Pe(l);if(h||p){const b=()=>{if(e.f){const A=h?f[l]:l.value;i?vt(A)&&Tc(A,o):vt(A)?A.includes(o)||A.push(o):h?(f[l]=[o],Xt(d,l)&&(d[l]=f[l])):(l.value=[o],e.k&&(f[e.k]=l.value))}else h?(f[l]=s,Xt(d,l)&&(d[l]=s)):p?(l.value=s,e.k&&(f[e.k]=s)):G("Invalid template ref type:",l,`(${typeof l})`)};s?(b.id=-1,Ve(b,n)):b()}else G("Invalid template ref type:",l,`(${typeof l})`)}}let yr=!1;const Ro=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",fs=e=>e.nodeType===8;function lb(e){const{mt:t,p:n,o:{patchProp:r,createText:i,nextSibling:o,parentNode:s,remove:a,insert:l,createComment:c}}=e,f=(O,m)=>{if(!m.hasChildNodes()){G("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,O,m),ta(),m._vnode=O;return}yr=!1,d(m.firstChild,O,null,null,null),ta(),m._vnode=O,yr&&console.error("Hydration completed but contains mismatches.")},d=(O,m,I,E,N,P=!1)=>{const R=fs(O)&&O.data==="[",C=()=>A(O,m,I,E,N,R),{type:L,ref:U,shapeFlag:z,patchFlag:V}=m,rt=O.nodeType;m.el=O,V===-2&&(P=!1,m.dynamicChildren=null);let Q=null;switch(L){case ui:rt!==3?m.children===""?(l(m.el=i(""),s(O),O),Q=O):Q=C():(O.data!==m.children&&(yr=!0,G(`Hydration text mismatch: +- Client: ${JSON.stringify(O.data)} +- Server: ${JSON.stringify(m.children)}`),O.data=m.children),Q=o(O));break;case De:rt!==8||R?Q=C():Q=o(O);break;case Dr:if(rt!==1&&rt!==3)Q=C();else{Q=O;const bt=!m.children.length;for(let st=0;st{P=P||!!m.dynamicChildren;const{type:R,props:C,patchFlag:L,shapeFlag:U,dirs:z}=m,V=R==="input"&&z||R==="option";{if(z&&zn(m,null,I,"created"),C)if(V||!P||L&48)for(const Q in C)(V&&Q.endsWith("value")||ss(Q)&&!Ss(Q))&&r(O,Q,null,C[Q],!1,void 0,I);else C.onClick&&r(O,"onClick",null,C.onClick,!1,void 0,I);let rt;if((rt=C&&C.onVnodeBeforeMount)&&Ze(rt,I,m),z&&zn(m,null,I,"beforeMount"),((rt=C&&C.onVnodeMounted)||z)&&hh(()=>{rt&&Ze(rt,I,m),z&&zn(m,null,I,"mounted")},E),U&16&&!(C&&(C.innerHTML||C.textContent))){let Q=p(O.firstChild,m,O,I,E,N,P),bt=!1;for(;Q;){yr=!0,bt||(G(`Hydration children mismatch in <${m.type}>: server rendered element contains more child nodes than client vdom.`),bt=!0);const st=Q;Q=Q.nextSibling,a(st)}}else U&8&&O.textContent!==m.children&&(yr=!0,G(`Hydration text content mismatch in <${m.type}>: +- Client: ${O.textContent} +- Server: ${m.children}`),O.textContent=m.children)}return O.nextSibling},p=(O,m,I,E,N,P,R)=>{R=R||!!m.dynamicChildren;const C=m.children,L=C.length;let U=!1;for(let z=0;z: server rendered element contains fewer child nodes than client vdom.`),U=!0),n(null,V,I,null,E,N,Ro(I),P)}}return O},b=(O,m,I,E,N,P)=>{const{slotScopeIds:R}=m;R&&(N=N?N.concat(R):R);const C=s(O),L=p(o(O),m,C,I,E,N,P);return L&&fs(L)&&L.data==="]"?o(m.anchor=L):(yr=!0,l(m.anchor=c("]"),C,L),L)},A=(O,m,I,E,N,P)=>{if(yr=!0,G(`Hydration node mismatch: +- Client vnode:`,m.type,` +- Server rendered DOM:`,O,O.nodeType===3?"(text)":fs(O)&&O.data==="["?"(start of fragment)":""),m.el=null,P){const L=F(O);for(;;){const U=o(O);if(U&&U!==L)a(U);else break}}const R=o(O),C=s(O);return a(O),n(null,m,C,R,I,E,Ro(C),N),R},F=O=>{let m=0;for(;O;)if(O=o(O),O&&fs(O)&&(O.data==="["&&m++,O.data==="]")){if(m===0)return o(O);m--}return O};return[f,d]}let ds,Ar;function qn(e,t){e.appContext.config.performance&&sa()&&Ar.mark(`vue-${t}-${e.uid}`),uv(e,t,sa()?Ar.now():Date.now())}function tr(e,t){if(e.appContext.config.performance&&sa()){const n=`vue-${t}-${e.uid}`,r=n+":end";Ar.mark(r),Ar.measure(`<${Wa(e,e.type)}> ${t}`,n,r),Ar.clearMarks(n),Ar.clearMarks(r)}fv(e,t,sa()?Ar.now():Date.now())}function sa(){return ds!==void 0||(typeof window!="undefined"&&window.performance?(ds=!0,Ar=window.performance):ds=!1),ds}function cb(){const e=[];if(e.length){const t=e.length>1;console.warn(`Feature flag${t?"s":""} ${e.join(", ")} ${t?"are":"is"} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle. + +For more details, see https://link.vuejs.org/feature-flags.`)}}const Ve=hh;function $h(e){return zh(e)}function Vh(e){return zh(e,lb)}function zh(e,t){cb();const n=Nd();n.__VUE__=!0,jc(n.__VUE_DEVTOOLS_GLOBAL_HOOK__,n);const{insert:r,remove:i,patchProp:o,createElement:s,createText:a,createComment:l,setText:c,setElementText:f,parentNode:d,nextSibling:h,setScopeId:p=qe,cloneNode:b,insertStaticContent:A}=e,F=(w,B,j,Y=null,W=null,et=null,it=!1,tt=null,nt=Fr?!1:!!B.dynamicChildren)=>{if(w===B)return;w&&!Hn(w,B)&&(Y=Se(w),Yt(w,W,et,!0),w=null),B.patchFlag===-2&&(nt=!1,B.dynamicChildren=null);const{type:Z,ref:gt,shapeFlag:ut}=B;switch(Z){case ui:O(w,B,j,Y);break;case De:m(w,B,j,Y);break;case Dr:w==null?I(B,j,Y,it):E(w,B,j,it);break;case Re:Q(w,B,j,Y,W,et,it,tt,nt);break;default:ut&1?R(w,B,j,Y,W,et,it,tt,nt):ut&6?bt(w,B,j,Y,W,et,it,tt,nt):ut&64||ut&128?Z.process(w,B,j,Y,W,et,it,tt,nt,ae):G("Invalid VNode type:",Z,`(${typeof Z})`)}gt!=null&&W&&ia(gt,w&&w.ref,et,B||w,!B)},O=(w,B,j,Y)=>{if(w==null)r(B.el=a(B.children),j,Y);else{const W=B.el=w.el;B.children!==w.children&&c(W,B.children)}},m=(w,B,j,Y)=>{w==null?r(B.el=l(B.children||""),j,Y):B.el=w.el},I=(w,B,j,Y)=>{[w.el,w.anchor]=A(w.children,B,j,Y,w.el,w.anchor)},E=(w,B,j,Y)=>{if(B.children!==w.children){const W=h(w.anchor);P(w),[B.el,B.anchor]=A(B.children,j,W,Y)}else B.el=w.el,B.anchor=w.anchor},N=({el:w,anchor:B},j,Y)=>{let W;for(;w&&w!==B;)W=h(w),r(w,j,Y),w=W;r(B,j,Y)},P=({el:w,anchor:B})=>{let j;for(;w&&w!==B;)j=h(w),i(w),w=j;i(B)},R=(w,B,j,Y,W,et,it,tt,nt)=>{it=it||B.type==="svg",w==null?C(B,j,Y,W,et,it,tt,nt):z(w,B,W,et,it,tt,nt)},C=(w,B,j,Y,W,et,it,tt)=>{let nt,Z;const{type:gt,props:ut,shapeFlag:X,transition:wt,patchFlag:Dt,dirs:Ht}=w;{if(nt=w.el=s(w.type,et,ut&&ut.is,ut),X&8?f(nt,w.children):X&16&&U(w.children,nt,null,Y,W,et&>!=="foreignObject",it,tt),Ht&&zn(w,null,Y,"created"),ut){for(const J in ut)J!=="value"&&!Ss(J)&&o(nt,J,null,ut[J],et,w.children,Y,W,Be);"value"in ut&&o(nt,"value",null,ut.value),(Z=ut.onVnodeBeforeMount)&&Ze(Z,Y,w)}L(nt,w,w.scopeId,it,Y)}Object.defineProperty(nt,"__vnode",{value:w,enumerable:!1}),Object.defineProperty(nt,"__vueParentComponent",{value:Y,enumerable:!1}),Ht&&zn(w,null,Y,"beforeMount");const Tt=(!W||W&&!W.pendingBranch)&&wt&&!wt.persisted;Tt&&wt.beforeEnter(nt),r(nt,B,j),((Z=ut&&ut.onVnodeMounted)||Tt||Ht)&&Ve(()=>{Z&&Ze(Z,Y,w),Tt&&wt.enter(nt),Ht&&zn(w,null,Y,"mounted")},W)},L=(w,B,j,Y,W)=>{if(j&&p(w,j),Y)for(let et=0;et0&&et.patchFlag&2048&&(et=Vc(et.children)||et),B===et){const it=W.vnode;L(w,it,it.scopeId,it.slotScopeIds,W.parent)}}},U=(w,B,j,Y,W,et,it,tt,nt=0)=>{for(let Z=nt;Z{const tt=B.el=w.el;let{patchFlag:nt,dynamicChildren:Z,dirs:gt}=B;nt|=w.patchFlag&16;const ut=w.props||ee,X=B.props||ee;let wt;j&&Xr(j,!1),(wt=X.onVnodeBeforeUpdate)&&Ze(wt,j,B,w),gt&&zn(B,w,j,"beforeUpdate"),j&&Xr(j,!0),Fr&&(nt=0,it=!1,Z=null);const Dt=W&&B.type!=="foreignObject";if(Z?(V(w.dynamicChildren,Z,tt,j,Y,Dt,et),j&&j.type.__hmrId&&Cs(w,B)):it||Ft(w,B,tt,null,j,Y,Dt,et,!1),nt>0){if(nt&16)rt(tt,B,ut,X,j,Y,W);else if(nt&2&&ut.class!==X.class&&o(tt,"class",null,X.class,W),nt&4&&o(tt,"style",ut.style,X.style,W),nt&8){const Ht=B.dynamicProps;for(let Tt=0;Tt{wt&&Ze(wt,j,B,w),gt&&zn(B,w,j,"updated")},Y)},V=(w,B,j,Y,W,et,it)=>{for(let tt=0;tt{if(j!==Y){for(const tt in Y){if(Ss(tt))continue;const nt=Y[tt],Z=j[tt];nt!==Z&&tt!=="value"&&o(w,tt,Z,nt,it,B.children,W,et,Be)}if(j!==ee)for(const tt in j)!Ss(tt)&&!(tt in Y)&&o(w,tt,j[tt],null,it,B.children,W,et,Be);"value"in Y&&o(w,"value",j.value,Y.value)}},Q=(w,B,j,Y,W,et,it,tt,nt)=>{const Z=B.el=w?w.el:a(""),gt=B.anchor=w?w.anchor:a("");let{patchFlag:ut,dynamicChildren:X,slotScopeIds:wt}=B;(Fr||ut&2048)&&(ut=0,nt=!1,X=null),wt&&(tt=tt?tt.concat(wt):wt),w==null?(r(Z,j,Y),r(gt,j,Y),U(B.children,j,gt,W,et,it,tt,nt)):ut>0&&ut&64&&X&&w.dynamicChildren?(V(w.dynamicChildren,X,j,W,et,it,tt),W&&W.type.__hmrId?Cs(w,B):(B.key!=null||W&&B===W.subTree)&&Cs(w,B,!0)):Ft(w,B,j,gt,W,et,it,tt,nt)},bt=(w,B,j,Y,W,et,it,tt,nt)=>{B.slotScopeIds=tt,w==null?B.shapeFlag&512?W.ctx.activate(B,j,Y,it,nt):st(B,j,Y,W,et,it,nt):pt(w,B,nt)},st=(w,B,j,Y,W,et,it)=>{const tt=w.component=Xh(w,Y,W);if(tt.type.__hmrId&&rv(tt),Is(w),qn(tt,"mount"),as(w)&&(tt.ctx.renderer=ae),qn(tt,"init"),Zh(tt),tr(tt,"init"),tt.asyncDep){if(W&&W.registerDep(tt,dt),!w.el){const nt=tt.subTree=me(De);m(null,nt,B,j)}return}dt(tt,w,B,j,W,et,it),Ts(),tr(tt,"mount")},pt=(w,B,j)=>{const Y=B.component=w.component;if(vv(w,B,j))if(Y.asyncDep&&!Y.asyncResolved){Is(B),qt(Y,B,j),Ts();return}else Y.next=B,ev(Y.update),Y.update();else B.el=w.el,Y.vnode=B},dt=(w,B,j,Y,W,et,it)=>{const tt=()=>{if(w.isMounted){let{next:gt,bu:ut,u:X,parent:wt,vnode:Dt}=w,Ht=gt,Tt;Is(gt||w.vnode),Xr(w,!1),gt?(gt.el=Dt.el,qt(w,gt,it)):gt=Dt,ut&&xr(ut),(Tt=gt.props&>.props.onVnodeBeforeUpdate)&&Ze(Tt,wt,gt,Dt),Xr(w,!0),qn(w,"render");const J=Vo(w);tr(w,"render");const mt=w.subTree;w.subTree=J,qn(w,"patch"),F(mt,J,d(mt.el),Se(mt),w,W,et),tr(w,"patch"),gt.el=J.el,Ht===null&&zc(w,J.el),X&&Ve(X,W),(Tt=gt.props&>.props.onVnodeUpdated)&&Ve(()=>Ze(Tt,wt,gt,Dt),W),ah(w),Ts()}else{let gt;const{el:ut,props:X}=B,{bm:wt,m:Dt,parent:Ht}=w,Tt=oi(B);if(Xr(w,!1),wt&&xr(wt),!Tt&&(gt=X&&X.onVnodeBeforeMount)&&Ze(gt,Ht,B),Xr(w,!0),ut&&Ue){const J=()=>{qn(w,"render"),w.subTree=Vo(w),tr(w,"render"),qn(w,"hydrate"),Ue(ut,w.subTree,w,W,null),tr(w,"hydrate")};Tt?B.type.__asyncLoader().then(()=>!w.isUnmounted&&J()):J()}else{qn(w,"render");const J=w.subTree=Vo(w);tr(w,"render"),qn(w,"patch"),F(null,J,j,Y,w,W,et),tr(w,"patch"),B.el=J.el}if(Dt&&Ve(Dt,W),!Tt&&(gt=X&&X.onVnodeMounted)){const J=B;Ve(()=>Ze(gt,Ht,J),W)}(B.shapeFlag&256||Ht&&oi(Ht.vnode)&&Ht.vnode.shapeFlag&256)&&w.a&&Ve(w.a,W),w.isMounted=!0,Gl(w),B=j=Y=null}},nt=w.effect=new so(tt,()=>oo(Z),w.scope),Z=w.update=()=>nt.run();Z.id=w.uid,Xr(w,!0),nt.onTrack=w.rtc?gt=>xr(w.rtc,gt):void 0,nt.onTrigger=w.rtg?gt=>xr(w.rtg,gt):void 0,Z.ownerInstance=w,Z()},qt=(w,B,j)=>{B.component=w;const Y=w.vnode.props;w.vnode=B,w.next=null,Zv(w,B.props,Y,j),sb(w,B.children,j),vi(),yf(),bi()},Ft=(w,B,j,Y,W,et,it,tt,nt=!1)=>{const Z=w&&w.children,gt=w?w.shapeFlag:0,ut=B.children,{patchFlag:X,shapeFlag:wt}=B;if(X>0){if(X&128){ce(Z,ut,j,Y,W,et,it,tt,nt);return}else if(X&256){se(Z,ut,j,Y,W,et,it,tt,nt);return}}wt&8?(gt&16&&Be(Z,W,et),ut!==Z&&f(j,ut)):gt&16?wt&16?ce(Z,ut,j,Y,W,et,it,tt,nt):Be(Z,W,et,!0):(gt&8&&f(j,""),wt&16&&U(ut,j,Y,W,et,it,tt,nt))},se=(w,B,j,Y,W,et,it,tt,nt)=>{w=w||Mi,B=B||Mi;const Z=w.length,gt=B.length,ut=Math.min(Z,gt);let X;for(X=0;Xgt?Be(w,W,et,!0,!1,ut):U(B,j,Y,W,et,it,tt,nt,ut)},ce=(w,B,j,Y,W,et,it,tt,nt)=>{let Z=0;const gt=B.length;let ut=w.length-1,X=gt-1;for(;Z<=ut&&Z<=X;){const wt=w[Z],Dt=B[Z]=nt?Tr(B[Z]):Qe(B[Z]);if(Hn(wt,Dt))F(wt,Dt,j,null,W,et,it,tt,nt);else break;Z++}for(;Z<=ut&&Z<=X;){const wt=w[ut],Dt=B[X]=nt?Tr(B[X]):Qe(B[X]);if(Hn(wt,Dt))F(wt,Dt,j,null,W,et,it,tt,nt);else break;ut--,X--}if(Z>ut){if(Z<=X){const wt=X+1,Dt=wtX)for(;Z<=ut;)Yt(w[Z],W,et,!0),Z++;else{const wt=Z,Dt=Z,Ht=new Map;for(Z=Dt;Z<=X;Z++){const at=B[Z]=nt?Tr(B[Z]):Qe(B[Z]);at.key!=null&&(Ht.has(at.key)&&G("Duplicate keys found during update:",JSON.stringify(at.key),"Make sure keys are unique."),Ht.set(at.key,Z))}let Tt,J=0;const mt=X-Dt+1;let xt=!1,Rt=0;const ot=new Array(mt);for(Z=0;Z=mt){Yt(at,W,et,!0);continue}let T;if(at.key!=null)T=Ht.get(at.key);else for(Tt=Dt;Tt<=X;Tt++)if(ot[Tt-Dt]===0&&Hn(at,B[Tt])){T=Tt;break}T===void 0?Yt(at,W,et,!0):(ot[T-Dt]=Z+1,T>=Rt?Rt=T:xt=!0,F(at,B[T],j,null,W,et,it,tt,nt),J++)}const ct=xt?ub(ot):Mi;for(Tt=ct.length-1,Z=mt-1;Z>=0;Z--){const at=Dt+Z,T=B[at],v=at+1{const{el:et,type:it,transition:tt,children:nt,shapeFlag:Z}=w;if(Z&6){It(w.component.subTree,B,j,Y);return}if(Z&128){w.suspense.move(B,j,Y);return}if(Z&64){it.move(w,B,j,ae);return}if(it===Re){r(et,B,j);for(let ut=0;uttt.enter(et),W);else{const{leave:ut,delayLeave:X,afterLeave:wt}=tt,Dt=()=>r(et,B,j),Ht=()=>{ut(et,()=>{Dt(),wt&&wt()})};X?X(et,Dt,Ht):Ht()}else r(et,B,j)},Yt=(w,B,j,Y=!1,W=!1)=>{const{type:et,props:it,ref:tt,children:nt,dynamicChildren:Z,shapeFlag:gt,patchFlag:ut,dirs:X}=w;if(tt!=null&&ia(tt,null,j,w,!0),gt&256){B.ctx.deactivate(w);return}const wt=gt&1&&X,Dt=!oi(w);let Ht;if(Dt&&(Ht=it&&it.onVnodeBeforeUnmount)&&Ze(Ht,B,w),gt&6)Ye(w.component,j,Y);else{if(gt&128){w.suspense.unmount(j,Y);return}wt&&zn(w,null,B,"beforeUnmount"),gt&64?w.type.remove(w,B,j,W,ae,Y):Z&&(et!==Re||ut>0&&ut&64)?Be(Z,B,j,!1,!0):(et===Re&&ut&384||!W&>&16)&&Be(nt,B,j),Y&&we(w)}(Dt&&(Ht=it&&it.onVnodeUnmounted)||wt)&&Ve(()=>{Ht&&Ze(Ht,B,w),wt&&zn(w,null,B,"unmounted")},j)},we=w=>{const{type:B,el:j,anchor:Y,transition:W}=w;if(B===Re){w.patchFlag>0&&w.patchFlag&2048&&W&&!W.persisted?w.children.forEach(it=>{it.type===De?i(it.el):we(it)}):Oe(j,Y);return}if(B===Dr){P(w);return}const et=()=>{i(j),W&&!W.persisted&&W.afterLeave&&W.afterLeave()};if(w.shapeFlag&1&&W&&!W.persisted){const{leave:it,delayLeave:tt}=W,nt=()=>it(j,et);tt?tt(w.el,et,nt):nt()}else et()},Oe=(w,B)=>{let j;for(;w!==B;)j=h(w),i(w),w=j;i(B)},Ye=(w,B,j)=>{w.type.__hmrId&&iv(w);const{bum:Y,scope:W,update:et,subTree:it,um:tt}=w;Y&&xr(Y),W.stop(),et&&(et.active=!1,Yt(it,w,B,j)),tt&&Ve(tt,B),Ve(()=>{w.isUnmounted=!0},B),B&&B.pendingBranch&&!B.isUnmounted&&w.asyncDep&&!w.asyncResolved&&w.suspenseId===B.pendingId&&(B.deps--,B.deps===0&&B.resolve()),cv(w)},Be=(w,B,j,Y=!1,W=!1,et=0)=>{for(let it=et;itw.shapeFlag&6?Se(w.component.subTree):w.shapeFlag&128?w.suspense.next():h(w.anchor||w.el),Ie=(w,B,j)=>{w==null?B._vnode&&Yt(B._vnode,null,null,!0):F(B._vnode||null,w,B,null,null,null,j),yf(),ta(),B._vnode=w},ae={p:F,um:Yt,m:It,r:we,mt:st,mc:U,pc:Ft,pbc:V,n:Se,o:e};let lt,Ue;return t&&([lt,Ue]=t(ae)),{render:Ie,hydrate:lt,createApp:ab(Ie,lt)}}function Xr({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Cs(e,t,n=!1){const r=e.children,i=t.children;if(vt(r)&&vt(i))for(let o=0;o>1,e[n[a]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,s=n[o-1];o-- >0;)n[o]=s,s=t[s];return n}const fb=e=>e.__isTeleport,Ni=e=>e&&(e.disabled||e.disabled===""),Mf=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,ec=(e,t)=>{const n=e&&e.to;if(xe(n))if(t){const r=t(n);return r||G(`Failed to locate Teleport target with selector "${n}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`),r}else return G("Current renderer does not support string target for Teleports. (missing querySelector renderer option)"),null;else return!n&&!Ni(e)&&G(`Invalid Teleport target: ${n}`),n},db={__isTeleport:!0,process(e,t,n,r,i,o,s,a,l,c){const{mc:f,pc:d,pbc:h,o:{insert:p,querySelector:b,createText:A,createComment:F}}=c,O=Ni(t.props);let{shapeFlag:m,children:I,dynamicChildren:E}=t;if(Fr&&(l=!1,E=null),e==null){const N=t.el=F("teleport start"),P=t.anchor=F("teleport end");p(N,n,r),p(P,n,r);const R=t.target=ec(t.props,b),C=t.targetAnchor=A("");R?(p(C,R),s=s||Mf(R)):O||G("Invalid Teleport target on mount:",R,`(${typeof R})`);const L=(U,z)=>{m&16&&f(I,U,z,i,o,s,a,l)};O?L(n,P):R&&L(R,C)}else{t.el=e.el;const N=t.anchor=e.anchor,P=t.target=e.target,R=t.targetAnchor=e.targetAnchor,C=Ni(e.props),L=C?n:P,U=C?N:R;if(s=s||Mf(P),E?(h(e.dynamicChildren,E,L,i,o,s,a),Cs(e,t,!0)):l||d(e,t,L,U,i,o,s,a,!1),O)C||Mo(t,n,N,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const z=t.target=ec(t.props,b);z?Mo(t,z,null,c,0):G("Invalid Teleport target on update:",P,`(${typeof P})`)}else C&&Mo(t,P,R,c,1)}},remove(e,t,n,r,{um:i,o:{remove:o}},s){const{shapeFlag:a,children:l,anchor:c,targetAnchor:f,target:d,props:h}=e;if(d&&o(f),(s||!Ni(h))&&(o(c),a&16))for(let p=0;p0?tn||Mi:null,kh(),fi>0&&tn&&tn.push(e),e}function ai(e,t,n,r,i,o){return Hh(cs(e,t,n,r,i,o,!0))}function za(e,t,n,r,i){return Hh(me(e,t,n,r,i,!0))}function cr(e){return e?e.__v_isVNode===!0:!1}function Hn(e,t){return t.shapeFlag&6&&Bi.has(t.type)?!1:e.type===t.type&&e.key===t.key}let rc;function gb(e){rc=e}const mb=(...e)=>yb(...rc?rc(e,Ne):e),ka="__vInternal",Wh=({key:e})=>e!=null?e:null,zo=({ref:e,ref_key:t,ref_for:n})=>e!=null?xe(e)||Pe(e)||At(e)?{i:Ne,r:e,k:t,f:!!n}:e:null;function cs(e,t=null,n=null,r=0,i=null,o=e===Re?0:1,s=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wh(t),ref:t&&zo(t),scopeId:Ua,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null};return a?(Zc(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=xe(n)?8:16),l.key!==l.key&&G("VNode created with invalid key (NaN). VNode type:",l.type),fi>0&&!s&&tn&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&tn.push(l),l}const me=mb;function yb(e,t=null,n=null,r=0,i=null,o=!1){if((!e||e===Eh)&&(e||G(`Invalid vnode type when creating vnode: ${e}.`),e=De),cr(e)){const a=xn(e,t,!0);return n&&Zc(a,n),fi>0&&!o&&tn&&(a.shapeFlag&6?tn[tn.indexOf(e)]=a:tn.push(a)),a.patchFlag|=-2,a}if(tp(e)&&(e=e.__vccOpts),t){t=Yh(t);let{class:a,style:l}=t;a&&!xe(a)&&(t.class=ro(a)),re(l)&&(js(l)&&!vt(l)&&(l=ve({},l)),t.style=no(l))}const s=xe(e)?1:dh(e)?128:fb(e)?64:re(e)?4:At(e)?2:0;return s&4&&js(e)&&(e=$t(e),G("Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with `markRaw` or using `shallowRef` instead of `ref`.",` +Component that was made reactive: `,e)),cs(e,t,n,r,i,s,o,!0)}function Yh(e){return e?js(e)||ka in e?ve({},e):e:null}function xn(e,t,n=!1){const{props:r,ref:i,patchFlag:o,children:s}=e,a=t?Kh(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Wh(a),ref:t&&t.ref?n&&i?vt(i)?i.concat(zo(t)):[i,zo(t)]:zo(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o===-1&&vt(s)?s.map(Gh):s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Re?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&xn(e.ssContent),ssFallback:e.ssFallback&&xn(e.ssFallback),el:e.el,anchor:e.anchor}}function Gh(e){const t=xn(e);return vt(e.children)&&(t.children=e.children.map(Gh)),t}function Jc(e=" ",t=0){return me(ui,null,e,t)}function vb(e,t){const n=me(Dr,null,e);return n.staticCount=t,n}function ko(e="",t=!1){return t?(Fn(),za(De,null,e)):me(De,null,e)}function Qe(e){return e==null||typeof e=="boolean"?me(De):vt(e)?me(Re,null,e.slice()):typeof e=="object"?Tr(e):me(ui,null,String(e))}function Tr(e){return e.el===null||e.memo?e:xn(e)}function Zc(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(vt(t))n=16;else if(typeof t=="object")if(r&65){const i=t.default;i&&(i._c&&(i._d=!1),Zc(e,i()),i._c&&(i._d=!0));return}else{n=32;const i=t._;!i&&!(ka in t)?t._ctx=Ne:i===3&&Ne&&(Ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else At(t)?(t={default:t,_ctx:Ne},n=32):(t=String(t),r&64?(n=16,t=[Jc(t)]):n=8);e.children=t,e.shapeFlag|=n}function Kh(...e){const t={};for(let n=0;nMe||Ne,Ur=e=>{Me=e,e.scope.on()},Rr=()=>{Me&&Me.scope.off(),Me=null},Sb=fr("slot,component");function ic(e,t){const n=t.isNativeTag||Pd;(Sb(e)||n(e))&&G("Do not use built-in or reserved HTML elements as component id: "+e)}function Jh(e){return e.vnode.shapeFlag&4}let Yi=!1;function Zh(e,t=!1){Yi=t;const{props:n,children:r}=e.vnode,i=Jh(e);Xv(e,n,i,t),ib(e,r);const o=i?Ib(e,t):void 0;return Yi=!1,o}function Ib(e,t){var n;const r=e.type;{if(r.name&&ic(r.name,e.appContext.config),r.components){const o=Object.keys(r.components);for(let s=0;s1?qh(e):null;Ur(e),vi();const s=Yn(i,e,0,[ti(e.props),o]);if(bi(),Rr(),Ca(s)){if(s.then(Rr,Rr),t)return s.then(a=>{sc(e,a,t)}).catch(a=>{wi(a,e,0)});if(e.asyncDep=s,!e.suspense){const a=(n=r.name)!==null&&n!==void 0?n:"Anonymous";G(`Component <${a}>: setup function returned a promise, but no boundary was found in the parent component tree. A component with async setup() must be nested in a in order to be rendered.`)}}else sc(e,s,t)}else Qh(e,t)}function sc(e,t,n){At(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:re(t)?(cr(t)&&G("setup() should not return VNodes directly - return a render function instead."),e.devtoolsRawSetupState=t,e.setupState=Pc(t),zv(e)):t!==void 0&&G(`setup() should return an object. Received: ${t===null?"null":typeof t}`),Qh(e,n)}let Fs,oc;function Tb(e){Fs=e,oc=t=>{t.render._rc&&(t.withProxy=new Proxy(t.ctx,jv))}}const Qc=()=>!Fs;function Qh(e,t,n){const r=e.type;if(!e.render){if(!t&&Fs&&!r.render){const i=r.template;if(i){qn(e,"compile");const{isCustomElement:o,compilerOptions:s}=e.appContext.config,{delimiters:a,compilerOptions:l}=r,c=ve(ve({isCustomElement:o,delimiters:a},s),l);r.render=Fs(i,c),tr(e,"compile")}}e.render=r.render||qe,oc&&oc(e)}Ur(e),vi(),Hv(e),bi(),Rr(),!r.render&&e.render===qe&&!t&&(!Fs&&r.template?G('Component provided template option but runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".'):G("Component is missing template or render function."))}function xb(e){return new Proxy(e.attrs,{get(t,n){return ea(),mn(e,"get","$attrs"),t[n]},set(){return G("setupContext.attrs is readonly."),!1},deleteProperty(){return G("setupContext.attrs is readonly."),!1}})}function qh(e){const t=r=>{e.exposed&&G("expose() should be called only once per setup()."),e.exposed=r||{}};let n;return Object.freeze({get attrs(){return n||(n=xb(e))},get slots(){return ti(e.slots)},get emit(){return(r,...i)=>e.emit(r,...i)},expose:t})}function Ha(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Pc(Fc(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Wi)return Wi[n](e)}}))}const Ob=/(?:^|[-_])(\w)/g,Ab=e=>e.replace(Ob,t=>t.toUpperCase()).replace(/[-_]/g,"");function Hs(e,t=!0){return At(e)?e.displayName||e.name:e.name||t&&e.__name}function Wa(e,t,n=!1){let r=Hs(t);if(!r&&t.__file){const i=t.__file.match(/([^/\\]+)\.\w+$/);i&&(r=i[1])}if(!r&&e&&e.parent){const i=o=>{for(const s in o)if(o[s]===t)return s};r=i(e.components||e.parent.type.components)||i(e.appContext.components)}return r?Ab(r):n?"App":"Anonymous"}function tp(e){return At(e)&&"__vccOpts"in e}const ep=(e,t)=>Gy(e,t,Yi),Ya=e=>G(`${e}() is a compiler-hint helper that is only usable inside + + + +
+ + + \ No newline at end of file diff --git a/frontend/js/index.js b/frontend/js/index.js deleted file mode 100644 index 4fc8d5e..0000000 --- a/frontend/js/index.js +++ /dev/null @@ -1,196 +0,0 @@ -window.SD = (() => { - /* - * Painterro is made a field of the SD global object - * To provide convinience when using w() method in css_and_js.py - */ - class PainterroClass { - static isOpen = false; - static async init ({ x, toId }) { - console.log(x) - - const originalImage = x[2] === 'Mask' ? x[1]?.image : x[0]; - - if (window.Painterro === undefined) { - try { - await this.load(); - } catch (e) { - SDClass.error(e); - - return this.fallback(originalImage); - } - } - - if (this.isOpen) { - return this.fallback(originalImage); - } - this.isOpen = true; - - let resolveResult; - const paintClient = Painterro({ - hiddenTools: ['arrow'], - onHide: () => { - resolveResult?.(null); - }, - saveHandler: (image, done) => { - const data = image.asDataURL(); - - // ensures stable performance even - // when the editor is in interactive mode - SD.clearImageInput(SD.el.get(`#${toId}`)); - - resolveResult(data); - - done(true); - paintClient.hide(); - }, - }); - - const result = await new Promise((resolve) => { - resolveResult = resolve; - paintClient.show(originalImage); - }); - this.isOpen = false; - - return result ? this.success(result) : this.fallback(originalImage); - } - static success (result) { return [result, { image: result, mask: result }] }; - static fallback (image) { return [image, { image: image, mask: image }] }; - static load () { - return new Promise((resolve, reject) => { - const scriptId = '__painterro-script'; - if (document.getElementById(scriptId)) { - reject(new Error('Tried to load painterro script, but script tag already exists.')); - return; - } - - const styleId = '__painterro-css-override'; - if (!document.getElementById(styleId)) { - /* Ensure Painterro window is always on top */ - const style = document.createElement('style'); - style.id = styleId; - style.setAttribute('type', 'text/css'); - style.appendChild(document.createTextNode(` - .ptro-holder-wrapper { - z-index: 100; - } - `)); - document.head.appendChild(style); - } - - const script = document.createElement('script'); - script.id = scriptId; - script.src = 'https://unpkg.com/painterro@1.2.78/build/painterro.min.js'; - script.onload = () => resolve(true); - script.onerror = (e) => { - // remove self on error to enable reattempting load - document.head.removeChild(script); - reject(e); - }; - document.head.appendChild(script); - }); - } - } - - /* - * Turns out caching elements doesn't actually work in gradio - * As elements in tabs might get recreated - */ - class ElementCache { - #el; - constructor () { - this.root = document.querySelector('gradio-app').shadowRoot; - } - get (selector) { - return this.root.querySelector(selector); - } - } - - /* - * The main helper class to incapsulate functions - * that change gradio ui functionality - */ - class SDClass { - el = new ElementCache(); - Painterro = PainterroClass; - moveImageFromGallery ({ x, fromId, toId }) { - x = x[0]; - if (!Array.isArray(x) || x.length === 0) return; - - this.clearImageInput(this.el.get(`#${toId}`)); - - const i = this.#getGallerySelectedIndex(this.el.get(`#${fromId}`)); - - return [x[i].replace('data:;','data:image/png;')]; - } - async copyImageFromGalleryToClipboard ({ x, fromId }) { - x = x[0]; - if (!Array.isArray(x) || x.length === 0) return; - - const i = this.#getGallerySelectedIndex(this.el.get(`#${fromId}`)); - - const data = x[i]; - const blob = await (await fetch(data.replace('data:;','data:image/png;'))).blob(); - const item = new ClipboardItem({'image/png': blob}); - - await this.copyToClipboard([item]); - } - async copyFullOutput ({ fromId }) { - const textField = this.el.get(`#${fromId} .textfield`); - if (!textField) { - SDclass.error(new Error(`Can't find textfield with the output!`)); - } - - const value = textField.textContent.replace(/\s+/g,' ').replace(/: /g,':'); - - await this.copyToClipboard(value) - } - clickFirstVisibleButton({ rowId }) { - const generateButtons = this.el.get(`#${rowId}`).querySelectorAll('.gr-button-primary'); - - if (!generateButtons) return; - - for (let i = 0, arr = [...generateButtons]; i < arr.length; i++) { - const cs = window.getComputedStyle(arr[i]); - - if (cs.display !== 'none' && cs.visibility !== 'hidden') { - console.log(arr[i]); - - arr[i].click(); - break; - } - } - } - async gradioInputToClipboard ({ x }) { return this.copyToClipboard(x[0]); } - async copyToClipboard (value) { - if (!value || typeof value === 'boolean') return; - try { - if (Array.isArray(value) && - value.length && - value[0] instanceof ClipboardItem) { - await navigator.clipboard.write(value); - } else { - await navigator.clipboard.writeText(value); - } - } catch (e) { - SDClass.error(e); - } - } - static error (e) { - console.error(e); - if (typeof e === 'string') { - alert(e); - } else if(typeof e === 'object' && Object.hasOwn(e, 'message')) { - alert(e.message); - } - } - clearImageInput (imageEditor) { - imageEditor?.querySelector('.modify-upload button:last-child')?.click(); - } - #getGallerySelectedIndex (gallery) { - const selected = gallery.querySelector(`.\\!ring-2`); - return selected ? [...selected.parentNode.children].indexOf(selected) : 0; - } - } - - return new SDClass(); -})(); diff --git a/scripts/sd_concept_library.py b/scripts/sd_concept_library.py index 7deb5b2..26a4fe9 100644 --- a/scripts/sd_concept_library.py +++ b/scripts/sd_concept_library.py @@ -12,7 +12,7 @@ # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# along with this program. If not, see . # base webui import and utils. from sd_utils import * @@ -28,7 +28,7 @@ class plugin_info(): # Init Vuejs component _component_func = components.declare_component( - "sd-concepts-browser", "./frontend/dist") + "sd-concepts-browser", "./frontend/dists/concept-browser/dist") def sdConceptsBrowser(concepts, key=None): diff --git a/scripts/txt2img.py b/scripts/txt2img.py index 94903c4..63d2c79 100644 --- a/scripts/txt2img.py +++ b/scripts/txt2img.py @@ -12,7 +12,7 @@ # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# along with this program. If not, see . # base webui import and utils. from sd_utils import * @@ -23,11 +23,15 @@ from streamlit import StopException #other imports import os from typing import Union -#from io import BytesIO +from io import BytesIO from ldm.models.diffusion.ddim import DDIMSampler from ldm.models.diffusion.plms import PLMSSampler - -# Temp imports +import streamlit.components.v1 as components +from streamlit.runtime.media_file_manager import media_file_manager +from streamlit.elements.image import image_to_url +# uuid +import uuid +# Temp imports # end of imports @@ -42,6 +46,44 @@ try: except: pass +# Dev mode (server) +# _component_func = components.declare_component( +# "sd-gallery", +# url="http://localhost:3001", +# ) + +# Init Vuejs component +_component_func = components.declare_component( + "sd-gallery", "./frontend/dists/sd-gallery/dist") + +def sdGallery(images=[], key=None): + component_value = _component_func(images=imgsToGallery(images), key=key, default="") + return component_value + +def imgsToGallery(images): + urls = [] + for i in images: + # random string for id + random_id = str(uuid.uuid4()) + url = image_to_url( + image=i, + image_id= random_id, + width=i.width, + clamp=False, + channels="RGB", + output_format="PNG" + ) + # image_io = BytesIO() + # i.save(image_io, 'PNG') + # width, height = i.size + # image_id = "%s" % (str(images.index(i))) + # (data, mimetype) = STImage._normalize_to_bytes(image_io.getvalue(), width, 'auto') + # this_file = media_file_manager.add(data, mimetype, image_id) + # img_str = this_file.url + urls.append(url) + + return urls + class plugin_info(): plugname = "txt2img" description = "Text to Image" @@ -57,21 +99,21 @@ else: if os.path.exists(os.path.join(st.session_state['defaults'].general.RealESRGAN_dir, "experiments","pretrained_models", f"{st.session_state['defaults'].general.RealESRGAN_model}.pth")): server_state["RealESRGAN_available"] = True else: - server_state["RealESRGAN_available"] = False + server_state["RealESRGAN_available"] = False # def txt2img(prompt: str, ddim_steps: int, sampler_name: str, realesrgan_model_name: str, n_iter: int, batch_size: int, cfg_scale: float, seed: Union[int, str, None], height: int, width: int, separate_prompts:bool = False, normalize_prompt_weights:bool = True, save_individual_images: bool = True, save_grid: bool = True, group_by_prompt: bool = True, - save_as_jpg: bool = True, use_GFPGAN: bool = True, use_RealESRGAN: bool = True, - RealESRGAN_model: str = "RealESRGAN_x4plus_anime_6B", fp = None, variant_amount: float = None, + save_as_jpg: bool = True, use_GFPGAN: bool = True, use_RealESRGAN: bool = True, + RealESRGAN_model: str = "RealESRGAN_x4plus_anime_6B", fp = None, variant_amount: float = None, variant_seed: int = None, ddim_eta:float = 0.0, write_info_files:bool = True): outpath = st.session_state['defaults'].general.outdir_txt2img or st.session_state['defaults'].general.outdir or "outputs/txt2img-samples" seed = seed_to_int(seed) - + if sampler_name == 'PLMS': sampler = PLMSSampler(server_state["model"]) elif sampler_name == 'DDIM': @@ -111,9 +153,9 @@ def txt2img(prompt: str, ddim_steps: int, sampler_name: str, realesrgan_model_na sampler_name=sampler_name, save_grid=save_grid, batch_size=batch_size, - n_iter=n_iter, - steps=ddim_steps, - cfg_scale=cfg_scale, + n_iter=n_iter, + steps=ddim_steps, + cfg_scale=cfg_scale, width=width, height=height, prompt_matrix=separate_prompts, @@ -151,7 +193,7 @@ def layout(): prompt = st.text_input("Input Text","", placeholder="A corgi wearing a top hat as an oil painting.") # creating the page layout using columns - col1, col2, col3 = st.columns([1,2,1], gap="large") + col1, col2, col3 = st.columns([1,2,1], gap="large") with col1: width = st.slider("Width:", min_value=st.session_state['defaults'].txt2img.width.min_value, max_value=st.session_state['defaults'].txt2img.width.max_value, @@ -160,15 +202,15 @@ def layout(): value=st.session_state['defaults'].txt2img.height.value, step=st.session_state['defaults'].txt2img.height.step) cfg_scale = st.slider("CFG (Classifier Free Guidance Scale):", min_value=st.session_state['defaults'].txt2img.cfg_scale.min_value, max_value=st.session_state['defaults'].txt2img.cfg_scale.max_value, - value=st.session_state['defaults'].txt2img.cfg_scale.value, step=st.session_state['defaults'].txt2img.cfg_scale.step, + value=st.session_state['defaults'].txt2img.cfg_scale.value, step=st.session_state['defaults'].txt2img.cfg_scale.step, help="How strongly the image should follow the prompt.") seed = st.text_input("Seed:", value=st.session_state['defaults'].txt2img.seed, help=" The seed to use, if left blank a random seed will be generated.") - + with st.expander("Batch Options"): batch_count = st.slider("Batch count.", min_value=st.session_state['defaults'].txt2img.batch_count.min_value, max_value=st.session_state['defaults'].txt2img.batch_count.max_value, value=st.session_state['defaults'].txt2img.batch_count.value, step=st.session_state['defaults'].txt2img.batch_count.step, help="How many iterations or batches of images to generate in total.") - + batch_size = st.slider("Batch size", min_value=st.session_state['defaults'].txt2img.batch_size.min_value, max_value=st.session_state['defaults'].txt2img.batch_size.max_value, value=st.session_state.defaults.txt2img.batch_size.value, step=st.session_state.defaults.txt2img.batch_size.step, help="How many images are at once in a batch.\ @@ -184,7 +226,7 @@ def layout(): st.session_state["update_preview_frequency"] = st.text_input("Update Image Preview Frequency", value=st.session_state['defaults'].txt2img.update_preview_frequency, help="Frequency in steps at which the the preview image is updated. By default the frequency \ is set to 1 step.") - + with col2: preview_tab, gallery_tab = st.tabs(["Preview", "Gallery"]) @@ -205,27 +247,30 @@ def layout(): message = st.empty() + with gallery_tab: + st.session_state["gallery"] = st.empty() + with col3: - # If we have custom models available on the "models/custom" + # If we have custom models available on the "models/custom" #folder then we show a menu to select which model we want to use, otherwise we use the main model for SD custom_models_available() - + if server_state["CustomModel_available"]: st.session_state["custom_model"] = st.selectbox("Custom Model:", server_state["custom_models"], index=server_state["custom_models"].index(st.session_state['defaults'].general.default_model), help="Select the model you want to use. This option is only available if you have custom models \ on your 'models/custom' folder. The model name that will be shown here is the same as the name\ the file for the model has on said folder, it is recommended to give the .ckpt file a name that \ - will make it easier for you to distinguish it from other models. Default: Stable Diffusion v1.4") - + will make it easier for you to distinguish it from other models. Default: Stable Diffusion v1.4") + st.session_state.sampling_steps = st.slider("Sampling Steps", value=st.session_state.defaults.txt2img.sampling_steps.value, min_value=st.session_state.defaults.txt2img.sampling_steps.min_value, max_value=st.session_state['defaults'].txt2img.sampling_steps.max_value, - step=st.session_state['defaults'].txt2img.sampling_steps.step) + step=st.session_state['defaults'].txt2img.sampling_steps.step) sampler_name_list = ["k_lms", "k_euler", "k_euler_a", "k_dpm_2", "k_dpm_2_a", "k_heun", "PLMS", "DDIM"] sampler_name = st.selectbox("Sampling method", sampler_name_list, - index=sampler_name_list.index(st.session_state['defaults'].txt2img.default_sampler), help="Sampling method to use. Default: k_euler") + index=sampler_name_list.index(st.session_state['defaults'].txt2img.default_sampler), help="Sampling method to use. Default: k_euler") with st.expander("Advanced"): separate_prompts = st.checkbox("Create Prompt Matrix.", value=st.session_state['defaults'].txt2img.separate_prompts, help="Separate multiple prompts using the `|` character, and get all combinations of them.") @@ -247,23 +292,23 @@ def layout(): st.session_state["use_RealESRGAN"] = st.checkbox("Use RealESRGAN", value=st.session_state['defaults'].txt2img.use_RealESRGAN, help="Uses the RealESRGAN model to upscale the images after the generation.\ This greatly improve the quality and lets you have high resolution images but uses extra VRAM. Disable if you need the extra VRAM.") - st.session_state["RealESRGAN_model"] = st.selectbox("RealESRGAN model", ["RealESRGAN_x4plus", "RealESRGAN_x4plus_anime_6B"], index=0) + st.session_state["RealESRGAN_model"] = st.selectbox("RealESRGAN model", ["RealESRGAN_x4plus", "RealESRGAN_x4plus_anime_6B"], index=0) else: st.session_state["use_RealESRGAN"] = False st.session_state["RealESRGAN_model"] = "RealESRGAN_x4plus" - + with st.expander("Variant"): variant_amount = st.slider("Variant Amount:", value=st.session_state['defaults'].txt2img.variant_amount.value, min_value=st.session_state['defaults'].txt2img.variant_amount.min_value, max_value=st.session_state['defaults'].txt2img.variant_amount.max_value, step=st.session_state['defaults'].txt2img.variant_amount.step) variant_seed = st.text_input("Variant Seed:", value=st.session_state['defaults'].txt2img.seed, help="The seed to use when generating a variant, if left blank a random seed will be generated.") - + #galleryCont = st.empty() # Every form must have a submit button, the extra blank spaces is a temp way to align it with the input field. Needs to be done in CSS or some other way. generate_col1.write("") generate_col1.write("") - generate_button = generate_col1.form_submit_button("Generate") + generate_button = generate_col1.form_submit_button("Generate") if generate_button: #print("Loading models") @@ -273,19 +318,19 @@ def layout(): with col2: with hc.HyLoader('Loading Models...', hc.Loaders.standard_loaders,index=[0]): load_models(False, st.session_state["use_GFPGAN"], st.session_state["use_RealESRGAN"], st.session_state["RealESRGAN_model"], server_state["CustomModel_available"], - st.session_state["custom_model"]) - + st.session_state["custom_model"]) + try: # output_images, seeds, info, stats = txt2img(prompt, st.session_state.sampling_steps, sampler_name, st.session_state["RealESRGAN_model"], batch_count, batch_size, cfg_scale, seed, height, width, separate_prompts, normalize_prompt_weights, save_individual_images, save_grid, group_by_prompt, save_as_jpg, st.session_state["use_GFPGAN"], st.session_state["use_RealESRGAN"], st.session_state["RealESRGAN_model"], variant_amount=variant_amount, variant_seed=variant_seed, write_info_files=write_info_files) - + message.success('Render Complete: ' + info + '; Stats: ' + stats, icon="✅") - + #history_tab,col1,col2,col3,PlaceHolder,col1_cont,col2_cont,col3_cont = st.session_state['historyTab'] - + #if 'latestImages' in st.session_state: #for i in output_images: ##push the new image to the list of latest images and remove the oldest one @@ -310,18 +355,25 @@ def layout(): #with col3: #[st.image(images[index]) for index in [2, 5, 8] if index < len(images)] #historyGallery = st.empty() - + ## check if output_images length is the same as seeds length #with gallery_tab: #st.markdown(createHTMLGallery(output_images,seeds), unsafe_allow_html=True) - - + + #st.session_state['historyTab'] = [history_tab,col1,col2,col3,PlaceHolder,col1_cont,col2_cont,col3_cont] - + + with gallery_tab: + print(seeds) + sdGallery(output_images) + + + except (StopException, KeyError): print(f"Received Streamlit StopException") - + # this will render all the images at the end of the generation but its better if its moved to a second tab inside col2 and shown as a gallery. # use the current col2 first tab to show the preview_img and update it as its generated. #preview_image.image(output_images) +