From 13530807d8fbdda86518903faaad0f5a4e298459 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Thu, 21 Sep 2023 02:46:23 +0200 Subject: [PATCH] Initial commit --- .gitignore | 10 + .obsidian/app.json | 17 + .obsidian/appearance.json | 11 + .obsidian/backlink.json | 3 + .obsidian/bookmarks.json | 67 + .obsidian/canvas.json | 7 + .obsidian/community-plugins.json | 3 + .obsidian/core-plugins-migration.json | 31 + .obsidian/core-plugins.json | 15 + .obsidian/graph.json | 30 + .obsidian/hotkeys.json | 1 + .../plugins/obsidian-file-color/data.json | 442 + .obsidian/plugins/obsidian-file-color/main.js | 23240 ++++++++++++++++ .../plugins/obsidian-file-color/manifest.json | 11 + .../plugins/obsidian-file-color/styles.css | 4 + .obsidian/publish.json | 6 + .../snippets/canvas-node-placeholder-size.css | 7 + .obsidian/starred.json | 3 + .obsidian/switcher.json | 5 + 0 - Generale/cardinalità di un insieme.md | 1 + 0 - Generale/insieme.md | 1 + 0 - Generale/lista.md | 6 + .../★ glossario ad alta performance.md | 306 + .../1 - Concetti base/Untitled.md | 0 .../1 - Concetti base/bit.md | 3 + .../1 - Concetti base/ket.md | 21 + .../1 - Concetti base/prodotto tensoriale.md | 19 + .../1 - Concetti base/qbit.md | 12 + .../stato base di un qbit.md | 21 + .../contesto.md | 1 + .../dominio.md | 1 + .../funzione ideale.md | 1 + .../funzione.md | 1 + .../garanzia.md | 3 + .../interfaccia.md | 1 + .../parametro.md | 4 + .../primitiva.md | 1 + .../problema.md | 1 + .../procedura.md | 1 + .../protocollo.md | 1 + .../risultato.md | 5 + .../sicurezza.md | 1 + .../soluzione.md | 1 + .../vincolo.md | 1 + .../★ mappa concettuale.canvas | 39 + .../agente.md | 1 + .../attacco.md | 9 + .../avversario.md | 1 + .../costo.md | 1 + .../crittoanalisi.md | 3 + .../crittografia.md | 3 + .../crittologia.md | 6 + .../debolezza.md | 5 + .../esperimento.md | 5 + .../garanzia computazionale.md | 3 + .../garanzia perfetta.md | 3 + .../livello di sicurezza.md | 19 + .../mitigazione.md | 5 + .../risorsa.md | 1 + .../sfidante.md | 1 + .../spazio.md | 1 + .../squadra blu.md | 5 + .../squadra rossa.md | 5 + .../squadra.md | 1 + .../tempo.md | 1 + .../utilizzo.md | 3 + .../violazione.md | 3 + .../vulnerabilità.md | 5 + .../★ mappa concettuale.canvas | 69 + .../backward secrecy.md | 5 + .../casualità crittografica.md | 30 + .../3 - Casualità ed entropia/dev-random.md | 7 + .../3 - Casualità ed entropia/dev-urandom.md | 7 + .../distribuzione uniforme.md | 1 + .../3 - Casualità ed entropia/entropia.md | 43 + .../3 - Casualità ed entropia/entropy pool.md | 1 + .../3 - Casualità ed entropia/flusso.md | 5 + .../forward secrecy.md | 1 + .../3 - Casualità ed entropia/generatore.md | 1 + .../hardware random number generator.md | 5 + .../imprevedibilità.md | 1 + .../3 - Casualità ed entropia/mixing.md | 3 + .../pseudo-random number generator.md | 11 + .../3 - Casualità ed entropia/random clone.md | 7 + .../3 - Casualità ed entropia/random fork.md | 7 + .../sorgente di rumore.md | 2 + ...ato di un pseudo-random number generator.md | 5 + .../true random number generator.md | 12 + ...ato di un pseudo-random number generator.md | 1 + .../★ mappa concettuale.canvas | 48 + .../adaptive chosen-ciphertext attacker.md | 11 + .../1 - Modello/autenticità.md | 1 + .../1 - Modello/blob.md | 1 + .../1 - Modello/chosen-plaintext attacker.md | 9 + .../1 - Modello/ciphertext-only attacker.md | 7 + .../1 - Modello/ciphertext.md | 1 + .../1 - Modello/comunicazione simmetrica.md | 5 + .../1 - Modello/confidenzialità.md | 5 + .../1 - Modello/funzione di cifratura.md | 1 + .../1 - Modello/funzione di decifratura.md | 1 + .../1 - Modello/indistinguibilità.md | 1 + .../1 - Modello/integrità.md | 1 + .../1 - Modello/irrational attacker.md | 5 + .../1 - Modello/known-plaintext attacker.md | 8 + ...non-adaptive chosen-ciphertext attacker.md | 10 + .../1 - Modello/plaintext.md | 1 + .../1 - Modello/testo.md | 1 + .../1 - Modello/tipo di avversario.md | 1 + .../1 - Modello/★ mappa concettuale.canvas | 57 + .../cifrario a sostituzione.md | 3 + .../cifrario a trasposizione.md | 3 + .../2 - Confidenzialità/cifrario di Cesare.md | 32 + .../crittografia classica.md | 3 + .../★ mappa concettuale.canvas | 20 + .../3 - Indistinguibilità/3DES.md | 1 + .../3 - Indistinguibilità/A51.md | 3 + .../3 - Indistinguibilità/AES.md | 17 + .../3 - Indistinguibilità/ChaCha20.md | 1 + .../3 - Indistinguibilità/DES.md | 1 + .../3 - Indistinguibilità/EFAIL.md | 5 + .../3 - Indistinguibilità/PKCS7.md | 23 + .../3 - Indistinguibilità/XChaCha20.md | 1 + .../3 - Indistinguibilità/XOR.md | 10 + ...contro initialization vector prevedibili.md | 53 + .../3 - Indistinguibilità/blocco.md | 5 + .../3 - Indistinguibilità/bruteforce.md | 19 + .../chiave simmetrica.md | 3 + .../cifrario a blocchi.md | 9 + .../cifrario a flusso.md | 7 + ...cipher block chaining operation mode.canvas | 40 + .../cipher block chaining operation mode.md | 19 + .../cipher feedback operation mode.canvas | 40 + .../cipher feedback operation mode.md | 12 + .../counter operation mode.canvas | 56 + .../counter operation mode.md | 15 + .../crittografia simmetrica moderna.md | 5 + .../determinismo dell'initialization vector.md | 1 + ...nistic pseudo-random bitstring generator.md | 7 + .../distinguibilità degli errori di padding.md | 1 + .../electronic codebook operation mode.canvas | 30 + .../electronic codebook operation mode.md | 7 + .../esperimento IND-COA.md | 16 + .../esperimento IND-CPA.md | 17 + .../esperimento IND-DCPA.md | 1 + .../famiglia di funzioni pseudo-casuali.md | 16 + .../initialization vector.md | 1 + .../3 - Indistinguibilità/key recovery.md | 1 + ...yed family of pseudo-random permutations.md | 8 + .../3 - Indistinguibilità/keystream.md | 1 + .../limite di dati cifrabili.md | 5 + .../malleabilità dei cifrari a flusso.md | 1 + .../malleabilità dell'one-time pad.md | 12 + .../3 - Indistinguibilità/malleabilità.md | 1 + ...manipolazione dell'initialization vector.md | 3 + .../3 - Indistinguibilità/non-uniforme.md | 1 + .../nonce → initialization vector.md | 1 + .../3 - Indistinguibilità/nonce.md | 7 + .../3 - Indistinguibilità/one-time pad.md | 16 + .../operation mode di un cifrario a blocchi.md | 1 + .../output feedback operation mode.canvas | 40 + .../output feedback operation mode.md | 12 + .../padding oracle attack.md | 45 + .../3 - Indistinguibilità/padding.md | 1 + .../principi di Kerckhoffs.md | 12 + .../random permutation.md | 1 + .../3 - Indistinguibilità/rc.md | 1 + .../3 - Indistinguibilità/re-keying.md | 1 + .../riutilizzo di chiavi nell'one-time pad.md | 15 + .../riutilizzo di chiavi.md | 1 + .../riutilizzo di nonce.md | 1 + ...initialization vector operation mode.canvas | 44 + ...tic initialization vector operation mode.md | 19 + .../synthetic initialization vector.md | 3 + .../3 - Indistinguibilità/uniforme.md | 1 + .../★ mappa concettuale.canvas | 139 + .../3 - Integrità semplice/bit di parità.md | 3 + .../3 - Integrità semplice/checksum.md | 1 + .../cyclic redundancy check.md | 1 + .../funzione di hashing.md | 13 + .../3 - Integrità semplice/hash.md | 7 + .../verifica dell'integrità.md | 1 + .../★ mappa concettuale.canvas | 24 + .../4 - Integrità crittografica/MD5.md | 1 + .../4 - Integrità crittografica/SHA1.md | 1 + .../4 - Integrità crittografica/SHA2.md | 1 + .../4 - Integrità crittografica/SHA224.md | 1 + .../4 - Integrità crittografica/SHA256.md | 1 + .../4 - Integrità crittografica/SHA3-224.md | 1 + .../4 - Integrità crittografica/SHA3-256.md | 1 + .../4 - Integrità crittografica/SHA3-384.md | 1 + .../4 - Integrità crittografica/SHA3-512.md | 1 + .../4 - Integrità crittografica/SHA3.md | 3 + .../4 - Integrità crittografica/SHA384.md | 1 + .../4 - Integrità crittografica/SHA512.md | 1 + .../4 - Integrità crittografica/SHAttered.md | 1 + .../attacco del compleanno.md | 21 + .../collision experiment.md | 11 + .../4 - Integrità crittografica/collision.md | 3 + .../first pre-image collision experiment.md | 12 + .../first pre-image collision.md | 3 + .../funzione di hashing crittografico.md | 6 + .../hashing con più input.md | 27 + .../length extension attack.md | 10 + .../second pre-image collision experiment.md | 12 + .../second pre-image collision.md | 3 + .../verifica crittografica dell'integrità.md | 1 + .../★ mappa concettuale.canvas | 66 + .../5 - Autenticazione/CBC-MAC.canvas | 36 + .../5 - Autenticazione/CBC-MAC.md | 11 + .../5 - Autenticazione/CMAC.md | 5 + .../5 - Autenticazione/GMAC.md | 13 + .../5 - Autenticazione/HMAC.md | 33 + .../5 - Autenticazione/SipHash.md | 11 + .../5 - Autenticazione/autenticazione.md | 5 + .../5 - Autenticazione/freshness.md | 1 + .../message authentication code system.md | 3 + .../message authentication code.md | 7 + .../5 - Autenticazione/reflection attack.md | 20 + .../5 - Autenticazione/replay attack.md | 20 + .../★ mappa concettuale.canvas | 44 + .../Chacha20-Poly1305.md | 1 + .../Galois-Counter mode.md | 8 + .../MAC-then-encrypt.md | 1 + ...ock chaining message authentication code.md | 9 + .../crittografia simmetrica autenticata.md | 1 + .../encrypt-and-MAC.md | 1 + .../encrypt-then-MAC.md | 19 + .../generic composition.md | 2 + ...ode autenticato di un cifrario a blocchi.md | 1 + .../★ mappa concettuale.canvas | 31 + .../Adiantum.md | 5 + .../1 - Indistinguibilità su disco/HCTR2.md | 9 + .../XOR-encrypt-XOR operation mode.canvas | 66 + .../XOR-encrypt-XOR operation mode.md | 9 + ...XOR-encrypt-XOR with ciphertext stealing.md | 5 + .../ciphertext stealing.md | 7 + .../disk encryption protocol.md | 3 + .../disk encryption.md | 3 + .../narrow-block encryption.md | 1 + .../super pseudo-random permutation.md | 8 + .../1 - Indistinguibilità su disco/tweak.md | 3 + ... operation mode di un cifrario a blocchi.md | 5 + .../wide-block encryption.md | 3 + .../★ mappa concettuale.canvas | 38 + ...ticated encryption with associated data.md | 14 + ...ticated encryption with associated data.md | 14 + ...ica a blocchi con initialization vector.md | 11 + ...ttografia simmetrica a flusso con nonce.md | 10 + .../operation framework deterministico.md | 1 + ...ilistico per la crittografia simmetrica.md | 13 + .../operation framework probabilistico.md | 1 + .../operation framework.md | 1 + .../★ mappa concettuale.canvas | 28 + .../Keccak message authentication code.md | 11 + .../ParallelHash.md | 9 + .../TupleHash.md | 9 + .../cSHAKE.md | 11 + .../extendible output function.md | 5 + .../funzione contestualizzata.md | 3 + .../★ mappa concettuale.canvas | 18 + .../4 - Derivazione di chiave/HKDF-Expand.md | 16 + .../4 - Derivazione di chiave/HKDF-Extract.md | 11 + .../4 - Derivazione di chiave/HKDF.md | 5 + ...entropia in una key derivation function.md | 1 + .../chiave derivata.md | 1 + ...zzazione di una key derivation function.md | 1 + ...xpansion di una key derivation function.md | 7 + ...traction di una key derivation function.md | 7 + .../input key material.md | 5 + .../key derivation function.md | 15 + .../key derivation.md | 1 + .../pseudo-random key.md | 5 + .../★ mappa concettuale.canvas | 39 + .../format-preserving encryption.md | 11 + .../merkle hash tree.md | 13 + .../partial disclosure.md | 7 + .../struttura dati autenticata.md | 1 + .../★ mappa concettuale.canvas | 14 + .../generatore di un gruppo ciclico.md | 3 + .../1 - Teoria dei gruppi/gruppo additivo.md | 1 + .../gruppo ciclico di modulo primo.md | 10 + .../1 - Teoria dei gruppi/gruppo ciclico.md | 19 + .../1 - Teoria dei gruppi/gruppo di Galois.md | 5 + .../1 - Teoria dei gruppi/gruppo finito.md | 1 + .../1 - Teoria dei gruppi/gruppo infinito.md | 1 + .../gruppo moltiplicativo.md | 1 + .../1 - Teoria dei gruppi/gruppo.md | 39 + .../ordine di un gruppo.md | 1 + .../1 - Teoria dei gruppi/sottogruppo.md | 4 + .../★ mappa concettuale.canvas | 30 + .../curva ellittica.md | 5 + .../equazione di Weierstrass.md | 16 + .../gruppo ciclico su curva ellittica.md | 11 + ...punto a infinito nelle curve ellittiche.md | 5 + .../somma di punti su curve ellittiche.md | 10 + .../★ mappa concettuale.canvas | 15 + .../3 - Scambio di chiave/Curve25519.md | 5 + .../3 - Scambio di chiave/Curve448.md | 5 + .../3 - Scambio di chiave/P-256.md | 11 + .../3 - Scambio di chiave/P-521.md | 7 + .../3 - Scambio di chiave/Sep256k1.md | 3 + .../attacco del punto non valido.md | 7 + .../attacco del sottogruppo debole.md | 7 + .../3 - Scambio di chiave/chiave privata.md | 13 + .../3 - Scambio di chiave/chiave pubblica.md | 12 + .../congettura Diffie-Hellman classica.md | 12 + ...ongettura Diffie-Hellman computazionale.md | 14 + .../congettura Diffie-Hellman decisionale.md | 15 + .../congettura Diffie-Hellman.md | 1 + .../3 - Scambio di chiave/coppia di chiavi.md | 7 + .../key generation algorithm.md | 1 + .../logaritmo discreto su curva ellittica.md | 18 + ...to su gruppi ciclici primi sugli interi.md | 15 + .../numero primo sicuro.md | 12 + .../3 - Scambio di chiave/one-way function.md | 1 + ...hiave Diffie-Hellman su curva ellittica.md | 5 + .../scambio di chiave Diffie-Hellman.md | 5 + ...ve autenticato basato su Diffie-Hellman.md | 17 + ...ambio di chiave autenticato lato server.md | 5 + .../scambio di chiave autenticato.md | 5 + ...mbio di chiave basato su Diffie-Hellman.md | 17 + ...ambio di chiave mutualmente autenticato.md | 5 + .../scambio di chiave.md | 5 + .../★ mappa concettuale.canvas | 73 + .../4 - Crittografia asimmetrica/PKCS1 v15.md | 20 + .../4 - Crittografia asimmetrica/PKCS1 v20.md | 7 + .../4 - Crittografia asimmetrica/RSA.md | 5 + .../congettura della fattorizzazione.md | 15 + .../crittografia asimmetrica.md | 1 + .../crittografia ibrida.md | 1 + ...ptic curve integrated encryption scheme.md | 4 + .../funzione toziente.md | 9 + .../integrated encryption scheme.md | 12 + .../key encapsulation.md | 12 + .../mask generation function.md | 0 .../million message attack.md | 1 + .../problema RSA.md | 17 + ...e simmetrica basato sull'incapsulamento.md | 2 + .../textbook RSA.md | 23 + .../trapdoor one-way function.md | 1 + .../★ mappa concettuale.canvas | 40 + ...wards-curve digital signature algorithm.md | 5 + .../5 - Firma digitale/PKCS1 v21.md | 7 + .../Schnorr deterministic signature scheme.md | 18 + .../Schnorr signature scheme.md | 16 + .../digital signature algorithm.md | 9 + ...iptic curve digital signature algorithm.md | 9 + .../5 - Firma digitale/fiducia.md | 7 + .../5 - Firma digitale/firma digitale.md | 3 + .../5 - Firma digitale/full domain hash.md | 5 + .../probabilistic signature scheme.md | 7 + .../problema di firma digitale.md | 3 + ... identificazione di Schnorr interattivo.md | 21 + ...ntificazione di Schnorr non-interattivo.md | 18 + .../5 - Firma digitale/signature forgery.md | 1 + .../5 - Firma digitale/signature scheme.md | 3 + .../5 - Firma digitale/transcript.md | 5 + .../trasformazione di Fiat-Shamir.md | 17 + .../5 - Firma digitale/witness.md | 5 + .../zero-knowledge proof.md | 1 + .../★ mappa concettuale.canvas | 44 + .../adaptively-chosen-message attacker.md | 3 + .../any message forgery.md | 3 + .../chosen-message attacker.md | 7 + .../contesto di firma digitale.md | 1 + .../known-message attacker.md | 3 + .../no-message attacker.md | 3 + .../random-message attacker.md | 3 + .../selective message forgery.md | 3 + .../strong existential message forgery.md | 3 + .../strong existential unforgeability.md | 5 + .../weak existential message forgery.md | 3 + .../weak existential unforgeability.md | 5 + .../★ mappa concettuale.canvas | 40 + .../1 - Modello/access control list.md | 5 + .../1 - Modello/access control model.md | 1 + .../1 - Modello/autenticazione di identità.md | 5 + .../1 - Modello/autorizzazione di utente.md | 5 + .../1 - Modello/credenziale.md | 29 + .../1 - Modello/database delle credenziali.md | 5 + .../1 - Modello/identificazione.md | 5 + .../1 - Modello/servizio di autenticazione.md | 5 + .../1 - Modello/user agent.md | 6 + .../1 - Modello/utente.md | 0 .../1 - Modello/★ mappa concettuale.canvas | 27 + .../2 - Protezione dai data breach/Argon2.md | 12 + .../2 - Protezione dai data breach/PBKDF1.md | 13 + .../2 - Protezione dai data breach/PBKDF2.md | 1 + .../archiviazione delle credenziali.md | 1 + .../attacco di pre-computazione.md | 16 + .../attacco interattivo.md | 11 + .../2 - Protezione dai data breach/bcrypt.md | 3 + .../data breach.md | 3 + .../enumerazione.md | 5 + .../funzione di password hashing adattiva.md | 1 + .../funzione di password hashing.md | 13 + .../invalidazione.md | 3 + .../password.md | 11 + .../2 - Protezione dai data breach/pepper.md | 17 + .../personal identification number.md | 18 + .../rainbow table.md | 1 + .../2 - Protezione dai data breach/salt.md | 13 + .../2 - Protezione dai data breach/scrypt.md | 5 + .../★ mappa concettuale.canvas | 50 + .../Initiative for Open Authentication.md | 5 + .../3 - Autenticazione di identità/OPAQUE.md | 29 + .../SCRAM authentication.md | 5 + .../Untitled.md | 0 .../augmented password-based key exchange.md | 5 + .../basic authentication.md | 7 + .../bearer token.md | 3 + .../3 - Autenticazione di identità/blinded.md | 1 + ...lenge-response based on common knowledge.md | 1 + .../challenge-response based on password.md | 1 + .../challenge-response based on public key.md | 5 + .../challenge-response based on time.md | 1 + .../challenge-response.md | 9 + .../channel binding.md | 1 + .../digest authentication.md | 5 + .../hash-based one-time password.md | 13 + .../oblivious pseudo-random function.md | 17 + .../oblivious.md | 1 + .../one-time credential.md | 14 + ...assword-based authenticated key exchange.md | 9 + .../secure remote password.md | 9 + .../time-based one-time password.md | 5 + .../★ mappa concettuale.canvas | 54 + .../4 - Distribuzione di chiavi/COSE.md | 1 + .../4 - Distribuzione di chiavi/JOSE.md | 3 + .../OpenPGP web of trust.md | 7 + .../4 - Distribuzione di chiavi/PKCS12.md | 3 + .../PKCS7 Cryptographic message syntax.md | 3 + .../abstract syntax notation one.md | 5 + .../4 - Distribuzione di chiavi/attestato.md | 4 + .../4 - Distribuzione di chiavi/audience.md | 1 + .../certificate revocation list.md | 5 + .../certificate sign request.md | 7 + .../certificate transparency.md | 21 + .../certification authority.md | 5 + .../certificato web.md | 14 + .../4 - Distribuzione di chiavi/claim.md | 1 + .../creazione di un certificato web.md | 7 + .../delegated verification.md | 3 + .../denial-of-service attack.md | 1 + .../distinguished encoding rules.md | 5 + .../distinguished name.md | 1 + .../distribuzione chiavi pubbliche.md | 1 + .../domain validation.md | 5 + .../extended validation.md | 5 + .../fiducia transitiva.md | 7 + .../intermediate certification authority.md | 5 + .../4 - Distribuzione di chiavi/issuer.md | 1 + ...ne certificate status protocol stapling.md | 5 + .../online certificate status protocol.md | 7 + .../out-of-band verification.md | 1 + .../periodo di validità.md | 3 + .../privacy enhanced mail.md | 12 + .../public key infrastructure.md | 7 + .../revoca certificato web.md | 5 + .../root certification authority.md | 5 + .../4 - Distribuzione di chiavi/scope.md | 1 + .../self-signed certificate.md | 3 + .../stale attack.md | 5 + .../tipo di certificato web.md | 1 + .../4 - Distribuzione di chiavi/token.md | 1 + .../trust anchor.md | 3 + .../trust-on-first-use.md | 5 + .../★ mappa concettuale.canvas | 96 + .../5 - Protocolli sicuri/1 - TCP-IP/IPSec.md | 4 + .../1 - TCP-IP/Internet Key Exchange.md | 5 + .../1 - TCP-IP/MACSec.md | 5 + .../1 - TCP-IP/Wireguard.md | 1 + .../1 - TCP-IP/coppia di chiavi effimere.md | 5 + .../datagram transport level security.md | 5 + .../1 - TCP-IP/downgrade attack.md | 1 + .../1 - TCP-IP/encrypted client hello.md | 1 + .../1 - TCP-IP/mobile shell.md | 5 + .../1 - TCP-IP/pre-master secret.md | 3 + .../secure file transfer protocol.md | 5 + .../1 - TCP-IP/secure shell.md | 5 + .../transport level security handshake.md | 23 + .../1 - TCP-IP/transport level security.md | 9 + .../1 - TCP-IP/★ mappa concettuale.canvas | 45 + .../2 - Email/authenticated received chain.md | 4 + ...d indicators for message identification.md | 5 + ...uthentication reporting and conformance.md | 5 + .../2 - Email/domainkeys identified mail.md | 5 + .../5 - Protocolli sicuri/2 - Email/email.md | 1 + .../2 - Email/malware attachment.md | 3 + .../2 - Email/phishing.md | 3 + .../posta elettronica certificata.md | 5 + .../2 - Email/record DNS.md | 0 .../2 - Email/secure mime.md | 5 + .../2 - Email/sender policy framework.md | 5 + .../2 - Email/sender spoofing.md | 3 + .../2 - Email/★ mappa concettuale.canvas | 36 + .../3 - Signal/Diffie-Hellman ratchet.md | 5 + .../3 - Signal/Signal AEAD.md | 13 + .../3 - Signal/Signal protocol.md | 1 + .../3 - Signal/Signal.md | 8 + .../5 - Protocolli sicuri/3 - Signal/X3DH.md | 9 + ... key agreement basato su Diffie-Hellman.md | 6 + .../authenticated deniable key agreement.md | 1 + .../3 - Signal/double ratchet.md | 18 + .../3 - Signal/identity information.md | 5 + .../3 - Signal/identity key.md | 5 + .../3 - Signal/invio X3DH.md | 25 + .../3 - Signal/negabilità.md | 1 + .../3 - Signal/non-ripudiabilità.md | 7 + .../3 - Signal/one-time pre-key.md | 0 .../3 - Signal/registrazione X3DH.md | 13 + .../3 - Signal/ricezione X3DH.md | 24 + .../3 - Signal/symmetric ratchet.md | 11 + .../3 - Signal/★ mappa concettuale.canvas | 54 + .../Artefatti/burndown chart.md | 1 + .../Artefatti/increment.md | 1 + .../Artefatti/product backlog.md | 3 + .../Artefatti/user story.md | 12 + .../Fasi di sviluppo/fase di design.md | 10 + .../fase di implementazione.md | 5 + .../Fasi di sviluppo/fase di manutenzione.md | 7 + .../Fasi di sviluppo/fase di rilascio.md | 11 + .../Fasi di sviluppo/fase di specifica.md | 8 + .../Fasi di sviluppo/fase di testing.md | 5 + .../modello basato sui componenti.md | 9 + .../modello code-and-fix.md | 6 + .../modello di sviluppo.md | 1 + .../Modelli di sviluppo/modello evolutivo.md | 9 + .../modello incrementale.md | 9 + .../Modelli di sviluppo/modello iterativo.md | 14 + .../modello trasformativo.md | 7 + .../Modelli di sviluppo/modello waterfall.md | 9 + .../agile unified process.md | 20 + .../Processi di sviluppo/agile.md | 10 + .../Processi di sviluppo/backlog grooming.md | 1 + .../Processi di sviluppo/daily scrum.md | 1 + .../Processi di sviluppo/epic.md | 7 + .../feature-driven development.md | 3 + .../processo di sviluppo software.md | 12 + .../Processi di sviluppo/scrum of scrum.md | 1 + .../Processi di sviluppo/scrum.md | 21 + .../Processi di sviluppo/unified process.md | 21 + .../Ruoli professionali/product owner.md | 1 + .../Ruoli professionali/scrum master.md | 1 + .../5 - Project Estimation.md | 96 + .../Tecniche di sviluppo/pair programming.md | 11 + .../Tecniche di sviluppo/refactoring.md | 3 + .../Tecniche di sviluppo/sprint planning.md | 1 + .../sprint retrospective.md | 3 + .../Tecniche di sviluppo/sprint review.md | 3 + .../test-driven development.md | 1 + .../Tecniche di sviluppo/timeboxing.md | 3 + .../Testing/acceptance test.md | 16 + .../Testing/integration test.md | 20 + .../Testing/performance test.md | 19 + .../Testing/regression test.md | 9 + .../Testing/test coverage.md | 32 + .../Testing/test.md | 15 + .../Testing/unit test.md | 26 + .../1 - Sistemi dinamici/attrattore.md | 7 + .../1 - Sistemi dinamici/centro.md | 3 + .../condizione iniziale.md | 1 + .../convezione di Rayleigh-Bénard.md | 19 + .../1 - Sistemi dinamici/criticità.md | 15 + .../1 - Sistemi dinamici/effetto Marangoni.md | 14 + .../1 - Sistemi dinamici/instabilità.md | 3 + .../legge Gutenberg-Richter.md | 3 + .../1 - Sistemi dinamici/legge di potenza.md | 11 + .../1 - Sistemi dinamici/metastabilità.md | 3 + .../numero critico di Rayleigh.md | 3 + .../numero di Rayleigh.md | 5 + .../1 - Sistemi dinamici/potenziale.md | 9 + .../1 - Sistemi dinamici/punto critico.md | 1 + .../1 - Sistemi dinamici/repulsore.md | 5 + .../seconda legge della termodinamica.md | 3 + .../1 - Sistemi dinamici/sella.md | 1 + .../1 - Sistemi dinamici/sistema dinamico.md | 1 + .../sistema dissipativo.md | 3 + .../1 - Sistemi dinamici/sistema lineare.md | 10 + .../1 - Sistemi dinamici/spazio di fase.md | 6 + .../1 - Sistemi dinamici/stabilità.md | 3 + .../1 - Sistemi dinamici/traiettoria.md | 1 + .../veicolo di Braitenberg.md | 12 + .../★ sistemi dinamici.canvas | 54 + .../Landau's phenomenological theory.md | 1 + .../2 - Sistemi complessi/adattabilità.md | 3 + .../apertura all'ambiente.md | 3 + .../auto-organizzazione.md | 17 + .../2 - Sistemi complessi/caos.md | 13 + .../criticità auto-organizzata.md | 3 + .../dense periodic orbits.md | 3 + .../2 - Sistemi complessi/emergenza.md | 3 + .../fallimento a cascata.md | 3 + .../2 - Sistemi complessi/feedback loop.md | 3 + .../2 - Sistemi complessi/non-linearità.md | 7 + .../2 - Sistemi complessi/ordine spontaneo.md | 3 + .../parte di un sistema complesso.md | 5 + .../pila di sabbia abeliana.md | 24 + .../2 - Sistemi complessi/rete.md | 5 + .../sistema complesso.md | 20 + .../topological mixing.md | 3 + .../★ sistemi complessi.canvas | 36 + .../3 - Automi cellulari/Evoloop.md | 1 + .../3 - Automi cellulari/Game of Life.md | 19 + .../3 - Automi cellulari/Langton's Loops.md | 3 + .../3 - Automi cellulari/Perrier's Loops.md | 1 + .../3 - Automi cellulari/Wireworld.md | 1 + .../3 - Automi cellulari/anisotropia.md | 19 + .../3 - Automi cellulari/auto-replicazione.md | 25 + .../automa cellulare asincrono.md | 1 + .../automa cellulare booleano.md | 3 + .../automa cellulare continuo spaziale.md | 1 + .../automa cellulare continuo.md | 1 + .../automa cellulare invertibile.md | 5 + .../automa cellulare legale.md | 1 + .../automa cellulare partizionante.md | 9 + .../automa cellulare probabilistico.md | 7 + .../automa cellulare totalistico.md | 5 + .../3 - Automi cellulari/automa cellulare.md | 15 + .../3 - Automi cellulari/breeder.md | 1 + .../cella di un automa cellulare.md | 7 + .../classe 1 di Wolfram.md | 11 + .../classe 2 di Wolfram.md | 12 + .../classe 3 di Wolfram.md | 9 + .../classe 4 di Wolfram.md | 9 + .../classe di complessità di Wolfram.md | 9 + .../giardino dell'Eden.md | 1 + .../3 - Automi cellulari/gun.md | 1 + .../3 - Automi cellulari/lambda di Langton.md | 23 + .../metodo reticolare di Boltzmann.md | 1 + .../3 - Automi cellulari/modello Axelrod.md | 9 + ...odello FHP con particelle velocità zero.md | 3 + .../3 - Automi cellulari/modello FHP.md | 5 + .../modello HPP · regola di transizione.png | Bin 0 -> 30332 bytes .../3 - Automi cellulari/modello HPP.md | 22 + .../modello Nowak-Lewenstein.md | 15 + .../3 - Automi cellulari/modello Sakoda.md | 17 + .../3 - Automi cellulari/modello Schelling.md | 14 + .../3 - Automi cellulari/oscillator.md | 1 + .../3 - Automi cellulari/puffer.md | 1 + .../regola 110 di Wolfram.md | 5 + .../3 - Automi cellulari/regola di Wolfram.md | 3 + .../regola di transizione.md | 10 + .../3 - Automi cellulari/reticolo FCHC.md | 7 + .../reticolo di un automa cellulare.md | 3 + ...cronizzazione del plotone di esecuzione.md | 3 + .../3 - Automi cellulari/spaceship.md | 1 + .../stato di una cella.md | 1 + .../3 - Automi cellulari/universalità.md | 5 + .../3 - Automi cellulari/vicinato di Moore.md | 3 + .../vicinato di un automa cellulare.md | 3 + .../vicinato di von Neumann.md | 3 + .../★ automi cellulari.canvas | 96 + .../4 - Grafi/arco di accoppiamento.md | 1 + ...to categorico di un grafo multi-livello.md | 1 + .../aspetto di un grafo multi-livello.md | 1 + ...etto ordinale di un grafo multi-livello.md | 1 + 8 - Sistemi complessi/4 - Grafi/bellezza.md | 1 + .../4 - Grafi/circuito euleriano.md | 1 + ...nte di clustering in una rete multiplex.md | 6 + .../4 - Grafi/coefficiente di clustering.md | 11 + .../4 - Grafi/diametro di un grafo.md | 15 + .../distanza tra nodi di un grafo.md | 9 + .../4 - Grafi/eccentricità di un nodo.md | 13 + .../4 - Grafi/grafo a nodi colorati.md | 1 + .../4 - Grafi/grafo a reticolo.md | 6 + .../4 - Grafi/grafo ad archi colorati.md | 1 + .../4 - Grafi/grafo casuale.md | 6 + .../4 - Grafi/grafo completo.md | 1 + .../4 - Grafi/grafo connesso.md | 1 + .../4 - Grafi/grafo denso.md | 1 + ...grafo multi-livello a livelli disgiunti.md | 1 + .../grafo multi-livello allineato ai nodi.md | 1 + .../grafo multi-livello categorico.md | 6 + ...-livello diagonale a livelli accoppiati.md | 1 + .../grafo multi-livello diagonale.md | 6 + .../grafo multi-livello interconnesso.md | 1 + .../grafo multi-livello k-partito.md | 1 + .../4 - Grafi/grafo multi-livello.md | 11 + .../4 - Grafi/grafo scale-free.md | 1 + .../4 - Grafi/grafo small-world.md | 8 + .../4 - Grafi/grafo sparso.md | 1 + 8 - Sistemi complessi/4 - Grafi/grafo.md | 1 + .../4 - Grafi/interdipendenza.md | 3 + 8 - Sistemi complessi/4 - Grafi/iperarco.md | 5 + 8 - Sistemi complessi/4 - Grafi/ipergrafo.md | 5 + 8 - Sistemi complessi/4 - Grafi/iperrete.md | 5 + .../lunghezza caratteristica di un grafo.md | 15 + .../4 - Grafi/multislice modularity.md | 1 + .../4 - Grafi/percolation threshold.md | 1 + .../4 - Grafi/percorso euleriano.md | 1 + .../4 - Grafi/raggio di un grafo.md | 15 + .../4 - Grafi/rete interdipendente.md | 3 + .../4 - Grafi/rete multiplex correlata.md | 3 + .../rete multiplex straightforward.md | 1 + .../4 - Grafi/rete multiplex.md | 11 + .../4 - Grafi/★ grafi multi-livello.canvas | 46 + .../4 - Grafi/★ grafi.canvas | 42 + .../4 - Grafi/★ ipergrafi.canvas | 13 + .../5 - Origine della vita/catalizzatore.md | 1 + .../gene duplication.md | 1 + ...-catalitico riflessivo generato da cibo.md | 5 + .../insieme auto-replicante.md | 3 + .../modello di Kauffman gene-RBN.md | 3 + ...auffman per gli insiemi auto-replicanti.md | 11 + .../5 - Origine della vita/substrato.md | 1 + .../★ geni come random boolean network.canvas | 6 + .../★ insiemi auto-replicanti.canvas | 15 + .../6 - Robustezza/canalizzazione.md | 5 + .../6 - Robustezza/cromosoma.md | 1 + .../6 - Robustezza/crossover.md | 1 + .../6 - Robustezza/degenerazione.md | 5 + .../6 - Robustezza/evolvibilità.md | 1 + .../6 - Robustezza/fenotipo.md | 3 + .../6 - Robustezza/fitness.md | 3 + 8 - Sistemi complessi/6 - Robustezza/gene.md | 1 + .../6 - Robustezza/genoma.md | 1 + .../6 - Robustezza/genotipo.md | 1 + .../6 - Robustezza/individuo.md | 1 + ... duplication-degeneracy-complementation.md | 3 + .../6 - Robustezza/nucleotide.md | 3 + .../6 - Robustezza/omeostasi.md | 1 + .../paradosso dell'evolvibilità.md | 3 + .../6 - Robustezza/plasticità fenotipica.md | 5 + .../6 - Robustezza/pleiotropia.md | 3 + .../6 - Robustezza/point mutation.md | 1 + .../6 - Robustezza/popolazione.md | 1 + .../6 - Robustezza/proteoma.md | 1 + .../6 - Robustezza/rete neutrale.md | 1 + .../rete regolatrice di geni.md | 19 + .../6 - Robustezza/ridondanza.md | 3 + .../6 - Robustezza/robustezza biologica.md | 3 + .../robustezza differenziale.md | 3 + .../6 - Robustezza/robustezza distribuita.md | 3 + .../6 - Robustezza/robustezza locale.md | 5 + .../6 - Robustezza/robustezza.md | 5 + .../tolleranza altamente ottimizzata.md | 13 + .../6 - Robustezza/tratto.md | 1 + .../6 - Robustezza/versatilità.md | 1 + .../6 - Robustezza/★ robustezza.canvas | 73 + .../🞵 parentesi anti-eugenica.md | 5 + .../1 - Terminologia/STRIDE.md | 8 + .../1 - Terminologia/analisi dei rischi.md | 1 + .../1 - Terminologia/asset.md | 3 + .../1 - Terminologia/attaccante.md | 29 + .../1 - Terminologia/bug.md | 1 + .../1 - Terminologia/debolezza.md | 5 + .../1 - Terminologia/difetto.md | 1 + .../1 - Terminologia/distinguisher.md | 1 + .../1 - Terminologia/exploit.md | 1 + .../1 - Terminologia/funzionalità.md | 1 + .../1 - Terminologia/input illecito.md | 1 + .../1 - Terminologia/input invalido.md | 1 + .../1 - Terminologia/input lecito.md | 1 + .../1 - Terminologia/input valido.md | 2 + .../meccanismo di prevenzione.md | 8 + .../meccanismo di reazione.md | 1 + .../meccanismo di rilevazione.md | 7 + .../meccanismo di sicurezza.md | 1 + .../1 - Terminologia/minaccia.md | 7 + .../1 - Terminologia/politica di sicurezza.md | 1 + .../1 - Terminologia/prestazioni.md | 1 + .../principio del minimo privilegio.md | 1 + .../principio del silenzio.md | 1 + .../1 - Terminologia/rischio.md | 1 + .../1 - Terminologia/sicurezza informatica.md | 1 + .../1 - Terminologia/sicurezza.md | 11 + .../1 - Terminologia/superficie di attacco.md | 1 + .../1 - Terminologia/vettore di attacco.md | 1 + .../1 - Terminologia/vulnerabilità.md | 5 + .../00 - stack-zero.md | 11 + .../01 - stack-one.md | 11 + .../02 - stack-two.md | 30 + .../03 - stack-three.md | 20 + .../04 - stack-four.md | 45 + .../05 - stack-five.md | 89 + .../Stack smashing cheat sheet.md | 29 + 777 files changed, 30990 insertions(+) create mode 100644 .gitignore create mode 100644 .obsidian/app.json create mode 100644 .obsidian/appearance.json create mode 100644 .obsidian/backlink.json create mode 100644 .obsidian/bookmarks.json create mode 100644 .obsidian/canvas.json create mode 100644 .obsidian/community-plugins.json create mode 100644 .obsidian/core-plugins-migration.json create mode 100644 .obsidian/core-plugins.json create mode 100644 .obsidian/graph.json create mode 100644 .obsidian/hotkeys.json create mode 100644 .obsidian/plugins/obsidian-file-color/data.json create mode 100644 .obsidian/plugins/obsidian-file-color/main.js create mode 100644 .obsidian/plugins/obsidian-file-color/manifest.json create mode 100644 .obsidian/plugins/obsidian-file-color/styles.css create mode 100644 .obsidian/publish.json create mode 100644 .obsidian/snippets/canvas-node-placeholder-size.css create mode 100644 .obsidian/starred.json create mode 100644 .obsidian/switcher.json create mode 100644 0 - Generale/cardinalità di un insieme.md create mode 100644 0 - Generale/insieme.md create mode 100644 0 - Generale/lista.md create mode 100644 7 - High performance computing/★ glossario ad alta performance.md create mode 100644 7 - Introduction to quantum information processing/1 - Concetti base/Untitled.md create mode 100644 7 - Introduction to quantum information processing/1 - Concetti base/bit.md create mode 100644 7 - Introduction to quantum information processing/1 - Concetti base/ket.md create mode 100644 7 - Introduction to quantum information processing/1 - Concetti base/prodotto tensoriale.md create mode 100644 7 - Introduction to quantum information processing/1 - Concetti base/qbit.md create mode 100644 7 - Introduction to quantum information processing/1 - Concetti base/stato base di un qbit.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/contesto.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/dominio.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/funzione ideale.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/funzione.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/garanzia.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/interfaccia.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/parametro.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/primitiva.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/problema.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/procedura.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/protocollo.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/risultato.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/sicurezza.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/soluzione.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/vincolo.md create mode 100644 8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/agente.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/attacco.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/avversario.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/costo.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/crittoanalisi.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/crittografia.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/crittologia.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/debolezza.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/esperimento.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/garanzia computazionale.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/garanzia perfetta.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/livello di sicurezza.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/mitigazione.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/risorsa.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/sfidante.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/spazio.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/squadra blu.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/squadra rossa.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/squadra.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/tempo.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/utilizzo.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/violazione.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/vulnerabilità.md create mode 100644 8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/backward secrecy.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/casualità crittografica.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/dev-random.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/dev-urandom.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/distribuzione uniforme.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/entropia.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/entropy pool.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/flusso.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/forward secrecy.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/generatore.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/hardware random number generator.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/imprevedibilità.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/mixing.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/pseudo-random number generator.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/random clone.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/random fork.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/sorgente di rumore.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/stato di un pseudo-random number generator.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/true random number generator.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/update dello stato di un pseudo-random number generator.md create mode 100644 8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/adaptive chosen-ciphertext attacker.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/autenticità.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/blob.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/chosen-plaintext attacker.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/ciphertext-only attacker.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/ciphertext.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/comunicazione simmetrica.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/confidenzialità.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/funzione di cifratura.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/funzione di decifratura.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/indistinguibilità.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/integrità.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/irrational attacker.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/known-plaintext attacker.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/non-adaptive chosen-ciphertext attacker.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/plaintext.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/testo.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/tipo di avversario.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/2 - Confidenzialità/cifrario a sostituzione.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/2 - Confidenzialità/cifrario a trasposizione.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/2 - Confidenzialità/cifrario di Cesare.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/2 - Confidenzialità/crittografia classica.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/2 - Confidenzialità/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/3DES.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/A51.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/AES.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/ChaCha20.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/DES.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/EFAIL.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/PKCS7.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/XChaCha20.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/XOR.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/attacco contro initialization vector prevedibili.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/blocco.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/bruteforce.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/chiave simmetrica.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/cifrario a blocchi.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/cifrario a flusso.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/cipher block chaining operation mode.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/cipher block chaining operation mode.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/cipher feedback operation mode.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/cipher feedback operation mode.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/counter operation mode.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/counter operation mode.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/crittografia simmetrica moderna.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/determinismo dell'initialization vector.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/deterministic pseudo-random bitstring generator.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/distinguibilità degli errori di padding.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/electronic codebook operation mode.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/electronic codebook operation mode.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/esperimento IND-COA.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/esperimento IND-CPA.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/esperimento IND-DCPA.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/famiglia di funzioni pseudo-casuali.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/initialization vector.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/key recovery.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/keyed family of pseudo-random permutations.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/keystream.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/limite di dati cifrabili.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/malleabilità dei cifrari a flusso.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/malleabilità dell'one-time pad.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/malleabilità.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/manipolazione dell'initialization vector.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/non-uniforme.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/nonce → initialization vector.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/nonce.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/one-time pad.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/operation mode di un cifrario a blocchi.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/output feedback operation mode.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/output feedback operation mode.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/padding oracle attack.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/padding.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/principi di Kerckhoffs.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/random permutation.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/rc.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/re-keying.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/riutilizzo di chiavi nell'one-time pad.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/riutilizzo di chiavi.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/riutilizzo di nonce.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/synthetic initialization vector operation mode.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/synthetic initialization vector operation mode.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/synthetic initialization vector.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/uniforme.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Integrità semplice/bit di parità.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Integrità semplice/checksum.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Integrità semplice/cyclic redundancy check.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Integrità semplice/funzione di hashing.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Integrità semplice/hash.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Integrità semplice/verifica dell'integrità.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Integrità semplice/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/MD5.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHA1.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHA2.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHA224.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHA256.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHA3-224.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHA3-256.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHA3-384.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHA3-512.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHA3.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHA384.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHA512.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/SHAttered.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/attacco del compleanno.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/collision experiment.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/collision.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/first pre-image collision experiment.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/first pre-image collision.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/funzione di hashing crittografico.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/hashing con più input.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/length extension attack.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/second pre-image collision experiment.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/second pre-image collision.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/verifica crittografica dell'integrità.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/CBC-MAC.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/CBC-MAC.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/CMAC.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/GMAC.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/HMAC.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/SipHash.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/autenticazione.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/freshness.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/message authentication code system.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/message authentication code.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/reflection attack.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/replay attack.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/Chacha20-Poly1305.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/Galois-Counter mode.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/MAC-then-encrypt.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/counter with cipher block chaining message authentication code.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/crittografia simmetrica autenticata.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/encrypt-and-MAC.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/encrypt-then-MAC.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/generic composition.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/operation mode autenticato di un cifrario a blocchi.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/Adiantum.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/HCTR2.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/XOR-encrypt-XOR operation mode.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/XOR-encrypt-XOR operation mode.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/XOR-encrypt-XOR with ciphertext stealing.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/ciphertext stealing.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/disk encryption protocol.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/disk encryption.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/narrow-block encryption.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/super pseudo-random permutation.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/tweak.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/tweakable operation mode di un cifrario a blocchi.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/wide-block encryption.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/2 - Operation framework/authenticated encryption with associated data.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/2 - Operation framework/deterministic authenticated encryption with associated data.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/2 - Operation framework/operation framework deterministico per crittografia simmetrica a blocchi con initialization vector.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/2 - Operation framework/operation framework deterministico per crittografia simmetrica a flusso con nonce.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/2 - Operation framework/operation framework deterministico.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/2 - Operation framework/operation framework probabilistico per la crittografia simmetrica.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/2 - Operation framework/operation framework probabilistico.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/2 - Operation framework/operation framework.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/2 - Operation framework/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/3 - Contestualizzazione ed estendibilità/Keccak message authentication code.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/3 - Contestualizzazione ed estendibilità/ParallelHash.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/3 - Contestualizzazione ed estendibilità/TupleHash.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/3 - Contestualizzazione ed estendibilità/cSHAKE.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/3 - Contestualizzazione ed estendibilità/extendible output function.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/3 - Contestualizzazione ed estendibilità/funzione contestualizzata.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/3 - Contestualizzazione ed estendibilità/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/HKDF-Expand.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/HKDF-Extract.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/HKDF.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/aggiunta di entropia in una key derivation function.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/chiave derivata.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/contestualizzazione di una key derivation function.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/expansion di una key derivation function.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/extraction di una key derivation function.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/input key material.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/key derivation function.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/key derivation.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/pseudo-random key.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/5 - Strutture dati particolari/format-preserving encryption.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/5 - Strutture dati particolari/merkle hash tree.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/5 - Strutture dati particolari/partial disclosure.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/5 - Strutture dati particolari/struttura dati autenticata.md create mode 100644 8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/5 - Strutture dati particolari/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/generatore di un gruppo ciclico.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/gruppo additivo.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/gruppo ciclico di modulo primo.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/gruppo ciclico.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/gruppo di Galois.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/gruppo finito.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/gruppo infinito.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/gruppo moltiplicativo.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/gruppo.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/ordine di un gruppo.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/sottogruppo.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/2 - Teoria delle curve ellittiche/curva ellittica.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/2 - Teoria delle curve ellittiche/equazione di Weierstrass.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/2 - Teoria delle curve ellittiche/gruppo ciclico su curva ellittica.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/2 - Teoria delle curve ellittiche/punto a infinito nelle curve ellittiche.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/2 - Teoria delle curve ellittiche/somma di punti su curve ellittiche.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/2 - Teoria delle curve ellittiche/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/Curve25519.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/Curve448.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/P-256.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/P-521.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/Sep256k1.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/attacco del punto non valido.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/attacco del sottogruppo debole.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/chiave privata.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/chiave pubblica.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/congettura Diffie-Hellman classica.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/congettura Diffie-Hellman computazionale.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/congettura Diffie-Hellman decisionale.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/congettura Diffie-Hellman.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/coppia di chiavi.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/key generation algorithm.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/logaritmo discreto su curva ellittica.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/logaritmo discreto su gruppi ciclici primi sugli interi.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/numero primo sicuro.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/one-way function.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/scambio di chiave Diffie-Hellman su curva ellittica.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/scambio di chiave Diffie-Hellman.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/scambio di chiave autenticato basato su Diffie-Hellman.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/scambio di chiave autenticato lato server.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/scambio di chiave autenticato.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/scambio di chiave basato su Diffie-Hellman.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/scambio di chiave mutualmente autenticato.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/scambio di chiave.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/PKCS1 v15.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/PKCS1 v20.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/RSA.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/congettura della fattorizzazione.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/crittografia asimmetrica.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/crittografia ibrida.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/elliptic curve integrated encryption scheme.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/funzione toziente.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/integrated encryption scheme.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/key encapsulation.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/mask generation function.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/million message attack.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/problema RSA.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/scambio di chiave simmetrica basato sull'incapsulamento.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/textbook RSA.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/trapdoor one-way function.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/Edwards-curve digital signature algorithm.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/PKCS1 v21.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/Schnorr deterministic signature scheme.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/Schnorr signature scheme.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/digital signature algorithm.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/elliptic curve digital signature algorithm.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/fiducia.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/firma digitale.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/full domain hash.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/probabilistic signature scheme.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/problema di firma digitale.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/protocollo di identificazione di Schnorr interattivo.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/protocollo di identificazione di Schnorr non-interattivo.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/signature forgery.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/signature scheme.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/transcript.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/trasformazione di Fiat-Shamir.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/witness.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/zero-knowledge proof.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/adaptively-chosen-message attacker.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/any message forgery.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/chosen-message attacker.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/contesto di firma digitale.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/known-message attacker.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/no-message attacker.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/random-message attacker.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/selective message forgery.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/strong existential message forgery.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/strong existential unforgeability.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/weak existential message forgery.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/weak existential unforgeability.md create mode 100644 8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/access control list.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/access control model.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/autenticazione di identità.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/autorizzazione di utente.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/credenziale.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/database delle credenziali.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/identificazione.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/servizio di autenticazione.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/user agent.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/utente.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/Argon2.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/PBKDF1.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/PBKDF2.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/archiviazione delle credenziali.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/attacco di pre-computazione.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/attacco interattivo.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/bcrypt.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/data breach.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/enumerazione.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/funzione di password hashing adattiva.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/funzione di password hashing.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/invalidazione.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/password.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/pepper.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/personal identification number.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/rainbow table.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/salt.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/scrypt.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/Initiative for Open Authentication.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/OPAQUE.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/SCRAM authentication.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/Untitled.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/augmented password-based key exchange.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/basic authentication.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/bearer token.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/blinded.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/challenge-response based on common knowledge.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/challenge-response based on password.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/challenge-response based on public key.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/challenge-response based on time.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/challenge-response.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/channel binding.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/digest authentication.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/hash-based one-time password.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/oblivious pseudo-random function.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/oblivious.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/one-time credential.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/password-based authenticated key exchange.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/secure remote password.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/time-based one-time password.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/COSE.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/JOSE.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/OpenPGP web of trust.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/PKCS12.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/PKCS7 Cryptographic message syntax.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/abstract syntax notation one.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/attestato.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/audience.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/certificate revocation list.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/certificate sign request.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/certificate transparency.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/certification authority.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/certificato web.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/claim.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/creazione di un certificato web.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/delegated verification.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/denial-of-service attack.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/distinguished encoding rules.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/distinguished name.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/distribuzione chiavi pubbliche.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/domain validation.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/extended validation.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/fiducia transitiva.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/intermediate certification authority.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/issuer.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/online certificate status protocol stapling.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/online certificate status protocol.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/out-of-band verification.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/periodo di validità.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/privacy enhanced mail.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/public key infrastructure.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/revoca certificato web.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/root certification authority.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/scope.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/self-signed certificate.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/stale attack.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/tipo di certificato web.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/token.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/trust anchor.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/trust-on-first-use.md create mode 100644 8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/IPSec.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/Internet Key Exchange.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/MACSec.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/Wireguard.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/coppia di chiavi effimere.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/datagram transport level security.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/downgrade attack.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/encrypted client hello.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/mobile shell.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/pre-master secret.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/secure file transfer protocol.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/secure shell.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/transport level security handshake.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/transport level security.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/authenticated received chain.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/brand indicators for message identification.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/domain-based message authentication reporting and conformance.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/domainkeys identified mail.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/email.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/malware attachment.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/phishing.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/posta elettronica certificata.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/record DNS.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/secure mime.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/sender policy framework.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/sender spoofing.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/★ mappa concettuale.canvas create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/Diffie-Hellman ratchet.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/Signal AEAD.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/Signal protocol.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/Signal.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/X3DH.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/authenticated deniable key agreement basato su Diffie-Hellman.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/authenticated deniable key agreement.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/double ratchet.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/identity information.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/identity key.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/invio X3DH.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/negabilità.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/non-ripudiabilità.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/one-time pre-key.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/registrazione X3DH.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/ricezione X3DH.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/symmetric ratchet.md create mode 100644 8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/★ mappa concettuale.canvas create mode 100644 8 - Metodologie di sviluppo software/Artefatti/burndown chart.md create mode 100644 8 - Metodologie di sviluppo software/Artefatti/increment.md create mode 100644 8 - Metodologie di sviluppo software/Artefatti/product backlog.md create mode 100644 8 - Metodologie di sviluppo software/Artefatti/user story.md create mode 100644 8 - Metodologie di sviluppo software/Fasi di sviluppo/fase di design.md create mode 100644 8 - Metodologie di sviluppo software/Fasi di sviluppo/fase di implementazione.md create mode 100644 8 - Metodologie di sviluppo software/Fasi di sviluppo/fase di manutenzione.md create mode 100644 8 - Metodologie di sviluppo software/Fasi di sviluppo/fase di rilascio.md create mode 100644 8 - Metodologie di sviluppo software/Fasi di sviluppo/fase di specifica.md create mode 100644 8 - Metodologie di sviluppo software/Fasi di sviluppo/fase di testing.md create mode 100644 8 - Metodologie di sviluppo software/Modelli di sviluppo/modello basato sui componenti.md create mode 100644 8 - Metodologie di sviluppo software/Modelli di sviluppo/modello code-and-fix.md create mode 100644 8 - Metodologie di sviluppo software/Modelli di sviluppo/modello di sviluppo.md create mode 100644 8 - Metodologie di sviluppo software/Modelli di sviluppo/modello evolutivo.md create mode 100644 8 - Metodologie di sviluppo software/Modelli di sviluppo/modello incrementale.md create mode 100644 8 - Metodologie di sviluppo software/Modelli di sviluppo/modello iterativo.md create mode 100644 8 - Metodologie di sviluppo software/Modelli di sviluppo/modello trasformativo.md create mode 100644 8 - Metodologie di sviluppo software/Modelli di sviluppo/modello waterfall.md create mode 100644 8 - Metodologie di sviluppo software/Processi di sviluppo/agile unified process.md create mode 100644 8 - Metodologie di sviluppo software/Processi di sviluppo/agile.md create mode 100644 8 - Metodologie di sviluppo software/Processi di sviluppo/backlog grooming.md create mode 100644 8 - Metodologie di sviluppo software/Processi di sviluppo/daily scrum.md create mode 100644 8 - Metodologie di sviluppo software/Processi di sviluppo/epic.md create mode 100644 8 - Metodologie di sviluppo software/Processi di sviluppo/feature-driven development.md create mode 100644 8 - Metodologie di sviluppo software/Processi di sviluppo/processo di sviluppo software.md create mode 100644 8 - Metodologie di sviluppo software/Processi di sviluppo/scrum of scrum.md create mode 100644 8 - Metodologie di sviluppo software/Processi di sviluppo/scrum.md create mode 100644 8 - Metodologie di sviluppo software/Processi di sviluppo/unified process.md create mode 100644 8 - Metodologie di sviluppo software/Ruoli professionali/product owner.md create mode 100644 8 - Metodologie di sviluppo software/Ruoli professionali/scrum master.md create mode 100644 8 - Metodologie di sviluppo software/Svolgimento esercizi/5 - Project Estimation.md create mode 100644 8 - Metodologie di sviluppo software/Tecniche di sviluppo/pair programming.md create mode 100644 8 - Metodologie di sviluppo software/Tecniche di sviluppo/refactoring.md create mode 100644 8 - Metodologie di sviluppo software/Tecniche di sviluppo/sprint planning.md create mode 100644 8 - Metodologie di sviluppo software/Tecniche di sviluppo/sprint retrospective.md create mode 100644 8 - Metodologie di sviluppo software/Tecniche di sviluppo/sprint review.md create mode 100644 8 - Metodologie di sviluppo software/Tecniche di sviluppo/test-driven development.md create mode 100644 8 - Metodologie di sviluppo software/Tecniche di sviluppo/timeboxing.md create mode 100644 8 - Metodologie di sviluppo software/Testing/acceptance test.md create mode 100644 8 - Metodologie di sviluppo software/Testing/integration test.md create mode 100644 8 - Metodologie di sviluppo software/Testing/performance test.md create mode 100644 8 - Metodologie di sviluppo software/Testing/regression test.md create mode 100644 8 - Metodologie di sviluppo software/Testing/test coverage.md create mode 100644 8 - Metodologie di sviluppo software/Testing/test.md create mode 100644 8 - Metodologie di sviluppo software/Testing/unit test.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/attrattore.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/centro.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/condizione iniziale.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/convezione di Rayleigh-Bénard.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/criticità.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/effetto Marangoni.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/instabilità.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/legge Gutenberg-Richter.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/legge di potenza.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/metastabilità.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/numero critico di Rayleigh.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/numero di Rayleigh.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/potenziale.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/punto critico.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/repulsore.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/seconda legge della termodinamica.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/sella.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/sistema dinamico.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/sistema dissipativo.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/sistema lineare.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/spazio di fase.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/stabilità.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/traiettoria.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/veicolo di Braitenberg.md create mode 100644 8 - Sistemi complessi/1 - Sistemi dinamici/★ sistemi dinamici.canvas create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/Landau's phenomenological theory.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/adattabilità.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/apertura all'ambiente.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/auto-organizzazione.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/caos.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/criticità auto-organizzata.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/dense periodic orbits.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/emergenza.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/fallimento a cascata.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/feedback loop.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/non-linearità.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/ordine spontaneo.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/parte di un sistema complesso.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/pila di sabbia abeliana.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/rete.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/sistema complesso.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/topological mixing.md create mode 100644 8 - Sistemi complessi/2 - Sistemi complessi/★ sistemi complessi.canvas create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/Evoloop.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/Game of Life.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/Langton's Loops.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/Perrier's Loops.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/Wireworld.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/anisotropia.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/auto-replicazione.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/automa cellulare asincrono.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/automa cellulare booleano.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/automa cellulare continuo spaziale.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/automa cellulare continuo.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/automa cellulare invertibile.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/automa cellulare legale.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/automa cellulare partizionante.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/automa cellulare probabilistico.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/automa cellulare totalistico.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/automa cellulare.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/breeder.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/cella di un automa cellulare.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/classe 1 di Wolfram.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/classe 2 di Wolfram.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/classe 3 di Wolfram.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/classe 4 di Wolfram.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/classe di complessità di Wolfram.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/giardino dell'Eden.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/gun.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/lambda di Langton.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/metodo reticolare di Boltzmann.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/modello Axelrod.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/modello FHP con particelle velocità zero.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/modello FHP.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/modello HPP · regola di transizione.png create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/modello HPP.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/modello Nowak-Lewenstein.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/modello Sakoda.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/modello Schelling.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/oscillator.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/puffer.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/regola 110 di Wolfram.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/regola di Wolfram.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/regola di transizione.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/reticolo FCHC.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/reticolo di un automa cellulare.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/sincronizzazione del plotone di esecuzione.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/spaceship.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/stato di una cella.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/universalità.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/vicinato di Moore.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/vicinato di un automa cellulare.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/vicinato di von Neumann.md create mode 100644 8 - Sistemi complessi/3 - Automi cellulari/★ automi cellulari.canvas create mode 100644 8 - Sistemi complessi/4 - Grafi/arco di accoppiamento.md create mode 100644 8 - Sistemi complessi/4 - Grafi/aspetto categorico di un grafo multi-livello.md create mode 100644 8 - Sistemi complessi/4 - Grafi/aspetto di un grafo multi-livello.md create mode 100644 8 - Sistemi complessi/4 - Grafi/aspetto ordinale di un grafo multi-livello.md create mode 100644 8 - Sistemi complessi/4 - Grafi/bellezza.md create mode 100644 8 - Sistemi complessi/4 - Grafi/circuito euleriano.md create mode 100644 8 - Sistemi complessi/4 - Grafi/coefficiente di clustering in una rete multiplex.md create mode 100644 8 - Sistemi complessi/4 - Grafi/coefficiente di clustering.md create mode 100644 8 - Sistemi complessi/4 - Grafi/diametro di un grafo.md create mode 100644 8 - Sistemi complessi/4 - Grafi/distanza tra nodi di un grafo.md create mode 100644 8 - Sistemi complessi/4 - Grafi/eccentricità di un nodo.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo a nodi colorati.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo a reticolo.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo ad archi colorati.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo casuale.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo completo.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo connesso.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo denso.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo multi-livello a livelli disgiunti.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo multi-livello allineato ai nodi.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo multi-livello categorico.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo multi-livello diagonale a livelli accoppiati.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo multi-livello diagonale.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo multi-livello interconnesso.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo multi-livello k-partito.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo multi-livello.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo scale-free.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo small-world.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo sparso.md create mode 100644 8 - Sistemi complessi/4 - Grafi/grafo.md create mode 100644 8 - Sistemi complessi/4 - Grafi/interdipendenza.md create mode 100644 8 - Sistemi complessi/4 - Grafi/iperarco.md create mode 100644 8 - Sistemi complessi/4 - Grafi/ipergrafo.md create mode 100644 8 - Sistemi complessi/4 - Grafi/iperrete.md create mode 100644 8 - Sistemi complessi/4 - Grafi/lunghezza caratteristica di un grafo.md create mode 100644 8 - Sistemi complessi/4 - Grafi/multislice modularity.md create mode 100644 8 - Sistemi complessi/4 - Grafi/percolation threshold.md create mode 100644 8 - Sistemi complessi/4 - Grafi/percorso euleriano.md create mode 100644 8 - Sistemi complessi/4 - Grafi/raggio di un grafo.md create mode 100644 8 - Sistemi complessi/4 - Grafi/rete interdipendente.md create mode 100644 8 - Sistemi complessi/4 - Grafi/rete multiplex correlata.md create mode 100644 8 - Sistemi complessi/4 - Grafi/rete multiplex straightforward.md create mode 100644 8 - Sistemi complessi/4 - Grafi/rete multiplex.md create mode 100644 8 - Sistemi complessi/4 - Grafi/★ grafi multi-livello.canvas create mode 100644 8 - Sistemi complessi/4 - Grafi/★ grafi.canvas create mode 100644 8 - Sistemi complessi/4 - Grafi/★ ipergrafi.canvas create mode 100644 8 - Sistemi complessi/5 - Origine della vita/catalizzatore.md create mode 100644 8 - Sistemi complessi/5 - Origine della vita/gene duplication.md create mode 100644 8 - Sistemi complessi/5 - Origine della vita/insieme auto-catalitico riflessivo generato da cibo.md create mode 100644 8 - Sistemi complessi/5 - Origine della vita/insieme auto-replicante.md create mode 100644 8 - Sistemi complessi/5 - Origine della vita/modello di Kauffman gene-RBN.md create mode 100644 8 - Sistemi complessi/5 - Origine della vita/modello di Kauffman per gli insiemi auto-replicanti.md create mode 100644 8 - Sistemi complessi/5 - Origine della vita/substrato.md create mode 100644 8 - Sistemi complessi/5 - Origine della vita/★ geni come random boolean network.canvas create mode 100644 8 - Sistemi complessi/5 - Origine della vita/★ insiemi auto-replicanti.canvas create mode 100644 8 - Sistemi complessi/6 - Robustezza/canalizzazione.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/cromosoma.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/crossover.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/degenerazione.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/evolvibilità.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/fenotipo.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/fitness.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/gene.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/genoma.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/genotipo.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/individuo.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/modello duplication-degeneracy-complementation.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/nucleotide.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/omeostasi.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/paradosso dell'evolvibilità.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/plasticità fenotipica.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/pleiotropia.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/point mutation.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/popolazione.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/proteoma.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/rete neutrale.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/rete regolatrice di geni.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/ridondanza.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/robustezza biologica.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/robustezza differenziale.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/robustezza distribuita.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/robustezza locale.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/robustezza.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/tolleranza altamente ottimizzata.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/tratto.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/versatilità.md create mode 100644 8 - Sistemi complessi/6 - Robustezza/★ robustezza.canvas create mode 100644 8 - Sistemi complessi/6 - Robustezza/🞵 parentesi anti-eugenica.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/STRIDE.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/analisi dei rischi.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/asset.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/attaccante.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/bug.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/debolezza.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/difetto.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/distinguisher.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/exploit.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/funzionalità.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/input illecito.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/input invalido.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/input lecito.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/input valido.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/meccanismo di prevenzione.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/meccanismo di reazione.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/meccanismo di rilevazione.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/meccanismo di sicurezza.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/minaccia.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/politica di sicurezza.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/prestazioni.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/principio del minimo privilegio.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/principio del silenzio.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/rischio.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/sicurezza informatica.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/sicurezza.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/superficie di attacco.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/vettore di attacco.md create mode 100644 8 - Sviluppo di software sicuro/1 - Terminologia/vulnerabilità.md create mode 100644 8 - Sviluppo di software sicuro/2 - Esercizi svolti/Exploit.education - Phoenix/00 - stack-zero.md create mode 100644 8 - Sviluppo di software sicuro/2 - Esercizi svolti/Exploit.education - Phoenix/01 - stack-one.md create mode 100644 8 - Sviluppo di software sicuro/2 - Esercizi svolti/Exploit.education - Phoenix/02 - stack-two.md create mode 100644 8 - Sviluppo di software sicuro/2 - Esercizi svolti/Exploit.education - Phoenix/03 - stack-three.md create mode 100644 8 - Sviluppo di software sicuro/2 - Esercizi svolti/Exploit.education - Phoenix/04 - stack-four.md create mode 100644 8 - Sviluppo di software sicuro/2 - Esercizi svolti/Exploit.education - Phoenix/05 - stack-five.md create mode 100644 8 - Sviluppo di software sicuro/2 - Esercizi svolti/Exploit.education - Phoenix/Stack smashing cheat sheet.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..55a5558 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +**/*.mp4 +**/*.mkv +**/*.sync-confict-* + +.obsidian/workspace.json +.obsidian/workspace-mobile.json +.trash + +0 - Generale/★ esami.canvas +**/0 - Materiale di studio/ \ No newline at end of file diff --git a/.obsidian/app.json b/.obsidian/app.json new file mode 100644 index 0000000..6920429 --- /dev/null +++ b/.obsidian/app.json @@ -0,0 +1,17 @@ +{ + "alwaysUpdateLinks": true, + "useMarkdownLinks": false, + "defaultViewMode": "source", + "showFrontmatter": true, + "attachmentFolderPath": "./", + "newFileLocation": "current", + "strictLineBreaks": true, + "showLineNumber": true, + "spellcheckLanguages": null, + "spellcheck": false, + "autoConvertHtml": true, + "showUnsupportedFiles": true, + "newLinkFormat": "shortest", + "trashOption": "local", + "promptDelete": false +} \ No newline at end of file diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json new file mode 100644 index 0000000..54a792f --- /dev/null +++ b/.obsidian/appearance.json @@ -0,0 +1,11 @@ +{ + "accentColor": "#d14224", + "textFontFamily": "", + "monospaceFontFamily": "", + "theme": "system", + "baseFontSize": 16, + "enabledCssSnippets": [ + "canvas-zoom", + "canvas-node-placeholder-size" + ] +} \ No newline at end of file diff --git a/.obsidian/backlink.json b/.obsidian/backlink.json new file mode 100644 index 0000000..80eb3a3 --- /dev/null +++ b/.obsidian/backlink.json @@ -0,0 +1,3 @@ +{ + "backlinkInDocument": false +} \ No newline at end of file diff --git a/.obsidian/bookmarks.json b/.obsidian/bookmarks.json new file mode 100644 index 0000000..153cdb5 --- /dev/null +++ b/.obsidian/bookmarks.json @@ -0,0 +1,67 @@ +{ + "items": [ + { + "type": "graph", + "ctime": 1686611114254, + "title": "Crittografia applicata", + "options": { + "collapse-filter": false, + "search": "path:\"8 - Crittografia applicata\"", + "showTags": false, + "showAttachments": false, + "hideUnresolved": false, + "showOrphans": true, + "collapse-color-groups": false, + "colorGroups": [ + { + "query": "path:\"8 - Crittografia applicata/1 - Concetti\"", + "color": { + "a": 1, + "rgb": 14048348 + } + }, + { + "query": "path:\"8 - Crittografia applicata/2 - Comunicazione simmetrica\"", + "color": { + "a": 1, + "rgb": 14069084 + } + }, + { + "query": "path:\"8 - Crittografia applicata/3 - Comunicazione asimmetrica\"", + "color": { + "a": 1, + "rgb": 6084188 + } + }, + { + "query": "path:\"8 - Crittografia applicata/4 - Controllo dell'accesso\"", + "color": { + "a": 1, + "rgb": 6073814 + } + }, + { + "query": "path:\"8 - Crittografia applicata/5 - Protocolli sicuri\"", + "color": { + "a": 1, + "rgb": 11361494 + } + } + ], + "collapse-display": false, + "showArrow": false, + "textFadeMultiplier": -3, + "nodeSizeMultiplier": 1.50364583333333, + "lineSizeMultiplier": 0.380729166666667, + "collapse-forces": false, + "centerStrength": 0.177083333333333, + "repelStrength": 20, + "linkStrength": 1, + "linkDistance": 500, + "scale": 0.02775319949071854, + "close": false + } + } + ] +} \ No newline at end of file diff --git a/.obsidian/canvas.json b/.obsidian/canvas.json new file mode 100644 index 0000000..26d11ea --- /dev/null +++ b/.obsidian/canvas.json @@ -0,0 +1,7 @@ +{ + "snapToObjects": true, + "snapToGrid": true, + "cardLabelVisibility": "hover", + "newFileLocation": "current", + "zoomBreakpoint": -0.13 +} \ No newline at end of file diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json new file mode 100644 index 0000000..60f6a70 --- /dev/null +++ b/.obsidian/community-plugins.json @@ -0,0 +1,3 @@ +[ + "obsidian-file-color" +] \ No newline at end of file diff --git a/.obsidian/core-plugins-migration.json b/.obsidian/core-plugins-migration.json new file mode 100644 index 0000000..000b361 --- /dev/null +++ b/.obsidian/core-plugins-migration.json @@ -0,0 +1,31 @@ +{ + "file-explorer": true, + "global-search": true, + "switcher": true, + "graph": true, + "backlink": true, + "canvas": true, + "outgoing-link": true, + "tag-pane": true, + "page-preview": false, + "daily-notes": false, + "templates": false, + "note-composer": false, + "command-palette": false, + "slash-command": false, + "editor-status": true, + "starred": false, + "markdown-importer": false, + "zk-prefixer": false, + "random-note": false, + "outline": true, + "word-count": true, + "slides": false, + "audio-recorder": false, + "workspaces": false, + "file-recovery": false, + "publish": false, + "sync": false, + "bookmarks": true, + "properties": true +} \ No newline at end of file diff --git a/.obsidian/core-plugins.json b/.obsidian/core-plugins.json new file mode 100644 index 0000000..33c32ce --- /dev/null +++ b/.obsidian/core-plugins.json @@ -0,0 +1,15 @@ +[ + "file-explorer", + "global-search", + "switcher", + "graph", + "backlink", + "canvas", + "outgoing-link", + "tag-pane", + "properties", + "editor-status", + "bookmarks", + "outline", + "word-count" +] \ No newline at end of file diff --git a/.obsidian/graph.json b/.obsidian/graph.json new file mode 100644 index 0000000..4f09403 --- /dev/null +++ b/.obsidian/graph.json @@ -0,0 +1,30 @@ +{ + "collapse-filter": false, + "search": "path:\"8 - Sistemi complessi\" ", + "showTags": false, + "showAttachments": false, + "hideUnresolved": false, + "showOrphans": true, + "collapse-color-groups": false, + "colorGroups": [ + { + "query": "path:\"8 - Sistemi complessi/4 - Grafi\" ", + "color": { + "a": 1, + "rgb": 65284 + } + } + ], + "collapse-display": false, + "showArrow": false, + "textFadeMultiplier": -3, + "nodeSizeMultiplier": 1, + "lineSizeMultiplier": 1, + "collapse-forces": false, + "centerStrength": 0.864583333333333, + "repelStrength": 20, + "linkStrength": 1, + "linkDistance": 30, + "scale": 0.45050811767578125, + "close": true +} \ No newline at end of file diff --git a/.obsidian/hotkeys.json b/.obsidian/hotkeys.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.obsidian/hotkeys.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-file-color/data.json b/.obsidian/plugins/obsidian-file-color/data.json new file mode 100644 index 0000000..a334959 --- /dev/null +++ b/.obsidian/plugins/obsidian-file-color/data.json @@ -0,0 +1,442 @@ +{ + "palette": [ + { + "id": "7j7Pqog0VHMVVAfazMNlb", + "name": "Accent", + "value": "#d14224" + }, + { + "id": "me4XBNQC4rwzQFLlvIAn0", + "name": "System", + "value": "#65342a" + }, + { + "id": "fc3lLaITDn62PYbzBhqxl", + "name": "To do", + "value": "#dac38b" + }, + { + "id": "hEs1KsnMgHNA_g4pwAxtt", + "name": "Done", + "value": "#696969" + } + ], + "fileColors": [ + { + "path": "8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/1 - Concetti/2 - Dimostrare la validità delle soluzioni/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/1 - Modello/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/2 - Operation framework/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/1 - Indistinguibilità su disco/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/1 - Concetti/3 - Casualità ed entropia/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/2 - Confidenzialità/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Indistinguibilità/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/4 - Integrità crittografica/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/5 - Autenticazione/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/6 - Indistinguibilità autenticata/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/3 - Contestualizzazione ed estendibilità/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/4 - Derivazione di chiave/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/4 - Controllo dell'accesso/1 - Modello/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/4 - Controllo dell'accesso/3 - Autenticazione di identità/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/4 - Controllo dell'accesso/2 - Protezione dai data breach/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/1 - Teoria dei gruppi/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "7 - High performance computing/★ glossario ad alta performance.md", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/3 - Scambio di chiave/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Metodologie di sviluppo software/★ Materiale di studio/1 - Slides/05-AgileMethodologies_2_decrypted.pdf", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Metodologie di sviluppo software/★ Materiale di studio/1 - Slides/06-ProjectEstimation.pdf", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Metodologie di sviluppo software/★ Materiale di studio/1 - Slides/07-DesignPatterns.pdf", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Metodologie di sviluppo software/★ Materiale di studio", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Metodologie di sviluppo software", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "7 - High performance computing", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/2 - Teoria delle curve ellittiche/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/4 - Crittografia asimmetrica/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "0 - Generale/★ esami.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "0 - Generale", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "7 - Big data analytics", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "7 - Introduction to quantum information processing", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Crittografia applicata", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/5 - Firma digitale/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/3 - Comunicazione asimmetrica/6 - Falsificazione di firme/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/7 - Implementazioni particolari/5 - Strutture dati particolari/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/4 - Controllo dell'accesso/4 - Distribuzione di chiavi/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/5 - Protocolli sicuri/1 - TCP-IP/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/5 - Protocolli sicuri/2 - Email/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Crittografia applicata/5 - Protocolli sicuri/3 - Signal/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/6b-unit-testing.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/6a-introduzione.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/5f-controllo-input.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/5e-sincronizzazione.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/5d-riduzione-superficie-attacco.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/5c-regola-silenzio.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/5b-minimo-privilegio.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/5a-introduzione.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/4f-input-non-controllato.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/4e-corse-critiche.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/4d-eccessiva-esposizione-asset.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/4c-eccessiva-verbosita-output.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/4a-introduzione.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/3-definizioni.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/4b-esecuzione-privilegi-elevati.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Crittografia applicata/2 - Comunicazione simmetrica/3 - Integrità semplice/★ mappa concettuale.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/6c-analisi-statica.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sviluppo di software sicuro/0 - Materiale di studio/Slides/6d-analisi-dinamica.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/2 - Sistemi complessi/★ sistemi complessi.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Sistemi complessi/3 - Automi cellulari/★ automi cellulari.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Sistemi complessi/4 - Grafi/★ grafi.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Sistemi complessi/5 - Origine della vita/★ insiemi auto-replicanti.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Sistemi complessi/6 - Robustezza/★ robustezza.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/01_introduction_p1_V2d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/01_introduction_p2_V3d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/000_introd.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/1 - Sistemi dinamici/★ sistemi dinamici.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Sistemi complessi/2 - Sistemi complessi/topological mixing.md", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/2 - Sistemi complessi/dense periodic orbits.md", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/02_selforganization_P1_V2d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/02_selforganization_P2d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/2 - Sistemi complessi/Landau's phenomenological theory.md", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/02_selforganization_P3_V2d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/03_CA1_intro_emergenced.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/03_CA2_CA1Dd.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/03_CA3_self_replicationd.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/03_CA4_fluidodind.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/03_CA5_modelli_v2d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/03_CA6_societad.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/4 - Grafi/percolation threshold.md", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/04a_lab_reti_p1_v1_COLOREd.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/04a_lab_reti_p2a_v1d_COLOR.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/04a_lab_reti_p2b_v1d_COLOR.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/04a_lab_reti_p2c_v1d_COLOR.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/04a_lab_reti_p3_v1d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/4 - Grafi/★ grafi multi-livello.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Sistemi complessi/4 - Grafi/rete interdipendente.md", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/4 - Grafi/rete multiplex correlata.md", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/4 - Grafi/★ ipergrafi.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/05_Mreti_v2d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/05c_HypNet_V3d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/06a_OOL_protocells_v3d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/5 - Origine della vita/insieme auto-catalitico riflessivo generato da cibo.md", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/06b_autocat_V4_p1d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/06b_autocat_V4_p2d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/07_RBNd_COLOR.pdf", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/6 - Robustezza/🞵 parentesi anti-eugenica.md", + "color": "me4XBNQC4rwzQFLlvIAn0" + }, + { + "path": "8 - Sistemi complessi/6 - Robustezza/robustezza differenziale.md", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/6 - Robustezza/versatilità.md", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/6 - Robustezza/evolvibilità.md", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/08_degener_v1d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/0 - Materiale di studio/Slides/10_HOT_v1d.pdf", + "color": "hEs1KsnMgHNA_g4pwAxtt" + }, + { + "path": "8 - Sistemi complessi/5 - Origine della vita/modello di Kauffman gene-RBN.md", + "color": "fc3lLaITDn62PYbzBhqxl" + }, + { + "path": "8 - Sistemi complessi/5 - Origine della vita/★ geni come random boolean network.canvas", + "color": "7j7Pqog0VHMVVAfazMNlb" + } + ] +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-file-color/main.js b/.obsidian/plugins/obsidian-file-color/main.js new file mode 100644 index 0000000..ea1b636 --- /dev/null +++ b/.obsidian/plugins/obsidian-file-color/main.js @@ -0,0 +1,23240 @@ +"use strict"; +/* +Thu May 04 2023 17:17:05 GMT+0200 (Central European Summer Time) +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// node_modules/react/cjs/react.development.js +var require_react_development = __commonJS({ + "node_modules/react/cjs/react.development.js"(exports, module2) { + "use strict"; + if (true) { + (function() { + "use strict"; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); + } + var ReactVersion = "18.2.0"; + var REACT_ELEMENT_TYPE = Symbol.for("react.element"); + var REACT_PORTAL_TYPE = Symbol.for("react.portal"); + var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); + var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"); + var REACT_PROFILER_TYPE = Symbol.for("react.profiler"); + var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); + var REACT_CONTEXT_TYPE = Symbol.for("react.context"); + var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"); + var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"); + var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"); + var REACT_MEMO_TYPE = Symbol.for("react.memo"); + var REACT_LAZY_TYPE = Symbol.for("react.lazy"); + var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"); + var MAYBE_ITERATOR_SYMBOL = Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = "@@iterator"; + function getIteratorFn(maybeIterable) { + if (maybeIterable === null || typeof maybeIterable !== "object") { + return null; + } + var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; + if (typeof maybeIterator === "function") { + return maybeIterator; + } + return null; + } + var ReactCurrentDispatcher = { + current: null + }; + var ReactCurrentBatchConfig = { + transition: null + }; + var ReactCurrentActQueue = { + current: null, + isBatchingLegacy: false, + didScheduleLegacyUpdate: false + }; + var ReactCurrentOwner = { + current: null + }; + var ReactDebugCurrentFrame = {}; + var currentExtraStackFrame = null; + function setExtraStackFrame(stack) { + { + currentExtraStackFrame = stack; + } + } + { + ReactDebugCurrentFrame.setExtraStackFrame = function(stack) { + { + currentExtraStackFrame = stack; + } + }; + ReactDebugCurrentFrame.getCurrentStack = null; + ReactDebugCurrentFrame.getStackAddendum = function() { + var stack = ""; + if (currentExtraStackFrame) { + stack += currentExtraStackFrame; + } + var impl = ReactDebugCurrentFrame.getCurrentStack; + if (impl) { + stack += impl() || ""; + } + return stack; + }; + } + var enableScopeAPI = false; + var enableCacheElement = false; + var enableTransitionTracing = false; + var enableLegacyHidden = false; + var enableDebugTracing = false; + var ReactSharedInternals = { + ReactCurrentDispatcher, + ReactCurrentBatchConfig, + ReactCurrentOwner + }; + { + ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame; + ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue; + } + function warn(format) { + { + { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + printWarning("warn", format, args); + } + } + } + function error(format) { + { + { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + printWarning("error", format, args); + } + } + } + function printWarning(level, format, args) { + { + var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame2.getStackAddendum(); + if (stack !== "") { + format += "%s"; + args = args.concat([stack]); + } + var argsWithFormat = args.map(function(item) { + return String(item); + }); + argsWithFormat.unshift("Warning: " + format); + Function.prototype.apply.call(console[level], console, argsWithFormat); + } + } + var didWarnStateUpdateForUnmountedComponent = {}; + function warnNoop(publicInstance, callerName) { + { + var _constructor = publicInstance.constructor; + var componentName = _constructor && (_constructor.displayName || _constructor.name) || "ReactClass"; + var warningKey = componentName + "." + callerName; + if (didWarnStateUpdateForUnmountedComponent[warningKey]) { + return; + } + error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.", callerName, componentName); + didWarnStateUpdateForUnmountedComponent[warningKey] = true; + } + } + var ReactNoopUpdateQueue = { + isMounted: function(publicInstance) { + return false; + }, + enqueueForceUpdate: function(publicInstance, callback, callerName) { + warnNoop(publicInstance, "forceUpdate"); + }, + enqueueReplaceState: function(publicInstance, completeState, callback, callerName) { + warnNoop(publicInstance, "replaceState"); + }, + enqueueSetState: function(publicInstance, partialState, callback, callerName) { + warnNoop(publicInstance, "setState"); + } + }; + var assign = Object.assign; + var emptyObject = {}; + { + Object.freeze(emptyObject); + } + function Component(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + Component.prototype.isReactComponent = {}; + Component.prototype.setState = function(partialState, callback) { + if (typeof partialState !== "object" && typeof partialState !== "function" && partialState != null) { + throw new Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables."); + } + this.updater.enqueueSetState(this, partialState, callback, "setState"); + }; + Component.prototype.forceUpdate = function(callback) { + this.updater.enqueueForceUpdate(this, callback, "forceUpdate"); + }; + { + var deprecatedAPIs = { + isMounted: ["isMounted", "Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."], + replaceState: ["replaceState", "Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."] + }; + var defineDeprecationWarning = function(methodName, info) { + Object.defineProperty(Component.prototype, methodName, { + get: function() { + warn("%s(...) is deprecated in plain JavaScript React classes. %s", info[0], info[1]); + return void 0; + } + }); + }; + for (var fnName in deprecatedAPIs) { + if (deprecatedAPIs.hasOwnProperty(fnName)) { + defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + } + } + } + function ComponentDummy() { + } + ComponentDummy.prototype = Component.prototype; + function PureComponent(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); + pureComponentPrototype.constructor = PureComponent; + assign(pureComponentPrototype, Component.prototype); + pureComponentPrototype.isPureReactComponent = true; + function createRef() { + var refObject = { + current: null + }; + { + Object.seal(refObject); + } + return refObject; + } + var isArrayImpl = Array.isArray; + function isArray(a2) { + return isArrayImpl(a2); + } + function typeName(value) { + { + var hasToStringTag = typeof Symbol === "function" && Symbol.toStringTag; + var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object"; + return type; + } + } + function willCoercionThrow(value) { + { + try { + testStringCoercion(value); + return false; + } catch (e2) { + return true; + } + } + } + function testStringCoercion(value) { + return "" + value; + } + function checkKeyStringCoercion(value) { + { + if (willCoercionThrow(value)) { + error("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", typeName(value)); + return testStringCoercion(value); + } + } + } + function getWrappedName(outerType, innerType, wrapperName) { + var displayName = outerType.displayName; + if (displayName) { + return displayName; + } + var functionName = innerType.displayName || innerType.name || ""; + return functionName !== "" ? wrapperName + "(" + functionName + ")" : wrapperName; + } + function getContextName(type) { + return type.displayName || "Context"; + } + function getComponentNameFromType(type) { + if (type == null) { + return null; + } + { + if (typeof type.tag === "number") { + error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."); + } + } + if (typeof type === "function") { + return type.displayName || type.name || null; + } + if (typeof type === "string") { + return type; + } + switch (type) { + case REACT_FRAGMENT_TYPE: + return "Fragment"; + case REACT_PORTAL_TYPE: + return "Portal"; + case REACT_PROFILER_TYPE: + return "Profiler"; + case REACT_STRICT_MODE_TYPE: + return "StrictMode"; + case REACT_SUSPENSE_TYPE: + return "Suspense"; + case REACT_SUSPENSE_LIST_TYPE: + return "SuspenseList"; + } + if (typeof type === "object") { + switch (type.$$typeof) { + case REACT_CONTEXT_TYPE: + var context = type; + return getContextName(context) + ".Consumer"; + case REACT_PROVIDER_TYPE: + var provider = type; + return getContextName(provider._context) + ".Provider"; + case REACT_FORWARD_REF_TYPE: + return getWrappedName(type, type.render, "ForwardRef"); + case REACT_MEMO_TYPE: + var outerName = type.displayName || null; + if (outerName !== null) { + return outerName; + } + return getComponentNameFromType(type.type) || "Memo"; + case REACT_LAZY_TYPE: { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + try { + return getComponentNameFromType(init(payload)); + } catch (x) { + return null; + } + } + } + } + return null; + } + var hasOwnProperty = Object.prototype.hasOwnProperty; + var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true + }; + var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs; + { + didWarnAboutStringRefs = {}; + } + function hasValidRef(config) { + { + if (hasOwnProperty.call(config, "ref")) { + var getter = Object.getOwnPropertyDescriptor(config, "ref").get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.ref !== void 0; + } + function hasValidKey(config) { + { + if (hasOwnProperty.call(config, "key")) { + var getter = Object.getOwnPropertyDescriptor(config, "key").get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.key !== void 0; + } + function defineKeyPropWarningGetter(props, displayName) { + var warnAboutAccessingKey = function() { + { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName); + } + } + }; + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, "key", { + get: warnAboutAccessingKey, + configurable: true + }); + } + function defineRefPropWarningGetter(props, displayName) { + var warnAboutAccessingRef = function() { + { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + error("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName); + } + } + }; + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, "ref", { + get: warnAboutAccessingRef, + configurable: true + }); + } + function warnIfStringRefCannotBeAutoConverted(config) { + { + if (typeof config.ref === "string" && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) { + var componentName = getComponentNameFromType(ReactCurrentOwner.current.type); + if (!didWarnAboutStringRefs[componentName]) { + error('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref); + didWarnAboutStringRefs[componentName] = true; + } + } + } + } + var ReactElement = function(type, key, ref, self, source, owner, props) { + var element = { + $$typeof: REACT_ELEMENT_TYPE, + type, + key, + ref, + props, + _owner: owner + }; + { + element._store = {}; + Object.defineProperty(element._store, "validated", { + configurable: false, + enumerable: false, + writable: true, + value: false + }); + Object.defineProperty(element, "_self", { + configurable: false, + enumerable: false, + writable: false, + value: self + }); + Object.defineProperty(element, "_source", { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + return element; + }; + function createElement2(type, config, children) { + var propName; + var props = {}; + var key = null; + var ref = null; + var self = null; + var source = null; + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + { + warnIfStringRefCannotBeAutoConverted(config); + } + } + if (hasValidKey(config)) { + { + checkKeyStringCoercion(config.key); + } + key = "" + config.key; + } + self = config.__self === void 0 ? null : config.__self; + source = config.__source === void 0 ? null : config.__source; + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + } + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i2 = 0; i2 < childrenLength; i2++) { + childArray[i2] = arguments[i2 + 2]; + } + { + if (Object.freeze) { + Object.freeze(childArray); + } + } + props.children = childArray; + } + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + for (propName in defaultProps) { + if (props[propName] === void 0) { + props[propName] = defaultProps[propName]; + } + } + } + { + if (key || ref) { + var displayName = typeof type === "function" ? type.displayName || type.name || "Unknown" : type; + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + } + return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); + } + function cloneAndReplaceKey(oldElement, newKey) { + var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); + return newElement; + } + function cloneElement(element, config, children) { + if (element === null || element === void 0) { + throw new Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + "."); + } + var propName; + var props = assign({}, element.props); + var key = element.key; + var ref = element.ref; + var self = element._self; + var source = element._source; + var owner = element._owner; + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + owner = ReactCurrentOwner.current; + } + if (hasValidKey(config)) { + { + checkKeyStringCoercion(config.key); + } + key = "" + config.key; + } + var defaultProps; + if (element.type && element.type.defaultProps) { + defaultProps = element.type.defaultProps; + } + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (config[propName] === void 0 && defaultProps !== void 0) { + props[propName] = defaultProps[propName]; + } else { + props[propName] = config[propName]; + } + } + } + } + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i2 = 0; i2 < childrenLength; i2++) { + childArray[i2] = arguments[i2 + 2]; + } + props.children = childArray; + } + return ReactElement(element.type, key, ref, self, source, owner, props); + } + function isValidElement(object) { + return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + } + var SEPARATOR = "."; + var SUBSEPARATOR = ":"; + function escape(key) { + var escapeRegex = /[=:]/g; + var escaperLookup = { + "=": "=0", + ":": "=2" + }; + var escapedString = key.replace(escapeRegex, function(match) { + return escaperLookup[match]; + }); + return "$" + escapedString; + } + var didWarnAboutMaps = false; + var userProvidedKeyEscapeRegex = /\/+/g; + function escapeUserProvidedKey(text) { + return text.replace(userProvidedKeyEscapeRegex, "$&/"); + } + function getElementKey(element, index) { + if (typeof element === "object" && element !== null && element.key != null) { + { + checkKeyStringCoercion(element.key); + } + return escape("" + element.key); + } + return index.toString(36); + } + function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) { + var type = typeof children; + if (type === "undefined" || type === "boolean") { + children = null; + } + var invokeCallback = false; + if (children === null) { + invokeCallback = true; + } else { + switch (type) { + case "string": + case "number": + invokeCallback = true; + break; + case "object": + switch (children.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_PORTAL_TYPE: + invokeCallback = true; + } + } + } + if (invokeCallback) { + var _child = children; + var mappedChild = callback(_child); + var childKey = nameSoFar === "" ? SEPARATOR + getElementKey(_child, 0) : nameSoFar; + if (isArray(mappedChild)) { + var escapedChildKey = ""; + if (childKey != null) { + escapedChildKey = escapeUserProvidedKey(childKey) + "/"; + } + mapIntoArray(mappedChild, array, escapedChildKey, "", function(c2) { + return c2; + }); + } else if (mappedChild != null) { + if (isValidElement(mappedChild)) { + { + if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) { + checkKeyStringCoercion(mappedChild.key); + } + } + mappedChild = cloneAndReplaceKey(mappedChild, escapedPrefix + (mappedChild.key && (!_child || _child.key !== mappedChild.key) ? escapeUserProvidedKey("" + mappedChild.key) + "/" : "") + childKey); + } + array.push(mappedChild); + } + return 1; + } + var child; + var nextName; + var subtreeCount = 0; + var nextNamePrefix = nameSoFar === "" ? SEPARATOR : nameSoFar + SUBSEPARATOR; + if (isArray(children)) { + for (var i2 = 0; i2 < children.length; i2++) { + child = children[i2]; + nextName = nextNamePrefix + getElementKey(child, i2); + subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); + } + } else { + var iteratorFn = getIteratorFn(children); + if (typeof iteratorFn === "function") { + var iterableChildren = children; + { + if (iteratorFn === iterableChildren.entries) { + if (!didWarnAboutMaps) { + warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."); + } + didWarnAboutMaps = true; + } + } + var iterator = iteratorFn.call(iterableChildren); + var step; + var ii = 0; + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getElementKey(child, ii++); + subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); + } + } else if (type === "object") { + var childrenString = String(children); + throw new Error("Objects are not valid as a React child (found: " + (childrenString === "[object Object]" ? "object with keys {" + Object.keys(children).join(", ") + "}" : childrenString) + "). If you meant to render a collection of children, use an array instead."); + } + } + return subtreeCount; + } + function mapChildren(children, func, context) { + if (children == null) { + return children; + } + var result = []; + var count = 0; + mapIntoArray(children, result, "", "", function(child) { + return func.call(context, child, count++); + }); + return result; + } + function countChildren(children) { + var n2 = 0; + mapChildren(children, function() { + n2++; + }); + return n2; + } + function forEachChildren(children, forEachFunc, forEachContext) { + mapChildren(children, function() { + forEachFunc.apply(this, arguments); + }, forEachContext); + } + function toArray(children) { + return mapChildren(children, function(child) { + return child; + }) || []; + } + function onlyChild(children) { + if (!isValidElement(children)) { + throw new Error("React.Children.only expected to receive a single React element child."); + } + return children; + } + function createContext4(defaultValue) { + var context = { + $$typeof: REACT_CONTEXT_TYPE, + _currentValue: defaultValue, + _currentValue2: defaultValue, + _threadCount: 0, + Provider: null, + Consumer: null, + _defaultValue: null, + _globalName: null + }; + context.Provider = { + $$typeof: REACT_PROVIDER_TYPE, + _context: context + }; + var hasWarnedAboutUsingNestedContextConsumers = false; + var hasWarnedAboutUsingConsumerProvider = false; + var hasWarnedAboutDisplayNameOnConsumer = false; + { + var Consumer = { + $$typeof: REACT_CONTEXT_TYPE, + _context: context + }; + Object.defineProperties(Consumer, { + Provider: { + get: function() { + if (!hasWarnedAboutUsingConsumerProvider) { + hasWarnedAboutUsingConsumerProvider = true; + error("Rendering is not supported and will be removed in a future major release. Did you mean to render instead?"); + } + return context.Provider; + }, + set: function(_Provider) { + context.Provider = _Provider; + } + }, + _currentValue: { + get: function() { + return context._currentValue; + }, + set: function(_currentValue) { + context._currentValue = _currentValue; + } + }, + _currentValue2: { + get: function() { + return context._currentValue2; + }, + set: function(_currentValue2) { + context._currentValue2 = _currentValue2; + } + }, + _threadCount: { + get: function() { + return context._threadCount; + }, + set: function(_threadCount) { + context._threadCount = _threadCount; + } + }, + Consumer: { + get: function() { + if (!hasWarnedAboutUsingNestedContextConsumers) { + hasWarnedAboutUsingNestedContextConsumers = true; + error("Rendering is not supported and will be removed in a future major release. Did you mean to render instead?"); + } + return context.Consumer; + } + }, + displayName: { + get: function() { + return context.displayName; + }, + set: function(displayName) { + if (!hasWarnedAboutDisplayNameOnConsumer) { + warn("Setting `displayName` on Context.Consumer has no effect. You should set it directly on the context with Context.displayName = '%s'.", displayName); + hasWarnedAboutDisplayNameOnConsumer = true; + } + } + } + }); + context.Consumer = Consumer; + } + { + context._currentRenderer = null; + context._currentRenderer2 = null; + } + return context; + } + var Uninitialized = -1; + var Pending = 0; + var Resolved = 1; + var Rejected = 2; + function lazyInitializer(payload) { + if (payload._status === Uninitialized) { + var ctor = payload._result; + var thenable = ctor(); + thenable.then(function(moduleObject2) { + if (payload._status === Pending || payload._status === Uninitialized) { + var resolved = payload; + resolved._status = Resolved; + resolved._result = moduleObject2; + } + }, function(error2) { + if (payload._status === Pending || payload._status === Uninitialized) { + var rejected = payload; + rejected._status = Rejected; + rejected._result = error2; + } + }); + if (payload._status === Uninitialized) { + var pending = payload; + pending._status = Pending; + pending._result = thenable; + } + } + if (payload._status === Resolved) { + var moduleObject = payload._result; + { + if (moduleObject === void 0) { + error("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))\n\nDid you accidentally put curly braces around the import?", moduleObject); + } + } + { + if (!("default" in moduleObject)) { + error("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))", moduleObject); + } + } + return moduleObject.default; + } else { + throw payload._result; + } + } + function lazy(ctor) { + var payload = { + _status: Uninitialized, + _result: ctor + }; + var lazyType = { + $$typeof: REACT_LAZY_TYPE, + _payload: payload, + _init: lazyInitializer + }; + { + var defaultProps; + var propTypes; + Object.defineProperties(lazyType, { + defaultProps: { + configurable: true, + get: function() { + return defaultProps; + }, + set: function(newDefaultProps) { + error("React.lazy(...): It is not supported to assign `defaultProps` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."); + defaultProps = newDefaultProps; + Object.defineProperty(lazyType, "defaultProps", { + enumerable: true + }); + } + }, + propTypes: { + configurable: true, + get: function() { + return propTypes; + }, + set: function(newPropTypes) { + error("React.lazy(...): It is not supported to assign `propTypes` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it."); + propTypes = newPropTypes; + Object.defineProperty(lazyType, "propTypes", { + enumerable: true + }); + } + } + }); + } + return lazyType; + } + function forwardRef(render) { + { + if (render != null && render.$$typeof === REACT_MEMO_TYPE) { + error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."); + } else if (typeof render !== "function") { + error("forwardRef requires a render function but was given %s.", render === null ? "null" : typeof render); + } else { + if (render.length !== 0 && render.length !== 2) { + error("forwardRef render functions accept exactly two parameters: props and ref. %s", render.length === 1 ? "Did you forget to use the ref parameter?" : "Any additional parameter will be undefined."); + } + } + if (render != null) { + if (render.defaultProps != null || render.propTypes != null) { + error("forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?"); + } + } + } + var elementType = { + $$typeof: REACT_FORWARD_REF_TYPE, + render + }; + { + var ownName; + Object.defineProperty(elementType, "displayName", { + enumerable: false, + configurable: true, + get: function() { + return ownName; + }, + set: function(name) { + ownName = name; + if (!render.name && !render.displayName) { + render.displayName = name; + } + } + }); + } + return elementType; + } + var REACT_MODULE_REFERENCE; + { + REACT_MODULE_REFERENCE = Symbol.for("react.module.reference"); + } + function isValidElementType(type) { + if (typeof type === "string" || typeof type === "function") { + return true; + } + if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) { + return true; + } + if (typeof type === "object" && type !== null) { + if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) { + return true; + } + } + return false; + } + function memo(type, compare) { + { + if (!isValidElementType(type)) { + error("memo: The first argument must be a component. Instead received: %s", type === null ? "null" : typeof type); + } + } + var elementType = { + $$typeof: REACT_MEMO_TYPE, + type, + compare: compare === void 0 ? null : compare + }; + { + var ownName; + Object.defineProperty(elementType, "displayName", { + enumerable: false, + configurable: true, + get: function() { + return ownName; + }, + set: function(name) { + ownName = name; + if (!type.name && !type.displayName) { + type.displayName = name; + } + } + }); + } + return elementType; + } + function resolveDispatcher() { + var dispatcher = ReactCurrentDispatcher.current; + { + if (dispatcher === null) { + error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem."); + } + } + return dispatcher; + } + function useContext4(Context) { + var dispatcher = resolveDispatcher(); + { + if (Context._context !== void 0) { + var realContext = Context._context; + if (realContext.Consumer === Context) { + error("Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be removed in a future major release. Did you mean to call useContext(Context) instead?"); + } else if (realContext.Provider === Context) { + error("Calling useContext(Context.Provider) is not supported. Did you mean to call useContext(Context) instead?"); + } + } + } + return dispatcher.useContext(Context); + } + function useState2(initialState) { + var dispatcher = resolveDispatcher(); + return dispatcher.useState(initialState); + } + function useReducer(reducer, initialArg, init) { + var dispatcher = resolveDispatcher(); + return dispatcher.useReducer(reducer, initialArg, init); + } + function useRef(initialValue) { + var dispatcher = resolveDispatcher(); + return dispatcher.useRef(initialValue); + } + function useEffect2(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useEffect(create, deps); + } + function useInsertionEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useInsertionEffect(create, deps); + } + function useLayoutEffect(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useLayoutEffect(create, deps); + } + function useCallback(callback, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useCallback(callback, deps); + } + function useMemo(create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useMemo(create, deps); + } + function useImperativeHandle(ref, create, deps) { + var dispatcher = resolveDispatcher(); + return dispatcher.useImperativeHandle(ref, create, deps); + } + function useDebugValue(value, formatterFn) { + { + var dispatcher = resolveDispatcher(); + return dispatcher.useDebugValue(value, formatterFn); + } + } + function useTransition() { + var dispatcher = resolveDispatcher(); + return dispatcher.useTransition(); + } + function useDeferredValue(value) { + var dispatcher = resolveDispatcher(); + return dispatcher.useDeferredValue(value); + } + function useId() { + var dispatcher = resolveDispatcher(); + return dispatcher.useId(); + } + function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) { + var dispatcher = resolveDispatcher(); + return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot); + } + var disabledDepth = 0; + var prevLog; + var prevInfo; + var prevWarn; + var prevError; + var prevGroup; + var prevGroupCollapsed; + var prevGroupEnd; + function disabledLog() { + } + disabledLog.__reactDisabledLog = true; + function disableLogs() { + { + if (disabledDepth === 0) { + prevLog = console.log; + prevInfo = console.info; + prevWarn = console.warn; + prevError = console.error; + prevGroup = console.group; + prevGroupCollapsed = console.groupCollapsed; + prevGroupEnd = console.groupEnd; + var props = { + configurable: true, + enumerable: true, + value: disabledLog, + writable: true + }; + Object.defineProperties(console, { + info: props, + log: props, + warn: props, + error: props, + group: props, + groupCollapsed: props, + groupEnd: props + }); + } + disabledDepth++; + } + } + function reenableLogs() { + { + disabledDepth--; + if (disabledDepth === 0) { + var props = { + configurable: true, + enumerable: true, + writable: true + }; + Object.defineProperties(console, { + log: assign({}, props, { + value: prevLog + }), + info: assign({}, props, { + value: prevInfo + }), + warn: assign({}, props, { + value: prevWarn + }), + error: assign({}, props, { + value: prevError + }), + group: assign({}, props, { + value: prevGroup + }), + groupCollapsed: assign({}, props, { + value: prevGroupCollapsed + }), + groupEnd: assign({}, props, { + value: prevGroupEnd + }) + }); + } + if (disabledDepth < 0) { + error("disabledDepth fell below zero. This is a bug in React. Please file an issue."); + } + } + } + var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher; + var prefix; + function describeBuiltInComponentFrame(name, source, ownerFn) { + { + if (prefix === void 0) { + try { + throw Error(); + } catch (x) { + var match = x.stack.trim().match(/\n( *(at )?)/); + prefix = match && match[1] || ""; + } + } + return "\n" + prefix + name; + } + } + var reentry = false; + var componentFrameCache; + { + var PossiblyWeakMap = typeof WeakMap === "function" ? WeakMap : Map; + componentFrameCache = new PossiblyWeakMap(); + } + function describeNativeComponentFrame(fn, construct) { + if (!fn || reentry) { + return ""; + } + { + var frame = componentFrameCache.get(fn); + if (frame !== void 0) { + return frame; + } + } + var control; + reentry = true; + var previousPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = void 0; + var previousDispatcher; + { + previousDispatcher = ReactCurrentDispatcher$1.current; + ReactCurrentDispatcher$1.current = null; + disableLogs(); + } + try { + if (construct) { + var Fake = function() { + throw Error(); + }; + Object.defineProperty(Fake.prototype, "props", { + set: function() { + throw Error(); + } + }); + if (typeof Reflect === "object" && Reflect.construct) { + try { + Reflect.construct(Fake, []); + } catch (x) { + control = x; + } + Reflect.construct(fn, [], Fake); + } else { + try { + Fake.call(); + } catch (x) { + control = x; + } + fn.call(Fake.prototype); + } + } else { + try { + throw Error(); + } catch (x) { + control = x; + } + fn(); + } + } catch (sample) { + if (sample && control && typeof sample.stack === "string") { + var sampleLines = sample.stack.split("\n"); + var controlLines = control.stack.split("\n"); + var s2 = sampleLines.length - 1; + var c2 = controlLines.length - 1; + while (s2 >= 1 && c2 >= 0 && sampleLines[s2] !== controlLines[c2]) { + c2--; + } + for (; s2 >= 1 && c2 >= 0; s2--, c2--) { + if (sampleLines[s2] !== controlLines[c2]) { + if (s2 !== 1 || c2 !== 1) { + do { + s2--; + c2--; + if (c2 < 0 || sampleLines[s2] !== controlLines[c2]) { + var _frame = "\n" + sampleLines[s2].replace(" at new ", " at "); + if (fn.displayName && _frame.includes("")) { + _frame = _frame.replace("", fn.displayName); + } + { + if (typeof fn === "function") { + componentFrameCache.set(fn, _frame); + } + } + return _frame; + } + } while (s2 >= 1 && c2 >= 0); + } + break; + } + } + } + } finally { + reentry = false; + { + ReactCurrentDispatcher$1.current = previousDispatcher; + reenableLogs(); + } + Error.prepareStackTrace = previousPrepareStackTrace; + } + var name = fn ? fn.displayName || fn.name : ""; + var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ""; + { + if (typeof fn === "function") { + componentFrameCache.set(fn, syntheticFrame); + } + } + return syntheticFrame; + } + function describeFunctionComponentFrame(fn, source, ownerFn) { + { + return describeNativeComponentFrame(fn, false); + } + } + function shouldConstruct(Component2) { + var prototype = Component2.prototype; + return !!(prototype && prototype.isReactComponent); + } + function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { + if (type == null) { + return ""; + } + if (typeof type === "function") { + { + return describeNativeComponentFrame(type, shouldConstruct(type)); + } + } + if (typeof type === "string") { + return describeBuiltInComponentFrame(type); + } + switch (type) { + case REACT_SUSPENSE_TYPE: + return describeBuiltInComponentFrame("Suspense"); + case REACT_SUSPENSE_LIST_TYPE: + return describeBuiltInComponentFrame("SuspenseList"); + } + if (typeof type === "object") { + switch (type.$$typeof) { + case REACT_FORWARD_REF_TYPE: + return describeFunctionComponentFrame(type.render); + case REACT_MEMO_TYPE: + return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); + case REACT_LAZY_TYPE: { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + try { + return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); + } catch (x) { + } + } + } + } + return ""; + } + var loggedTypeFailures = {}; + var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; + function setCurrentlyValidatingElement(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + ReactDebugCurrentFrame$1.setExtraStackFrame(stack); + } else { + ReactDebugCurrentFrame$1.setExtraStackFrame(null); + } + } + } + function checkPropTypes(typeSpecs, values, location, componentName, element) { + { + var has = Function.call.bind(hasOwnProperty); + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error$1 = void 0; + try { + if (typeof typeSpecs[typeSpecName] !== "function") { + var err = Error((componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`."); + err.name = "Invariant Violation"; + throw err; + } + error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); + } catch (ex) { + error$1 = ex; + } + if (error$1 && !(error$1 instanceof Error)) { + setCurrentlyValidatingElement(element); + error("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", componentName || "React class", location, typeSpecName, typeof error$1); + setCurrentlyValidatingElement(null); + } + if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) { + loggedTypeFailures[error$1.message] = true; + setCurrentlyValidatingElement(element); + error("Failed %s type: %s", location, error$1.message); + setCurrentlyValidatingElement(null); + } + } + } + } + } + function setCurrentlyValidatingElement$1(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + setExtraStackFrame(stack); + } else { + setExtraStackFrame(null); + } + } + } + var propTypesMisspellWarningShown; + { + propTypesMisspellWarningShown = false; + } + function getDeclarationErrorAddendum() { + if (ReactCurrentOwner.current) { + var name = getComponentNameFromType(ReactCurrentOwner.current.type); + if (name) { + return "\n\nCheck the render method of `" + name + "`."; + } + } + return ""; + } + function getSourceInfoErrorAddendum(source) { + if (source !== void 0) { + var fileName = source.fileName.replace(/^.*[\\\/]/, ""); + var lineNumber = source.lineNumber; + return "\n\nCheck your code at " + fileName + ":" + lineNumber + "."; + } + return ""; + } + function getSourceInfoErrorAddendumForProps(elementProps) { + if (elementProps !== null && elementProps !== void 0) { + return getSourceInfoErrorAddendum(elementProps.__source); + } + return ""; + } + var ownerHasKeyUseWarning = {}; + function getCurrentComponentErrorInfo(parentType) { + var info = getDeclarationErrorAddendum(); + if (!info) { + var parentName = typeof parentType === "string" ? parentType : parentType.displayName || parentType.name; + if (parentName) { + info = "\n\nCheck the top-level render call using <" + parentName + ">."; + } + } + return info; + } + function validateExplicitKey(element, parentType) { + if (!element._store || element._store.validated || element.key != null) { + return; + } + element._store.validated = true; + var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); + if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { + return; + } + ownerHasKeyUseWarning[currentComponentErrorInfo] = true; + var childOwner = ""; + if (element && element._owner && element._owner !== ReactCurrentOwner.current) { + childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + "."; + } + { + setCurrentlyValidatingElement$1(element); + error('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner); + setCurrentlyValidatingElement$1(null); + } + } + function validateChildKeys(node, parentType) { + if (typeof node !== "object") { + return; + } + if (isArray(node)) { + for (var i2 = 0; i2 < node.length; i2++) { + var child = node[i2]; + if (isValidElement(child)) { + validateExplicitKey(child, parentType); + } + } + } else if (isValidElement(node)) { + if (node._store) { + node._store.validated = true; + } + } else if (node) { + var iteratorFn = getIteratorFn(node); + if (typeof iteratorFn === "function") { + if (iteratorFn !== node.entries) { + var iterator = iteratorFn.call(node); + var step; + while (!(step = iterator.next()).done) { + if (isValidElement(step.value)) { + validateExplicitKey(step.value, parentType); + } + } + } + } + } + } + function validatePropTypes(element) { + { + var type = element.type; + if (type === null || type === void 0 || typeof type === "string") { + return; + } + var propTypes; + if (typeof type === "function") { + propTypes = type.propTypes; + } else if (typeof type === "object" && (type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MEMO_TYPE)) { + propTypes = type.propTypes; + } else { + return; + } + if (propTypes) { + var name = getComponentNameFromType(type); + checkPropTypes(propTypes, element.props, "prop", name, element); + } else if (type.PropTypes !== void 0 && !propTypesMisspellWarningShown) { + propTypesMisspellWarningShown = true; + var _name = getComponentNameFromType(type); + error("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", _name || "Unknown"); + } + if (typeof type.getDefaultProps === "function" && !type.getDefaultProps.isReactClassApproved) { + error("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead."); + } + } + } + function validateFragmentProps(fragment) { + { + var keys = Object.keys(fragment.props); + for (var i2 = 0; i2 < keys.length; i2++) { + var key = keys[i2]; + if (key !== "children" && key !== "key") { + setCurrentlyValidatingElement$1(fragment); + error("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", key); + setCurrentlyValidatingElement$1(null); + break; + } + } + if (fragment.ref !== null) { + setCurrentlyValidatingElement$1(fragment); + error("Invalid attribute `ref` supplied to `React.Fragment`."); + setCurrentlyValidatingElement$1(null); + } + } + } + function createElementWithValidation(type, props, children) { + var validType = isValidElementType(type); + if (!validType) { + var info = ""; + if (type === void 0 || typeof type === "object" && type !== null && Object.keys(type).length === 0) { + info += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."; + } + var sourceInfo = getSourceInfoErrorAddendumForProps(props); + if (sourceInfo) { + info += sourceInfo; + } else { + info += getDeclarationErrorAddendum(); + } + var typeString; + if (type === null) { + typeString = "null"; + } else if (isArray(type)) { + typeString = "array"; + } else if (type !== void 0 && type.$$typeof === REACT_ELEMENT_TYPE) { + typeString = "<" + (getComponentNameFromType(type.type) || "Unknown") + " />"; + info = " Did you accidentally export a JSX literal instead of a component?"; + } else { + typeString = typeof type; + } + { + error("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", typeString, info); + } + } + var element = createElement2.apply(this, arguments); + if (element == null) { + return element; + } + if (validType) { + for (var i2 = 2; i2 < arguments.length; i2++) { + validateChildKeys(arguments[i2], type); + } + } + if (type === REACT_FRAGMENT_TYPE) { + validateFragmentProps(element); + } else { + validatePropTypes(element); + } + return element; + } + var didWarnAboutDeprecatedCreateFactory = false; + function createFactoryWithValidation(type) { + var validatedFactory = createElementWithValidation.bind(null, type); + validatedFactory.type = type; + { + if (!didWarnAboutDeprecatedCreateFactory) { + didWarnAboutDeprecatedCreateFactory = true; + warn("React.createFactory() is deprecated and will be removed in a future major release. Consider using JSX or use React.createElement() directly instead."); + } + Object.defineProperty(validatedFactory, "type", { + enumerable: false, + get: function() { + warn("Factory.type is deprecated. Access the class directly before passing it to createFactory."); + Object.defineProperty(this, "type", { + value: type + }); + return type; + } + }); + } + return validatedFactory; + } + function cloneElementWithValidation(element, props, children) { + var newElement = cloneElement.apply(this, arguments); + for (var i2 = 2; i2 < arguments.length; i2++) { + validateChildKeys(arguments[i2], newElement.type); + } + validatePropTypes(newElement); + return newElement; + } + function startTransition(scope, options) { + var prevTransition = ReactCurrentBatchConfig.transition; + ReactCurrentBatchConfig.transition = {}; + var currentTransition = ReactCurrentBatchConfig.transition; + { + ReactCurrentBatchConfig.transition._updatedFibers = /* @__PURE__ */ new Set(); + } + try { + scope(); + } finally { + ReactCurrentBatchConfig.transition = prevTransition; + { + if (prevTransition === null && currentTransition._updatedFibers) { + var updatedFibersCount = currentTransition._updatedFibers.size; + if (updatedFibersCount > 10) { + warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."); + } + currentTransition._updatedFibers.clear(); + } + } + } + } + var didWarnAboutMessageChannel = false; + var enqueueTaskImpl = null; + function enqueueTask(task) { + if (enqueueTaskImpl === null) { + try { + var requireString = ("require" + Math.random()).slice(0, 7); + var nodeRequire = module2 && module2[requireString]; + enqueueTaskImpl = nodeRequire.call(module2, "timers").setImmediate; + } catch (_err) { + enqueueTaskImpl = function(callback) { + { + if (didWarnAboutMessageChannel === false) { + didWarnAboutMessageChannel = true; + if (typeof MessageChannel === "undefined") { + error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."); + } + } + } + var channel = new MessageChannel(); + channel.port1.onmessage = callback; + channel.port2.postMessage(void 0); + }; + } + } + return enqueueTaskImpl(task); + } + var actScopeDepth = 0; + var didWarnNoAwaitAct = false; + function act(callback) { + { + var prevActScopeDepth = actScopeDepth; + actScopeDepth++; + if (ReactCurrentActQueue.current === null) { + ReactCurrentActQueue.current = []; + } + var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy; + var result; + try { + ReactCurrentActQueue.isBatchingLegacy = true; + result = callback(); + if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) { + var queue = ReactCurrentActQueue.current; + if (queue !== null) { + ReactCurrentActQueue.didScheduleLegacyUpdate = false; + flushActQueue(queue); + } + } + } catch (error2) { + popActScope(prevActScopeDepth); + throw error2; + } finally { + ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy; + } + if (result !== null && typeof result === "object" && typeof result.then === "function") { + var thenableResult = result; + var wasAwaited = false; + var thenable = { + then: function(resolve, reject) { + wasAwaited = true; + thenableResult.then(function(returnValue2) { + popActScope(prevActScopeDepth); + if (actScopeDepth === 0) { + recursivelyFlushAsyncActWork(returnValue2, resolve, reject); + } else { + resolve(returnValue2); + } + }, function(error2) { + popActScope(prevActScopeDepth); + reject(error2); + }); + } + }; + { + if (!didWarnNoAwaitAct && typeof Promise !== "undefined") { + Promise.resolve().then(function() { + }).then(function() { + if (!wasAwaited) { + didWarnNoAwaitAct = true; + error("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"); + } + }); + } + } + return thenable; + } else { + var returnValue = result; + popActScope(prevActScopeDepth); + if (actScopeDepth === 0) { + var _queue = ReactCurrentActQueue.current; + if (_queue !== null) { + flushActQueue(_queue); + ReactCurrentActQueue.current = null; + } + var _thenable = { + then: function(resolve, reject) { + if (ReactCurrentActQueue.current === null) { + ReactCurrentActQueue.current = []; + recursivelyFlushAsyncActWork(returnValue, resolve, reject); + } else { + resolve(returnValue); + } + } + }; + return _thenable; + } else { + var _thenable2 = { + then: function(resolve, reject) { + resolve(returnValue); + } + }; + return _thenable2; + } + } + } + } + function popActScope(prevActScopeDepth) { + { + if (prevActScopeDepth !== actScopeDepth - 1) { + error("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "); + } + actScopeDepth = prevActScopeDepth; + } + } + function recursivelyFlushAsyncActWork(returnValue, resolve, reject) { + { + var queue = ReactCurrentActQueue.current; + if (queue !== null) { + try { + flushActQueue(queue); + enqueueTask(function() { + if (queue.length === 0) { + ReactCurrentActQueue.current = null; + resolve(returnValue); + } else { + recursivelyFlushAsyncActWork(returnValue, resolve, reject); + } + }); + } catch (error2) { + reject(error2); + } + } else { + resolve(returnValue); + } + } + } + var isFlushing = false; + function flushActQueue(queue) { + { + if (!isFlushing) { + isFlushing = true; + var i2 = 0; + try { + for (; i2 < queue.length; i2++) { + var callback = queue[i2]; + do { + callback = callback(true); + } while (callback !== null); + } + queue.length = 0; + } catch (error2) { + queue = queue.slice(i2 + 1); + throw error2; + } finally { + isFlushing = false; + } + } + } + } + var createElement$1 = createElementWithValidation; + var cloneElement$1 = cloneElementWithValidation; + var createFactory = createFactoryWithValidation; + var Children = { + map: mapChildren, + forEach: forEachChildren, + count: countChildren, + toArray, + only: onlyChild + }; + exports.Children = Children; + exports.Component = Component; + exports.Fragment = REACT_FRAGMENT_TYPE; + exports.Profiler = REACT_PROFILER_TYPE; + exports.PureComponent = PureComponent; + exports.StrictMode = REACT_STRICT_MODE_TYPE; + exports.Suspense = REACT_SUSPENSE_TYPE; + exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals; + exports.cloneElement = cloneElement$1; + exports.createContext = createContext4; + exports.createElement = createElement$1; + exports.createFactory = createFactory; + exports.createRef = createRef; + exports.forwardRef = forwardRef; + exports.isValidElement = isValidElement; + exports.lazy = lazy; + exports.memo = memo; + exports.startTransition = startTransition; + exports.unstable_act = act; + exports.useCallback = useCallback; + exports.useContext = useContext4; + exports.useDebugValue = useDebugValue; + exports.useDeferredValue = useDeferredValue; + exports.useEffect = useEffect2; + exports.useId = useId; + exports.useImperativeHandle = useImperativeHandle; + exports.useInsertionEffect = useInsertionEffect; + exports.useLayoutEffect = useLayoutEffect; + exports.useMemo = useMemo; + exports.useReducer = useReducer; + exports.useRef = useRef; + exports.useState = useState2; + exports.useSyncExternalStore = useSyncExternalStore; + exports.useTransition = useTransition; + exports.version = ReactVersion; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); + } + })(); + } + } +}); + +// node_modules/react/index.js +var require_react = __commonJS({ + "node_modules/react/index.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_react_development(); + } + } +}); + +// node_modules/scheduler/cjs/scheduler.development.js +var require_scheduler_development = __commonJS({ + "node_modules/scheduler/cjs/scheduler.development.js"(exports) { + "use strict"; + if (true) { + (function() { + "use strict"; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); + } + var enableSchedulerDebugging = false; + var enableProfiling = false; + var frameYieldMs = 5; + function push(heap, node) { + var index = heap.length; + heap.push(node); + siftUp(heap, node, index); + } + function peek(heap) { + return heap.length === 0 ? null : heap[0]; + } + function pop(heap) { + if (heap.length === 0) { + return null; + } + var first = heap[0]; + var last = heap.pop(); + if (last !== first) { + heap[0] = last; + siftDown(heap, last, 0); + } + return first; + } + function siftUp(heap, node, i2) { + var index = i2; + while (index > 0) { + var parentIndex = index - 1 >>> 1; + var parent = heap[parentIndex]; + if (compare(parent, node) > 0) { + heap[parentIndex] = node; + heap[index] = parent; + index = parentIndex; + } else { + return; + } + } + } + function siftDown(heap, node, i2) { + var index = i2; + var length = heap.length; + var halfLength = length >>> 1; + while (index < halfLength) { + var leftIndex = (index + 1) * 2 - 1; + var left = heap[leftIndex]; + var rightIndex = leftIndex + 1; + var right = heap[rightIndex]; + if (compare(left, node) < 0) { + if (rightIndex < length && compare(right, left) < 0) { + heap[index] = right; + heap[rightIndex] = node; + index = rightIndex; + } else { + heap[index] = left; + heap[leftIndex] = node; + index = leftIndex; + } + } else if (rightIndex < length && compare(right, node) < 0) { + heap[index] = right; + heap[rightIndex] = node; + index = rightIndex; + } else { + return; + } + } + } + function compare(a2, b2) { + var diff = a2.sortIndex - b2.sortIndex; + return diff !== 0 ? diff : a2.id - b2.id; + } + var ImmediatePriority = 1; + var UserBlockingPriority = 2; + var NormalPriority = 3; + var LowPriority = 4; + var IdlePriority = 5; + function markTaskErrored(task, ms) { + } + var hasPerformanceNow = typeof performance === "object" && typeof performance.now === "function"; + if (hasPerformanceNow) { + var localPerformance = performance; + exports.unstable_now = function() { + return localPerformance.now(); + }; + } else { + var localDate = Date; + var initialTime = localDate.now(); + exports.unstable_now = function() { + return localDate.now() - initialTime; + }; + } + var maxSigned31BitInt = 1073741823; + var IMMEDIATE_PRIORITY_TIMEOUT = -1; + var USER_BLOCKING_PRIORITY_TIMEOUT = 250; + var NORMAL_PRIORITY_TIMEOUT = 5e3; + var LOW_PRIORITY_TIMEOUT = 1e4; + var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; + var taskQueue = []; + var timerQueue = []; + var taskIdCounter = 1; + var currentTask = null; + var currentPriorityLevel = NormalPriority; + var isPerformingWork = false; + var isHostCallbackScheduled = false; + var isHostTimeoutScheduled = false; + var localSetTimeout = typeof setTimeout === "function" ? setTimeout : null; + var localClearTimeout = typeof clearTimeout === "function" ? clearTimeout : null; + var localSetImmediate = typeof setImmediate !== "undefined" ? setImmediate : null; + var isInputPending = typeof navigator !== "undefined" && navigator.scheduling !== void 0 && navigator.scheduling.isInputPending !== void 0 ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null; + function advanceTimers(currentTime) { + var timer = peek(timerQueue); + while (timer !== null) { + if (timer.callback === null) { + pop(timerQueue); + } else if (timer.startTime <= currentTime) { + pop(timerQueue); + timer.sortIndex = timer.expirationTime; + push(taskQueue, timer); + } else { + return; + } + timer = peek(timerQueue); + } + } + function handleTimeout(currentTime) { + isHostTimeoutScheduled = false; + advanceTimers(currentTime); + if (!isHostCallbackScheduled) { + if (peek(taskQueue) !== null) { + isHostCallbackScheduled = true; + requestHostCallback(flushWork); + } else { + var firstTimer = peek(timerQueue); + if (firstTimer !== null) { + requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); + } + } + } + } + function flushWork(hasTimeRemaining, initialTime2) { + isHostCallbackScheduled = false; + if (isHostTimeoutScheduled) { + isHostTimeoutScheduled = false; + cancelHostTimeout(); + } + isPerformingWork = true; + var previousPriorityLevel = currentPriorityLevel; + try { + if (enableProfiling) { + try { + return workLoop(hasTimeRemaining, initialTime2); + } catch (error) { + if (currentTask !== null) { + var currentTime = exports.unstable_now(); + markTaskErrored(currentTask, currentTime); + currentTask.isQueued = false; + } + throw error; + } + } else { + return workLoop(hasTimeRemaining, initialTime2); + } + } finally { + currentTask = null; + currentPriorityLevel = previousPriorityLevel; + isPerformingWork = false; + } + } + function workLoop(hasTimeRemaining, initialTime2) { + var currentTime = initialTime2; + advanceTimers(currentTime); + currentTask = peek(taskQueue); + while (currentTask !== null && !enableSchedulerDebugging) { + if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) { + break; + } + var callback = currentTask.callback; + if (typeof callback === "function") { + currentTask.callback = null; + currentPriorityLevel = currentTask.priorityLevel; + var didUserCallbackTimeout = currentTask.expirationTime <= currentTime; + var continuationCallback = callback(didUserCallbackTimeout); + currentTime = exports.unstable_now(); + if (typeof continuationCallback === "function") { + currentTask.callback = continuationCallback; + } else { + if (currentTask === peek(taskQueue)) { + pop(taskQueue); + } + } + advanceTimers(currentTime); + } else { + pop(taskQueue); + } + currentTask = peek(taskQueue); + } + if (currentTask !== null) { + return true; + } else { + var firstTimer = peek(timerQueue); + if (firstTimer !== null) { + requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); + } + return false; + } + } + function unstable_runWithPriority(priorityLevel, eventHandler) { + switch (priorityLevel) { + case ImmediatePriority: + case UserBlockingPriority: + case NormalPriority: + case LowPriority: + case IdlePriority: + break; + default: + priorityLevel = NormalPriority; + } + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = priorityLevel; + try { + return eventHandler(); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + } + function unstable_next(eventHandler) { + var priorityLevel; + switch (currentPriorityLevel) { + case ImmediatePriority: + case UserBlockingPriority: + case NormalPriority: + priorityLevel = NormalPriority; + break; + default: + priorityLevel = currentPriorityLevel; + break; + } + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = priorityLevel; + try { + return eventHandler(); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + } + function unstable_wrapCallback(callback) { + var parentPriorityLevel = currentPriorityLevel; + return function() { + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = parentPriorityLevel; + try { + return callback.apply(this, arguments); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + }; + } + function unstable_scheduleCallback(priorityLevel, callback, options) { + var currentTime = exports.unstable_now(); + var startTime2; + if (typeof options === "object" && options !== null) { + var delay = options.delay; + if (typeof delay === "number" && delay > 0) { + startTime2 = currentTime + delay; + } else { + startTime2 = currentTime; + } + } else { + startTime2 = currentTime; + } + var timeout; + switch (priorityLevel) { + case ImmediatePriority: + timeout = IMMEDIATE_PRIORITY_TIMEOUT; + break; + case UserBlockingPriority: + timeout = USER_BLOCKING_PRIORITY_TIMEOUT; + break; + case IdlePriority: + timeout = IDLE_PRIORITY_TIMEOUT; + break; + case LowPriority: + timeout = LOW_PRIORITY_TIMEOUT; + break; + case NormalPriority: + default: + timeout = NORMAL_PRIORITY_TIMEOUT; + break; + } + var expirationTime = startTime2 + timeout; + var newTask = { + id: taskIdCounter++, + callback, + priorityLevel, + startTime: startTime2, + expirationTime, + sortIndex: -1 + }; + if (startTime2 > currentTime) { + newTask.sortIndex = startTime2; + push(timerQueue, newTask); + if (peek(taskQueue) === null && newTask === peek(timerQueue)) { + if (isHostTimeoutScheduled) { + cancelHostTimeout(); + } else { + isHostTimeoutScheduled = true; + } + requestHostTimeout(handleTimeout, startTime2 - currentTime); + } + } else { + newTask.sortIndex = expirationTime; + push(taskQueue, newTask); + if (!isHostCallbackScheduled && !isPerformingWork) { + isHostCallbackScheduled = true; + requestHostCallback(flushWork); + } + } + return newTask; + } + function unstable_pauseExecution() { + } + function unstable_continueExecution() { + if (!isHostCallbackScheduled && !isPerformingWork) { + isHostCallbackScheduled = true; + requestHostCallback(flushWork); + } + } + function unstable_getFirstCallbackNode() { + return peek(taskQueue); + } + function unstable_cancelCallback(task) { + task.callback = null; + } + function unstable_getCurrentPriorityLevel() { + return currentPriorityLevel; + } + var isMessageLoopRunning = false; + var scheduledHostCallback = null; + var taskTimeoutID = -1; + var frameInterval = frameYieldMs; + var startTime = -1; + function shouldYieldToHost() { + var timeElapsed = exports.unstable_now() - startTime; + if (timeElapsed < frameInterval) { + return false; + } + return true; + } + function requestPaint() { + } + function forceFrameRate(fps) { + if (fps < 0 || fps > 125) { + console["error"]("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"); + return; + } + if (fps > 0) { + frameInterval = Math.floor(1e3 / fps); + } else { + frameInterval = frameYieldMs; + } + } + var performWorkUntilDeadline = function() { + if (scheduledHostCallback !== null) { + var currentTime = exports.unstable_now(); + startTime = currentTime; + var hasTimeRemaining = true; + var hasMoreWork = true; + try { + hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime); + } finally { + if (hasMoreWork) { + schedulePerformWorkUntilDeadline(); + } else { + isMessageLoopRunning = false; + scheduledHostCallback = null; + } + } + } else { + isMessageLoopRunning = false; + } + }; + var schedulePerformWorkUntilDeadline; + if (typeof localSetImmediate === "function") { + schedulePerformWorkUntilDeadline = function() { + localSetImmediate(performWorkUntilDeadline); + }; + } else if (typeof MessageChannel !== "undefined") { + var channel = new MessageChannel(); + var port = channel.port2; + channel.port1.onmessage = performWorkUntilDeadline; + schedulePerformWorkUntilDeadline = function() { + port.postMessage(null); + }; + } else { + schedulePerformWorkUntilDeadline = function() { + localSetTimeout(performWorkUntilDeadline, 0); + }; + } + function requestHostCallback(callback) { + scheduledHostCallback = callback; + if (!isMessageLoopRunning) { + isMessageLoopRunning = true; + schedulePerformWorkUntilDeadline(); + } + } + function requestHostTimeout(callback, ms) { + taskTimeoutID = localSetTimeout(function() { + callback(exports.unstable_now()); + }, ms); + } + function cancelHostTimeout() { + localClearTimeout(taskTimeoutID); + taskTimeoutID = -1; + } + var unstable_requestPaint = requestPaint; + var unstable_Profiling = null; + exports.unstable_IdlePriority = IdlePriority; + exports.unstable_ImmediatePriority = ImmediatePriority; + exports.unstable_LowPriority = LowPriority; + exports.unstable_NormalPriority = NormalPriority; + exports.unstable_Profiling = unstable_Profiling; + exports.unstable_UserBlockingPriority = UserBlockingPriority; + exports.unstable_cancelCallback = unstable_cancelCallback; + exports.unstable_continueExecution = unstable_continueExecution; + exports.unstable_forceFrameRate = forceFrameRate; + exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; + exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; + exports.unstable_next = unstable_next; + exports.unstable_pauseExecution = unstable_pauseExecution; + exports.unstable_requestPaint = unstable_requestPaint; + exports.unstable_runWithPriority = unstable_runWithPriority; + exports.unstable_scheduleCallback = unstable_scheduleCallback; + exports.unstable_shouldYield = shouldYieldToHost; + exports.unstable_wrapCallback = unstable_wrapCallback; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error()); + } + })(); + } + } +}); + +// node_modules/scheduler/index.js +var require_scheduler = __commonJS({ + "node_modules/scheduler/index.js"(exports, module2) { + "use strict"; + if (false) { + module2.exports = null; + } else { + module2.exports = require_scheduler_development(); + } + } +}); + +// node_modules/react-dom/cjs/react-dom.development.js +var require_react_dom_development = __commonJS({ + "node_modules/react-dom/cjs/react-dom.development.js"(exports) { + "use strict"; + if (true) { + (function() { + "use strict"; + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") { + __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); + } + var React9 = require_react(); + var Scheduler = require_scheduler(); + var ReactSharedInternals = React9.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var suppressWarning = false; + function setSuppressWarning(newSuppressWarning) { + { + suppressWarning = newSuppressWarning; + } + } + function warn(format) { + { + if (!suppressWarning) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + printWarning("warn", format, args); + } + } + } + function error(format) { + { + if (!suppressWarning) { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + printWarning("error", format, args); + } + } + } + function printWarning(level, format, args) { + { + var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame2.getStackAddendum(); + if (stack !== "") { + format += "%s"; + args = args.concat([stack]); + } + var argsWithFormat = args.map(function(item) { + return String(item); + }); + argsWithFormat.unshift("Warning: " + format); + Function.prototype.apply.call(console[level], console, argsWithFormat); + } + } + var FunctionComponent = 0; + var ClassComponent = 1; + var IndeterminateComponent = 2; + var HostRoot = 3; + var HostPortal = 4; + var HostComponent = 5; + var HostText = 6; + var Fragment = 7; + var Mode = 8; + var ContextConsumer = 9; + var ContextProvider = 10; + var ForwardRef = 11; + var Profiler = 12; + var SuspenseComponent = 13; + var MemoComponent = 14; + var SimpleMemoComponent = 15; + var LazyComponent = 16; + var IncompleteClassComponent = 17; + var DehydratedFragment = 18; + var SuspenseListComponent = 19; + var ScopeComponent = 21; + var OffscreenComponent = 22; + var LegacyHiddenComponent = 23; + var CacheComponent = 24; + var TracingMarkerComponent = 25; + var enableClientRenderFallbackOnTextMismatch = true; + var enableNewReconciler = false; + var enableLazyContextPropagation = false; + var enableLegacyHidden = false; + var enableSuspenseAvoidThisFallback = false; + var disableCommentsAsDOMContainers = true; + var enableCustomElementPropertySupport = false; + var warnAboutStringRefs = false; + var enableSchedulingProfiler = true; + var enableProfilerTimer = true; + var enableProfilerCommitHooks = true; + var allNativeEvents = /* @__PURE__ */ new Set(); + var registrationNameDependencies = {}; + var possibleRegistrationNames = {}; + function registerTwoPhaseEvent(registrationName, dependencies) { + registerDirectEvent(registrationName, dependencies); + registerDirectEvent(registrationName + "Capture", dependencies); + } + function registerDirectEvent(registrationName, dependencies) { + { + if (registrationNameDependencies[registrationName]) { + error("EventRegistry: More than one plugin attempted to publish the same registration name, `%s`.", registrationName); + } + } + registrationNameDependencies[registrationName] = dependencies; + { + var lowerCasedName = registrationName.toLowerCase(); + possibleRegistrationNames[lowerCasedName] = registrationName; + if (registrationName === "onDoubleClick") { + possibleRegistrationNames.ondblclick = registrationName; + } + } + for (var i2 = 0; i2 < dependencies.length; i2++) { + allNativeEvents.add(dependencies[i2]); + } + } + var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); + var hasOwnProperty = Object.prototype.hasOwnProperty; + function typeName(value) { + { + var hasToStringTag = typeof Symbol === "function" && Symbol.toStringTag; + var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object"; + return type; + } + } + function willCoercionThrow(value) { + { + try { + testStringCoercion(value); + return false; + } catch (e2) { + return true; + } + } + } + function testStringCoercion(value) { + return "" + value; + } + function checkAttributeStringCoercion(value, attributeName) { + { + if (willCoercionThrow(value)) { + error("The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before before using it here.", attributeName, typeName(value)); + return testStringCoercion(value); + } + } + } + function checkKeyStringCoercion(value) { + { + if (willCoercionThrow(value)) { + error("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", typeName(value)); + return testStringCoercion(value); + } + } + } + function checkPropStringCoercion(value, propName) { + { + if (willCoercionThrow(value)) { + error("The provided `%s` prop is an unsupported type %s. This value must be coerced to a string before before using it here.", propName, typeName(value)); + return testStringCoercion(value); + } + } + } + function checkCSSPropertyStringCoercion(value, propName) { + { + if (willCoercionThrow(value)) { + error("The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before before using it here.", propName, typeName(value)); + return testStringCoercion(value); + } + } + } + function checkHtmlStringCoercion(value) { + { + if (willCoercionThrow(value)) { + error("The provided HTML markup uses a value of unsupported type %s. This value must be coerced to a string before before using it here.", typeName(value)); + return testStringCoercion(value); + } + } + } + function checkFormFieldValueStringCoercion(value) { + { + if (willCoercionThrow(value)) { + error("Form field values (value, checked, defaultValue, or defaultChecked props) must be strings, not %s. This value must be coerced to a string before before using it here.", typeName(value)); + return testStringCoercion(value); + } + } + } + var RESERVED = 0; + var STRING = 1; + var BOOLEANISH_STRING = 2; + var BOOLEAN = 3; + var OVERLOADED_BOOLEAN = 4; + var NUMERIC = 5; + var POSITIVE_NUMERIC = 6; + var ATTRIBUTE_NAME_START_CHAR = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD"; + var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040"; + var VALID_ATTRIBUTE_NAME_REGEX = new RegExp("^[" + ATTRIBUTE_NAME_START_CHAR + "][" + ATTRIBUTE_NAME_CHAR + "]*$"); + var illegalAttributeNameCache = {}; + var validatedAttributeNameCache = {}; + function isAttributeNameSafe(attributeName) { + if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) { + return true; + } + if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) { + return false; + } + if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) { + validatedAttributeNameCache[attributeName] = true; + return true; + } + illegalAttributeNameCache[attributeName] = true; + { + error("Invalid attribute name: `%s`", attributeName); + } + return false; + } + function shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) { + if (propertyInfo !== null) { + return propertyInfo.type === RESERVED; + } + if (isCustomComponentTag) { + return false; + } + if (name.length > 2 && (name[0] === "o" || name[0] === "O") && (name[1] === "n" || name[1] === "N")) { + return true; + } + return false; + } + function shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) { + if (propertyInfo !== null && propertyInfo.type === RESERVED) { + return false; + } + switch (typeof value) { + case "function": + case "symbol": + return true; + case "boolean": { + if (isCustomComponentTag) { + return false; + } + if (propertyInfo !== null) { + return !propertyInfo.acceptsBooleans; + } else { + var prefix2 = name.toLowerCase().slice(0, 5); + return prefix2 !== "data-" && prefix2 !== "aria-"; + } + } + default: + return false; + } + } + function shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) { + if (value === null || typeof value === "undefined") { + return true; + } + if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) { + return true; + } + if (isCustomComponentTag) { + return false; + } + if (propertyInfo !== null) { + switch (propertyInfo.type) { + case BOOLEAN: + return !value; + case OVERLOADED_BOOLEAN: + return value === false; + case NUMERIC: + return isNaN(value); + case POSITIVE_NUMERIC: + return isNaN(value) || value < 1; + } + } + return false; + } + function getPropertyInfo(name) { + return properties.hasOwnProperty(name) ? properties[name] : null; + } + function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL2, removeEmptyString) { + this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN; + this.attributeName = attributeName; + this.attributeNamespace = attributeNamespace; + this.mustUseProperty = mustUseProperty; + this.propertyName = name; + this.type = type; + this.sanitizeURL = sanitizeURL2; + this.removeEmptyString = removeEmptyString; + } + var properties = {}; + var reservedProps = [ + "children", + "dangerouslySetInnerHTML", + "defaultValue", + "defaultChecked", + "innerHTML", + "suppressContentEditableWarning", + "suppressHydrationWarning", + "style" + ]; + reservedProps.forEach(function(name) { + properties[name] = new PropertyInfoRecord(name, RESERVED, false, name, null, false, false); + }); + [["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function(_ref) { + var name = _ref[0], attributeName = _ref[1]; + properties[name] = new PropertyInfoRecord(name, STRING, false, attributeName, null, false, false); + }); + ["contentEditable", "draggable", "spellCheck", "value"].forEach(function(name) { + properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, name.toLowerCase(), null, false, false); + }); + ["autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha"].forEach(function(name) { + properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, name, null, false, false); + }); + [ + "allowFullScreen", + "async", + "autoFocus", + "autoPlay", + "controls", + "default", + "defer", + "disabled", + "disablePictureInPicture", + "disableRemotePlayback", + "formNoValidate", + "hidden", + "loop", + "noModule", + "noValidate", + "open", + "playsInline", + "readOnly", + "required", + "reversed", + "scoped", + "seamless", + "itemScope" + ].forEach(function(name) { + properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, name.toLowerCase(), null, false, false); + }); + [ + "checked", + "multiple", + "muted", + "selected" + ].forEach(function(name) { + properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, name, null, false, false); + }); + [ + "capture", + "download" + ].forEach(function(name) { + properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, name, null, false, false); + }); + [ + "cols", + "rows", + "size", + "span" + ].forEach(function(name) { + properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, name, null, false, false); + }); + ["rowSpan", "start"].forEach(function(name) { + properties[name] = new PropertyInfoRecord(name, NUMERIC, false, name.toLowerCase(), null, false, false); + }); + var CAMELIZE = /[\-\:]([a-z])/g; + var capitalize = function(token) { + return token[1].toUpperCase(); + }; + [ + "accent-height", + "alignment-baseline", + "arabic-form", + "baseline-shift", + "cap-height", + "clip-path", + "clip-rule", + "color-interpolation", + "color-interpolation-filters", + "color-profile", + "color-rendering", + "dominant-baseline", + "enable-background", + "fill-opacity", + "fill-rule", + "flood-color", + "flood-opacity", + "font-family", + "font-size", + "font-size-adjust", + "font-stretch", + "font-style", + "font-variant", + "font-weight", + "glyph-name", + "glyph-orientation-horizontal", + "glyph-orientation-vertical", + "horiz-adv-x", + "horiz-origin-x", + "image-rendering", + "letter-spacing", + "lighting-color", + "marker-end", + "marker-mid", + "marker-start", + "overline-position", + "overline-thickness", + "paint-order", + "panose-1", + "pointer-events", + "rendering-intent", + "shape-rendering", + "stop-color", + "stop-opacity", + "strikethrough-position", + "strikethrough-thickness", + "stroke-dasharray", + "stroke-dashoffset", + "stroke-linecap", + "stroke-linejoin", + "stroke-miterlimit", + "stroke-opacity", + "stroke-width", + "text-anchor", + "text-decoration", + "text-rendering", + "underline-position", + "underline-thickness", + "unicode-bidi", + "unicode-range", + "units-per-em", + "v-alphabetic", + "v-hanging", + "v-ideographic", + "v-mathematical", + "vector-effect", + "vert-adv-y", + "vert-origin-x", + "vert-origin-y", + "word-spacing", + "writing-mode", + "xmlns:xlink", + "x-height" + ].forEach(function(attributeName) { + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord(name, STRING, false, attributeName, null, false, false); + }); + [ + "xlink:actuate", + "xlink:arcrole", + "xlink:role", + "xlink:show", + "xlink:title", + "xlink:type" + ].forEach(function(attributeName) { + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord(name, STRING, false, attributeName, "http://www.w3.org/1999/xlink", false, false); + }); + [ + "xml:base", + "xml:lang", + "xml:space" + ].forEach(function(attributeName) { + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord(name, STRING, false, attributeName, "http://www.w3.org/XML/1998/namespace", false, false); + }); + ["tabIndex", "crossOrigin"].forEach(function(attributeName) { + properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, attributeName.toLowerCase(), null, false, false); + }); + var xlinkHref = "xlinkHref"; + properties[xlinkHref] = new PropertyInfoRecord("xlinkHref", STRING, false, "xlink:href", "http://www.w3.org/1999/xlink", true, false); + ["src", "href", "action", "formAction"].forEach(function(attributeName) { + properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, attributeName.toLowerCase(), null, true, true); + }); + var isJavaScriptProtocol = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i; + var didWarn = false; + function sanitizeURL(url) { + { + if (!didWarn && isJavaScriptProtocol.test(url)) { + didWarn = true; + error("A future version of React will block javascript: URLs as a security precaution. Use event handlers instead if you can. If you need to generate unsafe HTML try using dangerouslySetInnerHTML instead. React was passed %s.", JSON.stringify(url)); + } + } + } + function getValueForProperty(node, name, expected, propertyInfo) { + { + if (propertyInfo.mustUseProperty) { + var propertyName = propertyInfo.propertyName; + return node[propertyName]; + } else { + { + checkAttributeStringCoercion(expected, name); + } + if (propertyInfo.sanitizeURL) { + sanitizeURL("" + expected); + } + var attributeName = propertyInfo.attributeName; + var stringValue = null; + if (propertyInfo.type === OVERLOADED_BOOLEAN) { + if (node.hasAttribute(attributeName)) { + var value = node.getAttribute(attributeName); + if (value === "") { + return true; + } + if (shouldRemoveAttribute(name, expected, propertyInfo, false)) { + return value; + } + if (value === "" + expected) { + return expected; + } + return value; + } + } else if (node.hasAttribute(attributeName)) { + if (shouldRemoveAttribute(name, expected, propertyInfo, false)) { + return node.getAttribute(attributeName); + } + if (propertyInfo.type === BOOLEAN) { + return expected; + } + stringValue = node.getAttribute(attributeName); + } + if (shouldRemoveAttribute(name, expected, propertyInfo, false)) { + return stringValue === null ? expected : stringValue; + } else if (stringValue === "" + expected) { + return expected; + } else { + return stringValue; + } + } + } + } + function getValueForAttribute(node, name, expected, isCustomComponentTag) { + { + if (!isAttributeNameSafe(name)) { + return; + } + if (!node.hasAttribute(name)) { + return expected === void 0 ? void 0 : null; + } + var value = node.getAttribute(name); + { + checkAttributeStringCoercion(expected, name); + } + if (value === "" + expected) { + return expected; + } + return value; + } + } + function setValueForProperty(node, name, value, isCustomComponentTag) { + var propertyInfo = getPropertyInfo(name); + if (shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag)) { + return; + } + if (shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag)) { + value = null; + } + if (isCustomComponentTag || propertyInfo === null) { + if (isAttributeNameSafe(name)) { + var _attributeName = name; + if (value === null) { + node.removeAttribute(_attributeName); + } else { + { + checkAttributeStringCoercion(value, name); + } + node.setAttribute(_attributeName, "" + value); + } + } + return; + } + var mustUseProperty = propertyInfo.mustUseProperty; + if (mustUseProperty) { + var propertyName = propertyInfo.propertyName; + if (value === null) { + var type = propertyInfo.type; + node[propertyName] = type === BOOLEAN ? false : ""; + } else { + node[propertyName] = value; + } + return; + } + var attributeName = propertyInfo.attributeName, attributeNamespace = propertyInfo.attributeNamespace; + if (value === null) { + node.removeAttribute(attributeName); + } else { + var _type = propertyInfo.type; + var attributeValue; + if (_type === BOOLEAN || _type === OVERLOADED_BOOLEAN && value === true) { + attributeValue = ""; + } else { + { + { + checkAttributeStringCoercion(value, attributeName); + } + attributeValue = "" + value; + } + if (propertyInfo.sanitizeURL) { + sanitizeURL(attributeValue.toString()); + } + } + if (attributeNamespace) { + node.setAttributeNS(attributeNamespace, attributeName, attributeValue); + } else { + node.setAttribute(attributeName, attributeValue); + } + } + } + var REACT_ELEMENT_TYPE = Symbol.for("react.element"); + var REACT_PORTAL_TYPE = Symbol.for("react.portal"); + var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"); + var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"); + var REACT_PROFILER_TYPE = Symbol.for("react.profiler"); + var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); + var REACT_CONTEXT_TYPE = Symbol.for("react.context"); + var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"); + var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"); + var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"); + var REACT_MEMO_TYPE = Symbol.for("react.memo"); + var REACT_LAZY_TYPE = Symbol.for("react.lazy"); + var REACT_SCOPE_TYPE = Symbol.for("react.scope"); + var REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for("react.debug_trace_mode"); + var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"); + var REACT_LEGACY_HIDDEN_TYPE = Symbol.for("react.legacy_hidden"); + var REACT_CACHE_TYPE = Symbol.for("react.cache"); + var REACT_TRACING_MARKER_TYPE = Symbol.for("react.tracing_marker"); + var MAYBE_ITERATOR_SYMBOL = Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = "@@iterator"; + function getIteratorFn(maybeIterable) { + if (maybeIterable === null || typeof maybeIterable !== "object") { + return null; + } + var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; + if (typeof maybeIterator === "function") { + return maybeIterator; + } + return null; + } + var assign = Object.assign; + var disabledDepth = 0; + var prevLog; + var prevInfo; + var prevWarn; + var prevError; + var prevGroup; + var prevGroupCollapsed; + var prevGroupEnd; + function disabledLog() { + } + disabledLog.__reactDisabledLog = true; + function disableLogs() { + { + if (disabledDepth === 0) { + prevLog = console.log; + prevInfo = console.info; + prevWarn = console.warn; + prevError = console.error; + prevGroup = console.group; + prevGroupCollapsed = console.groupCollapsed; + prevGroupEnd = console.groupEnd; + var props = { + configurable: true, + enumerable: true, + value: disabledLog, + writable: true + }; + Object.defineProperties(console, { + info: props, + log: props, + warn: props, + error: props, + group: props, + groupCollapsed: props, + groupEnd: props + }); + } + disabledDepth++; + } + } + function reenableLogs() { + { + disabledDepth--; + if (disabledDepth === 0) { + var props = { + configurable: true, + enumerable: true, + writable: true + }; + Object.defineProperties(console, { + log: assign({}, props, { + value: prevLog + }), + info: assign({}, props, { + value: prevInfo + }), + warn: assign({}, props, { + value: prevWarn + }), + error: assign({}, props, { + value: prevError + }), + group: assign({}, props, { + value: prevGroup + }), + groupCollapsed: assign({}, props, { + value: prevGroupCollapsed + }), + groupEnd: assign({}, props, { + value: prevGroupEnd + }) + }); + } + if (disabledDepth < 0) { + error("disabledDepth fell below zero. This is a bug in React. Please file an issue."); + } + } + } + var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher; + var prefix; + function describeBuiltInComponentFrame(name, source, ownerFn) { + { + if (prefix === void 0) { + try { + throw Error(); + } catch (x) { + var match = x.stack.trim().match(/\n( *(at )?)/); + prefix = match && match[1] || ""; + } + } + return "\n" + prefix + name; + } + } + var reentry = false; + var componentFrameCache; + { + var PossiblyWeakMap = typeof WeakMap === "function" ? WeakMap : Map; + componentFrameCache = new PossiblyWeakMap(); + } + function describeNativeComponentFrame(fn, construct) { + if (!fn || reentry) { + return ""; + } + { + var frame = componentFrameCache.get(fn); + if (frame !== void 0) { + return frame; + } + } + var control; + reentry = true; + var previousPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = void 0; + var previousDispatcher; + { + previousDispatcher = ReactCurrentDispatcher.current; + ReactCurrentDispatcher.current = null; + disableLogs(); + } + try { + if (construct) { + var Fake = function() { + throw Error(); + }; + Object.defineProperty(Fake.prototype, "props", { + set: function() { + throw Error(); + } + }); + if (typeof Reflect === "object" && Reflect.construct) { + try { + Reflect.construct(Fake, []); + } catch (x) { + control = x; + } + Reflect.construct(fn, [], Fake); + } else { + try { + Fake.call(); + } catch (x) { + control = x; + } + fn.call(Fake.prototype); + } + } else { + try { + throw Error(); + } catch (x) { + control = x; + } + fn(); + } + } catch (sample) { + if (sample && control && typeof sample.stack === "string") { + var sampleLines = sample.stack.split("\n"); + var controlLines = control.stack.split("\n"); + var s2 = sampleLines.length - 1; + var c2 = controlLines.length - 1; + while (s2 >= 1 && c2 >= 0 && sampleLines[s2] !== controlLines[c2]) { + c2--; + } + for (; s2 >= 1 && c2 >= 0; s2--, c2--) { + if (sampleLines[s2] !== controlLines[c2]) { + if (s2 !== 1 || c2 !== 1) { + do { + s2--; + c2--; + if (c2 < 0 || sampleLines[s2] !== controlLines[c2]) { + var _frame = "\n" + sampleLines[s2].replace(" at new ", " at "); + if (fn.displayName && _frame.includes("")) { + _frame = _frame.replace("", fn.displayName); + } + { + if (typeof fn === "function") { + componentFrameCache.set(fn, _frame); + } + } + return _frame; + } + } while (s2 >= 1 && c2 >= 0); + } + break; + } + } + } + } finally { + reentry = false; + { + ReactCurrentDispatcher.current = previousDispatcher; + reenableLogs(); + } + Error.prepareStackTrace = previousPrepareStackTrace; + } + var name = fn ? fn.displayName || fn.name : ""; + var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ""; + { + if (typeof fn === "function") { + componentFrameCache.set(fn, syntheticFrame); + } + } + return syntheticFrame; + } + function describeClassComponentFrame(ctor, source, ownerFn) { + { + return describeNativeComponentFrame(ctor, true); + } + } + function describeFunctionComponentFrame(fn, source, ownerFn) { + { + return describeNativeComponentFrame(fn, false); + } + } + function shouldConstruct(Component) { + var prototype = Component.prototype; + return !!(prototype && prototype.isReactComponent); + } + function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { + if (type == null) { + return ""; + } + if (typeof type === "function") { + { + return describeNativeComponentFrame(type, shouldConstruct(type)); + } + } + if (typeof type === "string") { + return describeBuiltInComponentFrame(type); + } + switch (type) { + case REACT_SUSPENSE_TYPE: + return describeBuiltInComponentFrame("Suspense"); + case REACT_SUSPENSE_LIST_TYPE: + return describeBuiltInComponentFrame("SuspenseList"); + } + if (typeof type === "object") { + switch (type.$$typeof) { + case REACT_FORWARD_REF_TYPE: + return describeFunctionComponentFrame(type.render); + case REACT_MEMO_TYPE: + return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); + case REACT_LAZY_TYPE: { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + try { + return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); + } catch (x) { + } + } + } + } + return ""; + } + function describeFiber(fiber) { + var owner = fiber._debugOwner ? fiber._debugOwner.type : null; + var source = fiber._debugSource; + switch (fiber.tag) { + case HostComponent: + return describeBuiltInComponentFrame(fiber.type); + case LazyComponent: + return describeBuiltInComponentFrame("Lazy"); + case SuspenseComponent: + return describeBuiltInComponentFrame("Suspense"); + case SuspenseListComponent: + return describeBuiltInComponentFrame("SuspenseList"); + case FunctionComponent: + case IndeterminateComponent: + case SimpleMemoComponent: + return describeFunctionComponentFrame(fiber.type); + case ForwardRef: + return describeFunctionComponentFrame(fiber.type.render); + case ClassComponent: + return describeClassComponentFrame(fiber.type); + default: + return ""; + } + } + function getStackByFiberInDevAndProd(workInProgress2) { + try { + var info = ""; + var node = workInProgress2; + do { + info += describeFiber(node); + node = node.return; + } while (node); + return info; + } catch (x) { + return "\nError generating stack: " + x.message + "\n" + x.stack; + } + } + function getWrappedName(outerType, innerType, wrapperName) { + var displayName = outerType.displayName; + if (displayName) { + return displayName; + } + var functionName = innerType.displayName || innerType.name || ""; + return functionName !== "" ? wrapperName + "(" + functionName + ")" : wrapperName; + } + function getContextName(type) { + return type.displayName || "Context"; + } + function getComponentNameFromType(type) { + if (type == null) { + return null; + } + { + if (typeof type.tag === "number") { + error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."); + } + } + if (typeof type === "function") { + return type.displayName || type.name || null; + } + if (typeof type === "string") { + return type; + } + switch (type) { + case REACT_FRAGMENT_TYPE: + return "Fragment"; + case REACT_PORTAL_TYPE: + return "Portal"; + case REACT_PROFILER_TYPE: + return "Profiler"; + case REACT_STRICT_MODE_TYPE: + return "StrictMode"; + case REACT_SUSPENSE_TYPE: + return "Suspense"; + case REACT_SUSPENSE_LIST_TYPE: + return "SuspenseList"; + } + if (typeof type === "object") { + switch (type.$$typeof) { + case REACT_CONTEXT_TYPE: + var context = type; + return getContextName(context) + ".Consumer"; + case REACT_PROVIDER_TYPE: + var provider = type; + return getContextName(provider._context) + ".Provider"; + case REACT_FORWARD_REF_TYPE: + return getWrappedName(type, type.render, "ForwardRef"); + case REACT_MEMO_TYPE: + var outerName = type.displayName || null; + if (outerName !== null) { + return outerName; + } + return getComponentNameFromType(type.type) || "Memo"; + case REACT_LAZY_TYPE: { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + try { + return getComponentNameFromType(init(payload)); + } catch (x) { + return null; + } + } + } + } + return null; + } + function getWrappedName$1(outerType, innerType, wrapperName) { + var functionName = innerType.displayName || innerType.name || ""; + return outerType.displayName || (functionName !== "" ? wrapperName + "(" + functionName + ")" : wrapperName); + } + function getContextName$1(type) { + return type.displayName || "Context"; + } + function getComponentNameFromFiber(fiber) { + var tag = fiber.tag, type = fiber.type; + switch (tag) { + case CacheComponent: + return "Cache"; + case ContextConsumer: + var context = type; + return getContextName$1(context) + ".Consumer"; + case ContextProvider: + var provider = type; + return getContextName$1(provider._context) + ".Provider"; + case DehydratedFragment: + return "DehydratedFragment"; + case ForwardRef: + return getWrappedName$1(type, type.render, "ForwardRef"); + case Fragment: + return "Fragment"; + case HostComponent: + return type; + case HostPortal: + return "Portal"; + case HostRoot: + return "Root"; + case HostText: + return "Text"; + case LazyComponent: + return getComponentNameFromType(type); + case Mode: + if (type === REACT_STRICT_MODE_TYPE) { + return "StrictMode"; + } + return "Mode"; + case OffscreenComponent: + return "Offscreen"; + case Profiler: + return "Profiler"; + case ScopeComponent: + return "Scope"; + case SuspenseComponent: + return "Suspense"; + case SuspenseListComponent: + return "SuspenseList"; + case TracingMarkerComponent: + return "TracingMarker"; + case ClassComponent: + case FunctionComponent: + case IncompleteClassComponent: + case IndeterminateComponent: + case MemoComponent: + case SimpleMemoComponent: + if (typeof type === "function") { + return type.displayName || type.name || null; + } + if (typeof type === "string") { + return type; + } + break; + } + return null; + } + var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + var current = null; + var isRendering = false; + function getCurrentFiberOwnerNameInDevOrNull() { + { + if (current === null) { + return null; + } + var owner = current._debugOwner; + if (owner !== null && typeof owner !== "undefined") { + return getComponentNameFromFiber(owner); + } + } + return null; + } + function getCurrentFiberStackInDev() { + { + if (current === null) { + return ""; + } + return getStackByFiberInDevAndProd(current); + } + } + function resetCurrentFiber() { + { + ReactDebugCurrentFrame.getCurrentStack = null; + current = null; + isRendering = false; + } + } + function setCurrentFiber(fiber) { + { + ReactDebugCurrentFrame.getCurrentStack = fiber === null ? null : getCurrentFiberStackInDev; + current = fiber; + isRendering = false; + } + } + function getCurrentFiber() { + { + return current; + } + } + function setIsRendering(rendering) { + { + isRendering = rendering; + } + } + function toString(value) { + return "" + value; + } + function getToStringValue(value) { + switch (typeof value) { + case "boolean": + case "number": + case "string": + case "undefined": + return value; + case "object": + { + checkFormFieldValueStringCoercion(value); + } + return value; + default: + return ""; + } + } + var hasReadOnlyValue = { + button: true, + checkbox: true, + image: true, + hidden: true, + radio: true, + reset: true, + submit: true + }; + function checkControlledValueProps(tagName, props) { + { + if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) { + error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`."); + } + if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) { + error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`."); + } + } + } + function isCheckable(elem) { + var type = elem.type; + var nodeName = elem.nodeName; + return nodeName && nodeName.toLowerCase() === "input" && (type === "checkbox" || type === "radio"); + } + function getTracker(node) { + return node._valueTracker; + } + function detachTracker(node) { + node._valueTracker = null; + } + function getValueFromNode(node) { + var value = ""; + if (!node) { + return value; + } + if (isCheckable(node)) { + value = node.checked ? "true" : "false"; + } else { + value = node.value; + } + return value; + } + function trackValueOnNode(node) { + var valueField = isCheckable(node) ? "checked" : "value"; + var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField); + { + checkFormFieldValueStringCoercion(node[valueField]); + } + var currentValue = "" + node[valueField]; + if (node.hasOwnProperty(valueField) || typeof descriptor === "undefined" || typeof descriptor.get !== "function" || typeof descriptor.set !== "function") { + return; + } + var get2 = descriptor.get, set2 = descriptor.set; + Object.defineProperty(node, valueField, { + configurable: true, + get: function() { + return get2.call(this); + }, + set: function(value) { + { + checkFormFieldValueStringCoercion(value); + } + currentValue = "" + value; + set2.call(this, value); + } + }); + Object.defineProperty(node, valueField, { + enumerable: descriptor.enumerable + }); + var tracker = { + getValue: function() { + return currentValue; + }, + setValue: function(value) { + { + checkFormFieldValueStringCoercion(value); + } + currentValue = "" + value; + }, + stopTracking: function() { + detachTracker(node); + delete node[valueField]; + } + }; + return tracker; + } + function track(node) { + if (getTracker(node)) { + return; + } + node._valueTracker = trackValueOnNode(node); + } + function updateValueIfChanged(node) { + if (!node) { + return false; + } + var tracker = getTracker(node); + if (!tracker) { + return true; + } + var lastValue = tracker.getValue(); + var nextValue = getValueFromNode(node); + if (nextValue !== lastValue) { + tracker.setValue(nextValue); + return true; + } + return false; + } + function getActiveElement(doc) { + doc = doc || (typeof document !== "undefined" ? document : void 0); + if (typeof doc === "undefined") { + return null; + } + try { + return doc.activeElement || doc.body; + } catch (e2) { + return doc.body; + } + } + var didWarnValueDefaultValue = false; + var didWarnCheckedDefaultChecked = false; + var didWarnControlledToUncontrolled = false; + var didWarnUncontrolledToControlled = false; + function isControlled(props) { + var usesChecked = props.type === "checkbox" || props.type === "radio"; + return usesChecked ? props.checked != null : props.value != null; + } + function getHostProps(element, props) { + var node = element; + var checked = props.checked; + var hostProps = assign({}, props, { + defaultChecked: void 0, + defaultValue: void 0, + value: void 0, + checked: checked != null ? checked : node._wrapperState.initialChecked + }); + return hostProps; + } + function initWrapperState(element, props) { + { + checkControlledValueProps("input", props); + if (props.checked !== void 0 && props.defaultChecked !== void 0 && !didWarnCheckedDefaultChecked) { + error("%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://reactjs.org/link/controlled-components", getCurrentFiberOwnerNameInDevOrNull() || "A component", props.type); + didWarnCheckedDefaultChecked = true; + } + if (props.value !== void 0 && props.defaultValue !== void 0 && !didWarnValueDefaultValue) { + error("%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://reactjs.org/link/controlled-components", getCurrentFiberOwnerNameInDevOrNull() || "A component", props.type); + didWarnValueDefaultValue = true; + } + } + var node = element; + var defaultValue = props.defaultValue == null ? "" : props.defaultValue; + node._wrapperState = { + initialChecked: props.checked != null ? props.checked : props.defaultChecked, + initialValue: getToStringValue(props.value != null ? props.value : defaultValue), + controlled: isControlled(props) + }; + } + function updateChecked(element, props) { + var node = element; + var checked = props.checked; + if (checked != null) { + setValueForProperty(node, "checked", checked, false); + } + } + function updateWrapper(element, props) { + var node = element; + { + var controlled = isControlled(props); + if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) { + error("A component is changing an uncontrolled input to be controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components"); + didWarnUncontrolledToControlled = true; + } + if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) { + error("A component is changing a controlled input to be uncontrolled. This is likely caused by the value changing from a defined to undefined, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components"); + didWarnControlledToUncontrolled = true; + } + } + updateChecked(element, props); + var value = getToStringValue(props.value); + var type = props.type; + if (value != null) { + if (type === "number") { + if (value === 0 && node.value === "" || node.value != value) { + node.value = toString(value); + } + } else if (node.value !== toString(value)) { + node.value = toString(value); + } + } else if (type === "submit" || type === "reset") { + node.removeAttribute("value"); + return; + } + { + if (props.hasOwnProperty("value")) { + setDefaultValue(node, props.type, value); + } else if (props.hasOwnProperty("defaultValue")) { + setDefaultValue(node, props.type, getToStringValue(props.defaultValue)); + } + } + { + if (props.checked == null && props.defaultChecked != null) { + node.defaultChecked = !!props.defaultChecked; + } + } + } + function postMountWrapper(element, props, isHydrating2) { + var node = element; + if (props.hasOwnProperty("value") || props.hasOwnProperty("defaultValue")) { + var type = props.type; + var isButton = type === "submit" || type === "reset"; + if (isButton && (props.value === void 0 || props.value === null)) { + return; + } + var initialValue = toString(node._wrapperState.initialValue); + if (!isHydrating2) { + { + if (initialValue !== node.value) { + node.value = initialValue; + } + } + } + { + node.defaultValue = initialValue; + } + } + var name = node.name; + if (name !== "") { + node.name = ""; + } + { + node.defaultChecked = !node.defaultChecked; + node.defaultChecked = !!node._wrapperState.initialChecked; + } + if (name !== "") { + node.name = name; + } + } + function restoreControlledState(element, props) { + var node = element; + updateWrapper(node, props); + updateNamedCousins(node, props); + } + function updateNamedCousins(rootNode, props) { + var name = props.name; + if (props.type === "radio" && name != null) { + var queryRoot = rootNode; + while (queryRoot.parentNode) { + queryRoot = queryRoot.parentNode; + } + { + checkAttributeStringCoercion(name, "name"); + } + var group = queryRoot.querySelectorAll("input[name=" + JSON.stringify("" + name) + '][type="radio"]'); + for (var i2 = 0; i2 < group.length; i2++) { + var otherNode = group[i2]; + if (otherNode === rootNode || otherNode.form !== rootNode.form) { + continue; + } + var otherProps = getFiberCurrentPropsFromNode(otherNode); + if (!otherProps) { + throw new Error("ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported."); + } + updateValueIfChanged(otherNode); + updateWrapper(otherNode, otherProps); + } + } + } + function setDefaultValue(node, type, value) { + if (type !== "number" || getActiveElement(node.ownerDocument) !== node) { + if (value == null) { + node.defaultValue = toString(node._wrapperState.initialValue); + } else if (node.defaultValue !== toString(value)) { + node.defaultValue = toString(value); + } + } + } + var didWarnSelectedSetOnOption = false; + var didWarnInvalidChild = false; + var didWarnInvalidInnerHTML = false; + function validateProps(element, props) { + { + if (props.value == null) { + if (typeof props.children === "object" && props.children !== null) { + React9.Children.forEach(props.children, function(child) { + if (child == null) { + return; + } + if (typeof child === "string" || typeof child === "number") { + return; + } + if (!didWarnInvalidChild) { + didWarnInvalidChild = true; + error("Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to