Enhance deployment system with retry functionality and improved UX
Major Improvements: - Added retry deployment buttons in machine list for failed deployments - Added retry button in SSH console modal footer for enhanced UX - Enhanced deployment process with comprehensive cleanup of existing services - Improved binary installation with password-based sudo authentication - Updated configuration generation to include all required sections (agent, ai, network, security) - Fixed deployment verification and error handling Security Enhancements: - Enhanced verifiedStopExistingServices with thorough cleanup process - Improved binary copying with proper sudo authentication - Added comprehensive configuration validation UX Improvements: - Users can retry deployments without re-running machine discovery - Retry buttons available from both machine list and console modal - Real-time deployment progress with detailed console output - Clear error states with actionable retry options Technical Changes: - Modified ServiceDeployment.tsx with retry button components - Enhanced api/setup_manager.go with improved deployment functions - Updated main.go with command line argument support (--config, --setup) - Added comprehensive zero-trust security validation system 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"chorus.services/bzzz/pkg/security"
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
@@ -22,6 +23,26 @@ type SecurityConfig struct {
|
||||
AuditPath string `yaml:"audit_path,omitempty" json:"audit_path,omitempty"`
|
||||
}
|
||||
|
||||
// AIConfig holds AI/LLM integration settings
|
||||
type AIConfig struct {
|
||||
Ollama OllamaConfig `yaml:"ollama"`
|
||||
OpenAI OpenAIConfig `yaml:"openai"`
|
||||
}
|
||||
|
||||
// OllamaConfig holds Ollama API configuration
|
||||
type OllamaConfig struct {
|
||||
Endpoint string `yaml:"endpoint"`
|
||||
Timeout time.Duration `yaml:"timeout"`
|
||||
Models []string `yaml:"models"`
|
||||
}
|
||||
|
||||
// OpenAIConfig holds OpenAI API configuration
|
||||
type OpenAIConfig struct {
|
||||
APIKey string `yaml:"api_key"`
|
||||
Endpoint string `yaml:"endpoint"`
|
||||
Timeout time.Duration `yaml:"timeout"`
|
||||
}
|
||||
|
||||
// Config represents the complete configuration for a Bzzz agent
|
||||
type Config struct {
|
||||
WHOOSHAPI WHOOSHAPIConfig `yaml:"hive_api"`
|
||||
@@ -34,6 +55,7 @@ type Config struct {
|
||||
V2 V2Config `yaml:"v2"` // BZZZ v2 protocol settings
|
||||
UCXL UCXLConfig `yaml:"ucxl"` // UCXL protocol settings
|
||||
Security SecurityConfig `yaml:"security"` // Cluster security and elections
|
||||
AI AIConfig `yaml:"ai"` // AI/LLM integration settings
|
||||
}
|
||||
|
||||
// WHOOSHAPIConfig holds WHOOSH system integration settings
|
||||
@@ -385,20 +407,49 @@ func getDefaultConfig() *Config {
|
||||
"advanced_resolution": false,
|
||||
},
|
||||
},
|
||||
AI: AIConfig{
|
||||
Ollama: OllamaConfig{
|
||||
Endpoint: "http://localhost:11434",
|
||||
Timeout: 30 * time.Second,
|
||||
Models: []string{"phi3", "llama3.1"},
|
||||
},
|
||||
OpenAI: OpenAIConfig{
|
||||
APIKey: "",
|
||||
Endpoint: "https://api.openai.com/v1",
|
||||
Timeout: 30 * time.Second,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// loadFromFile loads configuration from a YAML file
|
||||
// loadFromFile loads configuration from a YAML file with zero-trust validation
|
||||
func loadFromFile(config *Config, filePath string) error {
|
||||
// SECURITY: Validate file path to prevent directory traversal
|
||||
validator := security.NewSecurityValidator()
|
||||
if err := validator.ValidateFilePath(filePath); err != nil {
|
||||
return fmt.Errorf("security validation failed for config path: %w", err)
|
||||
}
|
||||
|
||||
data, err := ioutil.ReadFile(filePath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to read config file: %w", err)
|
||||
}
|
||||
|
||||
// SECURITY: Limit file size to prevent memory exhaustion attacks
|
||||
maxConfigSize := 1024 * 1024 // 1MB limit for config files
|
||||
if len(data) > maxConfigSize {
|
||||
return fmt.Errorf("config file too large: %d bytes exceeds limit of %d bytes", len(data), maxConfigSize)
|
||||
}
|
||||
|
||||
if err := yaml.Unmarshal(data, config); err != nil {
|
||||
return fmt.Errorf("failed to parse YAML config: %w", err)
|
||||
}
|
||||
|
||||
// SECURITY: Validate all configuration values after loading
|
||||
if err := validateConfigSecurity(config, validator); err != nil {
|
||||
return fmt.Errorf("security validation failed for loaded config: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -582,4 +633,185 @@ func IsValidConfiguration(config *Config) bool {
|
||||
|
||||
// Configuration appears valid
|
||||
return true
|
||||
}
|
||||
|
||||
// validateConfigSecurity performs zero-trust validation on all configuration values
|
||||
func validateConfigSecurity(config *Config, validator *security.SecurityValidator) error {
|
||||
// Validate Agent configuration
|
||||
if config.Agent.ID != "" {
|
||||
// Agent IDs should be alphanumeric identifiers
|
||||
if len(config.Agent.ID) > 64 {
|
||||
return fmt.Errorf("agent ID too long (max 64 characters): %s", config.Agent.ID)
|
||||
}
|
||||
if !isAlphanumericWithDashes(config.Agent.ID) {
|
||||
return fmt.Errorf("agent ID contains invalid characters: %s", config.Agent.ID)
|
||||
}
|
||||
}
|
||||
|
||||
// Validate specialization
|
||||
if config.Agent.Specialization != "" {
|
||||
if len(config.Agent.Specialization) > 64 {
|
||||
return fmt.Errorf("specialization too long (max 64 characters)")
|
||||
}
|
||||
if !isAlphanumericWithUnderscore(config.Agent.Specialization) {
|
||||
return fmt.Errorf("specialization contains invalid characters: %s", config.Agent.Specialization)
|
||||
}
|
||||
}
|
||||
|
||||
// Validate role
|
||||
if config.Agent.Role != "" {
|
||||
if len(config.Agent.Role) > 32 {
|
||||
return fmt.Errorf("role too long (max 32 characters)")
|
||||
}
|
||||
if !isAlphanumericWithUnderscore(config.Agent.Role) {
|
||||
return fmt.Errorf("role contains invalid characters: %s", config.Agent.Role)
|
||||
}
|
||||
}
|
||||
|
||||
// Validate capabilities list
|
||||
if len(config.Agent.Capabilities) > 20 {
|
||||
return fmt.Errorf("too many capabilities (max 20)")
|
||||
}
|
||||
for _, capability := range config.Agent.Capabilities {
|
||||
if len(capability) > 32 {
|
||||
return fmt.Errorf("capability name too long (max 32 characters): %s", capability)
|
||||
}
|
||||
if !isAlphanumericWithUnderscore(capability) {
|
||||
return fmt.Errorf("capability contains invalid characters: %s", capability)
|
||||
}
|
||||
}
|
||||
|
||||
// Validate models list
|
||||
if len(config.Agent.Models) > 50 {
|
||||
return fmt.Errorf("too many models (max 50)")
|
||||
}
|
||||
for _, model := range config.Agent.Models {
|
||||
if len(model) > 64 {
|
||||
return fmt.Errorf("model name too long (max 64 characters): %s", model)
|
||||
}
|
||||
if !isAlphanumericWithDots(model) {
|
||||
return fmt.Errorf("model name contains invalid characters: %s", model)
|
||||
}
|
||||
}
|
||||
|
||||
// Validate URLs and webhooks
|
||||
if config.WHOOSHAPI.BaseURL != "" {
|
||||
if err := validateURL(config.WHOOSHAPI.BaseURL); err != nil {
|
||||
return fmt.Errorf("invalid WHOOSH API URL: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
if config.Agent.ModelSelectionWebhook != "" {
|
||||
if err := validateURL(config.Agent.ModelSelectionWebhook); err != nil {
|
||||
return fmt.Errorf("invalid model selection webhook URL: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
if config.P2P.EscalationWebhook != "" {
|
||||
if err := validateURL(config.P2P.EscalationWebhook); err != nil {
|
||||
return fmt.Errorf("invalid escalation webhook URL: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Validate file paths
|
||||
if config.GitHub.TokenFile != "" {
|
||||
if err := validator.ValidateFilePath(config.GitHub.TokenFile); err != nil {
|
||||
return fmt.Errorf("invalid GitHub token file path: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
if config.Security.AuditPath != "" {
|
||||
if err := validator.ValidateFilePath(config.Security.AuditPath); err != nil {
|
||||
return fmt.Errorf("invalid audit path: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Validate numeric limits
|
||||
if config.Agent.MaxTasks < 1 || config.Agent.MaxTasks > 100 {
|
||||
return fmt.Errorf("invalid max tasks: must be between 1 and 100, got %d", config.Agent.MaxTasks)
|
||||
}
|
||||
|
||||
if config.WHOOSHAPI.RetryCount < 0 || config.WHOOSHAPI.RetryCount > 10 {
|
||||
return fmt.Errorf("invalid retry count: must be between 0 and 10, got %d", config.WHOOSHAPI.RetryCount)
|
||||
}
|
||||
|
||||
if config.Security.KeyRotationDays < 0 || config.Security.KeyRotationDays > 365 {
|
||||
return fmt.Errorf("invalid key rotation days: must be between 0 and 365, got %d", config.Security.KeyRotationDays)
|
||||
}
|
||||
|
||||
// Validate timeout durations (prevent extremely long timeouts that could cause DoS)
|
||||
maxTimeout := 300 * time.Second // 5 minutes max
|
||||
if config.WHOOSHAPI.Timeout > maxTimeout {
|
||||
return fmt.Errorf("WHOOSH API timeout too long (max 5 minutes): %v", config.WHOOSHAPI.Timeout)
|
||||
}
|
||||
if config.GitHub.Timeout > maxTimeout {
|
||||
return fmt.Errorf("GitHub timeout too long (max 5 minutes): %v", config.GitHub.Timeout)
|
||||
}
|
||||
if config.Agent.PollInterval > 3600*time.Second {
|
||||
return fmt.Errorf("poll interval too long (max 1 hour): %v", config.Agent.PollInterval)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Helper validation functions
|
||||
|
||||
func isAlphanumericWithDashes(s string) bool {
|
||||
if len(s) == 0 {
|
||||
return false
|
||||
}
|
||||
for _, char := range s {
|
||||
if !((char >= 'a' && char <= 'z') || (char >= 'A' && char <= 'Z') ||
|
||||
(char >= '0' && char <= '9') || char == '-' || char == '_') {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func isAlphanumericWithUnderscore(s string) bool {
|
||||
if len(s) == 0 {
|
||||
return false
|
||||
}
|
||||
for _, char := range s {
|
||||
if !((char >= 'a' && char <= 'z') || (char >= 'A' && char <= 'Z') ||
|
||||
(char >= '0' && char <= '9') || char == '_') {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func isAlphanumericWithDots(s string) bool {
|
||||
if len(s) == 0 {
|
||||
return false
|
||||
}
|
||||
for _, char := range s {
|
||||
if !((char >= 'a' && char <= 'z') || (char >= 'A' && char <= 'Z') ||
|
||||
(char >= '0' && char <= '9') || char == '.' || char == '-' || char == '_') {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func validateURL(url string) error {
|
||||
if len(url) > 2048 {
|
||||
return fmt.Errorf("URL too long (max 2048 characters)")
|
||||
}
|
||||
|
||||
// Basic URL validation - should start with http:// or https://
|
||||
if !strings.HasPrefix(url, "http://") && !strings.HasPrefix(url, "https://") {
|
||||
return fmt.Errorf("URL must start with http:// or https://")
|
||||
}
|
||||
|
||||
// Check for dangerous characters that could be used for injection
|
||||
dangerousChars := []string{"`", "$", ";", "|", "&", "<", ">", "\n", "\r"}
|
||||
for _, char := range dangerousChars {
|
||||
if strings.Contains(url, char) {
|
||||
return fmt.Errorf("URL contains dangerous characters")
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -872,7 +872,7 @@ func (ekm *EmergencyKeyManager) CreateEmergencyKey(keyType string, policy *Emerg
|
||||
}
|
||||
|
||||
// GenerateAgeKeyPair generates a new Age key pair
|
||||
func GenerateAgeKeyPair() (*RoleKeyPair, error) {
|
||||
func GenerateRoleKeyPair() (*RoleKeyPair, error) {
|
||||
// In a real implementation, this would use the age library
|
||||
// For now, generate placeholder keys
|
||||
publicKey := "age1234567890abcdef1234567890abcdef1234567890abcdef12345678"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,395 +0,0 @@
|
||||
package crypto
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"math/big"
|
||||
|
||||
"chorus.services/bzzz/pkg/config"
|
||||
)
|
||||
|
||||
// ShamirSecretSharing implements Shamir's Secret Sharing algorithm for Age keys
|
||||
type ShamirSecretSharing struct {
|
||||
threshold int
|
||||
totalShares int
|
||||
}
|
||||
|
||||
// NewShamirSecretSharing creates a new Shamir secret sharing instance
|
||||
func NewShamirSecretSharing(threshold, totalShares int) (*ShamirSecretSharing, error) {
|
||||
if threshold <= 0 || totalShares <= 0 {
|
||||
return nil, fmt.Errorf("threshold and total shares must be positive")
|
||||
}
|
||||
if threshold > totalShares {
|
||||
return nil, fmt.Errorf("threshold cannot be greater than total shares")
|
||||
}
|
||||
if totalShares > 255 {
|
||||
return nil, fmt.Errorf("total shares cannot exceed 255")
|
||||
}
|
||||
|
||||
return &ShamirSecretSharing{
|
||||
threshold: threshold,
|
||||
totalShares: totalShares,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Share represents a single share of a secret
|
||||
type Share struct {
|
||||
Index int `json:"index"`
|
||||
Value string `json:"value"` // Base64 encoded
|
||||
}
|
||||
|
||||
// SplitSecret splits an Age private key into shares using Shamir's Secret Sharing
|
||||
func (sss *ShamirSecretSharing) SplitSecret(secret string) ([]Share, error) {
|
||||
if secret == "" {
|
||||
return nil, fmt.Errorf("secret cannot be empty")
|
||||
}
|
||||
|
||||
secretBytes := []byte(secret)
|
||||
shares := make([]Share, sss.totalShares)
|
||||
|
||||
// Create polynomial coefficients (random except first one which is the secret)
|
||||
coefficients := make([]*big.Int, sss.threshold)
|
||||
|
||||
// The constant term is the secret (split into chunks if needed)
|
||||
// For simplicity, we'll work with the secret as a single big integer
|
||||
secretInt := new(big.Int).SetBytes(secretBytes)
|
||||
coefficients[0] = secretInt
|
||||
|
||||
// Generate random coefficients for the polynomial
|
||||
prime := getPrime257() // Use 257-bit prime for security
|
||||
for i := 1; i < sss.threshold; i++ {
|
||||
coeff, err := rand.Int(rand.Reader, prime)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to generate random coefficient: %w", err)
|
||||
}
|
||||
coefficients[i] = coeff
|
||||
}
|
||||
|
||||
// Generate shares by evaluating polynomial at different points
|
||||
for i := 0; i < sss.totalShares; i++ {
|
||||
x := big.NewInt(int64(i + 1)) // x values from 1 to totalShares
|
||||
y := evaluatePolynomial(coefficients, x, prime)
|
||||
|
||||
// Encode the share
|
||||
shareData := encodeShare(x, y)
|
||||
shareValue := base64.StdEncoding.EncodeToString(shareData)
|
||||
|
||||
shares[i] = Share{
|
||||
Index: i + 1,
|
||||
Value: shareValue,
|
||||
}
|
||||
}
|
||||
|
||||
return shares, nil
|
||||
}
|
||||
|
||||
// ReconstructSecret reconstructs the original secret from threshold number of shares
|
||||
func (sss *ShamirSecretSharing) ReconstructSecret(shares []Share) (string, error) {
|
||||
if len(shares) < sss.threshold {
|
||||
return "", fmt.Errorf("need at least %d shares to reconstruct secret, got %d", sss.threshold, len(shares))
|
||||
}
|
||||
|
||||
// Use only the first threshold number of shares
|
||||
useShares := shares[:sss.threshold]
|
||||
|
||||
points := make([]Point, len(useShares))
|
||||
prime := getPrime257()
|
||||
|
||||
// Decode shares
|
||||
for i, share := range useShares {
|
||||
shareData, err := base64.StdEncoding.DecodeString(share.Value)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to decode share %d: %w", share.Index, err)
|
||||
}
|
||||
|
||||
x, y, err := decodeShare(shareData)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to parse share %d: %w", share.Index, err)
|
||||
}
|
||||
|
||||
points[i] = Point{X: x, Y: y}
|
||||
}
|
||||
|
||||
// Use Lagrange interpolation to reconstruct the secret (polynomial at x=0)
|
||||
secret := lagrangeInterpolation(points, big.NewInt(0), prime)
|
||||
|
||||
// Convert back to string
|
||||
secretBytes := secret.Bytes()
|
||||
return string(secretBytes), nil
|
||||
}
|
||||
|
||||
// Point represents a point on the polynomial
|
||||
type Point struct {
|
||||
X, Y *big.Int
|
||||
}
|
||||
|
||||
// evaluatePolynomial evaluates polynomial at given x
|
||||
func evaluatePolynomial(coefficients []*big.Int, x, prime *big.Int) *big.Int {
|
||||
result := big.NewInt(0)
|
||||
xPower := big.NewInt(1) // x^0 = 1
|
||||
|
||||
for _, coeff := range coefficients {
|
||||
// result += coeff * x^power
|
||||
term := new(big.Int).Mul(coeff, xPower)
|
||||
result.Add(result, term)
|
||||
result.Mod(result, prime)
|
||||
|
||||
// Update x^power for next iteration
|
||||
xPower.Mul(xPower, x)
|
||||
xPower.Mod(xPower, prime)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// lagrangeInterpolation reconstructs the polynomial value at target x using Lagrange interpolation
|
||||
func lagrangeInterpolation(points []Point, targetX, prime *big.Int) *big.Int {
|
||||
result := big.NewInt(0)
|
||||
|
||||
for i := 0; i < len(points); i++ {
|
||||
// Calculate Lagrange basis polynomial L_i(targetX)
|
||||
numerator := big.NewInt(1)
|
||||
denominator := big.NewInt(1)
|
||||
|
||||
for j := 0; j < len(points); j++ {
|
||||
if i != j {
|
||||
// numerator *= (targetX - points[j].X)
|
||||
temp := new(big.Int).Sub(targetX, points[j].X)
|
||||
numerator.Mul(numerator, temp)
|
||||
numerator.Mod(numerator, prime)
|
||||
|
||||
// denominator *= (points[i].X - points[j].X)
|
||||
temp = new(big.Int).Sub(points[i].X, points[j].X)
|
||||
denominator.Mul(denominator, temp)
|
||||
denominator.Mod(denominator, prime)
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate modular inverse of denominator
|
||||
denominatorInv := modularInverse(denominator, prime)
|
||||
|
||||
// L_i(targetX) = numerator / denominator = numerator * denominatorInv
|
||||
lagrangeBasis := new(big.Int).Mul(numerator, denominatorInv)
|
||||
lagrangeBasis.Mod(lagrangeBasis, prime)
|
||||
|
||||
// Add points[i].Y * L_i(targetX) to result
|
||||
term := new(big.Int).Mul(points[i].Y, lagrangeBasis)
|
||||
result.Add(result, term)
|
||||
result.Mod(result, prime)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// modularInverse calculates the modular multiplicative inverse
|
||||
func modularInverse(a, m *big.Int) *big.Int {
|
||||
return new(big.Int).ModInverse(a, m)
|
||||
}
|
||||
|
||||
// encodeShare encodes x,y coordinates into bytes
|
||||
func encodeShare(x, y *big.Int) []byte {
|
||||
xBytes := x.Bytes()
|
||||
yBytes := y.Bytes()
|
||||
|
||||
// Simple encoding: [x_length][x_bytes][y_bytes]
|
||||
result := make([]byte, 0, 1+len(xBytes)+len(yBytes))
|
||||
result = append(result, byte(len(xBytes)))
|
||||
result = append(result, xBytes...)
|
||||
result = append(result, yBytes...)
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// decodeShare decodes bytes back into x,y coordinates
|
||||
func decodeShare(data []byte) (*big.Int, *big.Int, error) {
|
||||
if len(data) < 2 {
|
||||
return nil, nil, fmt.Errorf("share data too short")
|
||||
}
|
||||
|
||||
xLength := int(data[0])
|
||||
if len(data) < 1+xLength {
|
||||
return nil, nil, fmt.Errorf("invalid share data")
|
||||
}
|
||||
|
||||
xBytes := data[1 : 1+xLength]
|
||||
yBytes := data[1+xLength:]
|
||||
|
||||
x := new(big.Int).SetBytes(xBytes)
|
||||
y := new(big.Int).SetBytes(yBytes)
|
||||
|
||||
return x, y, nil
|
||||
}
|
||||
|
||||
// getPrime257 returns a large prime number for the finite field
|
||||
func getPrime257() *big.Int {
|
||||
// Using a well-known 257-bit prime
|
||||
primeStr := "208351617316091241234326746312124448251235562226470491514186331217050270460481"
|
||||
prime, _ := new(big.Int).SetString(primeStr, 10)
|
||||
return prime
|
||||
}
|
||||
|
||||
// AdminKeyManager manages admin key reconstruction using Shamir shares
|
||||
type AdminKeyManager struct {
|
||||
config *config.Config
|
||||
nodeID string
|
||||
nodeShare *config.ShamirShare
|
||||
}
|
||||
|
||||
// NewAdminKeyManager creates a new admin key manager
|
||||
func NewAdminKeyManager(cfg *config.Config, nodeID string) *AdminKeyManager {
|
||||
return &AdminKeyManager{
|
||||
config: cfg,
|
||||
nodeID: nodeID,
|
||||
}
|
||||
}
|
||||
|
||||
// SetNodeShare sets this node's Shamir share
|
||||
func (akm *AdminKeyManager) SetNodeShare(share *config.ShamirShare) {
|
||||
akm.nodeShare = share
|
||||
}
|
||||
|
||||
// GetNodeShare returns this node's Shamir share
|
||||
func (akm *AdminKeyManager) GetNodeShare() *config.ShamirShare {
|
||||
return akm.nodeShare
|
||||
}
|
||||
|
||||
// ReconstructAdminKey reconstructs the admin private key from collected shares
|
||||
func (akm *AdminKeyManager) ReconstructAdminKey(shares []config.ShamirShare) (string, error) {
|
||||
if len(shares) < akm.config.Security.AdminKeyShares.Threshold {
|
||||
return "", fmt.Errorf("insufficient shares: need %d, have %d",
|
||||
akm.config.Security.AdminKeyShares.Threshold, len(shares))
|
||||
}
|
||||
|
||||
// Convert config shares to crypto shares
|
||||
cryptoShares := make([]Share, len(shares))
|
||||
for i, share := range shares {
|
||||
cryptoShares[i] = Share{
|
||||
Index: share.Index,
|
||||
Value: share.Share,
|
||||
}
|
||||
}
|
||||
|
||||
// Create Shamir instance with config parameters
|
||||
sss, err := NewShamirSecretSharing(
|
||||
akm.config.Security.AdminKeyShares.Threshold,
|
||||
akm.config.Security.AdminKeyShares.TotalShares,
|
||||
)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to create Shamir instance: %w", err)
|
||||
}
|
||||
|
||||
// Reconstruct the secret
|
||||
return sss.ReconstructSecret(cryptoShares)
|
||||
}
|
||||
|
||||
// SplitAdminKey splits an admin private key into Shamir shares
|
||||
func (akm *AdminKeyManager) SplitAdminKey(adminPrivateKey string) ([]config.ShamirShare, error) {
|
||||
// Create Shamir instance with config parameters
|
||||
sss, err := NewShamirSecretSharing(
|
||||
akm.config.Security.AdminKeyShares.Threshold,
|
||||
akm.config.Security.AdminKeyShares.TotalShares,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create Shamir instance: %w", err)
|
||||
}
|
||||
|
||||
// Split the secret
|
||||
shares, err := sss.SplitSecret(adminPrivateKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to split admin key: %w", err)
|
||||
}
|
||||
|
||||
// Convert to config shares
|
||||
configShares := make([]config.ShamirShare, len(shares))
|
||||
for i, share := range shares {
|
||||
configShares[i] = config.ShamirShare{
|
||||
Index: share.Index,
|
||||
Share: share.Value,
|
||||
Threshold: akm.config.Security.AdminKeyShares.Threshold,
|
||||
TotalShares: akm.config.Security.AdminKeyShares.TotalShares,
|
||||
}
|
||||
}
|
||||
|
||||
return configShares, nil
|
||||
}
|
||||
|
||||
// ValidateShare validates a Shamir share
|
||||
func (akm *AdminKeyManager) ValidateShare(share *config.ShamirShare) error {
|
||||
if share.Index < 1 || share.Index > share.TotalShares {
|
||||
return fmt.Errorf("invalid share index: %d (must be 1-%d)", share.Index, share.TotalShares)
|
||||
}
|
||||
|
||||
if share.Threshold != akm.config.Security.AdminKeyShares.Threshold {
|
||||
return fmt.Errorf("share threshold mismatch: expected %d, got %d",
|
||||
akm.config.Security.AdminKeyShares.Threshold, share.Threshold)
|
||||
}
|
||||
|
||||
if share.TotalShares != akm.config.Security.AdminKeyShares.TotalShares {
|
||||
return fmt.Errorf("share total mismatch: expected %d, got %d",
|
||||
akm.config.Security.AdminKeyShares.TotalShares, share.TotalShares)
|
||||
}
|
||||
|
||||
// Try to decode the share value
|
||||
_, err := base64.StdEncoding.DecodeString(share.Share)
|
||||
if err != nil {
|
||||
return fmt.Errorf("invalid share encoding: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// TestShamirSecretSharing tests the Shamir secret sharing implementation
|
||||
func TestShamirSecretSharing() error {
|
||||
// Test parameters
|
||||
threshold := 3
|
||||
totalShares := 5
|
||||
testSecret := "AGE-SECRET-KEY-1ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890"
|
||||
|
||||
// Create Shamir instance
|
||||
sss, err := NewShamirSecretSharing(threshold, totalShares)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create Shamir instance: %w", err)
|
||||
}
|
||||
|
||||
// Split the secret
|
||||
shares, err := sss.SplitSecret(testSecret)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to split secret: %w", err)
|
||||
}
|
||||
|
||||
if len(shares) != totalShares {
|
||||
return fmt.Errorf("expected %d shares, got %d", totalShares, len(shares))
|
||||
}
|
||||
|
||||
// Test reconstruction with minimum threshold
|
||||
minShares := shares[:threshold]
|
||||
reconstructed, err := sss.ReconstructSecret(minShares)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to reconstruct secret: %w", err)
|
||||
}
|
||||
|
||||
if reconstructed != testSecret {
|
||||
return fmt.Errorf("reconstructed secret doesn't match original")
|
||||
}
|
||||
|
||||
// Test reconstruction with more than threshold
|
||||
extraShares := shares[:threshold+1]
|
||||
reconstructed2, err := sss.ReconstructSecret(extraShares)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to reconstruct secret with extra shares: %w", err)
|
||||
}
|
||||
|
||||
if reconstructed2 != testSecret {
|
||||
return fmt.Errorf("reconstructed secret with extra shares doesn't match original")
|
||||
}
|
||||
|
||||
// Test that insufficient shares fail
|
||||
insufficientShares := shares[:threshold-1]
|
||||
_, err = sss.ReconstructSecret(insufficientShares)
|
||||
if err == nil {
|
||||
return fmt.Errorf("expected error with insufficient shares, but got none")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -7,13 +7,13 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"chorus.services/bzzz/pkg/config"
|
||||
"chorus.services/bzzz/pkg/crypto"
|
||||
"chorus.services/bzzz/pkg/storage"
|
||||
"chorus.services/bzzz/pkg/ucxl"
|
||||
"github.com/libp2p/go-libp2p/core/host"
|
||||
"github.com/libp2p/go-libp2p/core/peer"
|
||||
)
|
||||
|
||||
@@ -8,8 +8,10 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/ipfs/go-cid"
|
||||
"github.com/libp2p/go-libp2p/core/peer"
|
||||
"github.com/libp2p/go-libp2p/core/routing"
|
||||
"github.com/multiformats/go-multihash"
|
||||
)
|
||||
|
||||
// ReplicationManager manages DHT data replication and provider records
|
||||
@@ -215,8 +217,15 @@ func (rm *ReplicationManager) FindProviders(ctx context.Context, key string, lim
|
||||
// Query DHT for providers
|
||||
keyHash := sha256.Sum256([]byte(key))
|
||||
|
||||
// Create a proper CID from the hash
|
||||
mh, err := multihash.EncodeName(keyHash[:], "sha2-256")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to encode multihash: %w", err)
|
||||
}
|
||||
contentID := cid.NewCidV1(cid.Raw, mh)
|
||||
|
||||
// Use DHT to find providers
|
||||
providerCh := rm.dht.FindProvidersAsync(ctx, keyHash[:], limit)
|
||||
providerCh := rm.dht.FindProvidersAsync(ctx, contentID, limit)
|
||||
|
||||
var providers []ProviderInfo
|
||||
for providerInfo := range providerCh {
|
||||
@@ -310,8 +319,18 @@ func (rm *ReplicationManager) provideContent(key string) error {
|
||||
|
||||
keyHash := sha256.Sum256([]byte(key))
|
||||
|
||||
// Create a proper CID from the hash
|
||||
mh, err := multihash.EncodeName(keyHash[:], "sha2-256")
|
||||
if err != nil {
|
||||
rm.metrics.mu.Lock()
|
||||
rm.metrics.FailedReplications++
|
||||
rm.metrics.mu.Unlock()
|
||||
return fmt.Errorf("failed to encode multihash: %w", err)
|
||||
}
|
||||
contentID := cid.NewCidV1(cid.Raw, mh)
|
||||
|
||||
// Provide the content to the DHT
|
||||
if err := rm.dht.Provide(ctx, keyHash[:], true); err != nil {
|
||||
if err := rm.dht.Provide(ctx, contentID, true); err != nil {
|
||||
rm.metrics.mu.Lock()
|
||||
rm.metrics.FailedReplications++
|
||||
rm.metrics.mu.Unlock()
|
||||
|
||||
@@ -1,233 +0,0 @@
|
||||
package election
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
)
|
||||
|
||||
// SLURPElectionConfig holds SLURP-specific election configuration
|
||||
type SLURPElectionConfig struct {
|
||||
// Auto-start context generation when becoming admin
|
||||
AutoStartGeneration bool
|
||||
|
||||
// Delay before starting context generation
|
||||
GenerationStartDelay time.Duration
|
||||
|
||||
// Timeout for stopping context generation
|
||||
GenerationStopTimeout time.Duration
|
||||
|
||||
// Health check interval for context generation
|
||||
ContextHealthCheckInterval time.Duration
|
||||
|
||||
// Maximum allowed context generation errors before declaring unhealthy
|
||||
MaxContextErrors int
|
||||
|
||||
// Context generation timeout
|
||||
ContextGenerationTimeout time.Duration
|
||||
|
||||
// Enable advanced context caching
|
||||
EnableContextCaching bool
|
||||
|
||||
// Context cache TTL
|
||||
ContextCacheTTL time.Duration
|
||||
|
||||
// Maximum concurrent context generation requests
|
||||
MaxConcurrentContextGen int
|
||||
|
||||
// Enable distributed context generation (across multiple nodes)
|
||||
EnableDistributedGeneration bool
|
||||
}
|
||||
|
||||
// DefaultSLURPElectionConfig returns default SLURP election configuration
|
||||
func DefaultSLURPElectionConfig() *SLURPElectionConfig {
|
||||
return &SLURPElectionConfig{
|
||||
AutoStartGeneration: true,
|
||||
GenerationStartDelay: 2 * time.Second,
|
||||
GenerationStopTimeout: 30 * time.Second,
|
||||
ContextHealthCheckInterval: 15 * time.Second,
|
||||
MaxContextErrors: 3,
|
||||
ContextGenerationTimeout: 60 * time.Second,
|
||||
EnableContextCaching: true,
|
||||
ContextCacheTTL: 5 * time.Minute,
|
||||
MaxConcurrentContextGen: 10,
|
||||
EnableDistributedGeneration: false,
|
||||
}
|
||||
}
|
||||
|
||||
// ContextManager interface for managing context generation
|
||||
type ContextManager interface {
|
||||
GetGenerationStatus() (*GenerationStatus, error)
|
||||
RequestContextGeneration(req *ContextGenerationRequest) error
|
||||
StopGeneration() error
|
||||
GetActiveRequests() ([]*ContextGenerationRequest, error)
|
||||
GetCompletedRequests(limit int) ([]*ContextGenerationRequest, error)
|
||||
}
|
||||
|
||||
// GenerationStatus represents the status of context generation
|
||||
type GenerationStatus struct {
|
||||
LeaderID string `json:"leader_id"`
|
||||
ActiveRequests int `json:"active_requests"`
|
||||
CompletedRequests int64 `json:"completed_requests"`
|
||||
FailedRequests int64 `json:"failed_requests"`
|
||||
AverageLatency time.Duration `json:"average_latency"`
|
||||
LastRequestTime time.Time `json:"last_request_time"`
|
||||
GenerationCapacity int `json:"generation_capacity"`
|
||||
ContextCacheSize int `json:"context_cache_size"`
|
||||
CacheHitRate float64 `json:"cache_hit_rate"`
|
||||
ActiveTasks int `json:"active_tasks"`
|
||||
HealthStatus string `json:"health_status"`
|
||||
}
|
||||
|
||||
// ContextGenerationRequest represents a request for context generation
|
||||
type ContextGenerationRequest struct {
|
||||
RequestID string `json:"request_id"`
|
||||
RequestorID string `json:"requestor_id"`
|
||||
ContextType string `json:"context_type"`
|
||||
Parameters map[string]interface{} `json:"parameters"`
|
||||
Priority int `json:"priority"`
|
||||
RequestedAt time.Time `json:"requested_at"`
|
||||
CompletedAt *time.Time `json:"completed_at,omitempty"`
|
||||
Status string `json:"status"` // "pending", "processing", "completed", "failed"
|
||||
Result *ContextResult `json:"result,omitempty"`
|
||||
ErrorMessage string `json:"error_message,omitempty"`
|
||||
}
|
||||
|
||||
// ContextResult holds the result of context generation
|
||||
type ContextResult struct {
|
||||
Context string `json:"context"`
|
||||
Metadata map[string]interface{} `json:"metadata"`
|
||||
GeneratedAt time.Time `json:"generated_at"`
|
||||
GenerationTime time.Duration `json:"generation_time"`
|
||||
CacheUsed bool `json:"cache_used"`
|
||||
Quality float64 `json:"quality"` // 0.0-1.0
|
||||
TokenCount int `json:"token_count"`
|
||||
}
|
||||
|
||||
// ContextGenerationJob represents an active context generation job
|
||||
type ContextGenerationJob struct {
|
||||
JobID string `json:"job_id"`
|
||||
Request *ContextGenerationRequest `json:"request"`
|
||||
StartedAt time.Time `json:"started_at"`
|
||||
WorkerID string `json:"worker_id"`
|
||||
Status string `json:"status"`
|
||||
Progress float64 `json:"progress"` // 0.0-1.0
|
||||
ETA *time.Time `json:"eta,omitempty"`
|
||||
}
|
||||
|
||||
// ContextLeadershipCallbacks defines callbacks for context leadership events
|
||||
type ContextLeadershipCallbacks struct {
|
||||
OnBecomeContextLeader func(ctx context.Context, term int64) error
|
||||
OnLoseContextLeadership func(ctx context.Context, reason string) error
|
||||
OnContextLeaderChanged func(oldLeader, newLeader string, term int64)
|
||||
OnContextGenerationStarted func(nodeID string)
|
||||
OnContextGenerationStopped func(nodeID string, reason string)
|
||||
OnContextError func(err error, severity ErrorSeverity)
|
||||
OnContextRequestReceived func(req *ContextGenerationRequest)
|
||||
OnContextRequestCompleted func(req *ContextGenerationRequest, result *ContextResult)
|
||||
}
|
||||
|
||||
// ErrorSeverity defines the severity levels for context errors
|
||||
type ErrorSeverity string
|
||||
|
||||
const (
|
||||
ErrorSeverityLow ErrorSeverity = "low"
|
||||
ErrorSeverityMedium ErrorSeverity = "medium"
|
||||
ErrorSeverityHigh ErrorSeverity = "high"
|
||||
ErrorSeverityCritical ErrorSeverity = "critical"
|
||||
)
|
||||
|
||||
// ContextFailoverState holds state for context leadership failover
|
||||
type ContextFailoverState struct {
|
||||
LeaderID string `json:"leader_id"`
|
||||
Term int64 `json:"term"`
|
||||
TransferTime time.Time `json:"transfer_time"`
|
||||
StateVersion int64 `json:"state_version"`
|
||||
QueuedRequests []*ContextGenerationRequest `json:"queued_requests"`
|
||||
ActiveJobs map[string]*ContextGenerationJob `json:"active_jobs"`
|
||||
ManagerConfig *ManagerConfig `json:"manager_config"`
|
||||
ClusterState *ContextClusterState `json:"cluster_state"`
|
||||
HealthSnapshot *ContextClusterHealth `json:"health_snapshot"`
|
||||
Checksum string `json:"checksum"`
|
||||
}
|
||||
|
||||
// ManagerConfig holds configuration for the context manager
|
||||
type ManagerConfig struct {
|
||||
MaxConcurrentJobs int `json:"max_concurrent_jobs"`
|
||||
DefaultTimeout time.Duration `json:"default_timeout"`
|
||||
EnableCaching bool `json:"enable_caching"`
|
||||
CacheTTL time.Duration `json:"cache_ttl"`
|
||||
RetryAttempts int `json:"retry_attempts"`
|
||||
WorkerPoolSize int `json:"worker_pool_size"`
|
||||
}
|
||||
|
||||
// DefaultManagerConfig returns default manager configuration
|
||||
func DefaultManagerConfig() *ManagerConfig {
|
||||
return &ManagerConfig{
|
||||
MaxConcurrentJobs: 10,
|
||||
DefaultTimeout: 60 * time.Second,
|
||||
EnableCaching: true,
|
||||
CacheTTL: 5 * time.Minute,
|
||||
RetryAttempts: 3,
|
||||
WorkerPoolSize: 5,
|
||||
}
|
||||
}
|
||||
|
||||
// ContextClusterState holds the state of the context generation cluster
|
||||
type ContextClusterState struct {
|
||||
Nodes map[string]*ContextNodeInfo `json:"nodes"`
|
||||
TotalCapacity int `json:"total_capacity"`
|
||||
AvailableCapacity int `json:"available_capacity"`
|
||||
LoadBalance float64 `json:"load_balance"`
|
||||
LastUpdate time.Time `json:"last_update"`
|
||||
}
|
||||
|
||||
// ContextNodeInfo holds information about a node in the context cluster
|
||||
type ContextNodeInfo struct {
|
||||
NodeID string `json:"node_id"`
|
||||
Capacity int `json:"capacity"`
|
||||
ActiveJobs int `json:"active_jobs"`
|
||||
LastSeen time.Time `json:"last_seen"`
|
||||
HealthStatus string `json:"health_status"`
|
||||
AverageLatency time.Duration `json:"average_latency"`
|
||||
SuccessRate float64 `json:"success_rate"`
|
||||
}
|
||||
|
||||
// ContextClusterHealth represents the overall health of the context generation cluster
|
||||
type ContextClusterHealth struct {
|
||||
TotalNodes int `json:"total_nodes"`
|
||||
HealthyNodes int `json:"healthy_nodes"`
|
||||
UnhealthyNodes int `json:"unhealthy_nodes"`
|
||||
GenerationActive bool `json:"generation_active"`
|
||||
AverageLatency time.Duration `json:"average_latency"`
|
||||
SuccessRate float64 `json:"success_rate"`
|
||||
OverallHealthScore float64 `json:"overall_health_score"` // 0.0-1.0
|
||||
LastElection time.Time `json:"last_election"`
|
||||
NextHealthCheck time.Time `json:"next_health_check"`
|
||||
CapacityUtilization float64 `json:"capacity_utilization"`
|
||||
ErrorRate float64 `json:"error_rate"`
|
||||
Issues []string `json:"issues,omitempty"`
|
||||
}
|
||||
|
||||
// ContextStateValidation holds the results of context state validation
|
||||
type ContextStateValidation struct {
|
||||
Valid bool `json:"valid"`
|
||||
ValidatedAt time.Time `json:"validated_at"`
|
||||
ValidatedBy string `json:"validated_by"`
|
||||
ValidationDuration time.Duration `json:"validation_duration"`
|
||||
ChecksumValid bool `json:"checksum_valid"`
|
||||
TimestampValid bool `json:"timestamp_valid"`
|
||||
VersionConsistent bool `json:"version_consistent"`
|
||||
QueueStateValid bool `json:"queue_state_valid"`
|
||||
ClusterStateValid bool `json:"cluster_state_valid"`
|
||||
ConfigValid bool `json:"config_valid"`
|
||||
RequiresRecovery bool `json:"requires_recovery"`
|
||||
Issues []string `json:"issues,omitempty"`
|
||||
RecoverySteps []string `json:"recovery_steps,omitempty"`
|
||||
}
|
||||
|
||||
// LeaderInfo contains information about the current context leader
|
||||
type LeaderInfo struct {
|
||||
NodeID string `json:"node_id"`
|
||||
Term int64 `json:"term"`
|
||||
ElectedAt time.Time `json:"elected_at"`
|
||||
}
|
||||
@@ -39,15 +39,13 @@ func (psa *PubSubAdapter) SubscribeToTopic(topic string, handler func([]byte)) e
|
||||
|
||||
// PublishToTopic implements PubSubInterface for health checks
|
||||
func (psa *PubSubAdapter) PublishToTopic(topic string, data interface{}) error {
|
||||
// Convert data to JSON for publishing
|
||||
jsonData, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Use the existing pubsub publish mechanism
|
||||
// Note: This would need to be adapted to the actual pubsub interface
|
||||
return psa.pubsub.PublishBzzzMessage(pubsub.MessageType(topic), data)
|
||||
// Convert data to proper map format
|
||||
dataMap, ok := data.(map[string]interface{})
|
||||
if !ok {
|
||||
dataMap = map[string]interface{}{"data": data}
|
||||
}
|
||||
return psa.pubsub.PublishBzzzMessage(pubsub.MessageType(topic), dataMap)
|
||||
}
|
||||
|
||||
// DHTAdapter adapts various DHT implementations to the health check interface
|
||||
@@ -73,7 +71,7 @@ func (da *DHTAdapter) PutValue(ctx context.Context, key string, value []byte) er
|
||||
|
||||
if encryptedDHT, ok := da.dht.(*dht.EncryptedDHTStorage); ok {
|
||||
// For encrypted storage, we need to adapt the interface
|
||||
return encryptedDHT.StoreContent(ctx, key, value)
|
||||
return encryptedDHT.StoreUCXLContent(key, value, "system", "test")
|
||||
}
|
||||
|
||||
// If we can't identify the type, return an error
|
||||
@@ -93,7 +91,7 @@ func (da *DHTAdapter) GetValue(ctx context.Context, key string) ([]byte, error)
|
||||
|
||||
if encryptedDHT, ok := da.dht.(*dht.EncryptedDHTStorage); ok {
|
||||
// For encrypted storage, we need to adapt the interface
|
||||
content, err := encryptedDHT.RetrieveContent(ctx, key)
|
||||
content, _, err := encryptedDHT.RetrieveUCXLContent(key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package health
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"math"
|
||||
"sync"
|
||||
|
||||
@@ -7,14 +7,18 @@ import (
|
||||
)
|
||||
|
||||
// Static files embedded at build time
|
||||
//go:embed *
|
||||
//go:embed static
|
||||
//go:embed static/_next
|
||||
//go:embed static/_next/static
|
||||
//go:embed static/_next/static/css
|
||||
//go:embed static/_next/static/chunks
|
||||
var staticFiles embed.FS
|
||||
|
||||
// GetWebUIHandler returns HTTP handler for embedded web UI
|
||||
func GetWebUIHandler() http.Handler {
|
||||
// Use the embedded files directly (no static subdirectory)
|
||||
staticFS := staticFiles
|
||||
_, err := staticFiles.ReadFile("index.html")
|
||||
_, err := staticFiles.ReadFile("static/index.html")
|
||||
if err != nil {
|
||||
// Fallback to empty filesystem if no static files
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -43,7 +47,7 @@ func IsEmbeddedFileAvailable(path string) bool {
|
||||
if path == "" {
|
||||
path = "index.html"
|
||||
}
|
||||
_, err := staticFiles.ReadFile(path)
|
||||
_, err := staticFiles.ReadFile("static/" + path)
|
||||
return err == nil
|
||||
}
|
||||
|
||||
@@ -54,7 +58,7 @@ func ServeEmbeddedFile(w http.ResponseWriter, r *http.Request, path string) {
|
||||
path = "index.html"
|
||||
}
|
||||
|
||||
content, err := staticFiles.ReadFile(path)
|
||||
content, err := staticFiles.ReadFile("static/" + path)
|
||||
if err != nil {
|
||||
http.NotFound(w, r)
|
||||
return
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-e87e5963ec1b8011.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
||||
@@ -1 +0,0 @@
|
||||
self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
|
||||
@@ -1 +0,0 @@
|
||||
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-e87e5963ec1b8011.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
||||
@@ -1 +0,0 @@
|
||||
self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
|
||||
@@ -1 +0,0 @@
|
||||
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-e87e5963ec1b8011.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
||||
@@ -1 +0,0 @@
|
||||
self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
|
||||
@@ -1 +0,0 @@
|
||||
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-e87e5963ec1b8011.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
||||
@@ -1 +0,0 @@
|
||||
self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{3489:function(n,e,u){Promise.resolve().then(u.t.bind(u,2445,23))},2445:function(){}},function(n){n.O(0,[971,938,744],function(){return n(n.s=3489)}),_N_E=n.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{3489:function(n,e,u){Promise.resolve().then(u.t.bind(u,2445,23))},2445:function(){}},function(n){n.O(0,[971,938,744],function(){return n(n.s=3489)}),_N_E=n.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{829:function(e,t,r){Promise.resolve().then(r.bind(r,9174)),Promise.resolve().then(r.t.bind(r,2445,23))},9174:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return l}});var n=r(7437),s=r(2265);let o=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z"}))}),a=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z"}))});function l(){let[e,t]=(0,s.useState)(!0);(0,s.useEffect)(()=>{let e=localStorage.getItem("chorus-theme"),n=!e||"dark"===e;t(n),r(n)},[]);let r=e=>{let t=document.documentElement;e?(t.classList.add("dark"),t.classList.remove("light")):(t.classList.remove("dark"),t.classList.add("light"))};return(0,n.jsx)("button",{onClick:()=>{let n=!e;t(n),r(n),localStorage.setItem("chorus-theme",n?"dark":"light")},className:"btn-text flex items-center space-x-2 p-2 rounded-md transition-colors duration-200","aria-label":"Switch to ".concat(e?"light":"dark"," theme"),children:e?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Light"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Dark"})]})})}},2445:function(){},622:function(e,t,r){"use strict";var n=r(2265),s=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,l=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,r){var n,o={},c=null,u=null;for(n in void 0!==r&&(c=""+r),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)a.call(t,n)&&!i.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:s,type:e,key:c,ref:u,props:o,_owner:l.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},7437:function(e,t,r){"use strict";e.exports=r(622)}},function(e){e.O(0,[971,938,744],function(){return e(e.s=829)}),_N_E=e.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{3489:function(n,e,u){Promise.resolve().then(u.t.bind(u,2445,23))},2445:function(){}},function(n){n.O(0,[971,938,744],function(){return n(n.s=3489)}),_N_E=n.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{3489:function(n,e,u){Promise.resolve().then(u.t.bind(u,2445,23))},2445:function(){}},function(n){n.O(0,[971,938,744],function(){return n(n.s=3489)}),_N_E=n.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{3489:function(n,e,u){Promise.resolve().then(u.t.bind(u,2445,23))},2445:function(){}},function(n){n.O(0,[971,938,744],function(){return n(n.s=3489)}),_N_E=n.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{829:function(e,t,r){Promise.resolve().then(r.bind(r,9174)),Promise.resolve().then(r.t.bind(r,2445,23))},9174:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return l}});var n=r(7437),s=r(2265);let o=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z"}))}),a=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z"}))});function l(){let[e,t]=(0,s.useState)(!0);(0,s.useEffect)(()=>{let e=localStorage.getItem("chorus-theme"),n=!e||"dark"===e;t(n),r(n)},[]);let r=e=>{let t=document.documentElement;e?(t.classList.add("dark"),t.classList.remove("light")):(t.classList.remove("dark"),t.classList.add("light"))};return(0,n.jsx)("button",{onClick:()=>{let n=!e;t(n),r(n),localStorage.setItem("chorus-theme",n?"dark":"light")},className:"btn-text flex items-center space-x-2 p-2 rounded-md transition-colors duration-200","aria-label":"Switch to ".concat(e?"light":"dark"," theme"),children:e?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Light"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Dark"})]})})}},2445:function(){},622:function(e,t,r){"use strict";var n=r(2265),s=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,l=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,r){var n,o={},c=null,u=null;for(n in void 0!==r&&(c=""+r),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)a.call(t,n)&&!i.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:s,type:e,key:c,ref:u,props:o,_owner:l.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},7437:function(e,t,r){"use strict";e.exports=r(622)}},function(e){e.O(0,[971,938,744],function(){return e(e.s=829)}),_N_E=e.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{829:function(e,t,r){Promise.resolve().then(r.bind(r,9174)),Promise.resolve().then(r.t.bind(r,2445,23))},9174:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return l}});var n=r(7437),s=r(2265);let o=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z"}))}),a=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z"}))});function l(){let[e,t]=(0,s.useState)(!0);(0,s.useEffect)(()=>{let e=localStorage.getItem("chorus-theme"),n=!e||"dark"===e;t(n),r(n)},[]);let r=e=>{let t=document.documentElement;e?(t.classList.add("dark"),t.classList.remove("light")):(t.classList.remove("dark"),t.classList.add("light"))};return(0,n.jsx)("button",{onClick:()=>{let n=!e;t(n),r(n),localStorage.setItem("chorus-theme",n?"dark":"light")},className:"btn-text flex items-center space-x-2 p-2 rounded-md transition-colors duration-200","aria-label":"Switch to ".concat(e?"light":"dark"," theme"),children:e?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Light"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Dark"})]})})}},2445:function(){},622:function(e,t,r){"use strict";var n=r(2265),s=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,l=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,r){var n,o={},c=null,u=null;for(n in void 0!==r&&(c=""+r),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)a.call(t,n)&&!i.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:s,type:e,key:c,ref:u,props:o,_owner:l.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},7437:function(e,t,r){"use strict";e.exports=r(622)}},function(e){e.O(0,[971,938,744],function(){return e(e.s=829)}),_N_E=e.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{829:function(e,t,r){Promise.resolve().then(r.bind(r,9174)),Promise.resolve().then(r.t.bind(r,2445,23))},9174:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return l}});var n=r(7437),s=r(2265);let o=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z"}))}),a=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z"}))});function l(){let[e,t]=(0,s.useState)(!0);(0,s.useEffect)(()=>{let e=localStorage.getItem("chorus-theme"),n=!e||"dark"===e;t(n),r(n)},[]);let r=e=>{let t=document.documentElement;e?(t.classList.add("dark"),t.classList.remove("light")):(t.classList.remove("dark"),t.classList.add("light"))};return(0,n.jsx)("button",{onClick:()=>{let n=!e;t(n),r(n),localStorage.setItem("chorus-theme",n?"dark":"light")},className:"btn-text flex items-center space-x-2 p-2 rounded-md transition-colors duration-200","aria-label":"Switch to ".concat(e?"light":"dark"," theme"),children:e?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Light"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Dark"})]})})}},2445:function(){},622:function(e,t,r){"use strict";var n=r(2265),s=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,l=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,r){var n,o={},c=null,u=null;for(n in void 0!==r&&(c=""+r),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)a.call(t,n)&&!i.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:s,type:e,key:c,ref:u,props:o,_owner:l.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},7437:function(e,t,r){"use strict";e.exports=r(622)}},function(e){e.O(0,[971,938,744],function(){return e(e.s=829)}),_N_E=e.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{829:function(e,t,r){Promise.resolve().then(r.bind(r,9174)),Promise.resolve().then(r.t.bind(r,2445,23))},9174:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return l}});var n=r(7437),s=r(2265);let o=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z"}))}),a=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z"}))});function l(){let[e,t]=(0,s.useState)(!0);(0,s.useEffect)(()=>{let e=localStorage.getItem("chorus-theme"),n=!e||"dark"===e;t(n),r(n)},[]);let r=e=>{let t=document.documentElement;e?(t.classList.add("dark"),t.classList.remove("light")):(t.classList.remove("dark"),t.classList.add("light"))};return(0,n.jsx)("button",{onClick:()=>{let n=!e;t(n),r(n),localStorage.setItem("chorus-theme",n?"dark":"light")},className:"btn-text flex items-center space-x-2 p-2 rounded-md transition-colors duration-200","aria-label":"Switch to ".concat(e?"light":"dark"," theme"),children:e?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Light"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Dark"})]})})}},2445:function(){},622:function(e,t,r){"use strict";var n=r(2265),s=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,l=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,r){var n,o={},c=null,u=null;for(n in void 0!==r&&(c=""+r),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)a.call(t,n)&&!i.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:s,type:e,key:c,ref:u,props:o,_owner:l.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},7437:function(e,t,r){"use strict";e.exports=r(622)}},function(e){e.O(0,[971,938,744],function(){return e(e.s=829)}),_N_E=e.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{3489:function(n,e,u){Promise.resolve().then(u.t.bind(u,2445,23))},2445:function(){}},function(n){n.O(0,[971,938,744],function(){return n(n.s=3489)}),_N_E=n.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{3489:function(n,e,u){Promise.resolve().then(u.t.bind(u,2445,23))},2445:function(){}},function(n){n.O(0,[971,938,744],function(){return n(n.s=3489)}),_N_E=n.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{829:function(e,t,r){Promise.resolve().then(r.bind(r,9174)),Promise.resolve().then(r.t.bind(r,2445,23))},9174:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return l}});var n=r(7437),s=r(2265);let o=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z"}))}),a=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z"}))});function l(){let[e,t]=(0,s.useState)(!0);(0,s.useEffect)(()=>{let e=localStorage.getItem("chorus-theme"),n=!e||"dark"===e;t(n),r(n)},[]);let r=e=>{let t=document.documentElement;e?(t.classList.add("dark"),t.classList.remove("light")):(t.classList.remove("dark"),t.classList.add("light"))};return(0,n.jsx)("button",{onClick:()=>{let n=!e;t(n),r(n),localStorage.setItem("chorus-theme",n?"dark":"light")},className:"btn-text flex items-center space-x-2 p-2 rounded-md transition-colors duration-200","aria-label":"Switch to ".concat(e?"light":"dark"," theme"),children:e?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Light"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Dark"})]})})}},2445:function(){},622:function(e,t,r){"use strict";var n=r(2265),s=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,l=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,r){var n,o={},c=null,u=null;for(n in void 0!==r&&(c=""+r),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)a.call(t,n)&&!i.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:s,type:e,key:c,ref:u,props:o,_owner:l.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},7437:function(e,t,r){"use strict";e.exports=r(622)}},function(e){e.O(0,[971,938,744],function(){return e(e.s=829)}),_N_E=e.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{829:function(e,t,r){Promise.resolve().then(r.bind(r,9174)),Promise.resolve().then(r.t.bind(r,2445,23))},9174:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return l}});var n=r(7437),s=r(2265);let o=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z"}))}),a=s.forwardRef(function({title:e,titleId:t,...r},n){return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?s.createElement("title",{id:t},e):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z"}))});function l(){let[e,t]=(0,s.useState)(!0);(0,s.useEffect)(()=>{let e=localStorage.getItem("chorus-theme"),n=!e||"dark"===e;t(n),r(n)},[]);let r=e=>{let t=document.documentElement;e?(t.classList.add("dark"),t.classList.remove("light")):(t.classList.remove("dark"),t.classList.add("light"))};return(0,n.jsx)("button",{onClick:()=>{let n=!e;t(n),r(n),localStorage.setItem("chorus-theme",n?"dark":"light")},className:"btn-text flex items-center space-x-2 p-2 rounded-md transition-colors duration-200","aria-label":"Switch to ".concat(e?"light":"dark"," theme"),children:e?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Light"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"text-xs",children:"Dark"})]})})}},2445:function(){},622:function(e,t,r){"use strict";var n=r(2265),s=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,l=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,r){var n,o={},c=null,u=null;for(n in void 0!==r&&(c=""+r),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)a.call(t,n)&&!i.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:s,type:e,key:c,ref:u,props:o,_owner:l.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},7437:function(e,t,r){"use strict";e.exports=r(622)}},function(e){e.O(0,[971,938,744],function(){return e(e.s=829)}),_N_E=e.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{},function(n){n.O(0,[876,644,971,938,744],function(){return n(n.s=9644)}),_N_E=n.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{},function(n){n.O(0,[32,644,971,938,744],function(){return n(n.s=9644)}),_N_E=n.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{},function(n){n.O(0,[271,644,971,938,744],function(){return n(n.s=9644)}),_N_E=n.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[413],{},function(n){n.O(0,[32,644,971,938,744],function(){return n(n.s=9644)}),_N_E=n.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[413],{},function(n){n.O(0,[271,644,971,938,744],function(){return n(n.s=9644)}),_N_E=n.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[413],{},function(n){n.O(0,[876,644,971,938,744],function(){return n(n.s=9644)}),_N_E=n.O()}]);
|
||||
@@ -1 +1 @@
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/458951dcfde0733b.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/6c40c960f731ee08.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
@@ -1 +1 @@
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/e7d229fc2fa2f7d2.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/5bb46134f1084985.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
@@ -1 +1 @@
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/b323f1e658a1651b.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/c333362ca3d3f11a.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
@@ -1 +1 @@
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/e8d1974119224823.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/f9136ca1af564792.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
@@ -0,0 +1 @@
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/df30304560970926.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
@@ -1 +0,0 @@
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/4362293ef85876c3.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
@@ -0,0 +1 @@
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/89a5e633b3793908.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
@@ -0,0 +1 @@
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/76320e770161e74a.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
@@ -1 +0,0 @@
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/fe71c2b67ec40a59.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
@@ -1 +0,0 @@
|
||||
!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var r=l[e]={exports:{}},n=!0;try{a[e](r,r.exports,s),n=!1}finally{n&&delete l[e]}return r.exports}s.m=a,e=[],s.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var r=e[u][0],n=e[u][1],o=e[u][2],c=!0,f=0;f<r.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](r[f])})?r.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=n();void 0!==a&&(t=a)}}return t},r=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,n){if(1&n&&(e=this(e)),8&n||"object"==typeof e&&e&&(4&n&&e.__esModule||16&n&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,r({}),r([]),r(r)];for(var i=2&n&&e;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,r){return s.f[r](e,t),t},[]))},s.u=function(e){},s.miniCssF=function(e){return"static/css/e7400b4f5e121ee9.css"},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n={},o="_N_E:",s.l=function(e,t,r,u){if(n[e]){n[e].push(t);return}if(void 0!==r)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+r),i.src=s.tu(e)),n[e]=[t];var d=function(t,r){i.onerror=i.onload=null,clearTimeout(p);var o=n[e];if(delete n[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(r)}),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/setup/_next/",i={272:0},s.f.j=function(e,t){var r=s.o(i,e)?i[e]:void 0;if(0!==r){if(r)t.push(r[2]);else if(272!=e){var n=new Promise(function(t,n){r=i[e]=[t,n]});t.push(r[2]=n);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",u.name="ChunkLoadError",u.type=n,u.request=o,r[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var r,n,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(r in u)s.o(u,r)&&(s.m[r]=u[r]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)n=o[f],s.o(i,n)&&i[n]&&i[n][0](),i[n]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
3
pkg/web/static/_next/static/css/5bb46134f1084985.css
Normal file
3
pkg/web/static/_next/static/css/5bb46134f1084985.css
Normal file
File diff suppressed because one or more lines are too long
3
pkg/web/static/_next/static/css/6c40c960f731ee08.css
Normal file
3
pkg/web/static/_next/static/css/6c40c960f731ee08.css
Normal file
File diff suppressed because one or more lines are too long
3
pkg/web/static/_next/static/css/76320e770161e74a.css
Normal file
3
pkg/web/static/_next/static/css/76320e770161e74a.css
Normal file
File diff suppressed because one or more lines are too long
3
pkg/web/static/_next/static/css/89a5e633b3793908.css
Normal file
3
pkg/web/static/_next/static/css/89a5e633b3793908.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
3
pkg/web/static/_next/static/css/c333362ca3d3f11a.css
Normal file
3
pkg/web/static/_next/static/css/c333362ca3d3f11a.css
Normal file
File diff suppressed because one or more lines are too long
3
pkg/web/static/_next/static/css/df30304560970926.css
Normal file
3
pkg/web/static/_next/static/css/df30304560970926.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
3
pkg/web/static/_next/static/css/f9136ca1af564792.css
Normal file
3
pkg/web/static/_next/static/css/f9136ca1af564792.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user