<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>搞笑技能五子棋</title>
    <style>
        body {
            display: flex;
            flex-direction: column;
            align-items: center;
            font-family: 'Comic Sans MS', cursive, sans-serif;
            background-color: #f5f5dc;
            margin: 0;
            padding: 20px;
            background-image: url('https://img.freepik.com/free-vector/hand-drawn-abstract-doodle-pattern_23-2149098546.jpg');
            background-size: 30%;
            background-opacity: 0.1;
        }
        
        h1 {
            color: #FF6B6B;
            margin-bottom: 10px;
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
            font-size: 2.5em;
        }
        
        #game-container {
            display: flex;
            gap: 20px;
            margin-bottom: 20px;
        }
        
        #game-info {
            margin-bottom: 15px;
            font-size: 20px;
            color: #333;
            background-color: #FFF9C4;
            padding: 10px 20px;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        }
        
        #board {
            display: grid;
            grid-template-columns: repeat(15, 30px);
            grid-template-rows: repeat(15, 30px);
            background-color: #deb887;
            border: 4px solid #8b4513;
            position: relative;
            box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
        }
        
        .cell {
            width: 30px;
            height: 30px;
            box-sizing: border-box;
            position: relative;
            cursor: pointer;
            transition: all 0.2s;
        }
        
        .cell:hover {
            background-color: rgba(255, 255, 255, 0.3);
        }
        
        .cell::before, .cell::after {
            content: '';
            position: absolute;
            background-color: #000;
        }
        
        .cell::before {
            width: 100%;
            height: 1px;
            top: 50%;
            left: 0;
            transform: translateY(-50%);
        }
        
        .cell::after {
            width: 1px;
            height: 100%;
            left: 50%;
            top: 0;
            transform: translateX(-50%);
        }
        
        .stone {
            position: absolute;
            width: 26px;
            height: 26px;
            border-radius: 50%;
            top: 2px;
            left: 2px;
            z-index: 1;
            transition: all 0.3s;
        }
        
        .black {
            background: radial-gradient(circle at 30% 30%, #666, #000);
            box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.8);
        }
        
        .white {
            background: radial-gradient(circle at 30% 30%, #fff, #ccc);
            box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5);
        }
        
        #skills-panel {
            width: 200px;
            background-color: #E3F2FD;
            padding: 15px;
            border-radius: 10px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        }
        
        .skill-card {
            background-color: white;
            border-radius: 8px;
            padding: 10px;
            margin-bottom: 10px;
            cursor: pointer;
            transition: all 0.3s;
            border: 2px dashed transparent;
            text-align: center;
            font-size: 14px;
        }
        
        .skill-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
        }
        
        .skill-card.active {
            border-color: #FF9800;
            background-color: #FFF9C4;
        }
        
        .skill-card.disabled {
            opacity: 0.5;
            cursor: not-allowed;
        }
        
        #restart-btn {
            margin-top: 20px;
            padding: 12px 25px;
            font-size: 18px;
            background-color: #FF6B6B;
            color: white;
            border: none;
            border-radius: 50px;
            cursor: pointer;
            transition: all 0.3s;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
        }
        
        #restart-btn:hover {
            background-color: #FF5252;
            transform: scale(1.05);
        }
        
        .effect-text {
            position: absolute;
            font-size: 24px;
            font-weight: bold;
            color: #FF4081;
            z-index: 10;
            animation: floatUp 1.5s forwards;
            pointer-events: none;
        }
        
        @keyframes floatUp {
            0% { transform: translateY(0); opacity: 1; }
            100% { transform: translateY(-50px); opacity: 0; }
        }
        
        .bomb {
            background-color: #FF5722 !important;
            border-radius: 50%;
            animation: explode 0.5s forwards;
        }
        
        @keyframes explode {
            0% { transform: scale(1); opacity: 1; }
            100% { transform: scale(3); opacity: 0; }
        }
        
        .rainbow {
            animation: rainbow 2s linear infinite;
        }
        
        @keyframes rainbow {
            0% { background-color: red; }
            14% { background-color: orange; }
            28% { background-color: yellow; }
            42% { background-color: green; }
            57% { background-color: blue; }
            71% { background-color: indigo; }
            85% { background-color: violet; }
            100% { background-color: red; }
        }
        
        .confetti {
            position: absolute;
            width: 10px;
            height: 10px;
            background-color: #f00;
            border-radius: 50%;
            animation: confettiFall 3s linear forwards;
            z-index: 100;
        }
        
        @keyframes confettiFall {
            0% { transform: translateY(-100px) rotate(0deg); opacity: 1; }
            100% { transform: translateY(600px) rotate(360deg); opacity: 0; }
        }
    </style>
