FumesAI
commited on
Update index.html
Browse files- index.html +1 -951
index.html
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
|
2 |
<html lang="en">
|
3 |
<head>
|
4 |
<meta charset="UTF-8">
|
@@ -113,953 +113,3 @@ display:flex;
|
|
113 |
|
114 |
|
115 |
|
116 |
-
|
117 |
-
<!DOCTYPE html>
|
118 |
-
<html lang="en">
|
119 |
-
<head>
|
120 |
-
<meta charset="UTF-8">
|
121 |
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
122 |
-
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
123 |
-
<link rel="stylesheet" href="style.css">
|
124 |
-
<script type='text/javascript'>
|
125 |
-
window.smartlook||(function(d) {
|
126 |
-
var o=smartlook=function(){ o.api.push(arguments)},h=d.getElementsByTagName('head')[0];
|
127 |
-
var c=d.createElement('script');o.api=new Array();c.async=true;c.type='text/javascript';
|
128 |
-
c.charset='utf-8';c.src='https://web-sdk.smartlook.com/recorder.js';h.appendChild(c);
|
129 |
-
})(document);
|
130 |
-
smartlook('init', '19cd176c1b6b8d0e93c37310a0703c8691b8ee7f', { region: 'eu' });
|
131 |
-
</script>
|
132 |
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
133 |
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
134 |
-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.11/katex.min.css">
|
135 |
-
<link href="https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@100&display=swap" rel="stylesheet" <meta
|
136 |
-
charset="UTF-8">
|
137 |
-
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8419334759638161"
|
138 |
-
crossorigin="anonymous"></script>
|
139 |
-
<title>Stable Diffusion Models Demo</title>
|
140 |
-
<style>
|
141 |
-
html, body {
|
142 |
-
margin: 0;
|
143 |
-
padding: 0;
|
144 |
-
box-sizing: border-box;
|
145 |
-
overflow-x: hidden !important;
|
146 |
-
}
|
147 |
-
body {
|
148 |
-
background-color: #000000;
|
149 |
-
margin: 0;
|
150 |
-
}
|
151 |
-
#main {
|
152 |
-
display: flex;
|
153 |
-
flex-direction: column;
|
154 |
-
margin: 50px;
|
155 |
-
margin: auto;
|
156 |
-
}
|
157 |
-
|
158 |
-
#usersHateIt{
|
159 |
-
|
160 |
-
display: flex;
|
161 |
-
flex-direction: row;
|
162 |
-
margin-top: 18px;
|
163 |
-
}
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
#cont {
|
168 |
-
background-color: #030303;
|
169 |
-
padding: 0px;
|
170 |
-
border-radius: 12px;
|
171 |
-
box-shadow: 8px 8px 16px #050505, -8px -8px 16px #080808;
|
172 |
-
display: flex;
|
173 |
-
align-items: center;
|
174 |
-
background: linear-gradient(black, black) padding-box,
|
175 |
-
linear-gradient(to left, cyan, purple) border-box;
|
176 |
-
border-radius: 12px;
|
177 |
-
border: 2.5px solid transparent;
|
178 |
-
width: 70%;
|
179 |
-
height: 9vh;
|
180 |
-
margin: auto;
|
181 |
-
margin-top: 5%;
|
182 |
-
margin-bottom: 20px;
|
183 |
-
}
|
184 |
-
#inp {
|
185 |
-
flex-grow: 1;
|
186 |
-
padding: 10px;
|
187 |
-
margin: 10px;
|
188 |
-
background: transparent;
|
189 |
-
border: none;
|
190 |
-
border-radius: 8px;
|
191 |
-
box-shadow: linear-gradient(145deg, rgb(0, 249, 153), #ff002b);
|
192 |
-
color: #fff;
|
193 |
-
outline: none;
|
194 |
-
min-height:40px;
|
195 |
-
}
|
196 |
-
#cont button {
|
197 |
-
padding: 2.5vh 4.6vh;
|
198 |
-
margin: 1vh;
|
199 |
-
background: linear-gradient(155deg, rgb(0, 149, 249), #9D00FF, rgb(255, 0, 43));
|
200 |
-
border: none;
|
201 |
-
border-radius: 8px;
|
202 |
-
color: #fff;
|
203 |
-
cursor: pointer;
|
204 |
-
}
|
205 |
-
#cont button:hover {
|
206 |
-
background: linear-gradient(145deg, #00ffab, rgb(255, 0, 43));
|
207 |
-
}
|
208 |
-
#as {
|
209 |
-
display: flex;
|
210 |
-
flex-direction: row;
|
211 |
-
width: 70%;
|
212 |
-
margin: auto;
|
213 |
-
justify-content: space-between;
|
214 |
-
}
|
215 |
-
#as button {
|
216 |
-
background-color: #0a0a0a;
|
217 |
-
border: none;
|
218 |
-
padding: 3vh 4.5vh;
|
219 |
-
font-size: 15px;
|
220 |
-
color: #ffffff;
|
221 |
-
cursor: pointer;
|
222 |
-
border-radius: 12px;
|
223 |
-
transition: box-shadow 0.3s ease-in-out;
|
224 |
-
}
|
225 |
-
#model{
|
226 |
-
background-color: #181717;
|
227 |
-
border: none;
|
228 |
-
padding: 3vh 4.5vh;
|
229 |
-
font-size: 15px;
|
230 |
-
color: #ffffff;
|
231 |
-
cursor: pointer;
|
232 |
-
border-radius: 12px;
|
233 |
-
transition: box-shadow 0.3s ease-in-out;
|
234 |
-
|
235 |
-
padding: 0px 0px 0px 20px ;
|
236 |
-
}
|
237 |
-
#as button:hover {
|
238 |
-
box-shadow: 15px 15px 30px #0d0d0d, -15px -15px 30px #1a1a1a; /* Adjusted shadow and highlight on hover */
|
239 |
-
}
|
240 |
-
@media only screen and (max-width: 600px) {
|
241 |
-
#cont {
|
242 |
-
width: 90%;
|
243 |
-
margin-bottom: 20px;
|
244 |
-
}
|
245 |
-
#main{
|
246 |
-
width: 90%;
|
247 |
-
}
|
248 |
-
#cont button {
|
249 |
-
padding: 15px 15px; /* Adjust button padding for smaller screens */
|
250 |
-
}
|
251 |
-
#as{
|
252 |
-
width: 88%;
|
253 |
-
}
|
254 |
-
#as button{
|
255 |
-
|
256 |
-
padding: 15px 20px; /* Adjust button padding for smaller screens */
|
257 |
-
}
|
258 |
-
.mod{
|
259 |
-
|
260 |
-
}
|
261 |
-
}
|
262 |
-
@media only screen and (max-width: 365px){
|
263 |
-
#cont{
|
264 |
-
width: 94%;
|
265 |
-
}
|
266 |
-
#main{
|
267 |
-
width: 94%;
|
268 |
-
}
|
269 |
-
#as{
|
270 |
-
width: 94%;
|
271 |
-
}
|
272 |
-
}
|
273 |
-
dialog{
|
274 |
-
background: rgba(29, 29, 29, 1);
|
275 |
-
border-radius: 16px;
|
276 |
-
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
|
277 |
-
margin-top: 20px;
|
278 |
-
border: 1px solid rgba(14, 13, 13, 0.3);
|
279 |
-
z-index: 100;
|
280 |
-
background: "Black";
|
281 |
-
}
|
282 |
-
#sli{
|
283 |
-
display: flex;
|
284 |
-
flex-direction: row;
|
285 |
-
align-items: center;
|
286 |
-
color: #eeeeee;
|
287 |
-
}
|
288 |
-
label{
|
289 |
-
font-family: 'Barlow Condensed';
|
290 |
-
|
291 |
-
font-size: 21px;
|
292 |
-
margin-right: 10px;
|
293 |
-
}
|
294 |
-
#sli input{
|
295 |
-
border: 1px solid rgb(137, 9, 223);
|
296 |
-
outline: none;
|
297 |
-
border-radius: 5px;
|
298 |
-
padding: 7px 20px;
|
299 |
-
background-color: transparent ;
|
300 |
-
color: white;
|
301 |
-
font-family: 'Barlow Condensed';
|
302 |
-
}
|
303 |
-
#Apply{
|
304 |
-
background-color: rgb(0, 247, 173);
|
305 |
-
padding: 5px 10px;
|
306 |
-
border: none;
|
307 |
-
color: #000000;
|
308 |
-
font-weight:500;
|
309 |
-
font-family: Arial, Helvetica, sans-serif;
|
310 |
-
font-size: 15px;
|
311 |
-
border-radius: 4px;
|
312 |
-
}
|
313 |
-
#close{
|
314 |
-
float: right;background-color: rgb(223, 7, 79); padding: 5px 10px;
|
315 |
-
border: none;
|
316 |
-
color: #000000;
|
317 |
-
font-weight:500;
|
318 |
-
font-family: Arial, Helvetica, sans-serif;
|
319 |
-
font-size: 15px;
|
320 |
-
border-radius: 4px;
|
321 |
-
}
|
322 |
-
#styles{
|
323 |
-
display: flex;
|
324 |
-
flex-direction: row;
|
325 |
-
gap: 6px;
|
326 |
-
color: white;
|
327 |
-
font-family: 'Barlow Condensed';
|
328 |
-
font-size: 20px;
|
329 |
-
flex-wrap: wrap;
|
330 |
-
|
331 |
-
}
|
332 |
-
|
333 |
-
|
334 |
-
@media screen and (min-width: 500px) and (max-width: 720px) {
|
335 |
-
dialog{
|
336 |
-
|
337 |
-
max-width: 420px;
|
338 |
-
}
|
339 |
-
|
340 |
-
#cont{
|
341 |
-
height: 7vh;
|
342 |
-
}
|
343 |
-
}
|
344 |
-
#styles{
|
345 |
-
align-items: center;
|
346 |
-
justify-content: center;
|
347 |
-
}
|
348 |
-
@media screen and (max-width: 500px) {
|
349 |
-
.ad{
|
350 |
-
display: flex;
|
351 |
-
flex-direction: row;
|
352 |
-
}
|
353 |
-
dialog {
|
354 |
-
max-width: 300px;
|
355 |
-
}
|
356 |
-
|
357 |
-
|
358 |
-
#jd {
|
359 |
-
font-size: 14px;
|
360 |
-
}
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
#styles{
|
365 |
-
align-items: center;
|
366 |
-
justify-content: center;
|
367 |
-
}
|
368 |
-
}
|
369 |
-
#jd{
|
370 |
-
margin: 10px;
|
371 |
-
padding: 5px;
|
372 |
-
background-color: transparent;
|
373 |
-
color: #eeeeee;
|
374 |
-
margin-right: 0;
|
375 |
-
margin-left: 0;
|
376 |
-
background: linear-gradient(black, rgb(0, 0, 0)) padding-box,
|
377 |
-
linear-gradient(to right, rgb(1, 255, 234),#ff0055) border-box;
|
378 |
-
border-radius: 20px;
|
379 |
-
border: 2.5px solid transparent;
|
380 |
-
border-radius: 7px;
|
381 |
-
margin-left: 0px;
|
382 |
-
font-family: 'Barlow Condensed';
|
383 |
-
font-size: 18px;
|
384 |
-
color: white;
|
385 |
-
}
|
386 |
-
#jd:hover{
|
387 |
-
background: linear-gradient(black, black) padding-box,
|
388 |
-
linear-gradient(to right, blue,#00ffdd) border-box;
|
389 |
-
border-radius: 10px;
|
390 |
-
border: 2.5px solid transparent;
|
391 |
-
}
|
392 |
-
#ow{
|
393 |
-
float: right;
|
394 |
-
margin: 10px;
|
395 |
-
padding: 10px;
|
396 |
-
background-color: transparent;
|
397 |
-
color: #eeeeee;
|
398 |
-
background: linear-gradient(black, black) padding-box,
|
399 |
-
linear-gradient(to right, rgb(0, 255, 149), rgb(174, 0, 255)) border-box;
|
400 |
-
border-radius: 10px;
|
401 |
-
border: 2.5px solid transparent;
|
402 |
-
border-radius: 10px;
|
403 |
-
margin-bottom: 0px;
|
404 |
-
margin-right: 0;
|
405 |
-
margin-left: 0;
|
406 |
-
border: 2px solid white;
|
407 |
-
}
|
408 |
-
#ow:hover{
|
409 |
-
background: linear-gradient(black, black) padding-box,
|
410 |
-
linear-gradient(to right, rgb(174, 0, 255),rgb(0, 255, 149)) border-box;
|
411 |
-
border-radius: 10px;
|
412 |
-
border: 2.5px solid transparent;
|
413 |
-
}
|
414 |
-
#dvv{
|
415 |
-
width: 100%;
|
416 |
-
margin-left: 10px;
|
417 |
-
}
|
418 |
-
#model{
|
419 |
-
width: 170px;
|
420 |
-
height: 50px;
|
421 |
-
overflow: visible;
|
422 |
-
}
|
423 |
-
#model option{
|
424 |
-
white-space: normal;
|
425 |
-
padding: 10px;
|
426 |
-
font-family: 'Barlow Condensed';
|
427 |
-
line-height: 1.2;
|
428 |
-
font-size: 24px;
|
429 |
-
}
|
430 |
-
.ad{
|
431 |
-
display: flex;
|
432 |
-
flex-direction: row;
|
433 |
-
}
|
434 |
-
#grad {
|
435 |
-
background-image: linear-gradient(45deg, rgb(0, 255, 149),rgb(255, 0, 43), rgb(174, 0, 255));
|
436 |
-
-webkit-background-clip: text;
|
437 |
-
-webkit-text-fill-color: transparent;
|
438 |
-
color: #000;
|
439 |
-
margin-left:15px;
|
440 |
-
font-family: 'Barlow Condensed'
|
441 |
-
}
|
442 |
-
|
443 |
-
#imshow progress {
|
444 |
-
margin-left: auto;
|
445 |
-
margin-right: auto;
|
446 |
-
display: block;
|
447 |
-
height: 25px;
|
448 |
-
width: 250px;
|
449 |
-
margin-top: 20px;
|
450 |
-
}
|
451 |
-
|
452 |
-
#imshow h5{
|
453 |
-
display: block;
|
454 |
-
}
|
455 |
-
progress::-webkit-progress-bar {
|
456 |
-
background-color: rgb(0,5,60);
|
457 |
-
}
|
458 |
-
progress::-webkit-progress-value {
|
459 |
-
background-color: rgb(0, 255, 149);
|
460 |
-
}
|
461 |
-
progress {
|
462 |
-
background-color: rgb(0,5,60);
|
463 |
-
}
|
464 |
-
progress::-moz-progress-bar {
|
465 |
-
background-color: rgb(0, 255, 149); }
|
466 |
-
progress {
|
467 |
-
background: rgb(0,10,60);
|
468 |
-
}
|
469 |
-
|
470 |
-
#x{
|
471 |
-
width:300px;
|
472 |
-
padding:0px;
|
473 |
-
gap:0px;
|
474 |
-
}
|
475 |
-
#aaa{
|
476 |
-
color: blue;
|
477 |
-
margin-left: 15px;
|
478 |
-
font-family: Arial;
|
479 |
-
letter-spacing: 0.3px;
|
480 |
-
}
|
481 |
-
|
482 |
-
#imshow {
|
483 |
-
display: flex;
|
484 |
-
justify-content: center;
|
485 |
-
max-width: 500px;
|
486 |
-
margin: auto;
|
487 |
-
max-height: 400px;
|
488 |
-
margin-top: 25px;
|
489 |
-
min-height: 200px;
|
490 |
-
}
|
491 |
-
|
492 |
-
#imshow img {
|
493 |
-
max-width: 100%;
|
494 |
-
max-height: 400px;
|
495 |
-
margin: 10px;
|
496 |
-
|
497 |
-
}
|
498 |
-
#ratio{
|
499 |
-
display: flex;
|
500 |
-
flex-direction: row;
|
501 |
-
gap: 6px;
|
502 |
-
color: white;
|
503 |
-
font-family: 'Barlow Condensed';
|
504 |
-
font-size: 20px;
|
505 |
-
flex-wrap: wrap;
|
506 |
-
}
|
507 |
-
|
508 |
-
@media screen and (max-width: 800px) {
|
509 |
-
#imshow {
|
510 |
-
display: flex;
|
511 |
-
flex-direction: column;
|
512 |
-
align-items: center;
|
513 |
-
justify-content: center;
|
514 |
-
max-width: 330px;
|
515 |
-
margin-top: 50px;
|
516 |
-
margin: auto;
|
517 |
-
overflow: auto;
|
518 |
-
height: 400px;
|
519 |
-
|
520 |
-
}
|
521 |
-
#imshow progress{
|
522 |
-
margin-top: 0px;
|
523 |
-
margin-bottom: 60px;
|
524 |
-
}
|
525 |
-
|
526 |
-
#imshow img {
|
527 |
-
max-width: 100%;
|
528 |
-
max-height: 100%;
|
529 |
-
margin: 10px;
|
530 |
-
object-fit: contain;
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
}
|
536 |
-
#img1{
|
537 |
-
padding-top: 115%;
|
538 |
-
}
|
539 |
-
}
|
540 |
-
#main{
|
541 |
-
margin-bottom: 30px;
|
542 |
-
}
|
543 |
-
|
544 |
-
#divx{
|
545 |
-
margin-left: 20px;
|
546 |
-
margin-right: 20px;
|
547 |
-
}
|
548 |
-
#u{
|
549 |
-
display: flex;
|
550 |
-
flex-direction: row;
|
551 |
-
|
552 |
-
}
|
553 |
-
#xx{
|
554 |
-
display:flex;
|
555 |
-
flex-direction: row;}
|
556 |
-
#gra{
|
557 |
-
color: white;
|
558 |
-
font-family: 'Barlow Condensed';
|
559 |
-
font-weight: 1;
|
560 |
-
font-size: 21px;
|
561 |
-
}
|
562 |
-
</style>
|
563 |
-
</head>
|
564 |
-
<body>
|
565 |
-
<div id="dvv">
|
566 |
-
<button id="jd">Discord</button>
|
567 |
-
|
568 |
-
<!--<button id="ow">
|
569 |
-
Donate
|
570 |
-
</button>-->
|
571 |
-
</div>
|
572 |
-
|
573 |
-
<h3 id="grad">Please like this space ❤️</h3><a href="https://www.buymeacoffee.com/mygX" id="aaa" target=”_blank”>BUY ME COFEE ☕ </a>
|
574 |
-
<p style="color:white;font-family:Barlow Condensed;margin-left:15px">Please open a community discussion if you face any problem or need some assistance. </p><div id="xx"> <h3 id="gra">Visit </h3><a href="https://fumesai.web.app" target=”_blank” style="color:blue;">OFFICIAL WEBSITE</a> <h3 id="gra"></h3></div>
|
575 |
-
|
576 |
-
<div id="main">
|
577 |
-
<div id="cont">
|
578 |
-
<input type="text" name="" id="inp" placeholder=" Enter Prompt here..">
|
579 |
-
<button id="create">Create </button>
|
580 |
-
</div>
|
581 |
-
|
582 |
-
<div id="as">
|
583 |
-
<select name="" id="model">
|
584 |
-
<option value="sdd" class="mod">Deep Dream</option>
|
585 |
-
|
586 |
-
</select>
|
587 |
-
<div id="Advance Setting"><button>Setting</button></div>
|
588 |
-
</div>
|
589 |
-
|
590 |
-
</div>
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
<dialog id="dialog">
|
597 |
-
<p style="font-size: 23px; font-family: 'Barlow Condensed'; margin: 0px; color: rgb(197, 14, 188);">Styles: </p>
|
598 |
-
|
599 |
-
<div id="styles">
|
600 |
-
<p>Photography</p>
|
601 |
-
<input type="radio" name="style" value="photo" checked>
|
602 |
-
<p>Cinematic</p>
|
603 |
-
<input type="radio" name="style" value="cinema" >
|
604 |
-
<p>FILM<p>
|
605 |
-
<input type="radio" name="style" value="fumes">
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
<p>Creative</p>
|
610 |
-
<input type="radio" name="style" value="fantasy">
|
611 |
-
<p>Digital Art</p>
|
612 |
-
<input type="radio" name="style" value="digital">
|
613 |
-
<p>No Style</p>
|
614 |
-
<input type="radio" name="style" value="no">
|
615 |
-
</div>
|
616 |
-
|
617 |
-
<div id="sli">
|
618 |
-
<label for="#np" style="margin-bottom: 15px;">Negative Prompt: </label>
|
619 |
-
<input type="text" placeholder="Negative prompt" id="np" style="margin-bottom: 15px;">
|
620 |
-
</div>
|
621 |
-
<div id="sli">
|
622 |
-
<label for="#gds">Guidence Scale: </label>
|
623 |
-
<input type="range" id="gds" value="7" min="1" max="20" step="1"><p id="gdsp">7</p>
|
624 |
-
</div>
|
625 |
-
<div id="sli">
|
626 |
-
<label for="#step">Steps: </label>
|
627 |
-
<input type="range" id="step" value="30" min="10" max="100" step="1"><p id="stepp">30</p>
|
628 |
-
</div>
|
629 |
-
<div id="sli">
|
630 |
-
<label for="#gds">Seed: </label>
|
631 |
-
<input type="range" id="seed" min="0" value="0" step="1" max="99999"><p id="seedp">0</p>
|
632 |
-
</div>
|
633 |
-
|
634 |
-
|
635 |
-
<div id="ratio">
|
636 |
-
<p>1 : 1</p>
|
637 |
-
<input type="radio" name="ratio" value="1:1" checked>
|
638 |
-
<p>16 : 9</p>
|
639 |
-
<input type="radio" name="ratio" value="16:9">
|
640 |
-
<p>9 : 16<p>
|
641 |
-
<input type="radio" name="ratio" value="9:16">
|
642 |
-
<p>1 : 2</p>
|
643 |
-
<input type="radio" name="ratio" value="1:2">
|
644 |
-
<p>4 : 3</p>
|
645 |
-
<input type="radio" name="ratio" value="4:3">
|
646 |
-
</div>
|
647 |
-
|
648 |
-
|
649 |
-
<button id="close">Close</button>
|
650 |
-
</dialog>
|
651 |
-
|
652 |
-
<div id="imshow">
|
653 |
-
|
654 |
-
</div>
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
<script src="https://www.google.com/recaptcha/api.js?render=6Leqa5cpAAAAABVhh6FGouusHKaPjYz65-0Yy8kS"></script>
|
659 |
-
<script>
|
660 |
-
document.getElementById('jd').onclick = ()=>{
|
661 |
-
window.open('https://discord.gg/ju4yQBfQ7p')
|
662 |
-
}
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
/*document.getElementById('ow').onclick = ()=>{
|
667 |
-
window.open('https://www.buymeacoffee.com/mygx')
|
668 |
-
}*/
|
669 |
-
|
670 |
-
|
671 |
-
let dialog = document.getElementById('dialog')
|
672 |
-
let openbtn = document.getElementById('Advance Setting')
|
673 |
-
let closebtn = document.getElementById('close')
|
674 |
-
openbtn.onclick = ()=>{
|
675 |
-
dialog.show()
|
676 |
-
document.getElementById('imshow').style.border = '0px solid black transparent'
|
677 |
-
}
|
678 |
-
closebtn.onclick= ()=>{
|
679 |
-
dialog.close()
|
680 |
-
document.getElementById('imshow').style.background = 'linear-gradient(black, black) padding-box,linear-gradient(to right, red, blue) border-box'
|
681 |
-
}
|
682 |
-
let inp = document.getElementById('inp') //user prompt
|
683 |
-
let np = document.getElementById('np') // negative pr3
|
684 |
-
let gd = document.getElementById('gds') // guidence_scale value
|
685 |
-
let step = document.getElementById('step') // steps value
|
686 |
-
let seed = document.getElementById('seed') // seed value
|
687 |
-
let seedp = document.getElementById('seedp') // seed innerText
|
688 |
-
let stepp = document.getElementById('stepp') // step innerText
|
689 |
-
let gdsp = document.getElementById('gdsp') // guidence_scale innerText
|
690 |
-
let btn = document.getElementById('create') // Create button
|
691 |
-
let model = "sdd"
|
692 |
-
let heightp = 1024 // height of photo
|
693 |
-
let widthp = 1024 // width of photo
|
694 |
-
let cn = false
|
695 |
-
gd.addEventListener('input',()=>{
|
696 |
-
gdsp.innerText = gd.value
|
697 |
-
})
|
698 |
-
step.addEventListener('input',()=>{
|
699 |
-
stepp.innerText = step.value
|
700 |
-
})
|
701 |
-
seed.addEventListener('input',()=>{
|
702 |
-
seedp.innerText = seed.value
|
703 |
-
})
|
704 |
-
isFumes = true
|
705 |
-
let prompt = ' , realistic photo 35mm photograph, film, professional, 4k, highly detailed'
|
706 |
-
let ar = '1:1'
|
707 |
-
let nps = ' ,(bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3),poorly drawn,deformed hands,deformed fingers,deformed faces,deformed eyes,mutated fingers,deformedbody parts,mutated body parts,mutated hands, disfigured,oversaturated,bad anatom,cropped, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, out of frame, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, deformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck,deformed eyes'
|
708 |
-
let reload = false
|
709 |
-
|
710 |
-
document.getElementById('styles').onchange = ()=>{
|
711 |
-
const selectedStyle = document.querySelector('input[name="style"]:checked');
|
712 |
-
if(selectedStyle.value =='photo'){
|
713 |
-
|
714 |
-
prompt = ' ,cinematic photo 35mm photograph, film, professional, 4k, highly detailed'
|
715 |
-
nps = ' ,(bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3),poorly drawn,deformed hands,deformed fingers,deformed faces,deformed eyes,mutated fingers,deformedbody parts,mutated body parts,mutated hands, disfigured,oversaturated,bad anatom,cropped, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, out of frame, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, deformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck,deformed eyes'
|
716 |
-
|
717 |
-
}
|
718 |
-
if(selectedStyle.value == 'cinema'){
|
719 |
-
nps = ' ,(bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3),poorly drawn,deformed hands,deformed fingers,deformed faces,deformed eyes,mutated fingers,deformedbody parts,mutated body parts,mutated hands, disfigured,oversaturated,bad anatom,cropped, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, out of frame, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, deformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck,deformed eyes'
|
720 |
-
prompt = " ,cinematic film still. shallow depth of field, vignette, highly detailed, high budget, cinemascope, moody, epic, gorgeous, film grain, grainy"
|
721 |
-
|
722 |
-
}
|
723 |
-
if(selectedStyle.value == 'fantasy'){
|
724 |
-
nps = ' ,(bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3),poorly drawn,deformed hands,deformed fingers,deformed faces,deformed eyes,mutated fingers,deformedbody parts,mutated body parts,mutated hands, disfigured,oversaturated,bad anatom,cropped, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, out of frame, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, deformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck,deformed eyes'
|
725 |
-
prompt = " ,ethereal fantasy concept art . magnificent, celestial, ethereal, painterly, epic, majestic, magical, fantasy art, cover art, dreamy"
|
726 |
-
}
|
727 |
-
|
728 |
-
if(selectedStyle.value == 'fumes'){
|
729 |
-
nps = ' ,(bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3),poorly drawn,deformed hands,deformed fingers,deformed faces,deformed eyes,mutated fingers,deformedbody parts,mutated body parts,mutated hands, disfigured,oversaturated,bad anatom,cropped, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, out of frame, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, deformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck,deformed eyes'
|
730 |
-
prompt = ' ,analog film photo . faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage'
|
731 |
-
|
732 |
-
|
733 |
-
}
|
734 |
-
|
735 |
-
|
736 |
-
if(selectedStyle.value == 'no'){
|
737 |
-
prompt = ''
|
738 |
-
nps = ''
|
739 |
-
}
|
740 |
-
|
741 |
-
if(selectedStyle.value == 'digital'){
|
742 |
-
prompt = ' ,concept art, digital artwork, illustrative, painterly, matte painting, highly detailed'
|
743 |
-
nps = ' ,(bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3),poorly drawn,deformed hands,deformed fingers,deformed faces,deformed eyes,mutated fingers,deformedbody parts,mutated body parts,mutated hands, disfigured,oversaturated,bad anatom,cropped, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, out of frame, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, deformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck,deformed eyes'
|
744 |
-
}
|
745 |
-
|
746 |
-
}
|
747 |
-
|
748 |
-
document.getElementById("model").onchange = ()=>{
|
749 |
-
select = document.getElementById("model")
|
750 |
-
model = select.value
|
751 |
-
if(model=='playground'){
|
752 |
-
gdsp.innerText = 3
|
753 |
-
gd.value = 3
|
754 |
-
gdsp.innerText = gd.value
|
755 |
-
prompt = ''
|
756 |
-
}
|
757 |
-
else{
|
758 |
-
gdsp.innerText = 7
|
759 |
-
gd.value = 7
|
760 |
-
gdsp.innerText = gd.value
|
761 |
-
}
|
762 |
-
if(model=='nut'){
|
763 |
-
gdsp.innerText = 2
|
764 |
-
gd.value = 2
|
765 |
-
gdsp.innerText = gd.value
|
766 |
-
prompt = ''
|
767 |
-
}
|
768 |
-
else{
|
769 |
-
gdsp.innerText = 7
|
770 |
-
gd.value = 7
|
771 |
-
gdsp.innerText = gd.value
|
772 |
-
}
|
773 |
-
if(model=="dream"){
|
774 |
-
prompt = ''
|
775 |
-
nps = 'ugly, deformed, noisy, blurry, low contrast, text, BadDream, 3d, cgi, render, fake, anime, open mouth, big forehead, long neck'
|
776 |
-
}
|
777 |
-
if(model=="realvisxl"){
|
778 |
-
prompt = ''
|
779 |
-
gd.value = 4
|
780 |
-
gdsp.innerText = gd.value
|
781 |
-
nps = ''
|
782 |
-
}
|
783 |
-
console.log(model)
|
784 |
-
}
|
785 |
-
|
786 |
-
document.getElementById('ratio').onchange = ()=>{
|
787 |
-
const selectedStyle = document.querySelector('input[name="ratio"]:checked');
|
788 |
-
if(selectedStyle.value =='1:1'){
|
789 |
-
|
790 |
-
widthp = 1024
|
791 |
-
heightp = 1024
|
792 |
-
ar = '1:1'
|
793 |
-
|
794 |
-
}
|
795 |
-
if(selectedStyle.value == '16:9'){
|
796 |
-
ar = '16:9'
|
797 |
-
widthp = 1024
|
798 |
-
heightp = 576
|
799 |
-
document.getElementById("img1").style.marginTop = "30%";
|
800 |
-
|
801 |
-
}
|
802 |
-
if(selectedStyle.value == '9:16'){
|
803 |
-
ar = '9:16'
|
804 |
-
widthp = 576
|
805 |
-
heightp = 1024
|
806 |
-
}
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
if(selectedStyle.value == '1:2'){
|
811 |
-
ar = '1:2'
|
812 |
-
widthp = 544
|
813 |
-
heightp = 1088
|
814 |
-
}
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
if(selectedStyle.value == '4:3'){
|
820 |
-
ar = '4:3'
|
821 |
-
widthp = 896
|
822 |
-
heightp = 672
|
823 |
-
|
824 |
-
}
|
825 |
-
|
826 |
-
}
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
btn.onclick = async () => {
|
831 |
-
grecaptcha.ready(function () {
|
832 |
-
grecaptcha.execute('6Leqa5cpAAAAABVhh6FGouusHKaPjYz65-0Yy8kS', { action: 'submit' }).then(async function (token) {
|
833 |
-
|
834 |
-
if(cn == true){
|
835 |
-
window.location.reload()
|
836 |
-
}
|
837 |
-
btn.innerText = "CANCEL";
|
838 |
-
cn = true;
|
839 |
-
let div = document.getElementById('imshow');
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
div.innerHTML = '';
|
845 |
-
document.getElementById('imshow').innerHTML = '';
|
846 |
-
let pi = document.createElement('h5');
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
let progress = document.createElement('progress');
|
851 |
-
progress.value = 1;
|
852 |
-
progress.max = 100;
|
853 |
-
|
854 |
-
div.appendChild(progress);
|
855 |
-
setInterval(() => {
|
856 |
-
progress.value += 3;
|
857 |
-
}, 600);
|
858 |
-
|
859 |
-
async function generate() {
|
860 |
-
cookie = localStorage.getItem("cookie");
|
861 |
-
if (cookie == null) {
|
862 |
-
cookie = '';
|
863 |
-
}
|
864 |
-
if (cookie == "undefined") {
|
865 |
-
cookie = '';
|
866 |
-
}
|
867 |
-
params = {
|
868 |
-
'prompt': inp.value+prompt,
|
869 |
-
'negative_prompt': np.value+nps,
|
870 |
-
"steps": Number(step.value),
|
871 |
-
'guidance_scale': Number(gd.value),
|
872 |
-
"style": prompt,
|
873 |
-
"width": Number(widthp),
|
874 |
-
"height": Number(heightp),
|
875 |
-
"ar": ar,
|
876 |
-
|
877 |
-
"cookie": localStorage.getItem("cookie"),
|
878 |
-
"token": token,
|
879 |
-
"model": model
|
880 |
-
};
|
881 |
-
|
882 |
-
try {
|
883 |
-
const response = await fetch(`https://api-fumes.vercel.app/genR`, {
|
884 |
-
method: 'POST',
|
885 |
-
headers: {
|
886 |
-
'Content-Type': 'application/json',
|
887 |
-
'Connection': 'keep-alive',
|
888 |
-
},
|
889 |
-
body: JSON.stringify(params)
|
890 |
-
});
|
891 |
-
if (response.status === 400) {
|
892 |
-
pi.innerText = 'reCaptcha human validation failed ⭕ user is suspected to be bot ';
|
893 |
-
div.append(pi);
|
894 |
-
alert('human verification failed');
|
895 |
-
console.log(pi);
|
896 |
-
progress.innerHTML = ''
|
897 |
-
progress.style.display = 'none';
|
898 |
-
cn = false
|
899 |
-
btn.disabled = false
|
900 |
-
btn.innerText = 'CREATE'
|
901 |
-
}
|
902 |
-
if (response.status === 500) {
|
903 |
-
pi.innerText = 'reCaptcha human validation failed ⭕ user is suspected to be bot ';
|
904 |
-
div.append(pi);
|
905 |
-
alert('human verification failed');
|
906 |
-
console.log(pi);
|
907 |
-
progress.innerHTML = ''
|
908 |
-
progress.style.display = 'none';
|
909 |
-
cn = false
|
910 |
-
btn.disabled = false
|
911 |
-
btn.innerText = 'CREATE'
|
912 |
-
}
|
913 |
-
|
914 |
-
|
915 |
-
const data = await response.json();
|
916 |
-
localStorage.setItem("cookie", data.cookie);
|
917 |
-
console.log(data.cookie)
|
918 |
-
let taskId = data
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
payload = {
|
923 |
-
'cookie': localStorage.getItem("cookie"),
|
924 |
-
'id': taskId
|
925 |
-
}
|
926 |
-
|
927 |
-
|
928 |
-
const url = 'https://api-fumes.vercel.app/statusR';
|
929 |
-
|
930 |
-
async function fetchUntilNotPending() {
|
931 |
-
while (true) {
|
932 |
-
const response = await fetch(url, {
|
933 |
-
method: 'POST',
|
934 |
-
headers: {
|
935 |
-
'Content-Type': 'application/json',
|
936 |
-
'Connection': 'keep-alive',
|
937 |
-
},
|
938 |
-
body: JSON.stringify(payload)
|
939 |
-
});
|
940 |
-
|
941 |
-
if (response.status === 400) {
|
942 |
-
pi.innerText = 'reCaptcha human validation failed ⭕ user is suspected to be bot ';
|
943 |
-
div.append(pi);
|
944 |
-
alert('human verification failed');
|
945 |
-
console.log(pi);
|
946 |
-
progress.innerHTML = ''
|
947 |
-
progress.style.display = 'none';
|
948 |
-
cn = false
|
949 |
-
btn.disabled = false
|
950 |
-
btn.innerText = 'CREATE'
|
951 |
-
}
|
952 |
-
if (response.status === 500) {
|
953 |
-
pi.innerText = 'NSFW CONTENT DETECTED';
|
954 |
-
div.append(pi);
|
955 |
-
pi.style.color = "white"
|
956 |
-
console.log(pi);
|
957 |
-
progress.innerHTML = ''
|
958 |
-
progress.style.display = 'none';
|
959 |
-
cn = false
|
960 |
-
btn.disabled = false
|
961 |
-
btn.innerText = 'CREATE'
|
962 |
-
}
|
963 |
-
|
964 |
-
const res = await response.json();
|
965 |
-
if(res.nsfw == "nsfw"){
|
966 |
-
pi = document.createElement('h5');
|
967 |
-
pi.innerText = 'NSFW CONTENT DETECTED';
|
968 |
-
div.append(pi);
|
969 |
-
pi.style.color = "white"
|
970 |
-
console.log(pi);
|
971 |
-
progress.innerHTML = ''
|
972 |
-
progress.style.display = 'none';
|
973 |
-
cn = false
|
974 |
-
btn.disabled = false
|
975 |
-
btn.innerText = 'CREATE'
|
976 |
-
alert('NSFW CONTENT DETECTED')
|
977 |
-
}
|
978 |
-
else{
|
979 |
-
console.log('no nsfw')
|
980 |
-
}
|
981 |
-
console.log(res);
|
982 |
-
|
983 |
-
if (res.status !== 'pending') {
|
984 |
-
progress.innerHTML = ''
|
985 |
-
progress.style.display = 'none';
|
986 |
-
const img = document.createElement('img');
|
987 |
-
cn = false
|
988 |
-
a = "1"
|
989 |
-
img.id = "hehe"
|
990 |
-
pi.innerHTML = ''
|
991 |
-
pi.innerText = ''
|
992 |
-
img.src = res.url[0]['url'];
|
993 |
-
if(window.innerWidth<800){
|
994 |
-
img.id = "img1"
|
995 |
-
}
|
996 |
-
div.appendChild(img);
|
997 |
-
console.log(widthp.innerText)
|
998 |
-
const img2 = document.createElement('img');
|
999 |
-
img2.src = res.url[1]['url'];
|
1000 |
-
div.appendChild(img2);
|
1001 |
-
btn.disabled = false
|
1002 |
-
btn.innerText = 'CREATE'
|
1003 |
-
isimg = true
|
1004 |
-
|
1005 |
-
break;
|
1006 |
-
}
|
1007 |
-
|
1008 |
-
await new Promise(resolve => setTimeout(resolve, 5000));
|
1009 |
-
}
|
1010 |
-
}
|
1011 |
-
|
1012 |
-
fetchUntilNotPending();
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
}
|
1019 |
-
catch (error) {
|
1020 |
-
btn.disabled = false;
|
1021 |
-
console.error('An error occurred:', error);
|
1022 |
-
pi.innerText = 'NSFW CONTENT DETECTED';
|
1023 |
-
pi.style.color = "white"
|
1024 |
-
}
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
}
|
1029 |
-
|
1030 |
-
|
1031 |
-
await Promise.all([generate()]);
|
1032 |
-
});
|
1033 |
-
});
|
1034 |
-
};
|
1035 |
-
|
1036 |
-
</script>
|
1037 |
-
|
1038 |
-
|
1039 |
-
<script type="module">
|
1040 |
-
// Import the functions you need from the SDKs you need
|
1041 |
-
import { initializeApp } from "https://www.gstatic.com/firebasejs/10.9.0/firebase-app.js";
|
1042 |
-
import { getAnalytics } from "https://www.gstatic.com/firebasejs/10.9.0/firebase-analytics.js";
|
1043 |
-
// TODO: Add SDKs for Firebase products that you want to use
|
1044 |
-
// https://firebase.google.com/docs/web/setup#available-libraries
|
1045 |
-
|
1046 |
-
// Your web app's Firebase configuration
|
1047 |
-
// For Firebase JS SDK v7.20.0 and later, measurementId is optional
|
1048 |
-
const firebaseConfig = {
|
1049 |
-
apiKey: "AIzaSyDA40xpjwKzWIHmDz5oRu9BircpHfqncuI",
|
1050 |
-
authDomain: "fumesai.firebaseapp.com",
|
1051 |
-
projectId: "fumesai",
|
1052 |
-
storageBucket: "fumesai.appspot.com",
|
1053 |
-
messagingSenderId: "573294764046",
|
1054 |
-
appId: "1:573294764046:web:f98a507a60045cf8a91c5f",
|
1055 |
-
measurementId: "G-CZ2LETVP9K"
|
1056 |
-
};
|
1057 |
-
|
1058 |
-
// Initialize Firebase
|
1059 |
-
const app = initializeApp(firebaseConfig);
|
1060 |
-
const analytics = getAnalytics(app);
|
1061 |
-
</script>
|
1062 |
-
|
1063 |
-
|
1064 |
-
</body>
|
1065 |
-
</html>
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
<html lang="en">
|
3 |
<head>
|
4 |
<meta charset="UTF-8">
|
|
|
113 |
|
114 |
|
115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|