</head>
<body>
    <h1>✨搞笑技能五子棋✨</h1>
    <div id="game-info">黑方回合 - 请选择技能或下棋</div>
    
    <div id="game-container">
        <div id="board"></div>
        <div id="skills-panel">
            <h3 style="text-align: center; color: #5E35B1;">技能卡牌</h3>
            <div class="skill-card" data-skill="bomb">💣 炸弹棋</div>
            <div class="skill-card" data-skill="swap">🔄 乾坤大挪移</div>
            <div class="skill-card" data-skill="rainbow">🌈 彩虹棋</div>
            <div class="skill-card" data-skill="steal">✋ 偷天换日</div>
            <div class="skill-card" data-skill="reverse">🔄 时光倒流</div>
            <div class="skill-card" data-skill="random">🎲 随机混乱</div>
        </div>
    </div>
    
    <button id="restart-btn">重新开始游戏</button>

    <script>
        document.addEventListener('DOMContentLoaded', () => {
            const board = document.getElementById('board');
            const gameInfo = document.getElementById('game-info');
            const restartBtn = document.getElementById('restart-btn');
            const skillCards = document.querySelectorAll('.skill-card');
            
            let currentPlayer = 'black'; // 'black' 或 'white'
            let gameOver = false;
            let boardState = Array(15).fill().map(() => Array(15).fill(null));
            let moveHistory = [];
            let selectedSkill = null;
            let skillsUsed = {
                black: { bomb: false, swap: false, rainbow: false, steal: false, reverse: false, random: false },
                white: { bomb: false, swap: false, rainbow: false, steal: false, reverse: false, random: false }
            };
            
            // 初始化棋盘
            function initBoard() {
                board.innerHTML = '';
                for (let i = 0; i < 15; i++) {
                    for (let j = 0; j < 15; j++) {
                        const cell = document.createElement('div');
                        cell.className = 'cell';
                        cell.dataset.row = i;
                        cell.dataset.col = j;
                        cell.addEventListener('click', handleCellClick);
                        board.appendChild(cell);
                    }
                }
            }
            
            // 处理点击事件
            function handleCellClick(e) {
                if (gameOver) return;
                
                const row = parseInt(e.target.dataset.row);
                const col = parseInt(e.target.dataset.col);
                
                if (boardState[row][col] !== null) return;
                
                // 如果有选中的技能,先使用技能
                if (selectedSkill) {
                    useSkill(selectedSkill, row, col);
                    selectedSkill = null;
                    updateSkillCards();
                    return;
                }
                
                // 普通下棋
                placeStone(row, col, currentPlayer);
                
                // 检查胜利
                if (checkWin(row, col, currentPlayer)) {
                    showWinEffect(currentPlayer);
                    gameInfo.textContent = `${currentPlayer === 'black' ? '黑方' : '白方'}获胜!`;
                    gameOver = true;
                    return;
                }
                
                // 切换玩家
                switchPlayer();
            }
            
            // 放置棋子
            function placeStone(row, col, player, isSpecial = false) {
                boardState[row][col] = player;
                moveHistory.push({row, col, player});
                
                const cell = document.querySelector(`.cell[data-row="${row}"][data-col="${col}"]`);
                const stone = document.createElement('div');
                stone.className = `stone ${player}`;
                if (isSpecial) stone.classList.add('special');
                cell.appendChild(stone);
                
                // 添加动画效果
                if (!isSpecial) {
                    const effect = document.createElement('div');
                    effect.className = 'effect-text';
                    effect.textContent = player === 'black' ? '啪!' : '叮!';
                    effect.style.left = `${col * 30 + 15}px`;
                    effect.style.top = `${row * 30 + 15}px`;
                    board.appendChild(effect);
                    
                    setTimeout(() => {
                        effect.remove();
                    }, 1500);
                }
            }
            
            // 检查胜利条件
            function checkWin(row, col, player) {
                const directions = [
                    [0, 1],   // 水平
                    [1, 0],   // 垂直
                    [1, 1],   // 对角线
                    [1, -1]   // 反对角线
                ];
                
                for (const [dx, dy] of directions) {
                    let count = 1;
                    
                    // 正向检查
                    for (let i = 1; i <= 4; i++) {
                        const newRow = row + i * dx;
                        const newCol = col + i * dy;
                        
                        if (newRow < 0 || newRow >= 15 || newCol < 0 || newCol >= 15 || 
                            boardState[newRow][newCol] !== player) {
                            break;
                        }
                        count++;
                    }
                    
                    // 反向检查
                    for (let i = 1; i <= 4; i++) {
                        const newRow = row - i * dx;
                        const newCol = col - i * dy;
                        
                        if (newRow < 0 || newRow >= 15 || newCol < 0 || newCol >= 15 || 
                            boardState[newRow][newCol] !== player) {
                            break;
                        }
                        count++;
                    }
                    
                    if (count >= 5) {
                        return true;
                    }
                }
                
                return false;
            }
            
            // 切换玩家
            function switchPlayer() {
                currentPlayer = currentPlayer === 'black' ? 'white' : 'black';
                gameInfo.textContent = `${currentPlayer === 'black' ? '黑方' : '白方'}回合 - 请选择技能或下棋`;
                updateSkillCards();
            }
            
            // 使用技能
            function useSkill(skill, row, col) {
                if (skillsUsed[currentPlayer][skill]) {
                    showMessage('这个技能已经用过了!');
                    return;
                }
                
                skillsUsed[currentPlayer][skill] = true;
                
                switch(skill) {
                    case 'bomb':
                        useBombSkill(row, col);
                        break;
                    case 'swap':
                        useSwapSkill();
                        break;
                    case 'rainbow':
                        useRainbowSkill(row, col);
                        break;
                    case 'steal':
                        useStealSkill(row, col);
                        break;
                    case 'reverse':
                        useReverseSkill();
                        break;
                    case 'random':
                        useRandomSkill();
                        break;
                }
                
                // 使用技能后也要切换玩家
                switchPlayer();
            }
            
            // 炸弹技能 - 放置一个炸弹棋,爆炸后清除周围棋子
            function useBombSkill(row, col) {
                placeStone(row, col, currentPlayer, true);
                
                // 爆炸效果
                const cell = document.querySelector(`.cell[data-row="${row}"][data-col="${col}"] .stone`);
                cell.classList.add('bomb');
                
                setTimeout(() => {
                    // 清除周围3x3区域的棋子
                    for (let i = Math.max(0, row-1); i <= Math.min(14, row+1); i++) {
                        for (let j = Math.max(0, col-1); j <= Math.min(14, col+1); j++) {
                            if (boardState[i][j] !== null) {
                                boardState[i][j] = null;
                                const targetCell = document.querySelector(`.cell[data-row="${i}"][data-col="${j}"]`);
                                targetCell.innerHTML = '';
                            }
                        }
                    }
                    
                    // 爆炸动画
                    for (let i = 0; i < 30; i++) {
                        createConfetti(row, col);
                    }
                    
                    showMessage('💥 炸弹爆炸了!');
                }, 500);
            }
            
            // 乾坤大挪移 - 交换双方所有棋子的颜色
            function useSwapSkill() {
                for (let i = 0; i < 15; i++) {
                    for (let j = 0; j < 15; j++) {
                        if (boardState[i][j] === 'black') {
                            boardState[i][j] = 'white';
                            const stone = document.querySelector(`.cell[data-row="${i}"][data-col="${j}"] .stone`);
                            if (stone) {
                                stone.classList.remove('black');
                                stone.classList.add('white');
                            }
                        } else if (boardState[i][j] === 'white') {
                            boardState[i][j] = 'black';
                            const stone = document.querySelector(`.cell[data-row="${i}"][data-col="${j}"] .stone`);
                            if (stone) {
                                stone.classList.remove('white');
                                stone.classList.add('black');
                            }
                        }
                    }
                }
                
                showMessage('🌀 乾坤大挪移!棋子颜色互换了!');
                
                // 交换后检查是否有玩家获胜
                for (let i = 0; i < 15; i++) {
                    for (let j = 0; j < 15; j++) {
                        if (boardState[i][j] !== null) {
                            if (checkWin(i, j, boardState[i][j])) {
                                showWinEffect(boardState[i][j]);
                                gameInfo.textContent = `${boardState[i][j] === 'black' ? '黑方' : '白方'}获胜!`;
                                gameOver = true;
                                return;
                            }
                        }
                    }
                }
            }
            
            // 彩虹棋 - 放置一个会变色的棋子
            function useRainbowSkill(row, col) {
                placeStone(row, col, currentPlayer, true);
                const stone = document.querySelector(`.cell[data-row="${row}"][data-col="${col}"] .stone`);
                stone.classList.add('rainbow');
                
                showMessage('🌈 放置了一个彩虹棋!');
            }
            
            // 偷天换日 - 偷走对手的最后一颗棋子
            function useStealSkill(row, col) {
                // 找到对手的最后一颗棋子
                let lastOpponentMove = null;
                for (let i = moveHistory.length - 1; i >= 0; i--) {
                    if (moveHistory[i].player !== currentPlayer) {
                        lastOpponentMove = moveHistory[i];
                        break;
                    }
                }
                
                if (!lastOpponentMove) {
                    showMessage('对手还没有下棋呢!');
                    return;
                }
                
                // 移除对手的棋子
                boardState[lastOpponentMove.row][lastOpponentMove.col] = null;
                const opponentCell = document.querySelector(`.cell[data-row="${lastOpponentMove.row}"][data-col="${lastOpponentMove.col}"]`);
                opponentCell.innerHTML = '';
                
                // 放置为自己的棋子
                placeStone(row, col, currentPlayer, true);
                
                showMessage(`✋ 偷走了对手的(${lastOpponentMove.row},${lastOpponentMove.col})位置的棋子!`);
            }
            
            // 时光倒流 - 回退三步棋
            function useReverseSkill() {
                if (moveHistory.length < 3) {
                    showMessage('棋步不足,无法时光倒流!');
                    return;
                }
                
                for (let i = 0; i < 3; i++) {
                    const move = moveHistory.pop();
                    if (move) {
                        boardState[move.row][move.col] = null;
                        const cell = document.querySelector(`.cell[data-row="${move.row}"][data-col="${move.col}"]`);
                        cell.innerHTML = '';
                    }
                }
                
                showMessage('⏪ 时光倒流,回退了3步棋!');
            }
            
            // 随机混乱 - 随机移动5颗棋子
            function useRandomSkill() {
                // 收集所有已有棋子的位置
                const stones = [];
                for (let i = 0; i < 15; i++) {
                    for (let j = 0; j < 15; j++) {
                        if (boardState[i][j] !== null) {
                            stones.push({row: i, col: j, player: boardState[i][j]});
                        }
                    }
                }
                
                if (stones.length < 5) {
                    showMessage('棋子不足,无法随机混乱!');
                    return;
                }
                
                // 随机选择5颗棋子
                const shuffled = [...stones].sort(() => 0.5 - Math.random()).slice(0, 5);
                
                // 先移除这些棋子
                shuffled.forEach(stone => {
                    boardState[stone.row][stone.col] = null;
                    const cell = document.querySelector(`.cell[data-row="${stone.row}"][data-col="${stone.col}"]`);
                    cell.innerHTML = '';
                });
                
                // 随机放置到空位
                const emptyCells = [];
                for (let i = 0; i < 15; i++) {
                    for (let j = 0; j < 15; j++) {
                        if (boardState[i][j] === null) {
                            emptyCells.push({row: i, col: j});
                        }
                    }
                }
                
                const shuffledEmpty = [...emptyCells].sort(() => 0.5 - Math.random()).slice(0, 5);
                
                shuffled.forEach((stone, index) => {
                    if (index < shuffledEmpty.length) {
                        const newPos = shuffledEmpty[index];
                        placeStone(newPos.row, newPos.col, stone.player, true);
                        
                        // 添加移动动画效果
                        const effect = document.createElement('div');
                        effect.className = 'effect-text';
                        effect.textContent = '嗖!';
                        effect.style.left = `${newPos.col * 30 + 15}px`;
                        effect.style.top = `${newPos.row * 30 + 15}px`;
                        board.appendChild(effect);
                        
                        setTimeout(() => {
                            effect.remove();
                        }, 1500);
                    }
                });
                
                showMessage('🎲 随机混乱!5颗棋子被随机移动了!');
            }
            
            // 创建彩色纸屑效果
            function createConfetti(row, col) {
                const colors = ['#f00', '#0f0', '#00f', '#ff0', '#f0f', '#0ff'];
                const confetti = document.createElement('div');
                confetti.className = 'confetti';
                confetti.style.backgroundColor = colors[Math.floor(Math.random() * colors.length)];
                confetti.style.left = `${col * 30 + 15 + Math.random() * 20 - 10}px`;
                confetti.style.top = `${row * 30 + 15}px`;
                board.appendChild(confetti);
                
                setTimeout(() => {
                    confetti.remove();
                }, 3000);
            }
            
            // 显示消息效果
            function showMessage(msg) {
                const message = document.createElement('div');
                message.className = 'effect-text';
                message.textContent = msg;
                message.style.left = '50%';
                message.style.top = '20%';
                message.style.transform = 'translateX(-50%)';
                message.style.fontSize = '18px';
                message.style.color = '#FF4081';
                document.body.appendChild(message);
                
                setTimeout(() => {
                    message.remove();
                }, 2000);
            }
            
            // 胜利效果
            function showWinEffect(player) {
                // 彩色纸屑雨
                for (let i = 0; i < 100; i++) {
                    setTimeout(() => {
                        createConfetti(
                            Math.floor(Math.random() * 15),
                            Math.floor(Math.random() * 15)
                        );
                    }, i * 50);
                }
                
                // 胜利文字
                const winText = document.createElement('div');
                winText.className = 'effect-text';
                winText.textContent = `${player === 'black' ? '黑方' : '白方'}胜利!`;
                winText.style.left = '50%';
                winText.style.top = '40%';
                winText.style.transform = 'translateX(-50%)';
                winText.style.fontSize = '36px';
                winText.style.color = player === 'black' ? '#000' : '#fff';
                winText.style.textShadow = player === 'black' ? '0 0 10px white' : '0 0 10px black';
                document.body.appendChild(winText);
                
                setTimeout(() => {
                    winText.remove();
                }, 3000);
            }
            
            // 更新技能卡牌状态
            function updateSkillCards() {
                skillCards.forEach(card => {
                    card.classList.remove('active', 'disabled');
                    
                    if (skillsUsed[currentPlayer][card.dataset.skill]) {
                        card.classList.add('disabled');
                    }
                });
            }
            
            // 技能卡牌点击事件
            skillCards.forEach(card => {
                card.addEventListener('click', function() {
                    if (this.classList.contains('disabled') || gameOver) return;
                    
                    // 取消其他卡牌的选中状态
                    skillCards.forEach(c => c.classList.remove('active'));
                    
                    // 选中当前卡牌
                    this.classList.add('active');
                    selectedSkill = this.dataset.skill;
                    
                    gameInfo.textContent = `${currentPlayer === 'black' ? '黑方' : '白方'}选择了${this.textContent},请点击棋盘使用`;
                });
            });
            
            // 重新开始游戏
            function restartGame() {
                currentPlayer = 'black';
                gameOver = false;
                boardState = Array(15).fill().map(() => Array(15).fill(null));
                moveHistory = [];
                selectedSkill = null;
                skillsUsed = {
                    black: { bomb: false, swap: false, rainbow: false, steal: false, reverse: false, random: false },
                    white: { bomb: false, swap: false, rainbow: false, steal: false, reverse: false, random: false }
                };
                gameInfo.textContent = '黑方回合 - 请选择技能或下棋';
                initBoard();
                updateSkillCards();
            }
            
            restartBtn.addEventListener('click', restartGame);
            
            // 初始化游戏
            initBoard();
            updateSkillCards();
        });
    </script>
</body>
</html>

4 条评论

  • @ 2025-5-10 10:28:15

    html

    • @ 2025-5-6 21:15:15

      *这不是C++代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *</u>*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! </u>

    • 1