From 976e46387f99eff232f03fed06b134c84562ac5f Mon Sep 17 00:00:00 2001 From: 51hhh Date: Mon, 25 Aug 2025 14:16:06 +0800 Subject: [PATCH] =?UTF-8?q?[MF]=E4=BF=AE=E6=94=B9=E4=BB=8ECDN=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8A=A0=E8=BD=BD=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/分类器/script.js | 383 ++++++++++++++++---------- game/石头剪刀布/game.html | 221 +++++++++------ game/石头剪刀布/hand-knn-model-2.json | 1 + game/贪吃蛇/pose-knn-model.json | 1 + game/贪吃蛇/snake_game.html | 319 ++++++++++++++------- game/钢琴/hand-knn-model.json | 1 + game/钢琴/index.html | 219 +++++++++------ 7 files changed, 739 insertions(+), 406 deletions(-) create mode 100644 game/石头剪刀布/hand-knn-model-2.json create mode 100644 game/贪吃蛇/pose-knn-model.json create mode 100644 game/钢琴/hand-knn-model.json diff --git a/game/分类器/script.js b/game/分类器/script.js index 8c65ee3..3d2f202 100644 --- a/game/分类器/script.js +++ b/game/分类器/script.js @@ -71,10 +71,41 @@ function updateModelUI(isLoaded) { async function initModel() { showStatus(MODEL_STATUS, 'info', '正在加载 MobileNet 模型...'); try { + // 确保 window.mobilenet 和 window.knnClassifier 库已加载 + if (!window.mobilenet || !window.knnClassifier) { + showStatus(MODEL_STATUS, 'error', 'TensorFlow.js 库或 KNN 分类器库未加载。请检查 HTML 引入。'); + console.error('TensorFlow.js 库或 KNN 分类器库未加载。'); + return; + } + mobilenet = await window.mobilenet.load({ version: 2, alpha: 1.0 }); knnClassifier = window.knnClassifier.create(); - showStatus(MODEL_STATUS, 'success', 'MobileNet 模型和 KNN 分类器已加载。请加载模型文件。'); - updateModelUI(false); // 此时 MobileNet 已加载,但 KNN 分类器本身还需加载数据 + showStatus(MODEL_STATUS, 'success', 'MobileNet 模型和 KNN 分类器已加载。'); + updateModelUI(false); // MobileNet 准备好,但KNN数据还未加载 + + // ===== 新增:尝试自动从 CDN 加载 KNN 模型 ===== + // 请替换为你的实际 CDN 模型路径 + const cdnModelBaseUrl = 'https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/models/'; // 例如:'https://example.com/models/' + const cdnModelJsonFileName = 'knn-model.json'; // 你的模型json文件名 + const cdnModelBinFileName = 'knn-model.bin'; // 你的模型bin文件名 + + const cdnJsonUrl = `${cdnModelBaseUrl}${cdnModelJsonFileName}`; + const cdnBinUrl = `${cdnModelBaseUrl}${cdnModelBinFileName}`; + + console.log(`尝试从 CDN 加载模型: ${cdnJsonUrl}, ${cdnBinUrl}`); + showStatus(MODEL_STATUS, 'info', '正在尝试从 CDN 自动加载 KNN 模型...'); + + try { + await loadKNNModel(cdnJsonUrl, cdnBinUrl); + console.log('CDN 模型自动加载成功。'); + // 如果成功,loadKNNModel 会更新状态 + } catch (cdnError) { + showStatus(MODEL_STATUS, 'warning', `从 CDN 加载 KNN 模型失败: ${cdnError.message}。您可以尝试手动加载。`); + console.warn('CDN KNN 模型加载失败:', cdnError); + updateModelUI(false); // 即使 CDN 失败,用户仍然可以通过按钮加载 + } + // ============================================== + } catch (error) { showStatus(MODEL_STATUS, 'error', `模型加载失败: ${error.message}`); console.error('MobileNet/KNN加载失败:', error); @@ -96,154 +127,218 @@ async function getFeatures(img) { /** * 加载 KNN 模型文件,支持 '.json' 和 '.bin' 两部分文件。 - * 用户需要依次选择对应的 .json 和 .bin 文件。 + * 支持从 URL 或用户选择的文件加载。 + * @param {string} [jsonUrl] - 可选,KNN 模型 .json 文件的 URL。 + * @param {string} [binUrl] - 可选,KNN 模型 .bin 文件的 URL。 */ -async function loadKNNModel() { - const inputJson = document.createElement('input'); - inputJson.type = 'file'; - inputJson.accept = '.json'; - inputJson.multiple = false; - - showStatus(MODEL_STATUS, 'info', '请先选择 KNN 模型配置文件 (.json)...'); - - inputJson.onchange = async (e) => { - const jsonFile = e.target.files[0]; - if (!jsonFile) { - showStatus(MODEL_STATUS, 'info', '未选择 .json 文件。'); - updateModelUI(false); - return; - } - - showStatus(MODEL_STATUS, 'info', `正在解析 ${jsonFile.name}...`); +async function loadKNNModel(jsonUrl = null, binUrl = null) { + if (!knnClassifier) { + showStatus(MODEL_STATUS, 'error', 'KNN 分类器未初始化。请先加载 MobileNet 模型。'); + return; + } + + let modelData = null; + let binData = null; + let modelName = '未知模型'; + + try { + if (jsonUrl && binUrl) { + // 从 CDN URL 加载 + showStatus(MODEL_STATUS, 'info', `正在从 CDN 加载模型配置文件 (${jsonUrl})...`); + const jsonResponse = await fetch(jsonUrl); + if (!jsonResponse.ok) { + throw new Error(`无法从 ${jsonUrl} 加载.json文件: ${jsonResponse.statusText}`); + } + modelData = await jsonResponse.json(); + modelName = jsonUrl.split('/').pop(); + + showStatus(MODEL_STATUS, 'info', `正在从 CDN 加载模型权重 (${binUrl})...`); + const binResponse = await fetch(binUrl); + if (!binResponse.ok) { + throw new Error(`无法从 ${binUrl} 加载.bin文件: ${binResponse.statusText}`); + } + const arrayBuffer = await binResponse.arrayBuffer(); + binData = new Float32Array(arrayBuffer); + + // 验证 bin 文件名是否匹配(如果 json 中有定义) + if (modelData.dataFile && !binUrl.endsWith(modelData.dataFile)) { + console.warn(`CDN 加载警告:.bin URL (${binUrl}) 与 .json 中定义的 dataFile (${modelData.dataFile}) 不匹配。继续加载。`); + } + + } else { + // 从用户本地文件加载 (原逻辑不变) + const inputJson = document.createElement('input'); + inputJson.type = 'file'; + inputJson.accept = '.json'; + inputJson.multiple = false; - let modelData; - try { - const reader = new FileReader(); - const jsonText = await new Promise((resolve, reject) => { - reader.onload = () => resolve(reader.result); - reader.onerror = () => reject(reader.error); - reader.readAsText(jsonFile); - }); - modelData = JSON.parse(jsonText); - - if (!modelData.dataFile) { - console.warn('模型JSON文件不包含 "dataFile" 字段,尝试以旧的单文件JSON格式加载。'); - return loadSingleJsonModel(modelData); - } - - } catch (error) { - showStatus(MODEL_STATUS, 'error', `解析 .json 文件失败: ${error.message}`); - console.error('解析 .json 失败:', error); - updateModelUI(false); + showStatus(MODEL_STATUS, 'info', '请先选择 KNN 模型配置文件 (.json)...'); + + await new Promise((resolve, reject) => { + inputJson.onchange = async (e) => { + const jsonFile = e.target.files[0]; + if (!jsonFile) { + showStatus(MODEL_STATUS, 'info', '未选择 .json 文件。'); + updateModelUI(false); + return reject(new Error('No JSON file selected.')); + } + + showStatus(MODEL_STATUS, 'info', `正在解析 ${jsonFile.name}...`); + modelName = jsonFile.name; + + try { + const reader = new FileReader(); + const jsonText = await new Promise((res, rej) => { + reader.onload = () => res(reader.result); + reader.onerror = () => rej(reader.error); + reader.readAsText(jsonFile); + }); + modelData = JSON.parse(jsonText); + + if (!modelData.dataFile) { + console.warn('模型JSON文件不包含 "dataFile" 字段,尝试以旧的单文件JSON格式加载。'); + // 对于旧的单文件模型,直接加载并结束 + await loadSingleJsonModel(modelData); + return resolve(); // 成功加载旧模型,返回 + } + + } catch (error) { + showStatus(MODEL_STATUS, 'error', `解析 .json 文件失败: ${error.message}`); + console.error('解析 .json 失败:', error); + updateModelUI(false); + return reject(error); + } + + const inputBin = document.createElement('input'); + inputBin.type = 'file'; + inputBin.accept = '.bin'; + inputBin.multiple = false; + + showStatus(MODEL_STATUS, 'info', `已加载 .json 文件。请选择对应的权重文件 "${modelData.dataFile}" (.bin)...`); + + inputBin.onchange = async (eBin) => { + const binFile = eBin.target.files[0]; + if (!binFile) { + showStatus(MODEL_STATUS, 'info', '未选择 .bin 文件。'); + updateModelUI(false); + return reject(new Error('No BIN file selected.')); + } + + if (binFile.name !== modelData.dataFile) { + showStatus(MODEL_STATUS, 'error', `选择的 .bin 文件名 "${binFile.name}" 与 .json 中定义的 "${modelData.dataFile}" 不匹配!请选择正确的文件。`); + updateModelUI(false); + return reject(new Error('BIN file name mismatch.')); + } + + showStatus(MODEL_STATUS, 'info', `正在读取 ${binFile.name} (二进制权重文件)...`); + try { + const reader = new FileReader(); + const arrayBuffer = await new Promise((res, rej) => { + reader.onload = () => res(reader.result); + reader.onerror = () => rej(reader.error); + reader.readAsArrayBuffer(binFile); + }); + binData = new Float32Array(arrayBuffer); + resolve(); // 成功获取到 binData,解析流程继续 + } catch (error) { + showStatus(MODEL_STATUS, 'error', `读取 .bin 文件失败: ${error.message}`); + console.error('读取 .bin 失败:', error); + updateModelUI(false); + return reject(error); + } + }; + inputBin.click(); + }; + inputJson.click(); + }); // 结束 Promise 包装的回调 + } + + // 如果 modelData 为 null (意味着旧的单文件JSON模型已在上面被处理并返回),则停止后续处理 + if (!modelData) { return; } - - const inputBin = document.createElement('input'); - inputBin.type = 'file'; - inputBin.accept = '.bin'; - inputBin.multiple = false; - - showStatus(MODEL_STATUS, 'info', `已加载 .json 文件。请选择对应的权重文件 "${modelData.dataFile}" (.bin)...`); - - inputBin.onchange = async (eBin) => { - const binFile = eBin.target.files[0]; - if (!binFile) { - showStatus(MODEL_STATUS, 'info', '未选择 .bin 文件。'); - updateModelUI(false); - return; - } - - if (binFile.name !== modelData.dataFile) { - showStatus(MODEL_STATUS, 'error', `选择的 .bin 文件名 "${binFile.name}" 与 .json 中定义的 "${modelData.dataFile}" 不匹配!请选择正确的文件。`); - updateModelUI(false); - return; - } - - showStatus(MODEL_STATUS, 'info', `正在读取 ${binFile.name} (二进制权重文件)...`); - let binData; - try { - const reader = new FileReader(); - const arrayBuffer = await new Promise((resolve, reject) => { - reader.onload = () => resolve(reader.result); - reader.onerror = () => reject(reader.error); - reader.readAsArrayBuffer(binFile); - }); - binData = new Float32Array(arrayBuffer); - } catch (error) { - showStatus(MODEL_STATUS, 'error', `读取 .bin 文件失败: ${error.message}`); - console.error('读取 .bin 失败:', error); - updateModelUI(false); - return; - } - - try { - knnClassifier.clearAllClasses(); - - Object.keys(modelData.dataset).forEach(label => { - const classDataMeta = modelData.dataset[label]; - const startFloat32ElementIndex = classDataMeta.start; - const numFloat32Elements = classDataMeta.length; - - const featureDim = modelData.featureDim || 1280; - - const classFeatures = binData.subarray(startFloat32ElementIndex, startFloat32ElementIndex + numFloat32Elements); - - if (classFeatures.length === 0) { - console.warn(`类别 ${label} 没有找到特征数据,跳过。`); - return; - } - - if (classFeatures.length % featureDim !== 0) { - const actualSamples = classFeatures.length / featureDim; - console.error( - `--- 类别: ${label} ---`, - `起始 Float32 元素索引: ${startFloat32ElementIndex}`, - `该类别 Float32 元素数量: ${numFloat32Elements}`, - `ERROR: 特征数据长度 (${classFeatures.length} 个 Float32 元素) 与特征维度 (${featureDim}) 不匹配!` + - `实际样本数计算为 ${actualSamples} (预期为整数)。`, - `请检查您的模型导出逻辑和训练数据的完整性。` - ); - throw new Error("模型数据完整性错误:特征数据长度与维度不匹配。"); - } - - const numSamples = classFeatures.length / featureDim; - - for (let i = 0; i < numSamples; i++) { - const startIndex = i * featureDim; - const endIndex = (i + 1) * featureDim; - const sampleFeatures = classFeatures.subarray(startIndex, endIndex); - - const sampleTensor = tf.tensor(sampleFeatures, [1, featureDim]); - - knnClassifier.addExample(sampleTensor, parseInt(label)); - tf.dispose(sampleTensor); - } - }); - - if (modelData.classList && Array.isArray(modelData.classList)) { - classNames = modelData.classList.map(c => c.name); - } else { - console.warn('模型JSON中未找到 classList 字段或格式不正确,使用默认类别名称。'); - classNames = Object.keys(modelData.dataset).map(key => `Class ${parseInt(key) + 1}`); - } - - showStatus(MODEL_STATUS, 'success', `模型 "${jsonFile.name}" 及权重加载成功!类别: ${classNames.join(', ')}。`); - updateModelUI(true); + + // 执行加载 KNN 分类器的核心逻辑 + if (modelData && binData) { // 仅当同时有 modelData 和 binData 时才尝试加载 + knnClassifier.clearAllClasses(); + + Object.keys(modelData.dataset).forEach(label => { + const classDataMeta = modelData.dataset[label]; + const startFloat32ElementIndex = classDataMeta.start; + const numFloat32Elements = classDataMeta.length; - } catch (error) { - showStatus(MODEL_STATUS, 'error', `处理模型数据失败: ${error.message}`); - console.error('处理模型数据失败:', error); - updateModelUI(false); + const featureDim = modelData.featureDim || 1280; + + // 检查 binData 是否足够大以包含所需的数据 + if (startFloat32ElementIndex + numFloat32Elements > binData.length) { + throw new Error(`模型数据错误: 类别 ${label} 的数据超出 .bin 文件范围。`); + } + + const classFeatures = binData.subarray(startFloat32ElementIndex, startFloat32ElementIndex + numFloat32Elements); + + if (classFeatures.length === 0) { + console.warn(`类别 ${label} 没有找到特征数据,跳过。`); + return; + } + + if (classFeatures.length % featureDim !== 0) { + const actualSamples = classFeatures.length / featureDim; + console.error( + `--- 类别: ${label} ---`, + `起始 Float32 元素索引: ${startFloat32ElementIndex}`, + `该类别 Float32 元素数量: ${numFloat32Elements}`, + `ERROR: 特征数据长度 (${classFeatures.length} 个 Float32 元素) 与特征维度 (${featureDim}) 不匹配!` + + `实际样本数计算为 ${actualSamples} (预期为整数)。`, + `请检查您的模型导出逻辑和训练数据的完整性。` + ); + throw new Error("模型数据完整性错误:特征数据长度与维度不匹配。"); + } + + const numSamples = classFeatures.length / featureDim; + + for (let i = 0; i < numSamples; i++) { + const startIndex = i * featureDim; + const endIndex = (i + 1) * featureDim; + const sampleFeatures = classFeatures.subarray(startIndex, endIndex); + + const sampleTensor = tf.tensor(sampleFeatures, [1, featureDim]); + + knnClassifier.addExample(sampleTensor, parseInt(label)); + tf.dispose(sampleTensor); // 及时释放 Tensor 内存 + } + }); + + if (modelData.classList && Array.isArray(modelData.classList)) { + classNames = modelData.classList.map(c => c.name); + } else { + console.warn('模型JSON中未找到 classList 字段或格式不正确,使用默认类别名称。'); + // 如果没有 classList,尝试从 dataset 的键值来生成 + classNames = Object.keys(modelData.dataset).map(key => `Class ${parseInt(key) + 1}`); } - }; - inputBin.click(); - }; - inputJson.click(); + + showStatus(MODEL_STATUS, 'success', `KNN 模型 "${modelName}" 加载成功!类别: ${classNames.join(', ')}。`); + updateModelUI(true); // 模型已加载,可以启动摄像头 + + } else if (modelData && !binData && !jsonUrl) { + // 如果只有 modelData 且不是从 CDN 加载,说明可能是单文件旧格式,但之前的逻辑没成功处理 + // 应该是由 loadSingleJsonModel 捕获,这里作为 fallback + showStatus(MODEL_STATUS, 'error', '未知模型加载状态:仅有 JSON 数据,没有 BIN 数据。'); + updateModelUI(false); + } + + } catch (error) { + showStatus(MODEL_STATUS, 'error', `加载 KNN 模型失败: ${error.message}`); + console.error('加载 KNN 模型总失败:', error); + updateModelUI(false); + // 重新抛出错误,以便 initModel 可以捕获 CDN 加载失败的情况 + throw error; + } } - + /** * 辅助函数:处理旧的单文件JSON模型格式( dataset 字段直接包含数据而不是偏移量) * @param {object} modelData - 已解析的 JSON 模型数据 + * @returns {Promise} */ async function loadSingleJsonModel(modelData) { try { @@ -257,6 +352,7 @@ async function loadSingleJsonModel(modelData) { const numSamples = data.length / featureDim; const tensor = tf.tensor(data, [numSamples, featureDim]); knnClassifier.addExample(tensor, parseInt(key)); + tf.dispose(tensor); // 及时释放 Tensor 内存 }); if (modelData.classList && Array.isArray(modelData.classList)) { @@ -274,6 +370,7 @@ async function loadSingleJsonModel(modelData) { showStatus(MODEL_STATUS, 'error', `加载单文件JSON模型失败: ${error.message}`); console.error('加载单文件JSON模型失败:', error); updateModelUI(false); + throw error; // 重新抛出错误 } } @@ -361,7 +458,7 @@ async function predictLoop() { commandCandidate = '0'; // 使用默认命令 } else { const prediction = await knnClassifier.predictClass(features, k); - features.dispose(); + features.dispose(); // 及时释放 Tensor 内存 if (prediction && prediction.confidences) { let maxConfidence = 0; @@ -591,7 +688,7 @@ async function sendToSerialPort(command) { // =================================== CONNECT_SERIAL_BTN.addEventListener('click', connectSerial); DISCONNECT_SERIAL_BTN.addEventListener('click', disconnectSerial); -LOAD_MODEL_BTN.addEventListener('click', loadKNNModel); +LOAD_MODEL_BTN.addEventListener('click', () => loadKNNModel(null, null)); // 手动加载时,不传 CDN URL START_WEBCAM_BTN.addEventListener('click', startWebcam); STOP_WEBCAM_BTN.addEventListener('click', stopWebcam); @@ -600,5 +697,5 @@ STOP_WEBCAM_BTN.addEventListener('click', stopWebcam); // =================================== document.addEventListener('DOMContentLoaded', () => { checkWebSerialCompatibility(); // 检查 Web Serial API 兼容性 - initModel(); // 加载 MobileNet 和 KNN 分类器实例 + initModel(); // 加载 MobileNet 和 KNN 分类器实例,并尝试自动加载 KNN 模型 }); diff --git a/game/石头剪刀布/game.html b/game/石头剪刀布/game.html index 8655122..8b1a365 100644 --- a/game/石头剪刀布/game.html +++ b/game/石头剪刀布/game.html @@ -464,7 +464,7 @@ '1': 2, // 对应剪刀 '2': 3 // 对应布 }; - // 存储实际导入模型中的分类名称,例如 {"0": "拳头", "1": "V字", "2": "手掌"} + // 导入模型后,存储实际导入模型中的分类名称,例如 {"0": "拳头", "1": "V字", "2": "手掌"} let importedClassNames = {}; // DOM 元素引用 @@ -660,7 +660,6 @@ isHandDetectionReady = true; // 摄像头和检测器已就绪 console.log('手部检测器和摄像头已就绪。'); - document.getElementById('gestureStatus').textContent = '手部检测器已就绪。请导入手势模型。'; // 启用导入模型按钮,禁用开始游戏按钮直到模型导入 startBtn.disabled = true; @@ -669,6 +668,28 @@ // 4. 开始持续检测循环 (现在仅检测和绘制骨骼,不预测,直到模型导入) startDetectionLoop(); + + // --- 新增:尝试自动从 CDN 加载 KNN 模型数据 --- + // !!! 请替换为你的实际 CDN 模型 URL !!! + const cdnModelJsonUrl = 'https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/models/hand-knn-model-2.json'; + + console.log(`尝试从 CDN 自动加载 KNN 模型数据: ${cdnModelJsonUrl}`); + document.getElementById('gestureStatus').textContent = '正在尝试从 CDN 加载手势识别模型...'; + + try { + await loadKNNModelData(null, cdnModelJsonUrl); // 传入 CDN URL, file 为 null + document.getElementById('gestureStatus').textContent = 'CDN 手势识别模型加载成功!可以开始游戏了。'; + isModelLoaded = true; // 标记模型已加载 + startBtn.disabled = false; // 启用开始游戏按钮 + btnImportModel.disabled = true; // 自动加载成功后,禁用手动导入按钮 + } catch (cdnError) { + console.warn('CDN KNN 模型数据自动加载失败:', cdnError); + document.getElementById('gestureStatus').textContent = `CDN 模型加载失败: ${cdnError.message}。请手动导入模型。`; + isModelLoaded = false; // 标记模型未加载 + startBtn.disabled = true; // 模型未加载,开始按钮仍禁用 + btnImportModel.disabled = false; // 允许手动导入 + } + // --- 结束 CDN 自动加载 --- } catch (error) { console.error('手势识别初始化失败:', error); @@ -712,98 +733,119 @@ } } - // 修改 loadModel 函数,从文件事件中读取并加载模型 - async function loadModelFromFile(file) { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = async (e) => { - try { - const loadedModelData = JSON.parse(e.target.result); - - if (!loadedModelData || !loadedModelData.dataset || !loadedModelData.classMap) { - throw new Error('模型数据结构不正确 (缺少 classMap 或 dataset)。'); - } - - // 清除分类器之前可能存在的任何数据 - classifier.clearAllClasses(); + /** + * 加载 KNN 模型数据,支持从文件或 CDN URL 加载。 + * @param {File} [file] - 可选,用户选择的 KNN 模型 JSON 文件。 + * @param {string} [cdnUrl] - 可选,KNN 模型 JSON 文件的 CDN URL。 + * @returns {Promise} + */ + async function loadKNNModelData(file = null, cdnUrl = null) { + document.getElementById('gestureStatus').textContent = '正在加载模型数据...'; + startBtn.disabled = true; // 加载中禁用开始按钮 + btnImportModel.disabled = true; // 加载中禁用导入按钮 - const dataset = {}; - let totalExamples = 0; - - // 恢复分类器数据集 - for (const classId in loadedModelData.dataset) { - const classData = loadedModelData.dataset[classId]; - if (classData && classData.length > 0) { - // 确保所有样本的特征长度一致,并且是数字数组 - if (classData.some(sample => !Array.isArray(sample) || sample.some(val => typeof val !== 'number'))) { - throw new Error(`类别 ${classId} 包含无效的样本数据 (不是数字数组)。`); - } + try { + let loadedModelData; - const tensors = classData.map(data => tf.tensor1d(data)); - // tf.stack 会将一组张量沿新轴堆叠起来 - // 如果样本特征都是 1D 张量,stack 后会变成 2D 张量 [numSamples, featureLength] - const stacked = tf.stack(tensors); - dataset[classId] = stacked; - totalExamples += classData.length; - // 及时清理临时张量 - tensors.forEach(t => t.dispose()); - } else { - console.warn(`类别 ${classId} 没有样本数据。`); - } - } - - classifier.setClassifierDataset(dataset); - importedClassNames = loadedModelData.classMap; // 更新类别名称映射 - - console.log(`模型加载成功!共加载 ${totalExamples} 个样本。`); - console.log('类别映射 (导入):', importedClassNames); - - // 更新页面上的映射显示 - if (importedClassNames) { - document.getElementById('mapping0').innerHTML = - `分类0 (${importedClassNames['0'] || '未定义'}) → 石头 ✊`; - document.getElementById('mapping1').innerHTML = - `分类1 (${importedClassNames['1'] || '未定义'}) → 剪刀 ✌️`; - document.getElementById('mapping2').innerHTML = - `分类2 (${importedClassNames['2'] || '未定义'}) → 布 ✋`; - } - document.getElementById('gestureStatus').textContent = '手势模型导入成功!可以开始游戏了。'; - isModelLoaded = true; // 设置模型已加载状态 - startBtn.disabled = false; // 启用开始游戏按钮 - btnImportModel.disabled = true; // 导入按钮禁用 - resolve(); - - } catch (error) { - console.error('模型加载失败:', error); - reject(new Error(`模型导入失败: ${error.message}`)); - } finally { - fileImporter.value = ''; // 清空文件输入 + if (file) { + const reader = new FileReader(); + const fileReadPromise = new Promise((resolve, reject) => { + reader.onload = e => resolve(JSON.parse(e.target.result)); + reader.onerror = error => reject(new Error('文件读取失败。')); + reader.readAsText(file); + }); + loadedModelData = await fileReadPromise; + } else if (cdnUrl) { + const response = await fetch(cdnUrl); + if (!response.ok) { + throw new Error(`无法从 ${cdnUrl} 加载模型数据: ${response.statusText}`); } - }; - reader.onerror = (error) => { - console.error('文件读取失败:', error); - reject(new Error('文件读取失败。')); - }; - reader.readAsText(file); - }); + loadedModelData = await response.json(); + } else { + throw new Error('未提供模型文件或 CDN URL。'); + } + + if (!loadedModelData || !loadedModelData.dataset || !loadedModelData.classMap) { + throw new Error('模型数据结构不正确 (缺少 classMap 或 dataset)。'); + } + + classifier.clearAllClasses(); + + const dataset = {}; + let totalExamples = 0; + + for (const classId in loadedModelData.dataset) { + const classData = loadedModelData.dataset[classId]; + if (classData && classData.length > 0) { + if (classData.some(sample => !Array.isArray(sample) || sample.some(val => typeof val !== 'number'))) { + throw new Error(`类别 ${classId} 包含无效的样本数据 (不是数字数组)。`); + } + + const tensors = classData.map(data => tf.tensor1d(data)); + const stacked = tf.stack(tensors); + dataset[classId] = stacked; + totalExamples += classData.length; + tensors.forEach(t => t.dispose()); + } else { + console.warn(`类别 ${classId} 没有样本数据。`); + } + } + + classifier.setClassifierDataset(dataset); + importedClassNames = loadedModelData.classMap; // 更新类别名称映射 + + console.log(`模型加载成功!共加载 ${totalExamples} 个样本。`); + console.log('类别映射 (导入):', importedClassNames); + + // 更新页面上的映射显示 + if (importedClassNames) { + document.getElementById('mapping0').innerHTML = + `分类0 (${importedClassNames['0'] || '未定义'}) → 石头 ✊`; + document.getElementById('mapping1').innerHTML = + `分类1 (${importedClassNames['1'] || '未定义'}) → 剪刀 ✌️`; + document.getElementById('mapping2').innerHTML = + `分类2 (${importedClassNames['2'] || '未定义'}) → 布 ✋`; + } + document.getElementById('gestureStatus').textContent = '手势模型导入成功!可以开始游戏了。'; + isModelLoaded = true; // 设置模型已加载状态 + startBtn.disabled = false; // 启用开始游戏按钮 + btnImportModel.disabled = true; // 导入按钮禁用 + + // 如果模型加载成功,且之前是因为没有模型而被禁用,现在应该解锁开始按钮 + if(isHandDetectionReady && isModelLoaded) { + startBtn.disabled = false; + } + + } catch (error) { + console.error('模型加载失败:', error); + document.getElementById('gestureStatus').textContent = `模型加载失败: ${error.message}`; + isModelLoaded = false; + startBtn.disabled = true; // 失败后保持禁用 + btnImportModel.disabled = false; // 失败后可再次导入 + throw error; // 重新抛出错误,以便调用者(如initHandDetection)能捕获 + } finally { + fileImporter.value = ''; // 清空文件输入 + } } - - // 文件选择事件处理器 + + + // 文件选择事件处理器 (现在它调用通用加载函数) async function handleModelImport(event) { const file = event.target.files[0]; - if (!file) return; + if (!file) { + document.getElementById('gestureStatus').textContent = '未选择文件。'; + return; + } - document.getElementById('gestureStatus').textContent = '正在导入模型...'; + document.getElementById('gestureStatus').textContent = '正在从本地文件导入模型...'; startBtn.disabled = true; // 导入中禁用开始按钮 btnImportModel.disabled = true; // 导入中禁用导入按钮 try { - await loadModelFromFile(file); + await loadKNNModelData(file, null); // 传入文件对象,cdnUrl 为 null } catch (error) { - alert(error.message); - document.getElementById('gestureStatus').textContent = `导入失败: ${error.message}`; - startBtn.disabled = true; // 失败后仍保持禁用 - btnImportModel.disabled = false; // 失败后可再次导入 + // 错误信息已在 loadKNNModelData 内部处理并设置状态 + alert(error.message); // 弹出错误提示 } } @@ -849,11 +891,12 @@ const gameChoice = gestureClassToGameChoice[predictedClassId]; // 设一个置信度阈值,避免误识别 (例如 70%) - if (gameChoice && confidence > 70) { + const MIN_PREDICT_CONFIDENCE = 70; // 调整为更易读的常量 + if (gameChoice && confidence >= MIN_PREDICT_CONFIDENCE) { currentDetectedGesture = gameChoice; const gestureName = choiceNames[gameChoice]; document.getElementById('gestureStatus').textContent = - `识别: ${importedClassNames[predictedClassId] || `未知类别${predictedClassId}`} (${gestureName}) 置信度: ${confidence}%`; + `识别: ${importedClassNames[predictedClassId] || `类别${predictedClassId}`} (${gestureName}) 置信度: ${confidence}%`; document.getElementById('gestureStatus').style.color = '#00ff00'; document.getElementById('gestureIndicator').textContent = choices[gameChoice]; @@ -878,8 +921,14 @@ } else { currentDetectedGesture = null; - document.getElementById('gestureStatus').textContent = `识别不足 (置信度: ${confidence}%)`; - document.getElementById('gestureStatus').style.color = '#ffaa00'; // 橙色警告 + if (isGameActive && lockedGesture !== null) { + // 如果在游戏倒计时且手势已锁定,则不更新状态文本防止抖动 + document.getElementById('gestureStatus').textContent = `已锁定手势: ${choiceNames[lockedGesture]} (${confidence}%)`; + document.getElementById('gestureStatus').style.color = '#00ff00'; + } else { + document.getElementById('gestureStatus').textContent = `识别不足 (置信度: ${confidence}%)`; + document.getElementById('gestureStatus').style.color = '#ffaa00'; // 橙色警告 + } document.getElementById('gestureIndicator').textContent = '❓'; document.getElementById('gestureIndicator').style.display = 'block'; // 保持显示,但显示问号 document.getElementById('currentClassDisplay').style.display = 'none'; // 隐藏卡片 diff --git a/game/石头剪刀布/hand-knn-model-2.json b/game/石头剪刀布/hand-knn-model-2.json new file mode 100644 index 0000000..0395ba4 --- /dev/null +++ b/game/石头剪刀布/hand-knn-model-2.json @@ -0,0 +1 @@ +{"classMap":{"0":"手势 1","1":"手势 2","2":"手势 3"},"dataset":{"0":[[0.17658306658267975,0.21129579842090607,0.15695412456989288,0.2114311009645462,0.1431552618741989,0.18729418516159058,0.13897864520549774,0.16339975595474243,0.1386636346578598,0.14801865816116333,0.14225558936595917,0.15268002450466156,0.13564151525497437,0.1173766627907753,0.13424551486968994,0.09636177122592926,0.13411812484264374,0.07949414104223251,0.15342533588409424,0.1425500363111496,0.14605212211608887,0.142044335603714,0.14546458423137665,0.15575335919857025,0.14778991043567657,0.1645391881465912,0.16291524469852448,0.14279413223266602,0.1546531468629837,0.1492679864168167,0.15483079850673676,0.16079549491405487,0.1578071266412735,0.16942843794822693,0.16995161771774292,0.14567510783672333,0.16289328038692474,0.1527494192123413,0.1627764254808426,0.16187329590320587,0.16494327783584595,0.16919498145580292],[0.18264533579349518,0.2102074772119522,0.16283205151557922,0.21408812701702118,0.1466456800699234,0.19217883050441742,0.14025530219078064,0.16491840779781342,0.14061817526817322,0.14530353248119354,0.14552900195121765,0.1555107831954956,0.1364552527666092,0.11769868433475494,0.1334565430879593,0.09601189941167831,0.13194988667964935,0.07900936901569366,0.15622709691524506,0.14407894015312195,0.14922842383384705,0.13574610650539398,0.1487741619348526,0.1466248482465744,0.15114513039588928,0.15592196583747864,0.16588036715984344,0.1425049602985382,0.1577969789505005,0.14214636385440826,0.15760403871536255,0.15160517394542694,0.1603119969367981,0.16020049154758453,0.17316706478595734,0.14392347633838654,0.16564609110355377,0.1476711481809616,0.1653805524110794,0.15616725385189056,0.16762371361255646,0.16384077072143555],[0.18973536789417267,0.20545831322669983,0.1684829443693161,0.2084227353334427,0.1498737633228302,0.18453393876552582,0.14245600998401642,0.15925370156764984,0.1429704874753952,0.14225439727306366,0.15430809557437897,0.14137297868728638,0.14362159371376038,0.10536647588014603,0.13834625482559204,0.0838082879781723,0.13490566611289978,0.0665571317076683,0.16462533175945282,0.1323733925819397,0.15439388155937195,0.13552391529083252,0.15322020649909973,0.15117351710796356,0.15589694678783417,0.1607263833284378,0.17231251299381256,0.13254539668560028,0.16150979697704315,0.1393856257200241,0.16152068972587585,0.1523217260837555,0.16384638845920563,0.1600678712129593,0.17753435671329498,0.13637354969978333,0.16810201108455658,0.1425061821937561,0.1680891215801239,0.1524694412946701,0.17061425745487213,0.1602325588464737],[0.1914532631635666,0.20232851803302765,0.1730131208896637,0.17932023108005524,0.15612854063510895,0.15598426759243011,0.14488671720027924,0.14420904219150543,0.1397968977689743,0.1409447342157364,0.1656048744916916,0.12273707240819931,0.1537792980670929,0.10154908895492554,0.14726047217845917,0.0911519005894661,0.1419583559036255,0.0818314403295517,0.16365329921245575,0.13476912677288055,0.14464721083641052,0.1387947052717209,0.14519540965557098,0.15668317675590515,0.1510748565196991,0.1703014373779297,0.16217902302742004,0.14845404028892517,0.14677900075912476,0.1541150063276291,0.14947497844696045,0.16772353649139404,0.1552419513463974,0.1766197383403778,0.16247889399528503,0.16060921549797058,0.14982497692108154,0.16737323999404907,0.15018370747566223,0.17840425670146942,0.15499402582645416,0.18457047641277313],[0.18870016932487488,0.18284909427165985,0.18320231139659882,0.15407037734985352,0.16781093180179596,0.13116192817687988,0.151303231716156,0.12754753232002258,0.13929948210716248,0.13381043076515198,0.15622511506080627,0.13633893430233002,0.14546380937099457,0.12489192932844162,0.13672448694705963,0.11798934638500214,0.12893395125865936,0.11244526505470276,0.15288397669792175,0.15273866057395935,0.13933563232421875,0.1425943374633789,0.15166902542114258,0.14624083042144775,0.16143792867660522,0.1506595015525818,0.15202979743480682,0.1697026938199997,0.14315780997276306,0.15815022587776184,0.1585114747285843,0.1624210923910141,0.16730932891368866,0.1687653511762619,0.15291820466518402,0.18801790475845337,0.14510878920555115,0.17517443001270294,0.15596748888492584,0.17630761861801147,0.16266745328903198,0.18122003972530365],[0.18789362907409668,0.1826445609331131,0.18372569978237152,0.15412546694278717,0.16564612090587616,0.1302325576543808,0.14679154753684998,0.1279602199792862,0.13486328721046448,0.13937535881996155,0.15358847379684448,0.1335952877998352,0.14074675738811493,0.12155486643314362,0.13099609315395355,0.11432423442602158,0.12244156002998352,0.10866263508796692,0.1505700945854187,0.1523199826478958,0.13655836880207062,0.1460600346326828,0.15029233694076538,0.1509198248386383,0.16169686615467072,0.15573464334011078,0.15042538940906525,0.1711483597755432,0.13974806666374207,0.16399075090885162,0.15585464239120483,0.16719070076942444,0.16568151116371155,0.17174893617630005,0.15216241776943207,0.19097113609313965,0.1430736482143402,0.18221548199653625,0.15438653528690338,0.1833554059267044,0.16142785549163818,0.18676193058490753],[0.18911896646022797,0.18169568479061127,0.1841452568769455,0.1538107842206955,0.16589033603668213,0.1307772547006607,0.14681172370910645,0.1273573935031891,0.13526372611522675,0.14144182205200195,0.15521177649497986,0.13155440986156464,0.14349780976772308,0.1194244921207428,0.13372990489006042,0.11282096803188324,0.12566931545734406,0.10840865224599838,0.1517774760723114,0.14971981942653656,0.1373981386423111,0.144807830452919,0.15084689855575562,0.15056511759757996,0.16128653287887573,0.1549142748117447,0.15095846354961395,0.1685226559638977,0.13998852670192719,0.1639145463705063,0.15622153878211975,0.16650287806987762,0.16616883873939514,0.1701863408088684,0.15180905163288116,0.18873275816440582,0.14345018565654755,0.18319152295589447,0.15494368970394135,0.1838534027338028,0.16267147660255432,0.1854153722524643],[0.18554553389549255,0.18646341562271118,0.17987246811389923,0.1560298651456833,0.16335256397724152,0.13588638603687286,0.14574694633483887,0.13060912489891052,0.13482341170310974,0.14340098202228546,0.15688638389110565,0.13346591591835022,0.1458774358034134,0.11941179633140564,0.13762237131595612,0.11261897534132004,0.13031435012817383,0.10617806762456894,0.1521737277507782,0.14967279136180878,0.13665594160556793,0.14504839479923248,0.1471993774175644,0.15339447557926178,0.15713006258010864,0.1582093983888626,0.14969445765018463,0.1678166389465332,0.1371961086988449,0.16424401104450226,0.15226703882217407,0.17023107409477234,0.16304105520248413,0.17409422993659973,0.14913350343704224,0.18713019788265228,0.13997361063957214,0.18223272264003754,0.15066392719745636,0.18613505363464355,0.15924213826656342,0.18891865015029907],[0.18929825723171234,0.1927718073129654,0.1678793728351593,0.17144057154655457,0.1515655666589737,0.1563640832901001,0.14147412776947021,0.15200339257717133,0.13696062564849854,0.1501920372247696,0.16081130504608154,0.12051950395107269,0.14993448555469513,0.10459472984075546,0.1447913646697998,0.09805595129728317,0.14051973819732666,0.08976785838603973,0.16305842995643616,0.1359906941652298,0.14910729229450226,0.13951770961284637,0.14697644114494324,0.15466876327991486,0.15081796050071716,0.1644473522901535,0.16440601646900177,0.1521066576242447,0.15036121010780334,0.1538246124982834,0.1501273512840271,0.16957741975784302,0.15413320064544678,0.17982669174671173,0.16593174636363983,0.16400568187236786,0.15529754757881165,0.1658288985490799,0.1540341079235077,0.17611120641231537,0.15736567974090576,0.1841488778591156],[0.1863413006067276,0.20933039486408234,0.1632358580827713,0.2149856835603714,0.14888477325439453,0.19383449852466583,0.14337605237960815,0.16997450590133667,0.1453464776277542,0.1515572965145111,0.13815487921237946,0.1571660190820694,0.12734973430633545,0.11541582643985748,0.12324458360671997,0.09125316888093948,0.12047767639160156,0.07109781354665756,0.15020999312400818,0.14158375561237335,0.14521536231040955,0.13859602808952332,0.14676646888256073,0.15449339151382446,0.14958976209163666,0.16415522992610931,0.16303807497024536,0.1372745931148529,0.15668471157550812,0.14553020894527435,0.15834805369377136,0.15881362557411194,0.1620669960975647,0.16815319657325745,0.17238885164260864,0.13618947565555573,0.16586661338806152,0.14460383355617523,0.16702862083911896,0.15603095293045044,0.17045842111110687,0.16516776382923126],[0.17999623715877533,0.20548979938030243,0.1590922325849533,0.2088359296321869,0.14717237651348114,0.1915193498134613,0.1418749839067459,0.17593754827976227,0.14161239564418793,0.1619061976671219,0.13667145371437073,0.15892064571380615,0.12737222015857697,0.12198770046234131,0.1237584725022316,0.10094262659549713,0.12134364247322083,0.08379016071557999,0.14709161221981049,0.1440887153148651,0.14583411812782288,0.14059124886989594,0.14852061867713928,0.15482577681541443,0.15053601562976837,0.1654273271560669,0.15944531559944153,0.1396087110042572,0.1562156230211258,0.14687097072601318,0.15874896943569183,0.15911965072155,0.1620570868253708,0.16826346516609192,0.16816283762454987,0.1368311047554016,0.1651512086391449,0.1447920948266983,0.16694290935993195,0.15548774600028992,0.16992218792438507,0.16383124887943268],[0.18366262316703796,0.20314286649227142,0.16022469103336334,0.20763999223709106,0.14484933018684387,0.18692290782928467,0.14202415943145752,0.16971345245838165,0.14318178594112396,0.15838244557380676,0.14189067482948303,0.14647415280342102,0.13339076936244965,0.1164078563451767,0.12986937165260315,0.09872715920209885,0.12786409258842468,0.08422321081161499,0.1538509726524353,0.1354227364063263,0.1478978842496872,0.14058566093444824,0.14780689775943756,0.1557486206293106,0.1507866084575653,0.16502335667610168,0.16470938920974731,0.13717247545719147,0.15776802599430084,0.14607492089271545,0.15758401155471802,0.1585436463356018,0.16061730682849884,0.16636094450950623,0.17279218137264252,0.13977062702178955,0.16608785092830658,0.14894455671310425,0.16601760685443878,0.15757212042808533,0.16897428035736084,0.16523414850234985],[0.18994919955730438,0.18812942504882812,0.17397910356521606,0.1506875902414322,0.15809151530265808,0.13553552329540253,0.1431410312652588,0.13619530200958252,0.1339186280965805,0.1498374491930008,0.15690849721431732,0.12966427206993103,0.14610837399959564,0.11773352324962616,0.13841181993484497,0.11279809474945068,0.13229478895664215,0.10803036391735077,0.1534671038389206,0.1487918496131897,0.13787032663822174,0.1455962210893631,0.14363667368888855,0.1513916254043579,0.1512809544801712,0.15624430775642395,0.15171104669570923,0.1686711311340332,0.13763274252414703,0.16871218383312225,0.1498141586780548,0.17283275723457336,0.16084803640842438,0.1759699285030365,0.15186156332492828,0.18848608434200287,0.1412029266357422,0.18469329178333282,0.14933985471725464,0.18641044199466705,0.15903174877166748,0.18792323768138885],[0.19991591572761536,0.18372684717178345,0.19631023705005646,0.1467234194278717,0.17395195364952087,0.11953871697187424,0.15064142644405365,0.11434906721115112,0.13672131299972534,0.12932413816452026,0.160789355635643,0.13024665415287018,0.14488981664180756,0.11918773502111435,0.13285627961158752,0.11264052987098694,0.1226671114563942,0.10880740731954575,0.15680867433547974,0.14954882860183716,0.13875047862529755,0.1378592848777771,0.15413524210453033,0.13958153128623962,0.16647495329380035,0.1449689120054245,0.15569551289081573,0.16968227922916412,0.14140713214874268,0.1563325822353363,0.16110925376415253,0.1591728776693344,0.17377091944217682,0.16756747663021088,0.1561448872089386,0.19084715843200684,0.14488525688648224,0.176467165350914,0.15849806368350983,0.17675699293613434,0.1682923585176468,0.18274515867233276],[0.19801464676856995,0.1847187727689743,0.192595973610878,0.14874690771102905,0.16945670545101166,0.1234593316912651,0.14604707062244415,0.12022827565670013,0.1323293149471283,0.13780084252357483,0.15712988376617432,0.12938526272773743,0.14070959389209747,0.11935286968946457,0.12834717333316803,0.11418772488832474,0.11787044256925583,0.1107516661286354,0.15347647666931152,0.14940039813518524,0.13560232520103455,0.14314676821231842,0.15046420693397522,0.14654923975467682,0.16271446645259857,0.15125592052936554,0.1527368128299713,0.17019662261009216,0.1388491988182068,0.16277939081192017,0.15745261311531067,0.16467486321926117,0.16945452988147736,0.17036300897598267,0.15328764915466309,0.19261477887630463,0.14183734357357025,0.18294267356395721,0.15474271774291992,0.18374817073345184,0.16390158236026764,0.18804797530174255],[0.20361857116222382,0.1687067300081253,0.19636201858520508,0.13984768092632294,0.1740148365497589,0.11725426465272903,0.1517803817987442,0.11976120620965958,0.13814885914325714,0.13703854382038116,0.15729810297489166,0.11922060698270798,0.13682585954666138,0.10578463226556778,0.12286639213562012,0.0991138145327568,0.11040320247411728,0.09457805007696152,0.15520548820495605,0.14260433614253998,0.14182984828948975,0.1406453400850296,0.1600775271654129,0.14552032947540283,0.1728508025407791,0.14881767332553864,0.15653066337108612,0.16557084023952484,0.14602160453796387,0.16295738518238068,0.16659028828144073,0.16402822732925415,0.17931097745895386,0.16659753024578094,0.16005314886569977,0.18932723999023438,0.14862647652626038,0.18406789004802704,0.16205202043056488,0.18253178894519806,0.1716517210006714,0.18380993604660034],[0.20334292948246002,0.16685685515403748,0.19364787638187408,0.14036566019058228,0.16963954269886017,0.1240326464176178,0.14718221127986908,0.12638889253139496,0.136114239692688,0.1478067934513092,0.15362343192100525,0.12199759483337402,0.1327567994594574,0.11461001634597778,0.1195642501115799,0.11387075483798981,0.107877217233181,0.11358791589736938,0.15325288474559784,0.14332233369350433,0.1389571726322174,0.14700105786323547,0.1542685329914093,0.14965064823627472,0.16659076511859894,0.1510847955942154,0.15556834638118744,0.16431649029254913,0.14341212809085846,0.16749198734760284,0.16066505014896393,0.1652485430240631,0.17304451763629913,0.16538017988204956,0.1595153510570526,0.1852777600288391,0.14904531836509705,0.1853189319372177,0.16107386350631714,0.18302279710769653,0.17094552516937256,0.18286333978176117],[0.19555634260177612,0.16426433622837067,0.1856055110692978,0.14156509935855865,0.16069567203521729,0.12806887924671173,0.13928624987602234,0.1348244547843933,0.13185636699199677,0.1567794382572174,0.1483231782913208,0.12554125487804413,0.12730427086353302,0.12464442104101181,0.11480095237493515,0.12726755440235138,0.10414671897888184,0.1287865787744522,0.14900140464305878,0.1459500789642334,0.13619831204414368,0.15445435047149658,0.14984743297100067,0.15717747807502747,0.16142785549163818,0.1571655124425888,0.1518547236919403,0.1651618480682373,0.14095260202884674,0.17373734712600708,0.15630300343036652,0.17074993252754211,0.1678907871246338,0.16864615678787231,0.1560898870229721,0.1840311735868454,0.14667126536369324,0.19006377458572388,0.1573958843946457,0.18770471215248108,0.16615010797977448,0.18517588078975677],[0.1990492045879364,0.16397282481193542,0.1891200840473175,0.13947546482086182,0.16401152312755585,0.12566928565502167,0.1424829214811325,0.13149841129779816,0.134412482380867,0.1535014510154724,0.15157893300056458,0.12351404875516891,0.13067275285720825,0.12083213776350021,0.11808731406927109,0.12240757793188095,0.10710876435041428,0.12343805283308029,0.1519450694322586,0.14423926174640656,0.13819928467273712,0.15132789313793182,0.15183432400226593,0.15327802300453186,0.16355907917022705,0.15422149002552032,0.1546381264925003,0.16392335295677185,0.1428929716348648,0.17079277336597443,0.15864409506320953,0.16728638112545013,0.17046993970870972,0.16633835434913635,0.15879982709884644,0.18329839408397675,0.14900001883506775,0.18709297478199005,0.16005000472068787,0.1842321753501892,0.16904841363430023,0.18283413350582123]],"1":[[0.17401206493377686,0.22055765986442566,0.1537291258573532,0.22446097433567047,0.14222976565361023,0.20420561730861664,0.1381310224533081,0.18541155755519867,0.1365593820810318,0.17428940534591675,0.13498391211032867,0.17491526901721954,0.11951828002929688,0.14657515287399292,0.11219915747642517,0.12959983944892883,0.10743170231580734,0.11602428555488586,0.14483225345611572,0.16078361868858337,0.13565723598003387,0.12841077148914337,0.13145972788333893,0.10882004350423813,0.12951849400997162,0.09456123411655426,0.15437304973602295,0.1557943969964981,0.1463795155286789,0.1524662971496582,0.14611466228961945,0.1649077832698822,0.14874698221683502,0.17459474503993988,0.16107624769210815,0.15528418123722076,0.15470892190933228,0.16208010911941528,0.1548755019903183,0.1744639128446579,0.15807555615901947,0.18305453658103943],[0.17782986164093018,0.2165653258562088,0.1573319137096405,0.22199402749538422,0.14570321142673492,0.20285995304584503,0.14095298945903778,0.1864442378282547,0.13516837358474731,0.17598190903663635,0.13756127655506134,0.1687966287136078,0.12263210862874985,0.1421051323413849,0.11558084934949875,0.12473433464765549,0.1113152876496315,0.11094013601541519,0.14724300801753998,0.1581953912973404,0.13802941143512726,0.12761057913303375,0.1344292163848877,0.10866626352071762,0.13235893845558167,0.09412413835525513,0.15630538761615753,0.1547347754240036,0.1473931074142456,0.15136747062206268,0.14762911200523376,0.16553863883018494,0.15035156905651093,0.1749056577682495,0.16237299144268036,0.1540130376815796,0.15562233328819275,0.15935055911540985,0.1554117351770401,0.17257511615753174,0.1580495983362198,0.18057972192764282],[0.1796635538339615,0.2149650603532791,0.16006387770175934,0.2180212289094925,0.14870476722717285,0.1975143402814865,0.14274822175502777,0.18003696203231812,0.1362536996603012,0.16903550922870636,0.14252959191799164,0.16456936299800873,0.12785816192626953,0.13771526515483856,0.1213238388299942,0.12084994465112686,0.11731906235218048,0.10777537524700165,0.1523326337337494,0.15513813495635986,0.14308235049247742,0.1247609555721283,0.13935719430446625,0.10710176080465317,0.13733287155628204,0.09473812580108643,0.16080141067504883,0.15355293452739716,0.15120840072631836,0.14841674268245697,0.15043768286705017,0.16211099922657013,0.15278509259223938,0.17119815945625305,0.16637244820594788,0.1540967971086502,0.1588994264602661,0.15675890445709229,0.15777789056301117,0.1690066009759903,0.1600300371646881,0.1778937429189682],[0.1797826588153839,0.214982271194458,0.15979628264904022,0.21811527013778687,0.14833824336528778,0.19666564464569092,0.1442558914422989,0.17691929638385773,0.13942770659923553,0.16378529369831085,0.14228785037994385,0.16423775255680084,0.12794998288154602,0.13688324391841888,0.1215064600110054,0.12058402597904205,0.1175064817070961,0.1075439378619194,0.1522626280784607,0.15512843430042267,0.14315718412399292,0.12541507184505463,0.13956783711910248,0.10822854191064835,0.13761556148529053,0.09578412771224976,0.16092032194137573,0.15358400344848633,0.15102343261241913,0.149174302816391,0.15062110126018524,0.16344596445560455,0.1533743143081665,0.17276237905025482,0.16668987274169922,0.1539791226387024,0.15897975862026215,0.15678539872169495,0.15811185538768768,0.16906489431858063,0.16059184074401855,0.17740297317504883],[0.17952604591846466,0.21543028950691223,0.15906839072704315,0.21896830201148987,0.14780005812644958,0.19860945641994476,0.1441231220960617,0.17918401956558228,0.13926145434379578,0.16685596108436584,0.1425538808107376,0.16412366926670074,0.12747088074684143,0.13689152896404266,0.12088115513324738,0.12036842107772827,0.11674955487251282,0.10688217729330063,0.1524672657251358,0.1544611006975174,0.1430438607931137,0.12467500567436218,0.1393676996231079,0.10709971189498901,0.13765226304531097,0.09389333426952362,0.1610167771577835,0.15296272933483124,0.15114687383174896,0.14915905892848969,0.1501566767692566,0.16292396187782288,0.15264181792736053,0.17217876017093658,0.16664934158325195,0.15415261685848236,0.1588105410337448,0.15712295472621918,0.15759927034378052,0.16919763386249542,0.16001065075397491,0.17768344283103943],[0.1813962757587433,0.21554304659366608,0.16069495677947998,0.2183775156736374,0.14843150973320007,0.19709131121635437,0.1426144689321518,0.17828166484832764,0.13699229061603546,0.1649303138256073,0.14294281601905823,0.16425633430480957,0.12775173783302307,0.1364687830209732,0.12097004801034927,0.11972120404243469,0.116713747382164,0.10578638315200806,0.15295444428920746,0.154500350356102,0.1438155621290207,0.12394066900014877,0.14009696245193481,0.10504404455423355,0.13800962269306183,0.0909610167145729,0.1611400544643402,0.15287163853645325,0.1519118845462799,0.14924848079681396,0.1523604840040207,0.1639692634344101,0.15519708395004272,0.17290669679641724,0.16632387042045593,0.15352141857147217,0.15918023884296417,0.15651072561740875,0.1591130793094635,0.1679338663816452,0.16171520948410034,0.17669126391410828],[0.18021903932094574,0.21027474105358124,0.15801967680454254,0.2133873999118805,0.14706875383853912,0.19570453464984894,0.14642828702926636,0.17931446433067322,0.1465453952550888,0.16634757816791534,0.1441146433353424,0.15301533043384552,0.13395027816295624,0.12461644411087036,0.12943753600120544,0.10762011259794235,0.12697121500968933,0.09420859068632126,0.15498168766498566,0.14893467724323273,0.14919881522655487,0.12314432859420776,0.14706005156040192,0.1086195707321167,0.1470566987991333,0.0977696031332016,0.16377612948417664,0.15194490551948547,0.15495866537094116,0.14801593124866486,0.15223953127861023,0.1614726483821869,0.1534503698348999,0.1701345294713974,0.16888253390789032,0.15421734750270844,0.16200855374336243,0.15635442733764648,0.16067014634609222,0.16638268530368805,0.1622852087020874,0.1746443212032318],[0.19910965859889984,0.19449959695339203,0.1945427656173706,0.15786762535572052,0.1734820455312729,0.13809816539287567,0.1540912687778473,0.13441482186317444,0.1441207230091095,0.1526506394147873,0.16347332298755646,0.1434478759765625,0.151495561003685,0.1241411417722702,0.14248594641685486,0.11409059166908264,0.1361127346754074,0.10700766742229462,0.1581309586763382,0.15852703154087067,0.1393829882144928,0.15026700496673584,0.128729447722435,0.14258085191249847,0.11924983561038971,0.13835375010967255,0.15686346590518951,0.17524443566799164,0.13858766853809357,0.1628628373146057,0.14756186306476593,0.15370631217956543,0.15820153057575226,0.15526016056537628,0.15521204471588135,0.19249281287193298,0.14092780649662018,0.1807209700345993,0.14647026360034943,0.1712653636932373,0.15609733760356903,0.1701204478740692],[0.1987011581659317,0.19200076162815094,0.1928109973669052,0.15867991745471954,0.17237451672554016,0.13811765611171722,0.15271389484405518,0.13682740926742554,0.1421220898628235,0.153908833861351,0.1573866307735443,0.14348550140857697,0.14029550552368164,0.12270484864711761,0.129269078373909,0.11306905746459961,0.11963748931884766,0.1068565770983696,0.15256337821483612,0.16137970983982086,0.13002629578113556,0.15554071962833405,0.1165696308016777,0.1499679833650589,0.10507669299840927,0.14814534783363342,0.15257084369659424,0.18025976419448853,0.13685515522956848,0.17110829055309296,0.15073885023593903,0.1609247326850891,0.162606343626976,0.16012056171894073,0.15469063818454742,0.19926582276821136,0.1442956179380417,0.1849018931388855,0.1528901606798172,0.1731034517288208,0.16248859465122223,0.17000727355480194],[0.2013702690601349,0.1848316341638565,0.19105376303195953,0.15240730345249176,0.16918279230594635,0.13878527283668518,0.14934593439102173,0.14150209724903107,0.13687589764595032,0.1595076322555542,0.16020627319812775,0.13842283189296722,0.14294582605361938,0.12094555795192719,0.13165464997291565,0.11280879378318787,0.12211507558822632,0.10739076137542725,0.15586143732070923,0.15691597759723663,0.1358814388513565,0.1532990038394928,0.12457887828350067,0.14978273212909698,0.11367105692625046,0.14915935695171356,0.1557142287492752,0.17570118606090546,0.13665363192558289,0.17369140684604645,0.14808209240436554,0.1634039729833603,0.15963466465473175,0.16244998574256897,0.15704016387462616,0.19497309625148773,0.14341990649700165,0.18514969944953918,0.1506981998682022,0.17474697530269623,0.16107434034347534,0.17202399671077728],[0.19307909905910492,0.19524145126342773,0.16862928867340088,0.20403406023979187,0.15485818684101105,0.1931501179933548,0.1512606292963028,0.18273599445819855,0.15156173706054688,0.1753918081521988,0.1544412076473236,0.14484292268753052,0.1414157748222351,0.1241595670580864,0.1342555582523346,0.11252041161060333,0.1298525035381317,0.10160336643457413,0.1631195843219757,0.14272895455360413,0.15497857332229614,0.12535254657268524,0.15015627443790436,0.11831456422805786,0.14809876680374146,0.11185209453105927,0.17001931369304657,0.14694587886333466,0.16149935126304626,0.14062732458114624,0.15588150918483734,0.13798287510871887,0.1523042917251587,0.1344928741455078,0.17330272495746613,0.15414345264434814,0.1675928235054016,0.1532583385705948,0.1643339842557907,0.1532222032546997,0.16385605931282043,0.15408959984779358],[0.18214209377765656,0.21256539225578308,0.1614789515733719,0.21340005099773407,0.15008503198623657,0.1919001191854477,0.1468808948993683,0.17203617095947266,0.14744071662425995,0.15840557217597961,0.14340369403362274,0.16752088069915771,0.12737955152988434,0.1450185775756836,0.11988730728626251,0.13127394020557404,0.11488096415996552,0.12067627906799316,0.15224890410900116,0.15301832556724548,0.14208121597766876,0.12352821975946426,0.13742110133171082,0.1069675087928772,0.1352417916059494,0.09604679048061371,0.1620091050863266,0.1472434550523758,0.1551745980978012,0.14499475061893463,0.1554693728685379,0.15751101076602936,0.15836752951145172,0.16618451476097107,0.16987459361553192,0.14573976397514343,0.16440856456756592,0.1534939557313919,0.16436170041561127,0.1653396189212799,0.16676929593086243,0.17314639687538147],[0.18699583411216736,0.20948952436447144,0.1666940599679947,0.21297793090343475,0.15444500744342804,0.19231827557086945,0.14996440708637238,0.1703857183456421,0.1480230838060379,0.15652267634868622,0.14782673120498657,0.16459035873413086,0.1299193650484085,0.1396552473306656,0.12113844603300095,0.1247648075222969,0.11458568274974823,0.11322583258152008,0.15778128802776337,0.14984633028507233,0.14597177505493164,0.11869300901889801,0.14033953845500946,0.10162554681301117,0.1369227021932602,0.08963528275489807,0.16742120683193207,0.14429248869419098,0.15832366049289703,0.14141006767749786,0.15767839550971985,0.15469777584075928,0.16025584936141968,0.16449901461601257,0.17485034465789795,0.1432071179151535,0.16737928986549377,0.1488783359527588,0.16669988632202148,0.1617075353860855,0.16928672790527344,0.16987353563308716],[0.20528769493103027,0.18584400415420532,0.19910898804664612,0.14868026971817017,0.17629921436309814,0.1275438815355301,0.15645045042037964,0.12839053571224213,0.14828704297542572,0.1497584581375122,0.16747693717479706,0.13507771492004395,0.15116609632968903,0.11743544787168503,0.14041215181350708,0.1083020567893982,0.1316990703344345,0.10234434902667999,0.1628977358341217,0.151797816157341,0.1417246013879776,0.14246797561645508,0.129373699426651,0.13412195444107056,0.11789669096469879,0.12989041209220886,0.16200663149356842,0.16965286433696747,0.1453636735677719,0.16197068989276886,0.15933535993099213,0.15562120079994202,0.17028313875198364,0.15888012945652008,0.16241608560085297,0.18774312734603882,0.15053820610046387,0.17232364416122437,0.1611592024564743,0.1654166728258133,0.1719660758972168,0.16749249398708344],[0.19965223968029022,0.18317323923110962,0.19213981926441193,0.15297508239746094,0.1713874489068985,0.13694937527179718,0.15220211446285248,0.14030848443508148,0.14068849384784698,0.1583060473203659,0.15986739099025726,0.13737237453460693,0.14153240621089935,0.12141680717468262,0.130299374461174,0.11422297358512878,0.12044354528188705,0.1095767393708229,0.15559491515159607,0.15543195605278015,0.1338643580675125,0.14893591403961182,0.12098746746778488,0.1436356008052826,0.10956448316574097,0.1419219821691513,0.15555354952812195,0.17489004135131836,0.1394818276166916,0.17003317177295685,0.15312732756137848,0.1631951779127121,0.16436275839805603,0.16443917155265808,0.15800343453884125,0.19403864443302155,0.14774608612060547,0.18142284452915192,0.157903790473938,0.1742812544107437,0.16775943338871002,0.17524319887161255],[0.20175957679748535,0.1805628389120102,0.19163969159126282,0.14898785948753357,0.170873761177063,0.13541744649410248,0.1520911157131195,0.14021585881710052,0.14102034270763397,0.15854158997535706,0.1610655039548874,0.13702808320522308,0.1437707543373108,0.12050123512744904,0.13328644633293152,0.11264891922473907,0.12406396120786667,0.10785187035799026,0.15691642463207245,0.1548924744129181,0.13644187152385712,0.14875760674476624,0.1248137578368187,0.14374394714832306,0.11382820457220078,0.14249363541603088,0.15691116452217102,0.17372548580169678,0.14067548513412476,0.16976642608642578,0.1538754552602768,0.16177280247211456,0.1650618314743042,0.1624961942434311,0.15911240875720978,0.1922246664762497,0.14765161275863647,0.18098445236682892,0.15719126164913177,0.17288649082183838,0.16757942736148834,0.17248542606830597],[0.19799277186393738,0.17797133326530457,0.1876836121082306,0.1497126668691635,0.16616500914096832,0.1389136165380478,0.14866161346435547,0.14727042615413666,0.13915984332561493,0.1651158630847931,0.15958359837532043,0.1345568746328354,0.14305080473423004,0.11943332105875015,0.13321922719478607,0.11278846859931946,0.12421322613954544,0.10773563385009766,0.1557030826807022,0.1521826684474945,0.13799409568309784,0.1480667144060135,0.1260928362607956,0.1451961249113083,0.11584249138832092,0.14483483135700226,0.15577039122581482,0.17057351768016815,0.14142441749572754,0.17232362926006317,0.1531234085559845,0.16724330186843872,0.16360192000865936,0.1674089878797531,0.1575196534395218,0.1883222907781601,0.14614813029766083,0.1822727620601654,0.15523861348628998,0.17752891778945923,0.16536709666252136,0.1775447130203247]],"2":[[0.18456542491912842,0.2257755845785141,0.16239511966705322,0.23578087985515594,0.14668957889080048,0.223780557513237,0.13576123118400574,0.2088937759399414,0.1301717758178711,0.19647543132305145,0.14038775861263275,0.1820693016052246,0.1261439174413681,0.16875895857810974,0.1249089390039444,0.17437675595283508,0.12836657464504242,0.1801130324602127,0.1483420431613922,0.16459894180297852,0.13171786069869995,0.13770709931850433,0.1237318366765976,0.1248512715101242,0.1180281713604927,0.1139143854379654,0.15677937865257263,0.15726763010025024,0.14310237765312195,0.13044895231723785,0.13389387726783752,0.11576157808303833,0.12709389626979828,0.10507000982761383,0.1653883308172226,0.15582360327243805,0.15631935000419617,0.13212837278842926,0.15114350616931915,0.11744750291109085,0.14706312119960785,0.10615669935941696],[0.1837708204984665,0.22604578733444214,0.16189983487129211,0.23573878407478333,0.14648358523845673,0.2238946110010147,0.1357734501361847,0.20897646248340607,0.13049453496932983,0.1964617520570755,0.14032986760139465,0.18135344982147217,0.12589265406131744,0.16830682754516602,0.12489756941795349,0.1748150736093521,0.12852922081947327,0.18087995052337646,0.1484055072069168,0.16424618661403656,0.131967231631279,0.13723604381084442,0.12397067993879318,0.12445442378520966,0.11811568588018417,0.11352971941232681,0.15678328275680542,0.15723149478435516,0.14355412125587463,0.1300385296344757,0.1344822347164154,0.11543180793523788,0.12763896584510803,0.10500258207321167,0.16537883877754211,0.1560182124376297,0.15693484246730804,0.13181106746196747,0.15179607272148132,0.11696641892194748,0.14766916632652283,0.10561680048704147],[0.18300090730190277,0.23103661835193634,0.16037113964557648,0.2402859926223755,0.14494375884532928,0.22715698182582855,0.13409137725830078,0.21013960242271423,0.12781904637813568,0.19741569459438324,0.13675563037395477,0.18535298109054565,0.12326110154390335,0.17025227844715118,0.12347882986068726,0.17605894804000854,0.1281384527683258,0.18260222673416138,0.14534269273281097,0.16686342656612396,0.12865835428237915,0.1383499801158905,0.12100899964570999,0.12407074868679047,0.11523261666297913,0.111757792532444,0.1546105295419693,0.15907834470272064,0.14102500677108765,0.1306091994047165,0.1322862207889557,0.11443968117237091,0.12584879994392395,0.10225191712379456,0.16474878787994385,0.1572638303041458,0.15720953047275543,0.13135910034179688,0.15305675566196442,0.1144474521279335,0.14961962401866913,0.10052758455276489],[0.18603309988975525,0.23269718885421753,0.16351231932640076,0.24255189299583435,0.1467197686433792,0.2289026826620102,0.13528579473495483,0.2119942605495453,0.12932813167572021,0.19925755262374878,0.13791565597057343,0.18389269709587097,0.12319713085889816,0.16856952011585236,0.12413287907838821,0.17660988867282867,0.12998922169208527,0.18428389728069305,0.14661620557308197,0.16488416492938995,0.1288829743862152,0.13520553708076477,0.12020377814769745,0.11966563761234283,0.11415055394172668,0.106025829911232,0.15646345913410187,0.15671271085739136,0.14199814200401306,0.1261661797761917,0.13289684057235718,0.10811842232942581,0.1259288191795349,0.0944538414478302,0.1669149100780487,0.1555006057024002,0.15957757830619812,0.12802952527999878,0.15543332695960999,0.10988859832286835,0.15228158235549927,0.09488064050674438],[0.21587176620960236,0.1867661476135254,0.2082085907459259,0.13623106479644775,0.1951054185628891,0.10432971268892288,0.18239983916282654,0.08729072660207748,0.16979387402534485,0.09007896482944489,0.1858654022216797,0.11561332643032074,0.17508924007415771,0.10246486216783524,0.16859546303749084,0.0993558019399643,0.16368402540683746,0.09994470328092575,0.1802200973033905,0.13340023159980774,0.16858868300914764,0.12310709059238434,0.16020894050598145,0.11887199431657791,0.15383517742156982,0.11372647434473038,0.17568206787109375,0.1503675878047943,0.16352194547653198,0.14372433722019196,0.1557389497756958,0.13774913549423218,0.1497746706008911,0.13231301307678223,0.17245745658874512,0.16868501901626587,0.16121569275856018,0.1668928563594818,0.15364843606948853,0.16522754728794098,0.14764024317264557,0.16323231160640717],[0.2036249041557312,0.17675431072711945,0.20181208848953247,0.14615489542484283,0.18965159356594086,0.11727596074342728,0.17388606071472168,0.10309578478336334,0.16280311346054077,0.11326363682746887,0.1717432141304016,0.13129229843616486,0.16173943877220154,0.12201854586601257,0.15825609862804413,0.11810216307640076,0.15877065062522888,0.11845128238201141,0.16571033000946045,0.1470530927181244,0.15078279376029968,0.13783477246761322,0.14166595041751862,0.13435806334018707,0.13234911859035492,0.13130642473697662,0.16287709772586823,0.1622755229473114,0.1467684656381607,0.15896868705749512,0.13674944639205933,0.15618661046028137,0.12892219424247742,0.15516652166843414,0.16277168691158295,0.18047994375228882,0.14862222969532013,0.18434633314609528,0.13888634741306305,0.18714332580566406,0.13048423826694489,0.1887589395046234],[0.2016303837299347,0.18257717788219452,0.19838398694992065,0.14970239996910095,0.1837412565946579,0.12086948752403259,0.16626498103141785,0.10707100480794907,0.15465255081653595,0.1192026138305664,0.1657758206129074,0.13535498082637787,0.15433096885681152,0.1264868974685669,0.15181805193424225,0.12393756210803986,0.15407896041870117,0.12629744410514832,0.1603594869375229,0.1518806517124176,0.14392688870429993,0.14368607103824615,0.13390128314495087,0.14063823223114014,0.12363884598016739,0.13761039078235626,0.15809427201747894,0.16780444979667664,0.14110611379146576,0.16506779193878174,0.13006164133548737,0.1622442603111267,0.121330127120018,0.16109353303909302,0.15817727148532867,0.18681393563747406,0.1441059410572052,0.19148550927639008,0.13444019854068756,0.19527699053287506,0.12600648403167725,0.19794811308383942],[0.19980879127979279,0.18507833778858185,0.1957162469625473,0.14998723566532135,0.1779213845729828,0.12326068431138992,0.15949895977973938,0.10900422930717468,0.14791715145111084,0.121711865067482,0.16174115240573883,0.13738855719566345,0.1504380702972412,0.12930206954479218,0.14675010740756989,0.1272018849849701,0.1468716710805893,0.1291728913784027,0.15693466365337372,0.15494342148303986,0.1404794156551361,0.14788101613521576,0.1299394816160202,0.1451178640127182,0.1193619892001152,0.14239512383937836,0.15540222823619843,0.1717454046010971,0.1385362595319748,0.17017585039138794,0.12777109444141388,0.16765525937080383,0.11922767758369446,0.1665223240852356,0.15623416006565094,0.19064262509346008,0.14229430258274078,0.1958765685558319,0.13262057304382324,0.1994861513376236,0.12454929947853088,0.2016179859638214],[0.19561485946178436,0.2128104865550995,0.17257127165794373,0.22771355509757996,0.1523408442735672,0.2133755385875702,0.1395782083272934,0.19696688652038574,0.13919831812381744,0.18649335205554962,0.1514013558626175,0.15950976312160492,0.1352238655090332,0.15183605253696442,0.1337384134531021,0.1632881462574005,0.13762030005455017,0.17172035574913025,0.16119499504566193,0.1462654173374176,0.14511467516422272,0.12202537804841995,0.1364641785621643,0.10895135998725891,0.13078537583351135,0.09676466137170792,0.171013742685318,0.14334331452846527,0.15962089598178864,0.11767428368330002,0.1517234444618225,0.10113301873207092,0.14570352435112,0.08902759850025177,0.17997175455093384,0.14691062271595,0.17426300048828125,0.12449301779270172,0.17042313516139984,0.11035604774951935,0.16785767674446106,0.09956394881010056],[0.17451047897338867,0.23637297749519348,0.152210995554924,0.24372537434101105,0.13971439003944397,0.23198527097702026,0.131403848528862,0.2142357975244522,0.12635686993598938,0.20256684720516205,0.12811924517154694,0.19629637897014618,0.11674308776855469,0.17789436876773834,0.11904384940862656,0.17806583642959595,0.12324123084545135,0.18084529042243958,0.136728435754776,0.17715036869049072,0.12014966458082199,0.14762957394123077,0.11384273320436478,0.1325533241033554,0.1084350198507309,0.11974076181650162,0.14630480110645294,0.16756664216518402,0.1340198665857315,0.13673508167266846,0.12645648419857025,0.11904537677764893,0.12119203805923462,0.10467813909053802,0.15734535455703735,0.1637725532054901,0.15033923089504242,0.13451793789863586,0.14689457416534424,0.11702339351177216,0.14381064474582672,0.10244641453027725],[0.17365045845508575,0.23632195591926575,0.15214526653289795,0.24144214391708374,0.14021040499210358,0.22728528082370758,0.1329580694437027,0.20851413905620575,0.12956875562667847,0.19570504128932953,0.1298740655183792,0.19318222999572754,0.12023377418518066,0.17320623993873596,0.12315592169761658,0.17423805594444275,0.12787581980228424,0.17880871891975403,0.13895240426063538,0.17513062059879303,0.12420642375946045,0.14492760598659515,0.11865604668855667,0.12992523610591888,0.11399099975824356,0.11779722571372986,0.148716539144516,0.16618649661540985,0.13799221813678741,0.13476034998893738,0.13181519508361816,0.11722411960363388,0.1273152381181717,0.10370869934558868,0.1599428951740265,0.1631547063589096,0.1548277735710144,0.1330992877483368,0.15275262296199799,0.11506444215774536,0.15080416202545166,0.10018684715032578],[0.1743612140417099,0.2348753809928894,0.15158554911613464,0.24058650434017181,0.13933026790618896,0.22629201412200928,0.1314888894557953,0.20642322301864624,0.12741674482822418,0.19272108376026154,0.13105174899101257,0.19124624133110046,0.12044761329889297,0.17237159609794617,0.12255298346281052,0.17351122200489044,0.12720997631549835,0.17793911695480347,0.14023283123970032,0.17309445142745972,0.1262650191783905,0.14341241121292114,0.12093809992074966,0.12874454259872437,0.11670228838920593,0.11703457683324814,0.14996455609798431,0.16458284854888916,0.14019420742988586,0.13587267696857452,0.13340482115745544,0.11929000914096832,0.12864965200424194,0.10659068077802658,0.16085612773895264,0.1616174727678299,0.15681369602680206,0.1341318041086197,0.15533174574375153,0.11637269705533981,0.1541128307580948,0.1022268533706665],[0.18134662508964539,0.22886690497398376,0.1583937555551529,0.2343735545873642,0.14348314702510834,0.21776285767555237,0.1361498087644577,0.19982478022575378,0.13451527059078217,0.18610812723636627,0.13949090242385864,0.17383699119091034,0.129171684384346,0.15935629606246948,0.12740285694599152,0.163374662399292,0.1302034556865692,0.1691749393939972,0.1494341790676117,0.15960264205932617,0.1379547268152237,0.13138121366500854,0.13279227912425995,0.11692982912063599,0.12949182093143463,0.10609720647335052,0.1600462943315506,0.1552169770002365,0.15212176740169525,0.12778128683567047,0.14636166393756866,0.11077027022838593,0.14189474284648895,0.09804127365350723,0.17087975144386292,0.15584871172904968,0.16961604356765747,0.13015861809253693,0.16954779624938965,0.11285874247550964,0.1697632521390915,0.09854765981435776],[0.19129621982574463,0.20106185972690582,0.1792747676372528,0.1504674255847931,0.16538949310779572,0.12176498025655746,0.15327581763267517,0.11251969635486603,0.14379513263702393,0.11733346432447433,0.169077530503273,0.13347341120243073,0.1592366248369217,0.12341366708278656,0.15274158120155334,0.12112969160079956,0.14790216088294983,0.12113242596387863,0.16452601552009583,0.15187667310237885,0.15434938669204712,0.14207012951374054,0.14672844111919403,0.13720455765724182,0.14182864129543304,0.13432419300079346,0.1619752049446106,0.16965670883655548,0.15066419541835785,0.16772036254405975,0.1431015580892563,0.1633128821849823,0.13725149631500244,0.1600334793329239,0.15927359461784363,0.18721576035022736,0.14930154383182526,0.18640339374542236,0.14164851605892181,0.1846579909324646,0.13530109822750092,0.18399545550346375],[0.1942397952079773,0.19473303854465485,0.18509812653064728,0.15550212562084198,0.16625021398067474,0.136156365275383,0.14845292270183563,0.1282939463853836,0.1341589242219925,0.13129934668540955,0.1525878757238388,0.14633826911449432,0.1409580260515213,0.13974741101264954,0.13548867404460907,0.13720689713954926,0.1327023208141327,0.13779008388519287,0.1474987417459488,0.1648508608341217,0.12910926342010498,0.15883532166481018,0.11813227087259293,0.15658128261566162,0.1073351800441742,0.15467427670955658,0.14564955234527588,0.18290114402770996,0.1253201961517334,0.18123480677604675,0.11269401758909225,0.1780482679605484,0.10147782415151596,0.1764741688966751,0.14611726999282837,0.2023771107196808,0.1282411366701126,0.20602041482925415,0.11657121777534485,0.2089652121067047,0.1057281494140625,0.2113785743713379],[0.18785591423511505,0.19387958943843842,0.17750345170497894,0.15602681040763855,0.15888746082782745,0.1368899941444397,0.14140574634075165,0.12888474762439728,0.12803049385547638,0.13574905693531036,0.14571066200733185,0.14888937771320343,0.13295410573482513,0.1430291086435318,0.12847091257572174,0.14270156621932983,0.12772469222545624,0.14538763463497162,0.141603022813797,0.1673877239227295,0.12425414472818375,0.162597194314003,0.1136837899684906,0.16028086841106415,0.10369359701871872,0.15831343829631805,0.14061863720417023,0.18553508818149567,0.12238957732915878,0.1853702813386917,0.11032739281654358,0.1834804117679596,0.10049229115247726,0.18286021053791046,0.14170826971530914,0.20513871312141418,0.12665505707263947,0.21176022291183472,0.11620918661355972,0.21599742770195007,0.1069924607872963,0.2192322164773941],[0.1785566210746765,0.20244061946868896,0.1531447023153305,0.1848408281803131,0.13402476906776428,0.1704513132572174,0.12144855409860611,0.16973617672920227,0.1131744459271431,0.17362496256828308,0.1395745575428009,0.14160844683647156,0.12321466207504272,0.14254121482372284,0.11756738275289536,0.15411362051963806,0.11724051088094711,0.16373366117477417,0.14452624320983887,0.1550033688545227,0.1295962780714035,0.15364335477352142,0.12383272498846054,0.16344217956066132,0.1226474791765213,0.17341798543930054,0.1486653983592987,0.16955268383026123,0.13587221503257751,0.1689801663160324,0.12940585613250732,0.17450369894504547,0.1265883892774582,0.1803339719772339,0.1516599953174591,0.18212753534317017,0.14032809436321259,0.18259410560131073,0.13536180555820465,0.1871742606163025,0.13278745114803314,0.19116578996181488],[0.17803055047988892,0.23775698244571686,0.15251949429512024,0.2529793679714203,0.13583339750766754,0.23686926066875458,0.12722036242485046,0.21628573536872864,0.12279525399208069,0.2016672044992447,0.1239163875579834,0.1956641674041748,0.11170961707830429,0.18231087923049927,0.11324004828929901,0.18770895898342133,0.11855611950159073,0.1925307661294937,0.13341116905212402,0.1751035451889038,0.11646271497011185,0.14710552990436554,0.10981716215610504,0.13317105174064636,0.1053105890750885,0.12329661101102829,0.14429642260074615,0.16528761386871338,0.13168267905712128,0.1357826143503189,0.12435276061296463,0.11862429231405258,0.11961360275745392,0.10621419548988342,0.155982106924057,0.1607876718044281,0.14861257374286652,0.13232393562793732,0.14532044529914856,0.11404620110988617,0.1425691395998001,0.09841641783714294],[0.18280357122421265,0.2389010190963745,0.15672047436237335,0.24726015329360962,0.14195291697978973,0.22972559928894043,0.13356758654117584,0.2092525064945221,0.12901808321475983,0.1946343183517456,0.13084901869297028,0.19064593315124512,0.11915886402130127,0.17131145298480988,0.12201277166604996,0.17505379021167755,0.1278596818447113,0.1813577264547348,0.14061620831489563,0.1705532819032669,0.12492719292640686,0.13924236595630646,0.11905837059020996,0.12499803304672241,0.11461217701435089,0.1149158701300621,0.15144994854927063,0.16114185750484467,0.1403549313545227,0.13041044771671295,0.13309906423091888,0.11376705020666122,0.12825483083724976,0.10116495937108994,0.16339607536792755,0.1572442501783371,0.15697084367275238,0.1273127794265747,0.15441691875457764,0.10873926430940628,0.15267619490623474,0.09352149069309235],[0.1893562525510788,0.22789278626441956,0.1653834730386734,0.2390105128288269,0.14784221351146698,0.2244914472103119,0.13862107694149017,0.20545822381973267,0.13498778641223907,0.1906052976846695,0.13810387253761292,0.17810159921646118,0.12786652147769928,0.1626053899526596,0.12711191177368164,0.16550704836845398,0.12989521026611328,0.1687910109758377,0.148180291056633,0.16049280762672424,0.13392581045627594,0.13395296037197113,0.12766683101654053,0.12101593613624573,0.12375181913375854,0.11076696962118149,0.15928256511688232,0.15304915606975555,0.14891184866428375,0.12491672486066818,0.14243748784065247,0.10847748816013336,0.1373225301504135,0.09673459827899933,0.17050375044345856,0.15158578753471375,0.16505417227745056,0.1252010017633438,0.1627490073442459,0.10783528536558151,0.16134414076805115,0.09443322569131851]]}} \ No newline at end of file diff --git a/game/贪吃蛇/pose-knn-model.json b/game/贪吃蛇/pose-knn-model.json new file mode 100644 index 0000000..5911520 --- /dev/null +++ b/game/贪吃蛇/pose-knn-model.json @@ -0,0 +1 @@ +{"classMap":{"0":"Class 1","1":"Class 2","2":"Class 3","3":"Class 4"},"dataset":{"0":[[0.1449744552373886,0.058903422206640244,0.15573683381080627,0.048780180513858795,0.13763046264648438,0.0459466427564621,0.16824579238891602,0.07330764830112457,0.12776964902877808,0.06762394309043884,0.18878573179244995,0.13298510015010834,0.10071983933448792,0.17350059747695923,0.20250752568244934,0.019577758386731148,0.0662817433476448,0.26877909898757935,0.1645529866218567,0.027996787801384926,0.028019586578011513,0.26561710238456726,0.1818077713251114,0.31001073122024536,0.11246863007545471,0.31175166368484497,0.16979281604290009,0.27301767468452454,0.043893538415431976,0.2730908989906311,0.023673037067055702,0.2666533589363098,0.02271336317062378,0.26719915866851807],[0.14485180377960205,0.05881756916642189,0.15504848957061768,0.048442356288433075,0.1373307704925537,0.045904140919446945,0.16737128794193268,0.07300898432731628,0.12705180048942566,0.0680169016122818,0.18772107362747192,0.13296803832054138,0.09969513863325119,0.17233221232891083,0.20076312124729156,0.02021554671227932,0.06582126021385193,0.2691284418106079,0.1663161665201187,0.01862449385225773,0.027962576597929,0.26482897996902466,0.1813330054283142,0.30976906418800354,0.11170031875371933,0.3120349943637848,0.1729319542646408,0.2724705934524536,0.05031239613890648,0.2779191732406616,0.023458022624254227,0.2657006084918976,0.022526061162352562,0.26623767614364624],[0.14458568394184113,0.05901174247264862,0.15537215769290924,0.049309343099594116,0.13733483850955963,0.04580847546458244,0.16773541271686554,0.07445026189088821,0.12721137702465057,0.06759781390428543,0.1882983297109604,0.13421417772769928,0.09933646023273468,0.17289337515830994,0.20029719173908234,0.02188115008175373,0.06537698954343796,0.27026131749153137,0.16674435138702393,0.025881890207529068,0.02848118357360363,0.264503538608551,0.18187569081783295,0.3087525963783264,0.11197199672460556,0.3114084303379059,0.16876614093780518,0.271784245967865,0.04405827820301056,0.2792121171951294,0.02482820488512516,0.2661968469619751,0.024190232157707214,0.26651492714881897],[0.1446530669927597,0.05895695835351944,0.15563687682151794,0.049720726907253265,0.13771116733551025,0.04591893032193184,0.16845594346523285,0.07573819905519485,0.12796726822853088,0.06693191826343536,0.18841581046581268,0.13419975340366364,0.09938117116689682,0.17430035769939423,0.20156210660934448,0.02258203737437725,0.06388109922409058,0.2714085876941681,0.16735108196735382,0.017201539129018784,0.0281795896589756,0.26670941710472107,0.1818850040435791,0.306451678276062,0.10811101645231247,0.31226566433906555,0.15565139055252075,0.27085599303245544,0.04431021213531494,0.2804051637649536,0.023501846939325333,0.2696036100387573,0.02363087423145771,0.26798126101493835],[0.1441407948732376,0.05850835517048836,0.15509667992591858,0.04912271723151207,0.13706547021865845,0.0455787256360054,0.16788972914218903,0.07482783496379852,0.12716522812843323,0.06717713922262192,0.18822859227657318,0.1336854249238968,0.09860192239284515,0.17262107133865356,0.20317690074443817,0.01889905519783497,0.06391312181949615,0.2695480287075043,0.16641686856746674,0.023754030466079712,0.02802356891334057,0.26628923416137695,0.18132604658603668,0.30439940094947815,0.10744032263755798,0.31066516041755676,0.16795992851257324,0.27144724130630493,0.044388752430677414,0.2792320251464844,0.020384101197123528,0.2707710266113281,0.019687436521053314,0.2707267701625824],[0.1434818059206009,0.058853790163993835,0.15427754819393158,0.04981006309390068,0.13659857213497162,0.04623696208000183,0.16715660691261292,0.07554329931735992,0.1276596039533615,0.0685214027762413,0.18745337426662445,0.13330991566181183,0.09807329624891281,0.17198462784290314,0.2041696161031723,0.02028222195804119,0.06208202987909317,0.269333153963089,0.1709328442811966,0.014641202986240387,0.02726277895271778,0.2657039165496826,0.18421097099781036,0.3068471848964691,0.11032097786664963,0.3033125698566437,0.16836288571357727,0.27600711584091187,0.044197823852300644,0.27823910117149353,0.020053448155522346,0.2700057029724121,0.019279057160019875,0.2702319324016571],[0.14417614042758942,0.058157745748758316,0.15451616048812866,0.04918705299496651,0.13694767653942108,0.04541190341114998,0.16685117781162262,0.07501950860023499,0.12709563970565796,0.0682234838604927,0.18731839954853058,0.134388729929924,0.09839054197072983,0.17233683168888092,0.20420119166374207,0.020522590726614,0.06328456103801727,0.2684648931026459,0.1672586351633072,0.017814364284276962,0.027567951008677483,0.2656867206096649,0.18466722965240479,0.3026602268218994,0.1105666309595108,0.3098554015159607,0.17288532853126526,0.272240549325943,0.04392250254750252,0.27822282910346985,0.02058970369398594,0.27009958028793335,0.019755663350224495,0.27023208141326904],[0.14366181194782257,0.05905138701200485,0.15440896153450012,0.050150059163570404,0.13664565980434418,0.04619314894080162,0.16699209809303284,0.07556762546300888,0.12695901095867157,0.06739255785942078,0.18756090104579926,0.13441388309001923,0.09779561311006546,0.1725490689277649,0.20373667776584625,0.019198132678866386,0.062144722789525986,0.26955822110176086,0.1671883761882782,0.017713181674480438,0.027317527681589127,0.2657400667667389,0.18475934863090515,0.3072783648967743,0.11028661578893661,0.30442875623703003,0.1681366115808487,0.2760516107082367,0.044442541897296906,0.2783855199813843,0.020062120631337166,0.2698375880718231,0.019418833777308464,0.2700076103210449],[0.1448310911655426,0.059924256056547165,0.15552020072937012,0.05066714808344841,0.13745100796222687,0.046289291232824326,0.16742555797100067,0.07631635665893555,0.12703657150268555,0.06722092628479004,0.18716008961200714,0.1330432891845703,0.09709212929010391,0.17295347154140472,0.20280982553958893,0.02186003141105175,0.06359788775444031,0.26991042494773865,0.1684909611940384,0.016817795112729073,0.02524613030254841,0.2651577889919281,0.18218767642974854,0.30420905351638794,0.10795340687036514,0.31136688590049744,0.16853952407836914,0.27184927463531494,0.045041274279356,0.2803317606449127,0.021020835265517235,0.27031728625297546,0.02223799377679825,0.2677115201950073],[0.14326255023479462,0.06196456402540207,0.15376004576683044,0.0530303418636322,0.13610893487930298,0.048992983996868134,0.16575448215007782,0.07634669542312622,0.12620416283607483,0.06801130622625351,0.18628889322280884,0.13453251123428345,0.09651244431734085,0.17226044833660126,0.20126840472221375,0.024150647222995758,0.06312664598226547,0.2649148404598236,0.1664131134748459,0.0161431897431612,0.03174977749586105,0.2621710002422333,0.18081066012382507,0.3013460040092468,0.11094993352890015,0.30338382720947266,0.16773857176303864,0.2714034616947174,0.05145113170146942,0.27886825799942017,0.11401143670082092,0.2739986181259155,0.02783110737800598,0.2659759819507599]],"1":[[0.10175224393606186,0.0687585175037384,0.11120478808879852,0.05999641492962837,0.09457828849554062,0.058216262608766556,0.12447033077478409,0.08537953346967697,0.08691234141588211,0.07995080947875977,0.1492983102798462,0.16923822462558746,0.06068338081240654,0.16129620373249054,0.16324828565120697,0.2645755708217621,0.014966195449233055,0.23722268640995026,0.1550382375717163,0.25719279050827026,0.005852540954947472,0.24693270027637482,0.1340300291776657,0.2954433560371399,0.07541096210479736,0.29962751269340515,0.16202060878276825,0.2668141722679138,0.006611120421439409,0.2710193991661072,0.1334238201379776,0.2608596384525299,0.08249271661043167,0.2657274901866913],[0.10120172798633575,0.06834631413221359,0.11074730008840561,0.059888556599617004,0.09448990970849991,0.05882690101861954,0.12433474510908127,0.08526450395584106,0.08691899478435516,0.07943551987409592,0.14932571351528168,0.16962029039859772,0.06071880832314491,0.16140899062156677,0.16290698945522308,0.26486772298812866,0.012782794423401356,0.24114403128623962,0.1580822765827179,0.25712770223617554,0.006025586277246475,0.2468414008617401,0.13432137668132782,0.2933334410190582,0.07523404061794281,0.2975369691848755,0.15960879623889923,0.2697497308254242,0.006776834838092327,0.270965576171875,0.13330383598804474,0.26020246744155884,0.08208949118852615,0.2648908495903015],[0.09996293485164642,0.06820507347583771,0.10942673683166504,0.059418994933366776,0.09317155182361603,0.05899917334318161,0.12367939203977585,0.08434665203094482,0.0863346979022026,0.07950591295957565,0.14824844896793365,0.1688966453075409,0.06010088324546814,0.16056126356124878,0.1620403528213501,0.262727826833725,0.009112182073295116,0.24660885334014893,0.16095462441444397,0.25377145409584045,0.004562502261251211,0.25227639079093933,0.13359065353870392,0.2916675806045532,0.07479757815599442,0.29594141244888306,0.16142837703227997,0.2655162513256073,0.0066175940446555614,0.2694185972213745,0.15633267164230347,0.2569296658039093,0.08125234395265579,0.26290595531463623],[0.10018274188041687,0.06761493533849716,0.10980264842510223,0.05930189788341522,0.09350669384002686,0.05890694633126259,0.12385854870080948,0.08496014773845673,0.08641760051250458,0.08006134629249573,0.14853912591934204,0.16894392669200897,0.060234665870666504,0.1604265570640564,0.16259509325027466,0.2620566189289093,0.011648673564195633,0.24671518802642822,0.16146378219127655,0.25131097435951233,0.006256560329347849,0.25181567668914795,0.13363057374954224,0.29161810874938965,0.07455305755138397,0.2960994839668274,0.1587125062942505,0.26681193709373474,0.007004234008491039,0.27076455950737,0.15610642731189728,0.2566012442111969,0.08127938956022263,0.2640308141708374],[0.10016738623380661,0.06785769015550613,0.10972306877374649,0.059255797415971756,0.09336083382368088,0.058672305196523666,0.12335703521966934,0.08410769701004028,0.08606063574552536,0.07922413945198059,0.14823509752750397,0.16855300962924957,0.05975891277194023,0.16070593893527985,0.16113191843032837,0.26111242175102234,0.01132742315530777,0.2461916208267212,0.1574961543083191,0.2539174556732178,0.005864394828677177,0.2514430284500122,0.1331522911787033,0.29867199063301086,0.07475439459085464,0.2985449433326721,0.15667960047721863,0.26214879751205444,0.007223854307085276,0.2702111005783081,0.1547296792268753,0.25665220618247986,0.08137073367834091,0.26468318700790405],[0.1001896858215332,0.06767740845680237,0.10970394313335419,0.059391748160123825,0.09331344813108444,0.05874395743012428,0.1233021542429924,0.08451133966445923,0.08602852374315262,0.0795125663280487,0.1476568877696991,0.16811726987361908,0.059665873646736145,0.1604759693145752,0.16109716892242432,0.26051291823387146,0.011640764772891998,0.24651522934436798,0.15391673147678375,0.2553349733352661,0.006295341532677412,0.25129643082618713,0.13265162706375122,0.29851511120796204,0.07465004175901413,0.29849353432655334,0.15707901120185852,0.2619587481021881,0.007317767012864351,0.2706690728664398,0.15417619049549103,0.2583763897418976,0.08187402784824371,0.26493626832962036],[0.10094195604324341,0.06884855031967163,0.11030405014753342,0.060025982558727264,0.09393541514873505,0.0584239736199379,0.12371661514043808,0.08510562777519226,0.08680246025323868,0.07948804646730423,0.14748138189315796,0.16822800040245056,0.0601925291121006,0.16044937074184418,0.16405487060546875,0.2621995508670807,0.014557388611137867,0.24397780001163483,0.14987897872924805,0.2584781050682068,0.006224542856216431,0.25253570079803467,0.13040226697921753,0.3002627491950989,0.07434175163507462,0.2978067100048065,0.15718598663806915,0.26369571685791016,0.007162847556173801,0.27144134044647217,0.13374072313308716,0.26085364818573,0.0816262811422348,0.2660995423793793],[0.10307948291301727,0.06905759125947952,0.11257187277078629,0.06135964021086693,0.09591687470674515,0.0587913803756237,0.1249971091747284,0.08741811662912369,0.08762865513563156,0.08077067881822586,0.14828230440616608,0.16979949176311493,0.06042998656630516,0.16172634065151215,0.1649065613746643,0.2637367248535156,0.01522032916545868,0.24464207887649536,0.15036629140377045,0.2579462230205536,0.006730631925165653,0.25190606713294983,0.13236968219280243,0.29278090596199036,0.07438425719738007,0.29580381512641907,0.1580493301153183,0.2648904323577881,0.007320815697312355,0.2709912359714508,0.1328645646572113,0.2605748772621155,0.0821002945303917,0.26595279574394226],[0.10356549918651581,0.06948045641183853,0.11226831376552582,0.06112052872776985,0.09603190422058105,0.0585196428000927,0.12406895309686661,0.08491947501897812,0.08715977519750595,0.07914181053638458,0.14653001725673676,0.16855965554714203,0.059805989265441895,0.16014939546585083,0.16297201812267303,0.2614345848560333,0.012749342247843742,0.24453365802764893,0.1655924916267395,0.25601622462272644,0.005261014681309462,0.26011785864830017,0.1310025453567505,0.2903074026107788,0.07368389517068863,0.29374855756759644,0.15711139142513275,0.26129087805747986,0.0072591169737279415,0.26785022020339966,0.15661945939064026,0.25708258152008057,0.08077400922775269,0.26326707005500793],[0.10439951717853546,0.06996685266494751,0.11319731920957565,0.061261095106601715,0.09680680185556412,0.058220453560352325,0.12474950402975082,0.08504683524370193,0.08753132075071335,0.07831627130508423,0.1477174013853073,0.16970057785511017,0.05986364558339119,0.1605946272611618,0.16133397817611694,0.26120132207870483,0.011877337470650673,0.24586936831474304,0.15422718226909637,0.2540202736854553,0.0052431318908929825,0.26072168350219727,0.12936624884605408,0.29253265261650085,0.07375433295965195,0.29435890913009644,0.1597566157579422,0.26241573691368103,0.00716782733798027,0.2682132422924042,0.1551099270582199,0.2575114369392395,0.08130846172571182,0.26339471340179443]],"2":[[0.10026481002569199,0.0791316032409668,0.10933997482061386,0.06869029253721237,0.09190778434276581,0.0666443333029747,0.12085850536823273,0.09027764946222305,0.08191318809986115,0.0888901948928833,0.14671097695827484,0.15325765311717987,0.05645345151424408,0.175460085272789,0.21014828979969025,0.14392508566379547,0.010905859991908073,0.25131484866142273,0.2739875316619873,0.13284674286842346,0.005179849453270435,0.26918482780456543,0.13860468566417694,0.31495970487594604,0.07777315378189087,0.32307055592536926,0.18050874769687653,0.15925568342208862,0.07326331734657288,0.28106796741485596,0.2762550413608551,0.13229399919509888,0.06911399960517883,0.2732551097869873],[0.10111437737941742,0.07648824155330658,0.11079065501689911,0.0677318200469017,0.0933251678943634,0.06542444229125977,0.12246005237102509,0.08880344033241272,0.08298976719379425,0.08743211627006531,0.14727261662483215,0.15135793387889862,0.05647369101643562,0.17248313128948212,0.208729550242424,0.14638425409793854,0.010934680700302124,0.24796639382839203,0.2715130150318146,0.14534737169742584,0.005663062445819378,0.26823529601097107,0.14055868983268738,0.3141321837902069,0.07932434231042862,0.31996801495552063,0.18774019181728363,0.15810011327266693,0.0724659338593483,0.2775481939315796,0.27819156646728516,0.142459899187088,0.06815255433320999,0.2715255320072174],[0.09824073314666748,0.07408810406923294,0.10785124450922012,0.06555921584367752,0.09075705707073212,0.06357962638139725,0.1191701665520668,0.08823051303625107,0.08131586760282516,0.08457264304161072,0.14371314644813538,0.14860963821411133,0.05545828491449356,0.16826170682907104,0.20520272850990295,0.1429816484451294,0.01089219469577074,0.24290403723716736,0.2647852301597595,0.14097796380519867,0.005674117244780064,0.2611401081085205,0.13617615401744843,0.3071229159832001,0.07648071646690369,0.3125678598880768,0.16969077289104462,0.27332502603530884,0.07312145084142685,0.26953718066215515,0.2712622284889221,0.14421598613262177,0.07122339308261871,0.26366519927978516],[0.09857331216335297,0.0751117542386055,0.10809861868619919,0.06605151295661926,0.09101121127605438,0.06390005350112915,0.1192716658115387,0.08769482374191284,0.08175655454397202,0.0841730460524559,0.14451901614665985,0.14796027541160583,0.0559723861515522,0.16798150539398193,0.20317210257053375,0.14327624440193176,0.011346018873155117,0.24313625693321228,0.266053706407547,0.1423223316669464,0.0056878081522881985,0.26123160123825073,0.1380358189344406,0.30673232674598694,0.07928735762834549,0.3130861818790436,0.1711103916168213,0.27274152636528015,0.07000617682933807,0.2696824371814728,0.2703368067741394,0.13966280221939087,0.07143625617027283,0.26384204626083374],[0.09870655089616776,0.07480374723672867,0.10839398205280304,0.06639033555984497,0.09132859110832214,0.06414828449487686,0.11971446871757507,0.08845698088407516,0.08228151500225067,0.08427692949771881,0.14397579431533813,0.14864474534988403,0.05686157941818237,0.16852571070194244,0.20450317859649658,0.1428007036447525,0.01103243324905634,0.24213376641273499,0.2653723955154419,0.13976499438285828,0.005881488788872957,0.2608027160167694,0.13907943665981293,0.3067995607852936,0.08009596914052963,0.31303271651268005,0.1697012037038803,0.27346479892730713,0.07135175913572311,0.27047836780548096,0.2714596092700958,0.13925227522850037,0.0664905309677124,0.2634010314941406],[0.09892089664936066,0.0759546086192131,0.10860595107078552,0.06666199862957001,0.09112458676099777,0.06435249000787735,0.12002352625131607,0.08876095712184906,0.08237805962562561,0.08441931009292603,0.14436930418014526,0.14906448125839233,0.0565778911113739,0.16847246885299683,0.20450016856193542,0.14490142464637756,0.010802531614899635,0.24193771183490753,0.26514697074890137,0.14050783216953278,0.005996073596179485,0.26154837012290955,0.1367800235748291,0.30646076798439026,0.07926467806100845,0.31260567903518677,0.16848012804985046,0.27260610461235046,0.07338965684175491,0.26998037099838257,0.2720324397087097,0.13981950283050537,0.06683443486690521,0.26331827044487],[0.09937740117311478,0.07445257902145386,0.10916826874017715,0.06628034263849258,0.09174641966819763,0.06425465643405914,0.12117757648229599,0.089806467294693,0.08265630900859833,0.0864543691277504,0.14636532962322235,0.1513565629720688,0.05691523849964142,0.16857795417308807,0.20522692799568176,0.14513593912124634,0.011622190475463867,0.24301612377166748,0.2652283012866974,0.14130665361881256,0.005848764907568693,0.2621309757232666,0.13816902041435242,0.30571821331977844,0.07618063688278198,0.30685022473335266,0.1680029183626175,0.2725234627723694,0.07079248130321503,0.26921769976615906,0.27151137590408325,0.1452997773885727,0.06736144423484802,0.26339587569236755],[0.09890545159578323,0.07392971962690353,0.10891134291887283,0.06604041159152985,0.09143112599849701,0.06374279409646988,0.12112709134817123,0.09019489586353302,0.08267318457365036,0.08625306934118271,0.14453266561031342,0.15075711905956268,0.05712757259607315,0.16813252866268158,0.2029530555009842,0.14710833132266998,0.012202289886772633,0.24355703592300415,0.2649993598461151,0.1417669951915741,0.005934113170951605,0.26229169964790344,0.13633738458156586,0.30637645721435547,0.07668807357549667,0.3069470524787903,0.1685343235731125,0.2724599242210388,0.0736970528960228,0.2706042528152466,0.271302193403244,0.14427784085273743,0.06747273355722427,0.2638169527053833],[0.09877774864435196,0.07419407367706299,0.10883898288011551,0.06656158715486526,0.09136835485696793,0.06425925344228745,0.12125112116336823,0.0910256952047348,0.08292168378829956,0.08646105229854584,0.14534583687782288,0.15080244839191437,0.05684589222073555,0.16830027103424072,0.20293672382831573,0.14960841834545135,0.012399349361658096,0.24337226152420044,0.26425206661224365,0.1454685777425766,0.0058712465688586235,0.26183417439460754,0.13702505826950073,0.3054913878440857,0.0758877545595169,0.30726876854896545,0.16631300747394562,0.27130642533302307,0.07367827743291855,0.27046170830726624,0.27056437730789185,0.1458394080400467,0.06795470416545868,0.263589471578598],[0.09938687831163406,0.07488000392913818,0.10916067659854889,0.0666094496846199,0.0917363315820694,0.06417075544595718,0.12097719311714172,0.0900898203253746,0.0828615054488182,0.08552751690149307,0.14487868547439575,0.15168960392475128,0.0569913312792778,0.16764728724956512,0.20313842594623566,0.1485452651977539,0.012355062179267406,0.243631973862648,0.2641143798828125,0.14406153559684753,0.005886798724532127,0.2582525312900543,0.1370033323764801,0.3051307499408722,0.07823075354099274,0.31271424889564514,0.16642819344997406,0.27139046788215637,0.06994123756885529,0.27005550265312195,0.2702409327030182,0.14613282680511475,0.07242821902036667,0.26205936074256897]],"3":[[0.12952999770641327,0.09320665150880814,0.1410742998123169,0.08629906177520752,0.12171295285224915,0.08164750784635544,0.15518897771835327,0.11479008942842484,0.11132927238941193,0.10381355881690979,0.1742386519908905,0.16719551384449005,0.08477263897657394,0.18036988377571106,0.13262538611888885,0.16565285623073578,0.022763142362236977,0.29376155138015747,0.06195467710494995,0.1833341121673584,0.048659633845090866,0.1845848560333252,0.15780137479305267,0.3435952961444855,0.08755263686180115,0.3365436792373657,0.07144440710544586,0.2207789272069931,0.021069113165140152,0.3166264593601227,0.05996798351407051,0.18670809268951416,0.0629461407661438,0.3172662556171417],[0.12662822008132935,0.0921783596277237,0.13795191049575806,0.08454939723014832,0.11925690621137619,0.07980727404356003,0.1522110402584076,0.11164939403533936,0.10849522054195404,0.10043955594301224,0.16954833269119263,0.1639975756406784,0.07977432012557983,0.17668884992599487,0.13359622657299042,0.15637053549289703,0.025028998032212257,0.28403356671333313,0.06197451055049896,0.16961655020713806,0.05240665376186371,0.1704547107219696,0.14964361488819122,0.3334287703037262,0.08299846947193146,0.32770025730133057,0.0899047926068306,0.31234392523765564,0.019381679594516754,0.3105989694595337,0.05935755372047424,0.1726868599653244,0.0037224546540528536,0.3259998857975006],[0.1267470121383667,0.09290232509374619,0.13790228962898254,0.08496172726154327,0.11900081485509872,0.08003269881010056,0.15143796801567078,0.11291814595460892,0.10747421532869339,0.1016915962100029,0.16678602993488312,0.16364870965480804,0.07738206535577774,0.17676344513893127,0.1385769248008728,0.15239208936691284,0.0262636486440897,0.2773953676223755,0.06216161698102951,0.16761372983455658,0.028596730902791023,0.17718081176280975,0.14792710542678833,0.3305930197238922,0.08106043189764023,0.32694557309150696,0.13080962002277374,0.31460458040237427,0.018740452826023102,0.3092159330844879,0.05976684391498566,0.16990596055984497,0.003558684140443802,0.3251407742500305],[0.12786604464054108,0.09278514236211777,0.13867498934268951,0.08479978889226913,0.11995542794466019,0.08001828193664551,0.1505480259656906,0.11050621420145035,0.10844960063695908,0.09979399293661118,0.16442687809467316,0.1558447778224945,0.08258449286222458,0.17613700032234192,0.15075893700122833,0.1518838107585907,0.027768686413764954,0.2788931727409363,0.06753449887037277,0.1636715829372406,0.03696935251355171,0.1737234890460968,0.14930972456932068,0.33204594254493713,0.08398166298866272,0.32908546924591064,0.12651315331459045,0.3163469433784485,0.0239070113748312,0.3109128773212433,0.06538534164428711,0.16563726961612701,0.07456257194280624,0.3103697597980499],[0.1217377781867981,0.0865144208073616,0.13162311911582947,0.07949227094650269,0.1138642281293869,0.07651069760322571,0.1423477828502655,0.10192502290010452,0.10361471027135849,0.09458442032337189,0.15979735553264618,0.14743325114250183,0.08056219667196274,0.1666930466890335,0.159287691116333,0.14570416510105133,0.026388298720121384,0.26533129811286926,0.07300388813018799,0.1530986875295639,0.045444853603839874,0.15658098459243774,0.1456862986087799,0.3147994875907898,0.0839056670665741,0.3141317665576935,0.15074153244495392,0.2932496666908264,0.014550182968378067,0.3043246865272522,0.15518350899219513,0.29214978218078613,0.07588562369346619,0.2958400249481201],[0.12191165238618851,0.08681834489107132,0.13227194547653198,0.08031576126813889,0.11458227783441544,0.07650712877511978,0.14283402264118195,0.10460293292999268,0.10350164026021957,0.09588134288787842,0.15875020623207092,0.14789263904094696,0.0791337713599205,0.16771656274795532,0.15841755270957947,0.14523328840732574,0.026048263534903526,0.26503708958625793,0.07294350117444992,0.14983141422271729,0.04860836640000343,0.15434396266937256,0.14563100039958954,0.31701210141181946,0.08362741768360138,0.31450241804122925,0.15161412954330444,0.2950267493724823,0.014642274007201195,0.3041742444038391,0.1552257239818573,0.29106906056404114,0.07588032633066177,0.29315829277038574],[0.12560395896434784,0.08953005075454712,0.1363343447446823,0.08263368159532547,0.11773020774126053,0.07788795232772827,0.14787814021110535,0.10785382241010666,0.10676272213459015,0.09699568897485733,0.16469264030456543,0.15586726367473602,0.08150585740804672,0.1747048795223236,0.15902066230773926,0.15917609632015228,0.027648458257317543,0.2730575203895569,0.07147860527038574,0.1665295958518982,0.06004662439227104,0.16518054902553558,0.15118356049060822,0.3266894221305847,0.08576937764883041,0.32618314027786255,0.1553768813610077,0.3054017722606659,0.012644490227103233,0.3180600702762604,0.06793683767318726,0.16675041615962982,0.0027460562996566296,0.32217612862586975],[0.12274699658155441,0.08852148801088333,0.13247153162956238,0.0803140178322792,0.11467215418815613,0.07709319144487381,0.14496594667434692,0.10775413364171982,0.10323747247457504,0.10001292824745178,0.1619492471218109,0.16374380886554718,0.07705889642238617,0.18149995803833008,0.15135601162910461,0.1817867010831833,0.02708110585808754,0.2682974636554718,0.06680002808570862,0.19117769598960876,0.05043279752135277,0.19163507223129272,0.14786477386951447,0.3244415819644928,0.083354651927948,0.319454550743103,0.1482425034046173,0.3011661171913147,0.011550063267350197,0.31192177534103394,0.06671338528394699,0.1917913854122162,0.07382413744926453,0.2948424816131592],[0.12090280652046204,0.08856413513422012,0.13150714337825775,0.08076115697622299,0.11306910961866379,0.0766410306096077,0.14326055347919464,0.10506657510995865,0.1025438904762268,0.09631403535604477,0.16185325384140015,0.15530899167060852,0.0776180624961853,0.1704123169183731,0.12448976188898087,0.14247697591781616,0.015796750783920288,0.28572046756744385,0.049743104726076126,0.1591643989086151,0.03851912543177605,0.1605636179447174,0.1540297120809555,0.3221670091152191,0.08256956934928894,0.3160735070705414,0.14902862906455994,0.2979208528995514,0.019788356497883797,0.2994547486305237,0.07303553074598312,0.29323360323905945,0.004375191871076822,0.3145870268344879],[0.12579460442066193,0.09075046330690384,0.13566401600837708,0.08276131749153137,0.11743219196796417,0.08015099167823792,0.14659321308135986,0.10940666496753693,0.1059643104672432,0.10097676515579224,0.16566380858421326,0.15931086242198944,0.09449996799230576,0.17403686046600342,0.11094922572374344,0.14752668142318726,0.0742516815662384,0.226008340716362,0.03516953065991402,0.16504321992397308,0.017352638766169548,0.2973746061325073,0.16048704087734222,0.31590497493743896,0.10168618708848953,0.3231455981731415,0.07797027379274368,0.2139352709054947,0.023561596870422363,0.30006182193756104,0.07292518019676208,0.30095174908638,0.05502939969301224,0.3065851032733917]]}} \ No newline at end of file diff --git a/game/贪吃蛇/snake_game.html b/game/贪吃蛇/snake_game.html index 0c74f30..74b634e 100644 --- a/game/贪吃蛇/snake_game.html +++ b/game/贪吃蛇/snake_game.html @@ -197,6 +197,9 @@ margin-bottom: 20px; text-shadow: 3px 3px 6px rgba(0, 0, 0, 0.5); } + .overlay p { + font-size: 0.8em; /* 调整字体大小 */ + } .overlay button { margin-top: 30px; font-size: 1.5em; @@ -291,11 +294,11 @@

姿态控制说明

    -
  • 向上: 双手举过头顶
  • -
  • 向下: 双手放在身体两侧或下垂
  • -
  • 向左: 左手平举
  • -
  • 向右: 右手平举
  • -
  • 静止: 保持站立姿势 (无特定动作)
  • +
  • 向上: 双手举过头顶 (分类0)
  • +
  • 向下: 双手放在身体两侧或下垂 (分类1)
  • +
  • 向左: 左手平举 (分类2)
  • +
  • 向右: 右手平举 (分类3)
  • +
  • 静止: 无特定动作 (游戏开始前/结束后姿态)

(确保在摄像头画面中能清晰识别全身)

@@ -356,7 +359,13 @@ '3': 'RIGHT' // 类别3 -> 向右 }; // 用于显示给用户的类别名称(加载模型时从JSON中读取) - let importedClassNames = {}; + // 确保你的训练模型有这四个类别 + let importedClassNames = { + '0': '举手', + '1': '下蹲', + '2': '左抬手', + '3': '右抬手' + }; let snakeDirection = 'RIGHT'; // 贪吃蛇当前方向 // ========================================================== @@ -380,7 +389,7 @@ document.addEventListener('DOMContentLoaded', initApp); async function initApp() { - updateGameStatus('loading'); + updateGameStatus('initial'); // 初始状态设为 'initial' statusDisplay.textContent = '正在加载 MoveNet 模型和摄像头...'; startBtn.disabled = true; importModelBtn.disabled = true; @@ -397,8 +406,8 @@ await setupCamera(); isPoseDetectionReady = true; - statusDisplay.textContent = 'MoveNet 和摄像头已就绪。请导入姿态模型。'; - importModelBtn.disabled = false; // 启用导入按钮 + statusDisplay.textContent = 'MoveNet 和摄像头已就绪。'; // 状态更新 + importModelBtn.disabled = false; // 启用导入按钮 (因为CDN加载可能失败,需要手动导入) // 启动姿态检测循环(只进行检测和绘制,不预测,直到模型导入) startPoseDetectionLoop(); @@ -412,20 +421,50 @@ // 键盘快捷键 document.addEventListener('keydown', (e) => { if (e.key === 'Enter') { + // 确保只有当游戏处于“准备好”或“游戏结束”状态才能启动或重新开始 if (gameStatus === 'ready' || gameStatus === 'gameOver') { - startBtn.click(); // 模拟点击开始按钮 - } else if (gameStatus === 'playing') { - // 可选:添加暂停功能 + // 如果是游戏结束状态且按钮可用,点击 restartBtn + if (gameStatus === 'gameOver' && !restartBtn.disabled) { + restartBtn.click(); + } else if (gameStatus === 'ready' && !startBtn.disabled) { + // 如果是准备就绪状态且按钮可用,点击 startBtn + startBtn.click(); + } } } }); - updateGameUI(); + // --- 新增:尝试自动从 CDN 加载 KNN 模型数据 --- + // !!! 请替换为你的实际 CDN 模型 URL !!! + const cdnModelJsonUrl = 'https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/models/pose-knn-model.json'; + + console.log(`尝试从 CDN 自动加载 KNN 模型数据: ${cdnModelJsonUrl}`); + statusDisplay.textContent = '正在尝试从 CDN 加载姿态识别模型...'; + + try { + await loadKNNModelData(null, cdnModelJsonUrl); // 传入 CDN URL, file 为 null + statusDisplay.textContent = 'CDN 姿态识别模型加载成功!可以开始游戏了。'; + isModelLoaded = true; // 标记模型已加载 + startBtn.disabled = false; // 启用开始游戏按钮 + importModelBtn.disabled = true; // 自动加载成功后,禁用手动导入按钮 + updateGameStatus('ready'); // 更新游戏状态 + } catch (cdnError) { + console.warn('CDN KNN 模型数据自动加载失败:', cdnError); + statusDisplay.textContent = `CDN 模型加载失败: ${cdnError.message}。请手动导入模型。`; + isModelLoaded = false; // 标记模型未加载 + startBtn.disabled = true; // 模型未加载,开始按钮仍禁用 + importModelBtn.disabled = false; // 允许手动导入 + updateGameStatus('initial'); // 保持初始状态 + } + // --- 结束 CDN 自动加载 --- + + updateGameUI(); // 确保 UI 在初始化结束时更新一次 } catch (error) { console.error("应用初始化失败:", error); statusDisplay.textContent = `初始化失败: ${error.message}`; - alert(`应用初始化失败: ${error.message}\n请检查摄像头权限或网络连接。`); + alert(`应用初始化失败: ${error.message}\n请检查摄像头权限、网络连接或刷新页面。`); + updateGameStatus('initial'); } } @@ -477,18 +516,20 @@ if (poses && poses.length > 0) { drawPose(poses[0]); // 绘制检测到的姿态 - if (isModelLoaded && gameStatus === 'playing') { // 仅在游戏进行中时才预测并控制贪吃蛇 + // 仅在游戏进行中且模型已加载时才预测并控制贪吃蛇 + if (isModelLoaded && gameStatus === 'playing') { const poseTensor = flattenPose(poses[0]); if (classifier.getNumClasses() > 0) { const prediction = await classifier.predictClass(poseTensor); poseTensor.dispose(); // 释放张量内存 const predictedClassId = prediction.label; - const confidence = prediction.confidences[predictedClassId]; + const confidence = prediction.confidences[predictedClassId] || 0; // 确保有默认值 currentConfidence = (confidence * 100).toFixed(1); // 设定一个置信度阈值,例如 70% - if (confidence > 0.70) { + const MIN_PREDICT_CONFIDENCE = 70; + if (confidence * 100 > MIN_PREDICT_CONFIDENCE) { currentDetectedClassId = predictedClassId; const gameDirection = gestureClassToGameDirection[predictedClassId]; if (gameDirection) { @@ -509,11 +550,7 @@ controlCommandDisplay.textContent = '静止 (模型无数据)'; } - } else if (!isModelLoaded) { - currentDetectedClassId = null; - currentConfidence = 0; - controlCommandDisplay.textContent = '静止 (等待模型)'; - } else if (gameStatus !== 'playing') { + } else { // 如果游戏未进行或模型未加载,则不进行预测控制 currentDetectedClassId = null; currentConfidence = 0; controlCommandDisplay.textContent = '静止'; @@ -575,89 +612,133 @@ } // ========================================================== - // 模型导入导出 + // 模型导入导出 (改造为支持文件和 CDN URL) // ========================================================== - async function handleModelImport(event) { - const file = event.target.files[0]; - if (!file) return; - - updateGameStatus('loading'); - statusDisplay.textContent = '正在导入模型...'; - startBtn.disabled = true; - importModelBtn.disabled = true; + /** + * 加载 KNN 模型数据,支持从文件或 CDN URL 加载。 + * @param {File} [file] - 可选,用户选择的 KNN 模型 JSON 文件。 + * @param {string} [cdnUrl] - 可选,KNN 模型 JSON 文件的 CDN URL。 + * @returns {Promise} + */ + async function loadKNNModelData(file = null, cdnUrl = null) { + + statusDisplay.textContent = '正在加载模型数据...'; + startBtn.disabled = true; // 加载中禁用开始按钮 + importModelBtn.disabled = true; // 加载中禁用导入按钮 try { - await loadModelFromFile(file); - statusDisplay.textContent = '姿态模型导入成功!'; - isModelLoaded = true; - startBtn.disabled = false; // 启用开始按钮 - importModelBtn.disabled = true; // 禁用导入按钮 + let loadedModelData; + + if (file) { + const reader = new FileReader(); + const fileReadPromise = new Promise((resolve, reject) => { + reader.onload = e => resolve(JSON.parse(e.target.result)); + reader.onerror = error => reject(new Error('文件读取失败。')); + reader.readAsText(file); + }); + loadedModelData = await fileReadPromise; + } else if (cdnUrl) { + const response = await fetch(cdnUrl); + if (!response.ok) { + throw new Error(`无法从 ${cdnUrl} 加载模型数据: ${response.statusText}`); + } + loadedModelData = await response.json(); + } else { + throw new Error('未提供模型文件或 CDN URL。'); + } + + if (!loadedModelData || !loadedModelData.dataset || !loadedModelData.classMap) { + throw new Error('模型数据结构不正确 (缺少 classMap 或 dataset)。'); + } + + classifier.clearAllClasses(); + + const dataset = {}; + let totalExamples = 0; + + for (const classId in loadedModelData.dataset) { + const classData = loadedModelData.dataset[classId]; + if (classData && classData.length > 0) { + if (classData.some(sample => !Array.isArray(sample) || sample.some(val => typeof val !== 'number'))) { + throw new Error(`类别 ${classId} 包含无效的样本数据 (不是数字数组)。`); + } + const tensors = classData.map(data => tf.tensor1d(data)); + const stacked = tf.stack(tensors); + dataset[classId] = stacked; + totalExamples += classData.length; + tensors.forEach(t => t.dispose()); + } else { + console.warn(`类别 ${classId} 没有样本数据。`); + } + } + + classifier.setClassifierDataset(dataset); + importedClassNames = loadedModelData.classMap; // 更新类别名称映射 + + console.log(`模型加载成功!共加载 ${totalExamples} 个样本。`); + console.log('类别映射 (导入):', importedClassNames); + + // 更新页面上的映射显示,如果需要的话。 + // 确保 instructions 中的分类名称与 importedClassNames 保持一致 + const instructionListItems = document.querySelectorAll('.instructions li'); + instructionListItems.forEach((item, index) => { + const classId = String(index); // 假定指令顺序与分类ID一致 + const classNameFromModel = importedClassNames[classId] || '未定义'; + let controlDesc = ''; + switch(classId) { + case '0': controlDesc = '双手举过头顶'; break; + case '1': controlDesc = '双手放在身体两侧或下垂'; break; + case '2': controlDesc = '左手平举'; break; + case '3': controlDesc = '右手平举'; break; + default: controlDesc = '未知动作'; + } + item.querySelector('span').innerHTML = `${controlDesc} (分类${classId}: ${classNameFromModel})`; + // 如果你的 instructions 区域已经有预设的文字,并且你只希望更新 Classification ID, + // 可以根据 HTML 结构微调这里的更新逻辑。 + }); + + + statusDisplay.textContent = '姿态模型导入成功!可以开始游戏了。'; + isModelLoaded = true; // 设置模型已加载状态 + startBtn.disabled = false; // 启用开始游戏按钮 + importModelBtn.disabled = true; // 导入按钮禁用 updateGameStatus('ready'); + } catch (error) { - console.error('模型导入失败:', error); - statusDisplay.textContent = `模型导入失败: ${error.message}`; - alert(`模型导入失败: ${error.message}\n请确保文件是正确的模型JSON文件。`); - startBtn.disabled = true; // 导入失败则不能开始 - importModelBtn.disabled = false; // 可以再试一次导入 + console.error('模型加载失败:', error); + statusDisplay.textContent = `模型加载失败: ${error.message}`; isModelLoaded = false; + startBtn.disabled = true; // 失败后保持禁用 + importModelBtn.disabled = false; // 失败后可再次导入 updateGameStatus('initial'); + throw error; // 重新抛出错误,以便调用者能捕获 } finally { fileImporter.value = ''; // 清空文件输入 } } - async function loadModelFromFile(file) { - // 这段逻辑与您之前在 script.js 中 `importModel` 的核心逻辑一致 - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = async (e) => { - try { - const loadedModelData = JSON.parse(e.target.result); - - if (!loadedModelData || !loadedModelData.dataset || !loadedModelData.classMap) { - throw new Error('模型数据结构不正确 (缺少 classMap 或 dataset)。'); - } - - classifier.clearAllClasses(); - const dataset = {}; - let totalExamples = 0; - - for (const classId in loadedModelData.dataset) { - const classData = loadedModelData.dataset[classId]; - if (classData && classData.length > 0) { - if (classData.some(sample => !Array.isArray(sample) || sample.some(val => typeof val !== 'number'))) { - throw new Error(`类别 ${classId} 包含无效的样本数据 (不是数字数组)。`); - } - const tensors = classData.map(data => tf.tensor1d(data)); - const stacked = tf.stack(tensors); - dataset[classId] = stacked; - totalExamples += classData.length; - tensors.forEach(t => t.dispose()); - } else { - console.warn(`类别 ${classId} 没有样本数据。`); - } - } - - classifier.setClassifierDataset(dataset); - importedClassNames = loadedModelData.classMap; // 更新类别名称映射 + // 文件选择事件处理器 (现在它调用通用加载函数) + async function handleModelImport(event) { + const file = event.target.files[0]; + if (!file) { + statusDisplay.textContent = '未选择文件。'; + return; + } - console.log(`模型加载成功!共加载 ${totalExamples} 个样本。`); - console.log('类别映射 (导入):', importedClassNames); - resolve(); - - } catch (error) { - reject(error); - } - }; - reader.onerror = (error) => { - reject(new Error('文件读取失败。')); - }; - reader.readAsText(file); - }); + statusDisplay.textContent = '正在从本地文件导入模型...'; + startBtn.disabled = true; // 导入中禁用开始按钮 + importModelBtn.disabled = true; // 导入中禁用导入按钮 + + try { + await loadKNNModelData(file, null); // 传入文件对象,cdnUrl 为 null + } catch (error) { + // 错误信息已在 loadKNNModelData 内部处理并设置状态 + alert(error.message); // 弹出错误提示 + } } - + // =================================== // 贪吃蛇游戏逻辑 // =================================== @@ -817,6 +898,7 @@ else if (newDirection === 'UP' && snakeDirection !== 'DOWN') snakeDirection = 'UP'; else if (newDirection === 'RIGHT' && snakeDirection !== 'LEFT') snakeDirection = 'RIGHT'; else if (newDirection === 'DOWN' && snakeDirection !== 'UP') snakeDirection = 'DOWN'; + // console.log("Snake direction changed to:", snakeDirection); // 调试用 } function endGame() { @@ -836,7 +918,7 @@ function updateGameStatus(status) { gameStatus = status; - console.log("Game status updated to:", gameStatus); + // console.log("Game status updated to:", gameStatus); // 调试用 } function updateScoreDisplay() { @@ -847,7 +929,7 @@ // 更新姿态识别显示 if (currentDetectedClassId !== null) { const className = importedClassNames[currentDetectedClassId] || `未知类别 ${currentDetectedClassId}`; - currentGestureDisplay.textContent = `${className} (${currentConfidence}%)`; + currentGestureDisplay.textContent = `${className}`; gestureConfidenceDisplay.textContent = `置信度: ${currentConfidence}%`; gestureConfidenceDisplay.style.color = currentConfidence > 70 ? '#00ff00' : '#ffaa00'; } else { @@ -855,19 +937,70 @@ gestureConfidenceDisplay.textContent = ''; } - // 更新状态信息 + // 根据游戏状态更新按钮和文本 if (gameStatus === 'initial') { statusDisplay.textContent = '等待模型导入...'; + startBtn.disabled = true; + importModelBtn.disabled = false; + restartBtn.disabled = true; } else if (gameStatus === 'loading') { - // 状态文本已经在 initApp 或 handleModelImport 中设置 + // 状态文本已经在加载函数中设置 + startBtn.disabled = true; + importModelBtn.disabled = true; + restartBtn.disabled = true; } else if (gameStatus === 'ready') { statusDisplay.textContent = '模型已加载,点击“开始游戏”或按“Enter”键。'; + startBtn.disabled = false; + importModelBtn.disabled = true; + restartBtn.disabled = true; // 只有在gameOver后才启用重新开始 } else if (gameStatus === 'playing') { statusDisplay.textContent = '游戏进行中...'; + startBtn.disabled = true; + importModelBtn.disabled = true; + restartBtn.disabled = true; } else if (gameStatus === 'gameOver') { statusDisplay.textContent = '游戏结束!点击“重新开始”或按“Enter”键。'; + startBtn.disabled = true; + importModelBtn.disabled = true; + restartBtn.disabled = false; // 游戏结束时启用重新开始 } } + + // --- 应用启动 --- + window.addEventListener('DOMContentLoaded', () => { + console.log('DOM content loaded. Initializing hand detection...'); + initApp().catch(error => { + console.error('App initialization failed:', error); + // 错误信息已在 initApp 内部处理并alert + }); + + // 绑定导入模型事件 + fileImporter.addEventListener('change', handleModelImport); + importModelBtn.addEventListener('click', () => { + fileImporter.click(); // 点击按钮触发文件输入 + }); + }); + + // 页面关闭时清理资源 (可选,但推荐) + window.onbeforeunload = () => { + if (animationFrameId) { + cancelAnimationFrame(animationFrameId); + } + if (gameLoopId) { + clearInterval(gameLoopId); + } + if (detector) { + // MediaPipe runtime 通常会管理其自己的 WebGL 资源, + // 明确调用 dispose() 可能会导致后续异常,如果 MediaPipe 内部未预期再次使用。 + // 如果遇到问题,可以注释掉这行。 + // detector.dispose(); + } + if (classifier) { + classifier.clearAllClasses(); + } + tf.disposeAll(); // 释放所有TensorFlow.js张量,防止内存泄露 + console.log('Resources cleaned up.'); + }; diff --git a/game/钢琴/hand-knn-model.json b/game/钢琴/hand-knn-model.json new file mode 100644 index 0000000..ef9a53c --- /dev/null +++ b/game/钢琴/hand-knn-model.json @@ -0,0 +1 @@ +{"classMap":{"0":"手势 1","1":"手势 2","2":"手势 3","3":"手势 4","4":"手势 5","5":"手势 6","6":"手势 7","7":"手势 8","8":"手势 9"},"dataset":{"0":[[0.18982721865177155,0.18018248677253723,0.17491325736045837,0.15522463619709015,0.15003173053264618,0.13947094976902008,0.12676990032196045,0.14965209364891052,0.10917706042528152,0.1671222746372223,0.11551589518785477,0.15253573656082153,0.0838821530342102,0.1485746055841446,0.06344188749790192,0.14442554116249084,0.045061640441417694,0.14527882635593414,0.11843310296535492,0.17899850010871887,0.11069106310606003,0.16861113905906677,0.13671813905239105,0.16250821948051453,0.13998471200466156,0.16811423003673553,0.12567125260829926,0.1985710710287094,0.12749509513378143,0.186264306306839,0.14968834817409515,0.17596115171909332,0.1483922302722931,0.18067079782485962,0.13540084660053253,0.2158624529838562,0.13976313173770905,0.20183183252811432,0.15371297299861908,0.1928660273551941,0.15238302946090698,0.19908207654953003],[0.18970085680484772,0.1805000901222229,0.17510245740413666,0.15481312572956085,0.15049053728580475,0.13852441310882568,0.12744103372097015,0.14827492833137512,0.11035949736833572,0.1663133203983307,0.1156267523765564,0.15274012088775635,0.08338271081447601,0.14889362454414368,0.06309814006090164,0.14473123848438263,0.0442429855465889,0.1454072892665863,0.11825668066740036,0.17914099991321564,0.1122359111905098,0.16790272295475006,0.13848648965358734,0.1619463562965393,0.14037787914276123,0.1681579351425171,0.12534582614898682,0.1986294835805893,0.1279643177986145,0.18590596318244934,0.1502448320388794,0.17580580711364746,0.14809954166412354,0.18081919848918915,0.1350002884864807,0.21567131578922272,0.1399833858013153,0.2014492303133011,0.15417100489139557,0.192457914352417,0.15271157026290894,0.1988534778356552],[0.19009467959403992,0.1806504875421524,0.17567802965641022,0.1548399031162262,0.15084528923034668,0.13820724189281464,0.1277252584695816,0.14783638715744019,0.1110747754573822,0.16654497385025024,0.11580854654312134,0.15255464613437653,0.08364821970462799,0.14835573732852936,0.06359179317951202,0.14375776052474976,0.0447225347161293,0.14416375756263733,0.1182326078414917,0.1790887415409088,0.11213041096925735,0.16739197075366974,0.13861927390098572,0.16175001859664917,0.14036299288272858,0.16837617754936218,0.125265970826149,0.1987311989068985,0.12788820266723633,0.18536178767681122,0.15047211945056915,0.17562806606292725,0.14829200506210327,0.18119502067565918,0.1349410116672516,0.215781569480896,0.14035947620868683,0.2007850855588913,0.15471182763576508,0.19218800961971283,0.15321199595928192,0.19922322034835815],[0.19030745327472687,0.18066242337226868,0.17623740434646606,0.1552167534828186,0.1510670781135559,0.13835658133029938,0.12735584378242493,0.14781610667705536,0.11008108407258987,0.1658722460269928,0.11594469845294952,0.15264785289764404,0.08416351675987244,0.148019939661026,0.06399016827344894,0.1431831568479538,0.04518089443445206,0.14334633946418762,0.11841186136007309,0.17917752265930176,0.11199706047773361,0.1677187830209732,0.13876140117645264,0.1620720624923706,0.14089933037757874,0.16870176792144775,0.1253707855939865,0.19877612590789795,0.12729412317276,0.18567079305648804,0.1503659337759018,0.17562225461006165,0.14865928888320923,0.18110334873199463,0.13513512909412384,0.2162100076675415,0.13956153392791748,0.2010837346315384,0.15407277643680573,0.19211381673812866,0.15292564034461975,0.19889572262763977],[0.19021928310394287,0.18084309995174408,0.17624807357788086,0.15536890923976898,0.1511230617761612,0.13786563277244568,0.12665490806102753,0.14767900109291077,0.1088833138346672,0.16533789038658142,0.11538678407669067,0.1531856507062912,0.08446924388408661,0.1479468196630478,0.064365915954113,0.14320868253707886,0.045806627720594406,0.14314259588718414,0.1180824562907219,0.17988283932209015,0.11211007088422775,0.16707368195056915,0.1394909769296646,0.16191643476486206,0.1412702351808548,0.16897901892662048,0.12506990134716034,0.19940190017223358,0.12644316256046295,0.18550509214401245,0.14989294111728668,0.17596182227134705,0.14830391108989716,0.182154580950737,0.1349078118801117,0.2168319970369339,0.13834257423877716,0.20144420862197876,0.1533936709165573,0.1923053115606308,0.15272849798202515,0.19957199692726135],[0.19033190608024597,0.18094033002853394,0.17654213309288025,0.15533573925495148,0.15149575471878052,0.13822947442531586,0.1271767020225525,0.14721478521823883,0.10966005176305771,0.16470782458782196,0.11544153094291687,0.1528351753950119,0.08430630713701248,0.1480673849582672,0.06410643458366394,0.14337237179279327,0.04524342343211174,0.1433342695236206,0.11776577681303024,0.17954008281230927,0.11288630217313766,0.16728657484054565,0.14023375511169434,0.16182659566402435,0.14147116243839264,0.16846665740013123,0.12470371276140213,0.19909870624542236,0.12723979353904724,0.18560023605823517,0.1505027413368225,0.17578250169754028,0.1482437551021576,0.18142351508140564,0.13448557257652283,0.216533824801445,0.138901486992836,0.20143365859985352,0.15374913811683655,0.19218946993350983,0.15277808904647827,0.19898904860019684],[0.19033564627170563,0.18079079687595367,0.1766020506620407,0.1553211510181427,0.1515522599220276,0.13781479001045227,0.12754081189632416,0.14650581777095795,0.11048124730587006,0.16442705690860748,0.1153036430478096,0.15299414098262787,0.08426938205957413,0.14798681437969208,0.06420081853866577,0.1432933360338211,0.04546484723687172,0.14344140887260437,0.11758098751306534,0.17988288402557373,0.11347371339797974,0.16678877174854279,0.14087064564228058,0.16151295602321625,0.14207635819911957,0.16850179433822632,0.12452235817909241,0.19939826428890228,0.1275625079870224,0.18501801788806915,0.1508783996105194,0.1754198968410492,0.14882369339466095,0.18123146891593933,0.13444694876670837,0.21673014760017395,0.1393776386976242,0.20083682239055634,0.15419146418571472,0.1916690468788147,0.1531907469034195,0.19840319454669952],[0.1900833249092102,0.18116100132465363,0.17657077312469482,0.15573866665363312,0.15143930912017822,0.1378907412290573,0.12715044617652893,0.14663638174533844,0.1102902814745903,0.1646604686975479,0.11496204137802124,0.1529955416917801,0.08405278623104095,0.14827992022037506,0.06392926722764969,0.14398883283138275,0.04520050808787346,0.1440468579530716,0.11717167496681213,0.17980198562145233,0.11311013251543045,0.16660045087337494,0.1408321112394333,0.16172747313976288,0.14192692935466766,0.16884806752204895,0.12413683533668518,0.19924099743366241,0.1273190826177597,0.1848136931657791,0.15060371160507202,0.17563088238239288,0.14843867719173431,0.18182791769504547,0.1341325044631958,0.216493159532547,0.13901138305664062,0.20086027681827545,0.1539393961429596,0.19198471307754517,0.15294858813285828,0.19902318716049194],[0.19014745950698853,0.1811065673828125,0.17661699652671814,0.15575511753559113,0.15135203301906586,0.13758693635463715,0.12704715132713318,0.14651021361351013,0.11006610840559006,0.16439104080200195,0.1146075651049614,0.15318870544433594,0.0839756578207016,0.14849840104579926,0.0637785941362381,0.14421318471431732,0.045082829892635345,0.14428310096263885,0.11688115447759628,0.18025155365467072,0.1130075603723526,0.16633538901805878,0.14086294174194336,0.16152849793434143,0.1421974003314972,0.16874170303344727,0.12385658919811249,0.19969896972179413,0.12722747027873993,0.18471132218837738,0.15052390098571777,0.1755101978778839,0.14859792590141296,0.1817215532064438,0.13398303091526031,0.21696117520332336,0.13880927860736847,0.20091603696346283,0.15386319160461426,0.19203150272369385,0.1529913991689682,0.19915904104709625],[0.1901302933692932,0.18087586760520935,0.176459401845932,0.15572309494018555,0.15131187438964844,0.13762103021144867,0.12715642154216766,0.1464303880929947,0.11044853180646896,0.16418121755123138,0.1143721267580986,0.15327388048171997,0.08399194478988647,0.14881378412246704,0.06373841315507889,0.14488622546195984,0.045264579355716705,0.1449999064207077,0.1166718602180481,0.1803925633430481,0.11273454874753952,0.16609430313110352,0.14062285423278809,0.16131867468357086,0.14231839776039124,0.16869626939296722,0.12378264218568802,0.19981707632541656,0.12720102071762085,0.1845179796218872,0.15052717924118042,0.1754394769668579,0.14872848987579346,0.18165454268455505,0.13392062485218048,0.21704745292663574,0.13884684443473816,0.20092934370040894,0.15376122295856476,0.19201761484146118,0.15301862359046936,0.19906674325466156],[0.19033591449260712,0.18085576593875885,0.17656764388084412,0.15579964220523834,0.15157359838485718,0.13770954310894012,0.12750959396362305,0.1461806744337082,0.1108751893043518,0.1639043241739273,0.11431803554296494,0.15315255522727966,0.08397091925144196,0.14884015917778015,0.06377170979976654,0.14490747451782227,0.04531582444906235,0.1451699137687683,0.11654746532440186,0.18023893237113953,0.11285705864429474,0.1659640073776245,0.14059388637542725,0.16128364205360413,0.14222577214241028,0.16865140199661255,0.1237037405371666,0.19964705407619476,0.12748153507709503,0.1843014359474182,0.15054374933242798,0.17531630396842957,0.1487419456243515,0.18168193101882935,0.13388438522815704,0.21686513721942902,0.13934873044490814,0.2006295770406723,0.15412452816963196,0.19196972250938416,0.15314427018165588,0.1989220529794693],[0.19063745439052582,0.1810387820005417,0.17700301110744476,0.15573416650295258,0.15201377868652344,0.13762086629867554,0.1278897225856781,0.14575360715389252,0.11113078892230988,0.16322341561317444,0.11444469541311264,0.153182715177536,0.08427724987268448,0.14869274199008942,0.06389839947223663,0.14473600685596466,0.04538022354245186,0.14498096704483032,0.1166023537516594,0.18027251958847046,0.11280924081802368,0.16551174223423004,0.14079029858112335,0.16086271405220032,0.14241386950016022,0.16847094893455505,0.12375405430793762,0.19953057169914246,0.12766709923744202,0.1837935894727707,0.1509697586297989,0.17507341504096985,0.14903883635997772,0.18175137042999268,0.13392646610736847,0.21683889627456665,0.13970358669757843,0.2002994269132614,0.1546640694141388,0.19165736436843872,0.15355969965457916,0.1986846774816513],[0.1910896897315979,0.18102344870567322,0.17783090472221375,0.1553546041250229,0.15275830030441284,0.13691799342632294,0.12885020673274994,0.14496278762817383,0.11248880624771118,0.1623527556657791,0.11491783708333969,0.1529139280319214,0.08432205021381378,0.14804191887378693,0.06410475075244904,0.14389297366142273,0.04573613032698631,0.14382125437259674,0.11691055446863174,0.17998823523521423,0.11399374157190323,0.164974644780159,0.14179055392742157,0.16044531762599945,0.14330723881721497,0.16803449392318726,0.1241188645362854,0.1993340104818344,0.12838071584701538,0.1829967200756073,0.1515771746635437,0.17452380061149597,0.14962776005268097,0.1812574863433838,0.13443942368030548,0.21647736430168152,0.14063800871372223,0.19949422776699066,0.1556614339351654,0.19110475480556488,0.1544271558523178,0.1981065273284912],[0.1910558044910431,0.18112510442733765,0.1778685301542282,0.15527573227882385,0.15270522236824036,0.13652820885181427,0.12866425514221191,0.14468879997730255,0.11243247240781784,0.16241060197353363,0.11505726724863052,0.15267251431941986,0.08501207828521729,0.14817273616790771,0.06452196836471558,0.1440931260585785,0.04615127667784691,0.14407989382743835,0.11688613891601562,0.17992953956127167,0.11380824446678162,0.16461661458015442,0.14228342473506927,0.16030634939670563,0.14394240081310272,0.16792838275432587,0.12391803413629532,0.1992306113243103,0.12807896733283997,0.1828056424856186,0.15176667273044586,0.17447060346603394,0.15017099678516388,0.18115484714508057,0.13421575725078583,0.21660920977592468,0.14023597538471222,0.19970978796482086,0.15540651977062225,0.19115912914276123,0.15452130138874054,0.19803354144096375],[0.19086812436580658,0.18097110092639923,0.17780853807926178,0.15501464903354645,0.15264281630516052,0.1360672265291214,0.12893299758434296,0.14438220858573914,0.11296644806861877,0.16250945627689362,0.11512455344200134,0.1526663601398468,0.08494149148464203,0.14812499284744263,0.06443920731544495,0.1440199464559555,0.046070266515016556,0.14398720860481262,0.11688034236431122,0.17986279726028442,0.11416714638471603,0.16455164551734924,0.14236952364444733,0.16017672419548035,0.14420774579048157,0.16765519976615906,0.12396290153265,0.19926752150058746,0.1284368634223938,0.18276938796043396,0.15190838277339935,0.17444364726543427,0.15042857825756073,0.18105687201023102,0.1342572718858719,0.21666990220546722,0.14053456485271454,0.19961686432361603,0.1556616872549057,0.19107405841350555,0.1546524167060852,0.19794704020023346],[0.19146430492401123,0.18099771440029144,0.17787860333919525,0.15500834584236145,0.1530907303094864,0.1364942342042923,0.1295013129711151,0.14388996362686157,0.11361043155193329,0.16160792112350464,0.11545699089765549,0.15251393616199493,0.08504845947027206,0.14795120060443878,0.06465762853622437,0.1436804234981537,0.046429429203271866,0.14381642639636993,0.11734051257371902,0.17973145842552185,0.11420337110757828,0.16418831050395966,0.14226758480072021,0.15970754623413086,0.14416798949241638,0.167374387383461,0.12444792687892914,0.19920428097248077,0.1287703663110733,0.18216189742088318,0.1521388292312622,0.17403802275657654,0.15052418410778046,0.1810676008462906,0.13466490805149078,0.21642319858074188,0.140972301363945,0.19899149239063263,0.156022846698761,0.1908118724822998,0.15511751174926758,0.19819264113903046],[0.19177988171577454,0.1810886263847351,0.17838771641254425,0.1548650860786438,0.15327636897563934,0.13612394034862518,0.129783496260643,0.14371953904628754,0.11389507353305817,0.16174505650997162,0.11574450135231018,0.15269950032234192,0.08493148535490036,0.14811623096466064,0.06456035375595093,0.14384058117866516,0.04613494873046875,0.14397607743740082,0.11758075654506683,0.1799267679452896,0.11413656920194626,0.1640780121088028,0.14211995899677277,0.15940611064434052,0.14420804381370544,0.16710664331912994,0.12465953081846237,0.19930143654346466,0.1287621706724167,0.18186897039413452,0.15220914781093597,0.17371085286140442,0.15071207284927368,0.18069025874137878,0.1348581314086914,0.21641363203525543,0.14113442599773407,0.1985180377960205,0.1562330722808838,0.19038629531860352,0.15532375872135162,0.19787250459194183]],"1":[[0.19363345205783844,0.18756118416786194,0.17808693647384644,0.1574549674987793,0.15176892280578613,0.1449425220489502,0.13423706591129303,0.16494709253311157,0.12128022313117981,0.18744349479675293,0.11917744576931,0.15785495936870575,0.08665807545185089,0.14153775572776794,0.06772148609161377,0.13051177561283112,0.051137782633304596,0.12320166826248169,0.1194029301404953,0.1823495477437973,0.0815979540348053,0.1866995245218277,0.05845204368233681,0.18348829448223114,0.03735446184873581,0.1841331422328949,0.1283673644065857,0.20243607461452484,0.12251725792884827,0.19281509518623352,0.14080916345119476,0.18148133158683777,0.14920049905776978,0.18155331909656525,0.1411595493555069,0.21734720468521118,0.13765209913253784,0.20091624557971954,0.14609059691429138,0.19372513890266418,0.1476018875837326,0.1986197531223297],[0.19460631906986237,0.18798735737800598,0.17948254942893982,0.15778732299804688,0.15288130939006805,0.14399555325508118,0.13462431728839874,0.16395165026187897,0.12095824629068375,0.1867235004901886,0.12002721428871155,0.1567535400390625,0.08775440603494644,0.13936567306518555,0.06885039061307907,0.12771263718605042,0.0524805523455143,0.12032943218946457,0.12023577094078064,0.18197523057460785,0.08299865573644638,0.18518030643463135,0.06007000058889389,0.18078386783599854,0.03893003240227699,0.18082977831363678,0.12896659970283508,0.20274630188941956,0.12479078024625778,0.1917964518070221,0.14331687986850739,0.18004590272903442,0.15072856843471527,0.18065281212329865,0.14132528007030487,0.21822196245193481,0.13947220146656036,0.20075570046901703,0.1499076932668686,0.19249951839447021,0.15211813151836395,0.19748656451702118],[0.1948515623807907,0.18757201731204987,0.17963863909244537,0.15776275098323822,0.15294048190116882,0.1433793604373932,0.1342276930809021,0.16312576830387115,0.12068673223257065,0.1860637217760086,0.12072120606899261,0.1564992070198059,0.08824598044157028,0.13969235122203827,0.0692252665758133,0.1282608062028885,0.052832454442977905,0.12092109769582748,0.12087883800268173,0.1816815584897995,0.08389993011951447,0.1845095306634903,0.06115422770380974,0.17983639240264893,0.03992992639541626,0.17980532348155975,0.12945012748241425,0.20249971747398376,0.12512433528900146,0.19117288291454315,0.14366263151168823,0.17979717254638672,0.15089303255081177,0.18079257011413574,0.14167672395706177,0.21829648315906525,0.1396491378545761,0.20064538717269897,0.1505887359380722,0.19247214496135712,0.15340200066566467,0.197662815451622],[0.1960122287273407,0.18708091974258423,0.18041838705539703,0.15774980187416077,0.15346401929855347,0.1432565152645111,0.13462427258491516,0.16194404661655426,0.12077365070581436,0.18500074744224548,0.121010422706604,0.15609361231327057,0.08846207708120346,0.13924607634544373,0.06905471533536911,0.12778964638710022,0.052440691739320755,0.12107441574335098,0.12128536403179169,0.18123620748519897,0.08447754383087158,0.18363025784492493,0.06167397275567055,0.1787317991256714,0.04021238535642624,0.1786855161190033,0.1298612654209137,0.20227551460266113,0.12608551979064941,0.19031237065792084,0.14481650292873383,0.1794893592596054,0.1515723168849945,0.18104200065135956,0.14180724322795868,0.21841222047805786,0.13995659351348877,0.20066341757774353,0.15132299065589905,0.19270622730255127,0.154023677110672,0.1980188488960266],[0.19587910175323486,0.1867038905620575,0.18012364208698273,0.15759718418121338,0.15316778421401978,0.14309535920619965,0.13450078666210175,0.16061045229434967,0.12103493511676788,0.18383166193962097,0.12119663506746292,0.15585367381572723,0.08859182149171829,0.1393183320760727,0.06906156241893768,0.12834329903125763,0.052255768328905106,0.12192615121603012,0.12149512767791748,0.18106859922409058,0.08496993780136108,0.18306373059749603,0.06215978413820267,0.1782945990562439,0.040428053587675095,0.17817169427871704,0.13012826442718506,0.20221871137619019,0.12683427333831787,0.18992598354816437,0.14548605680465698,0.17951105535030365,0.15170738101005554,0.18126969039440155,0.14205318689346313,0.2186504304409027,0.1405375897884369,0.20099729299545288,0.15206658840179443,0.192865252494812,0.15450435876846313,0.19813856482505798],[0.19481611251831055,0.18565553426742554,0.1784178763628006,0.15721875429153442,0.15125836431980133,0.14414195716381073,0.13255882263183594,0.1621820628643036,0.11924656480550766,0.1853145807981491,0.12034913897514343,0.15673375129699707,0.08808296918869019,0.1406392902135849,0.06876680254936218,0.12996746599674225,0.052199918776750565,0.12377627193927765,0.12101501226425171,0.1814248263835907,0.08474849164485931,0.18391627073287964,0.06217002496123314,0.17964860796928406,0.040661972016096115,0.18022635579109192,0.12997879087924957,0.20223119854927063,0.12574253976345062,0.19040937721729279,0.14417694509029388,0.1799875795841217,0.15025374293327332,0.1819293200969696,0.14197063446044922,0.2185046523809433,0.13893096148967743,0.20176386833190918,0.1504884660243988,0.1936924159526825,0.15334780514240265,0.1988385021686554],[0.19539199769496918,0.1855379343032837,0.17887364327907562,0.156736820936203,0.15141326189041138,0.1437481939792633,0.13249726593494415,0.16157111525535583,0.11953241378068924,0.18473339080810547,0.12168897688388824,0.15684549510478973,0.0890347957611084,0.14085753262043,0.06956641376018524,0.12977375090122223,0.052671145647764206,0.12328635156154633,0.1221829354763031,0.1813446581363678,0.0860266387462616,0.18311409652233124,0.06352656334638596,0.17865200340747833,0.04171965643763542,0.17913435399532318,0.13054005801677704,0.20211270451545715,0.12616442143917084,0.18987923860549927,0.1446932554244995,0.17977355420589447,0.15101182460784912,0.18220503628253937,0.142154723405838,0.21815145015716553,0.1390789896249771,0.20120471715927124,0.15042293071746826,0.19325028359889984,0.15336290001869202,0.19893427193164825],[0.19547876715660095,0.18625137209892273,0.17955297231674194,0.1574079692363739,0.15224847197532654,0.1437748819589615,0.13310308754444122,0.1616436392068863,0.12022169679403305,0.1850297451019287,0.12254557758569717,0.1564829796552658,0.08974144607782364,0.1404130756855011,0.07028619945049286,0.1292598694562912,0.053329579532146454,0.12256088852882385,0.12237192690372467,0.18106448650360107,0.08621837198734283,0.18213044106960297,0.06367583572864532,0.17722228169441223,0.04188172519207001,0.17726650834083557,0.13026019930839539,0.20195460319519043,0.12653367221355438,0.18957391381263733,0.145039901137352,0.17971226572990417,0.15156950056552887,0.18232081830501556,0.14173761010169983,0.21819114685058594,0.13947942852973938,0.2008080631494522,0.15054309368133545,0.19322606921195984,0.15304897725582123,0.19939130544662476],[0.19508489966392517,0.1863497644662857,0.1792161762714386,0.15719440579414368,0.15209229290485382,0.14374534785747528,0.13318730890750885,0.16178631782531738,0.11993832141160965,0.18502195179462433,0.12138600647449493,0.15683791041374207,0.08893899619579315,0.14034725725650787,0.06951943039894104,0.12882092595100403,0.05263053625822067,0.12207657843828201,0.12162355333566666,0.18163928389549255,0.08544597774744034,0.18268154561519623,0.0629725232720375,0.17770038545131683,0.04117774963378906,0.17776253819465637,0.12995073199272156,0.2025052309036255,0.12621285021305084,0.19010233879089355,0.14500422775745392,0.1800677627325058,0.15133456885814667,0.1825353056192398,0.14161451160907745,0.21872971951961517,0.13933661580085754,0.2011268138885498,0.1507299840450287,0.19328342378139496,0.15327858924865723,0.1993754655122757],[0.19510790705680847,0.1863192617893219,0.1797485500574112,0.15778785943984985,0.15239793062210083,0.143952876329422,0.1334361433982849,0.1621980220079422,0.11967331171035767,0.18547163903713226,0.12160191684961319,0.15642206370830536,0.08896836638450623,0.14048951864242554,0.0695357695221901,0.12931060791015625,0.05254511907696724,0.12259089946746826,0.12184502929449081,0.18117384612560272,0.08567643910646439,0.18223311007022858,0.06334362924098969,0.17708343267440796,0.041382815688848495,0.17678198218345642,0.13010281324386597,0.2023056000471115,0.12625740468502045,0.18972422182559967,0.14512544870376587,0.17955103516578674,0.15112362802028656,0.1820380538702011,0.1417754590511322,0.21875932812690735,0.13926458358764648,0.2014799863100052,0.15105976164340973,0.19321414828300476,0.15370751917362213,0.19907896220684052],[0.1952253133058548,0.1860881745815277,0.17961882054805756,0.15753524005413055,0.15228839218616486,0.144205704331398,0.13326241075992584,0.16234898567199707,0.11903388053178787,0.18545670807361603,0.12121192365884781,0.1565505862236023,0.08879683911800385,0.14052075147628784,0.06918258219957352,0.12928825616836548,0.05213764309883118,0.12283921241760254,0.12172999233007431,0.18142755329608917,0.08530261367559433,0.18214590847492218,0.0628114566206932,0.17688854038715363,0.04087967053055763,0.17682327330112457,0.13020136952400208,0.2025388479232788,0.1260012984275818,0.18986205756664276,0.14515873789787292,0.17957203090190887,0.15129970014095306,0.18194963037967682,0.1419442892074585,0.2190958857536316,0.1388069987297058,0.20193052291870117,0.15051276981830597,0.1938129961490631,0.15305311977863312,0.19990123808383942],[0.19463877379894257,0.1858680248260498,0.17930550873279572,0.1574489176273346,0.15211379528045654,0.14415624737739563,0.13326437771320343,0.16307424008846283,0.1191335916519165,0.18646246194839478,0.12063763290643692,0.15675030648708344,0.08776822686195374,0.14120636880397797,0.06805383414030075,0.13047100603580475,0.05078459531068802,0.12419026345014572,0.12132211029529572,0.18147222697734833,0.08501049876213074,0.18253883719444275,0.0626804530620575,0.17741559445858002,0.04083353653550148,0.1773296594619751,0.12984780967235565,0.20263366401195526,0.12579089403152466,0.19018429517745972,0.1451423466205597,0.17933733761310577,0.15145067870616913,0.1812286376953125,0.1416536420583725,0.21913693845272064,0.13841235637664795,0.20216256380081177,0.15040935575962067,0.1936032772064209,0.15323971211910248,0.1990717649459839],[0.1945740133523941,0.1858355551958084,0.17937785387039185,0.15769311785697937,0.15210942924022675,0.1443295180797577,0.13333196938037872,0.1633692979812622,0.11911565810441971,0.18668992817401886,0.12007288634777069,0.1565513163805008,0.08723333477973938,0.14096592366695404,0.06752393394708633,0.1301366090774536,0.05029892176389694,0.12392567098140717,0.120873361825943,0.18148508667945862,0.08462558686733246,0.1825564205646515,0.06233307719230652,0.17752711474895477,0.04057098552584648,0.17746290564537048,0.12958940863609314,0.20265862345695496,0.1254808008670807,0.1905307024717331,0.1447160840034485,0.17965222895145416,0.15092846751213074,0.18126511573791504,0.14169631898403168,0.21932385861873627,0.1385200321674347,0.20258624851703644,0.15064840018749237,0.19380438327789307,0.15374979376792908,0.1991255283355713],[0.19476523995399475,0.18604227900505066,0.17939500510692596,0.1575879007577896,0.1525285392999649,0.144158735871315,0.13364529609680176,0.16336703300476074,0.11921229213476181,0.18637099862098694,0.12009294331073761,0.15656104683876038,0.0873616635799408,0.14070311188697815,0.06754916161298752,0.12995988130569458,0.05044027417898178,0.12353238463401794,0.12077800929546356,0.18156839907169342,0.08447226881980896,0.18258656561374664,0.06201509013772011,0.17738240957260132,0.0404534786939621,0.1770092099905014,0.12950332462787628,0.20293623208999634,0.1254815310239792,0.19080142676830292,0.14468693733215332,0.17966262996196747,0.15139251947402954,0.18117214739322662,0.14163492619991302,0.2196454107761383,0.13825497031211853,0.2027178555727005,0.14970150589942932,0.19441969692707062,0.15241606533527374,0.19988545775413513],[0.19504524767398834,0.18553657829761505,0.1802225559949875,0.1577197164297104,0.15330860018730164,0.14403170347213745,0.13401904702186584,0.16334834694862366,0.11890926212072372,0.18616212904453278,0.12086404860019684,0.15537098050117493,0.08736419677734375,0.14311495423316956,0.06701734662055969,0.13494597375392914,0.04955964535474777,0.12999990582466125,0.12104527652263641,0.18038256466388702,0.08376805484294891,0.17972731590270996,0.061089903116226196,0.1735968142747879,0.039812564849853516,0.17163993418216705,0.1294596791267395,0.20194882154464722,0.125024676322937,0.1907326877117157,0.14439503848552704,0.1801963746547699,0.1513083279132843,0.18102671205997467,0.14166323840618134,0.2195301055908203,0.13823115825653076,0.2041771560907364,0.14973215758800507,0.19595803320407867,0.1523343175649643,0.20130877196788788],[0.19544647634029388,0.18559469282627106,0.1803821474313736,0.15717250108718872,0.15350548923015594,0.14345033466815948,0.13420915603637695,0.1631190925836563,0.11907996982336044,0.18596626818180084,0.1210116595029831,0.15511064231395721,0.08703502267599106,0.14347083866596222,0.06644470989704132,0.135769784450531,0.048876989632844925,0.13131944835186005,0.12140916287899017,0.18023884296417236,0.08386006206274033,0.1795598417520523,0.06129663065075874,0.17328011989593506,0.04059600830078125,0.1709892451763153,0.12971580028533936,0.20201744139194489,0.12478961795568466,0.19093933701515198,0.14442116022109985,0.1802191585302353,0.1518961787223816,0.18083566427230835,0.14164884388446808,0.21975965797901154,0.1375536322593689,0.20424795150756836,0.1488046944141388,0.1962549090385437,0.1516842395067215,0.20157818496227264]],"2":[[0.2007531076669693,0.18955734372138977,0.18945200741291046,0.15500333905220032,0.1626417189836502,0.13029363751411438,0.13816598057746887,0.12781156599521637,0.13110165297985077,0.15393055975437164,0.13446955382823944,0.15479160845279694,0.12209679931402206,0.14297547936439514,0.13542434573173523,0.14817465841770172,0.14838331937789917,0.15913882851600647,0.12585949897766113,0.17434275150299072,0.09515798836946487,0.16107656061649323,0.07196974009275436,0.15277676284313202,0.050200968980789185,0.1470431387424469,0.12605273723602295,0.19458459317684174,0.09220296889543533,0.20151598751544952,0.07034371793270111,0.20476920902729034,0.0508563257753849,0.20672966539859772,0.1345674693584442,0.21338887512683868,0.11200030893087387,0.22322912514209747,0.09607008099555969,0.22990308701992035,0.0809023454785347,0.23551823198795319],[0.2007572501897812,0.18934330344200134,0.18951112031936646,0.15515734255313873,0.16310469806194305,0.12971889972686768,0.13901446759700775,0.12691740691661835,0.13204388320446014,0.1527756005525589,0.13402092456817627,0.15479697287082672,0.12144053727388382,0.14252693951129913,0.13481217622756958,0.1471252292394638,0.1477915346622467,0.15800631046295166,0.12540575861930847,0.17454084753990173,0.09432494640350342,0.16089960932731628,0.07089077681303024,0.1521936058998108,0.048836324363946915,0.14620639383792877,0.1258823275566101,0.19502051174640656,0.09172738343477249,0.20189149677753448,0.06972724944353104,0.20504774153232574,0.049762334674596786,0.2068120688199997,0.1349630057811737,0.21401958167552948,0.11231126636266708,0.22414129972457886,0.09642179310321808,0.23119544982910156,0.08116954565048218,0.23719312250614166],[0.20033182203769684,0.189490407705307,0.18944904208183289,0.15549597144126892,0.16324704885482788,0.1296333521604538,0.1396506428718567,0.12594962120056152,0.13210834562778473,0.15149928629398346,0.13316431641578674,0.15463986992835999,0.11985301226377487,0.14305156469345093,0.1348157823085785,0.14747321605682373,0.1490214467048645,0.15760929882526398,0.12458376586437225,0.17469057440757751,0.09388121217489243,0.1612958014011383,0.07022946327924728,0.15206292271614075,0.0475611686706543,0.145386204123497,0.12532314658164978,0.1955234855413437,0.09145046770572662,0.2018636018037796,0.06933946907520294,0.2051517218351364,0.049027711153030396,0.20667770504951477,0.13484446704387665,0.2148333489894867,0.11231286823749542,0.22520549595355988,0.0965287834405899,0.23202380537986755,0.08094172179698944,0.23761869966983795],[0.20057596266269684,0.1899830549955368,0.18982136249542236,0.15543517470359802,0.16303443908691406,0.1291506290435791,0.13939523696899414,0.1259101778268814,0.1324748545885086,0.15182489156723022,0.13336440920829773,0.15476346015930176,0.11999856680631638,0.14300748705863953,0.13509401679039001,0.14747245609760284,0.14931097626686096,0.15761078894138336,0.12490329891443253,0.17484843730926514,0.09435820579528809,0.1614619791507721,0.07081659138202667,0.15190543234348297,0.04847712069749832,0.14494355022907257,0.12554724514484406,0.19576995074748993,0.09175123274326324,0.20163676142692566,0.06974527984857559,0.2044881284236908,0.0495527945458889,0.2058320939540863,0.13470199704170227,0.2152167707681656,0.11222049593925476,0.22504006326198578,0.09644331783056259,0.23156723380088806,0.0808115154504776,0.23706741631031036],[0.2002914696931839,0.18963925540447235,0.1894397735595703,0.15522678196430206,0.16316066682338715,0.1294100135564804,0.13969115912914276,0.12570755183696747,0.1321713775396347,0.15159869194030762,0.13343898952007294,0.15493041276931763,0.12052290141582489,0.14328202605247498,0.13554613292217255,0.14805719256401062,0.14972764253616333,0.15817493200302124,0.12505467236042023,0.17497707903385162,0.09467945992946625,0.161309614777565,0.07115687429904938,0.15184324979782104,0.048821233212947845,0.14480119943618774,0.12570294737815857,0.19576948881149292,0.09210578352212906,0.2016373574733734,0.07003311067819595,0.20445261895656586,0.04975783824920654,0.2056000977754593,0.13496971130371094,0.2150373011827469,0.1124899610877037,0.22474029660224915,0.09663953632116318,0.23114490509033203,0.08096093684434891,0.2362872064113617],[0.1998790055513382,0.18922848999500275,0.1889370232820511,0.15507511794567108,0.1627834141254425,0.12912364304065704,0.13957656919956207,0.12558072805404663,0.131973996758461,0.1512751579284668,0.13299345970153809,0.15470829606056213,0.12024451792240143,0.14317114651203156,0.1348421573638916,0.1477893590927124,0.14851169288158417,0.15756462514400482,0.12452859431505203,0.1749783456325531,0.09441781044006348,0.1613585352897644,0.07103291898965836,0.15195822715759277,0.04881229251623154,0.1448061317205429,0.12526309490203857,0.19598619639873505,0.09199301153421402,0.20237433910369873,0.06992557644844055,0.20560365915298462,0.04949638620018959,0.2068871706724167,0.13465134799480438,0.21495693922042847,0.1127297654747963,0.22516962885856628,0.09727133065462112,0.23174653947353363,0.0816458910703659,0.23707789182662964],[0.20080582797527313,0.18783168494701385,0.1895357221364975,0.15429450571537018,0.1637452244758606,0.12890204787254333,0.14123690128326416,0.12383275479078293,0.13291215896606445,0.14860127866268158,0.1332281231880188,0.15464603900909424,0.12019980698823929,0.1433025300502777,0.1356377899646759,0.14681163430213928,0.150364488363266,0.155700221657753,0.12482807785272598,0.17462599277496338,0.09439142793416977,0.16129039227962494,0.07067392021417618,0.1512342095375061,0.04811057448387146,0.14348429441452026,0.12586788833141327,0.1955282837152481,0.09272702783346176,0.20227834582328796,0.07043337821960449,0.20582616329193115,0.04965761676430702,0.2072112262248993,0.1356588751077652,0.21448053419589996,0.11384014040231705,0.22523407638072968,0.09837080538272858,0.23191781342029572,0.08267252892255783,0.23722603917121887],[0.2011277973651886,0.1871403455734253,0.18967756628990173,0.15412858128547668,0.16391173005104065,0.12923148274421692,0.14154517650604248,0.12409961223602295,0.13294696807861328,0.1488001048564911,0.13344256579875946,0.15441228449344635,0.12043803930282593,0.1425931602716446,0.13547416031360626,0.14598165452480316,0.14973104000091553,0.15492652356624603,0.12504364550113678,0.17451374232769012,0.09444832056760788,0.1611444503068924,0.07075945287942886,0.15107163786888123,0.04796474799513817,0.14326535165309906,0.12618978321552277,0.19551868736743927,0.09308994561433792,0.20244772732257843,0.07090392708778381,0.20588156580924988,0.04997588321566582,0.2071736603975296,0.13619108498096466,0.21446403861045837,0.11442111432552338,0.2252846658229828,0.09890938550233841,0.2318938821554184,0.08325104415416718,0.23717744648456573],[0.20106492936611176,0.18682965636253357,0.189827099442482,0.1535356640815735,0.16404320299625397,0.12860673666000366,0.14164075255393982,0.12340081483125687,0.13292726874351501,0.14808331429958344,0.13340520858764648,0.1540079563856125,0.1205354630947113,0.14260250329971313,0.13610483705997467,0.14601680636405945,0.1507885456085205,0.15496544539928436,0.12504509091377258,0.17428477108478546,0.09457497298717499,0.1609926074743271,0.07091508060693741,0.15070588886737823,0.04809390753507614,0.14234524965286255,0.1262982189655304,0.19527556002140045,0.09332729876041412,0.20275259017944336,0.07118469476699829,0.20643839240074158,0.050256598740816116,0.20772956311702728,0.13640107214450836,0.2140926867723465,0.11477343738079071,0.225251704454422,0.09928372502326965,0.23199786245822906,0.08344599604606628,0.2372652292251587],[0.2008674144744873,0.186603382229805,0.18941232562065125,0.1538267880678177,0.16379809379577637,0.1289415806531906,0.14154261350631714,0.12380081415176392,0.1328469067811966,0.14831887185573578,0.13348960876464844,0.1537463515996933,0.12080220878124237,0.1426135152578354,0.13612060248851776,0.14628174901008606,0.15059307217597961,0.15513069927692413,0.12517890334129333,0.1741359978914261,0.09490396082401276,0.16097423434257507,0.07149240374565125,0.15072397887706757,0.04887815937399864,0.14246013760566711,0.12641720473766327,0.1952219158411026,0.09350277483463287,0.20258378982543945,0.07131125777959824,0.20648308098316193,0.050383709371089935,0.20785081386566162,0.13638444244861603,0.21412703394889832,0.11479923874139786,0.2251407951116562,0.09930726140737534,0.23176313936710358,0.08352804183959961,0.23692703247070312],[0.19975271821022034,0.18711429834365845,0.18844373524188995,0.15437272191047668,0.16298352181911469,0.12916788458824158,0.14073213934898376,0.12434127181768417,0.13176532089710236,0.14873124659061432,0.1324305534362793,0.15368115901947021,0.11861579120159149,0.14290498197078705,0.13443371653556824,0.14677681028842926,0.14926598966121674,0.15579569339752197,0.12425854057073593,0.17426079511642456,0.09411998838186264,0.16170059144496918,0.07077312469482422,0.15168826282024384,0.04831811413168907,0.14368385076522827,0.12574687600135803,0.19554921984672546,0.09289287775754929,0.2033870816230774,0.07074961811304092,0.20736195147037506,0.049894917756319046,0.2086596041917801,0.1360887587070465,0.21466688811779022,0.11431165039539337,0.2260376513004303,0.09873662143945694,0.23268277943134308,0.08286282420158386,0.23774516582489014],[0.19799590110778809,0.1865391731262207,0.18680906295776367,0.15451917052268982,0.16123437881469727,0.12989309430122375,0.13897506892681122,0.12536542117595673,0.1299051195383072,0.1498386412858963,0.13119974732398987,0.15465962886810303,0.11839766055345535,0.1444917470216751,0.13372066617012024,0.14854224026203156,0.14803090691566467,0.15720242261886597,0.12304127961397171,0.1749841570854187,0.09301275759935379,0.1626872569322586,0.06958241760730743,0.15296073257923126,0.04699539393186569,0.14496034383773804,0.12454521656036377,0.1959848403930664,0.09189042448997498,0.20418469607830048,0.06987429410219193,0.208524689078331,0.048965100198984146,0.21001997590065002,0.13489383459091187,0.21482613682746887,0.11332130432128906,0.2264752984046936,0.09791043400764465,0.23330730199813843,0.08210841566324234,0.23852553963661194],[0.19894717633724213,0.18733079731464386,0.18767298758029938,0.15458951890468597,0.16199366748332977,0.13004542887210846,0.13947418332099915,0.12468716502189636,0.13065096735954285,0.14920587837696075,0.13201841711997986,0.15501579642295837,0.11878828704357147,0.14435291290283203,0.1350228488445282,0.14850130677223206,0.15015225112438202,0.15740855038166046,0.12379985302686691,0.17501097917556763,0.0938415378332138,0.16226999461650848,0.07035182416439056,0.15196555852890015,0.047759514302015305,0.14356522262096405,0.12530329823493958,0.19591335952281952,0.0924106165766716,0.20357228815555573,0.07019053399562836,0.20743347704410553,0.049229685217142105,0.2085549682378769,0.13546979427337646,0.21435660123825073,0.11379249393939972,0.22548456490039825,0.09821756929159164,0.2321307510137558,0.08238909393548965,0.23733919858932495],[0.20040905475616455,0.1873098909854889,0.18884582817554474,0.15467870235443115,0.16333502531051636,0.13027672469615936,0.1411398947238922,0.12399490177631378,0.13195866346359253,0.14841057360172272,0.13325968384742737,0.15515483915805817,0.12011741101741791,0.14385630190372467,0.13532085716724396,0.1473599076271057,0.14955681562423706,0.15602056682109833,0.12486735731363297,0.17502835392951965,0.09456523507833481,0.16175316274166107,0.07096467912197113,0.15144950151443481,0.04818957298994064,0.14297576248645782,0.12606285512447357,0.19577635824680328,0.09322229772806168,0.2024649828672409,0.07105595618486404,0.20585785806179047,0.05008740723133087,0.2069525420665741,0.13591669499874115,0.2144233137369156,0.1144934594631195,0.22503145039081573,0.09915515035390854,0.23133637011051178,0.08355291932821274,0.23626765608787537],[0.2000572681427002,0.18788719177246094,0.1885606050491333,0.1531883031129837,0.16165390610694885,0.12895484268665314,0.1379556506872177,0.12224435061216354,0.12851516902446747,0.1464514285326004,0.13276608288288116,0.1554979532957077,0.12095952033996582,0.14566099643707275,0.13893717527389526,0.14996714890003204,0.1546848714351654,0.15942570567131042,0.1251111626625061,0.17543917894363403,0.0946960300207138,0.16415399312973022,0.07080680876970291,0.15596941113471985,0.047574229538440704,0.14941735565662384,0.12660177052021027,0.1958775520324707,0.0941091924905777,0.2014664113521576,0.07220695912837982,0.2040303349494934,0.051304735243320465,0.20443931221961975,0.136219784617424,0.2142384797334671,0.11523615568876266,0.22328560054302216,0.10003034770488739,0.2284180223941803,0.08410850912332535,0.2322283387184143],[0.19984008371829987,0.1879723072052002,0.18825237452983856,0.1534038484096527,0.1613456755876541,0.12910868227481842,0.1374933421611786,0.1218545064330101,0.12765488028526306,0.14591211080551147,0.1326361745595932,0.15504227578639984,0.12042530626058578,0.14671878516674042,0.13860765099525452,0.15056896209716797,0.15441592037677765,0.15896670520305634,0.12499115616083145,0.17516133189201355,0.09436778724193573,0.16591094434261322,0.0705883800983429,0.15882985293865204,0.04690013453364372,0.152646005153656,0.126630961894989,0.19555741548538208,0.09425069391727448,0.20097678899765015,0.07245951890945435,0.2032185196876526,0.051389969885349274,0.20318444073200226,0.13614898920059204,0.2140597403049469,0.11519300937652588,0.2230176031589508,0.10006344318389893,0.22835773229599,0.08419889956712723,0.2323264479637146],[0.20017798244953156,0.18772703409194946,0.1887679100036621,0.15375566482543945,0.1624058187007904,0.12919221818447113,0.13970385491847992,0.12095638364553452,0.12834887206554413,0.14283069968223572,0.13222762942314148,0.1555040180683136,0.11983606964349747,0.14768461883068085,0.13874080777168274,0.15080174803733826,0.15478336811065674,0.15818022191524506,0.12481139600276947,0.1757814735174179,0.09408031404018402,0.16718445718288422,0.0700385794043541,0.1597706377506256,0.045797862112522125,0.15336692333221436,0.12677934765815735,0.1960819959640503,0.09449144452810287,0.20102699100971222,0.07285837084054947,0.20267461240291595,0.05163060128688812,0.202223002910614,0.1366480439901352,0.2142355740070343,0.11562858521938324,0.22224193811416626,0.10049431025981903,0.22712720930576324,0.08479943126440048,0.23059631884098053],[0.20088323950767517,0.18764810264110565,0.18920539319515228,0.15379858016967773,0.16266779601573944,0.12930482625961304,0.14028042554855347,0.12109430879354477,0.1290266364812851,0.14222167432308197,0.13261114060878754,0.15551717579364777,0.12046528607606888,0.14739544689655304,0.1393911987543106,0.15004833042621613,0.1556108146905899,0.15715672075748444,0.125245600938797,0.17568089067935944,0.09476865828037262,0.16693417727947235,0.0708526223897934,0.1589527726173401,0.046766363084316254,0.15182746946811676,0.12733490765094757,0.1959638148546219,0.09512148052453995,0.20067621767520905,0.07347431778907776,0.2023155689239502,0.0521821603178978,0.20176279544830322,0.1373489797115326,0.21402236819267273,0.11618024110794067,0.2218506634235382,0.10114724934101105,0.2265954613685608,0.0854380801320076,0.22986161708831787],[0.20109912753105164,0.18777236342430115,0.18950046598911285,0.1537899374961853,0.16317851841449738,0.12906663119792938,0.14088395237922668,0.12092477083206177,0.129488006234169,0.1419060379266739,0.13305678963661194,0.1555977463722229,0.12092811614274979,0.14710412919521332,0.1394396275281906,0.14980313181877136,0.1553013175725937,0.15705610811710358,0.12542419135570526,0.1756650060415268,0.09490661323070526,0.16642259061336517,0.07096318900585175,0.15817254781723022,0.046984340995550156,0.1508013755083084,0.12736447155475616,0.19592714309692383,0.09496522694826126,0.20061299204826355,0.07318717241287231,0.20228692889213562,0.05175407603383064,0.20184563100337982,0.1374026983976364,0.21405239403247833,0.11622346192598343,0.2220168113708496,0.10113489627838135,0.22671252489089966,0.08541257679462433,0.2300984263420105]],"3":[[0.21058523654937744,0.1936948448419571,0.19811788201332092,0.15505443513393402,0.17304165661334991,0.12663811445236206,0.15360954403877258,0.1372530460357666,0.15148748457431793,0.1645888239145279,0.12992466986179352,0.15373891592025757,0.10014139115810394,0.13813842833042145,0.08084923028945923,0.12861604988574982,0.06456533819437027,0.11990846693515778,0.12414680421352386,0.177557110786438,0.08520027250051498,0.17261068522930145,0.05981576442718506,0.16791146993637085,0.03955971449613571,0.16465742886066437,0.1291150003671646,0.19732803106307983,0.09326440840959549,0.20558077096939087,0.0678047239780426,0.20885637402534485,0.04567244276404381,0.21082517504692078,0.14173024892807007,0.21393032371997833,0.11845000833272934,0.22450733184814453,0.10200722515583038,0.23212814331054688,0.08630981296300888,0.23947565257549286],[0.21001912653446198,0.19551092386245728,0.19713415205478668,0.156463623046875,0.17121082544326782,0.12700486183166504,0.1509076952934265,0.13759030401706696,0.14885438978672028,0.16589736938476562,0.12761706113815308,0.15469031035900116,0.0968799963593483,0.13897693157196045,0.07712270319461823,0.12923051416873932,0.060415640473365784,0.12028185278177261,0.12146352976560593,0.17916935682296753,0.08177805691957474,0.1743398904800415,0.055971164256334305,0.1694319248199463,0.03532561659812927,0.1660311222076416,0.12623398005962372,0.1992870718240738,0.08971113711595535,0.2080281376838684,0.06383593380451202,0.21128258109092712,0.04134054854512215,0.21335597336292267,0.1387271285057068,0.21625979244709015,0.11467522382736206,0.22707733511924744,0.09787782281637192,0.2343653291463852,0.0817391574382782,0.24163755774497986],[0.210203617811203,0.19638843834400177,0.19712994992733002,0.15642045438289642,0.17066118121147156,0.12638145685195923,0.15033745765686035,0.13753916323184967,0.14878393709659576,0.16623328626155853,0.12696270644664764,0.15465816855430603,0.09585452824831009,0.1379249095916748,0.07590328902006149,0.12771840393543243,0.05909980833530426,0.11835683137178421,0.12097685784101486,0.17958728969097137,0.08092349767684937,0.17448623478412628,0.05481213331222534,0.16969914734363556,0.03401944041252136,0.16659745573997498,0.12590615451335907,0.20007623732089996,0.08901714533567429,0.20841269195079803,0.06276094913482666,0.2115623503923416,0.040102314203977585,0.21358413994312286,0.1386684775352478,0.21726062893867493,0.11442086845636368,0.22790531814098358,0.09732449799776077,0.23540009558200836,0.08103175461292267,0.2429620325565338],[0.20975762605667114,0.19430933892726898,0.1965070217847824,0.15574581921100616,0.17073768377304077,0.12747028470039368,0.1516057699918747,0.13857951760292053,0.1506221741437912,0.1659713238477707,0.12792617082595825,0.15428152680397034,0.09779012948274612,0.13884848356246948,0.07848315685987473,0.12910467386245728,0.06230062246322632,0.12020153552293777,0.12234730273485184,0.17871259152889252,0.08341991156339645,0.17415161430835724,0.058022916316986084,0.16963481903076172,0.03788506239652634,0.1666889637708664,0.12738987803459167,0.19866789877414703,0.09154152125120163,0.2069697380065918,0.06601956486701965,0.21025705337524414,0.044106606394052505,0.21238498389720917,0.14006099104881287,0.21524396538734436,0.11644352227449417,0.22551600635051727,0.09989975392818451,0.23286637663841248,0.08430851995944977,0.2400328367948532],[0.2087303251028061,0.1934504508972168,0.19550782442092896,0.15525858104228973,0.1701923906803131,0.12774302065372467,0.1514931470155716,0.13869614899158478,0.150325208902359,0.16532772779464722,0.128038689494133,0.15482236444950104,0.09821426868438721,0.13969354331493378,0.07919079065322876,0.1300315111875534,0.06306388229131699,0.12132780253887177,0.12236732989549637,0.1787591576576233,0.08405907452106476,0.17427675426006317,0.05903226137161255,0.17019720375537872,0.039224885404109955,0.16763637959957123,0.12716180086135864,0.19829177856445312,0.09180799871683121,0.2064683884382248,0.06671261042356491,0.21019917726516724,0.045202478766441345,0.2128583788871765,0.13962851464748383,0.21436789631843567,0.11671880632638931,0.2250416874885559,0.100589320063591,0.23264560103416443,0.08532585203647614,0.24009333550930023],[0.21045653522014618,0.19372375309467316,0.19760200381278992,0.15493856370449066,0.1728603094816208,0.12685935199260712,0.15459223091602325,0.13764670491218567,0.15284453332424164,0.16351810097694397,0.13115915656089783,0.1537146270275116,0.10175079107284546,0.13867400586605072,0.08292169868946075,0.1289941370487213,0.06716115772724152,0.12032192200422287,0.12551526725292206,0.17756707966327667,0.08748146891593933,0.17287971079349518,0.06276948750019073,0.16833198070526123,0.04335467144846916,0.1653459221124649,0.1302538961172104,0.19703073799610138,0.09482424706220627,0.20427089929580688,0.06999281793832779,0.20707349479198456,0.048576317727565765,0.20880818367004395,0.14259669184684753,0.21311835944652557,0.11941636353731155,0.22279703617095947,0.10312943905591965,0.22979296743869781,0.08749498426914215,0.2365970015525818],[0.20700451731681824,0.19398155808448792,0.19409433007240295,0.1557326465845108,0.16870170831680298,0.12876662611961365,0.14975830912590027,0.138795867562294,0.1496579796075821,0.16516758501529694,0.12797288596630096,0.1557742804288864,0.09896021336317062,0.14097735285758972,0.08040917664766312,0.13182176649570465,0.06491860002279282,0.1232600137591362,0.12231934815645218,0.17893867194652557,0.08469345420598984,0.1749715805053711,0.05992657318711281,0.17090675234794617,0.04043199121952057,0.1683279275894165,0.12696658074855804,0.19808275997638702,0.0921260267496109,0.20613856613636017,0.06732968240976334,0.20966129004955292,0.046155910938978195,0.21212749183177948,0.13904571533203125,0.21403883397579193,0.11649521440267563,0.22466455399990082,0.10058891773223877,0.23231986165046692,0.08560139685869217,0.23982933163642883],[0.20604358613491058,0.19465075433254242,0.19249051809310913,0.15647993981838226,0.1671585589647293,0.128938689827919,0.14849723875522614,0.13894374668598175,0.14837589859962463,0.16493433713912964,0.126080721616745,0.1566721647977829,0.0967201441526413,0.14148209989070892,0.07766515016555786,0.1317637413740158,0.061738450080156326,0.12300125509500504,0.12065530568361282,0.180366650223732,0.08234792947769165,0.17623911798000336,0.057088930159807205,0.17182384431362152,0.03703303262591362,0.1686566174030304,0.12563882768154144,0.19982051849365234,0.09029250591993332,0.20831432938575745,0.06533824652433395,0.2117222249507904,0.04391475394368172,0.21391510963439941,0.1380055844783783,0.21578124165534973,0.11502019315958023,0.22619883716106415,0.09866242855787277,0.23363780975341797,0.08324279636144638,0.24083015322685242],[0.20419842004776,0.1952492743730545,0.1903933882713318,0.15740281343460083,0.16430974006652832,0.12974950671195984,0.14537574350833893,0.14020055532455444,0.14615505933761597,0.16695047914981842,0.12343458831310272,0.1569020003080368,0.0935562402009964,0.14213398098945618,0.07408683747053146,0.13274267315864563,0.057930245995521545,0.12373711168766022,0.1178198903799057,0.18122775852680206,0.07915538549423218,0.1777280867099762,0.053602512925863266,0.17358408868312836,0.033208217471838,0.17042770981788635,0.12279728800058365,0.20108716189861298,0.08714118599891663,0.21014642715454102,0.06192318722605705,0.2141483873128891,0.040250908583402634,0.2165074199438095,0.13524900376796722,0.2173508256673813,0.11216574907302856,0.22839981317520142,0.09600819647312164,0.23641635477542877,0.08072354644536972,0.24416090548038483],[0.20466800034046173,0.19563578069210052,0.19020037353038788,0.1576949954032898,0.16403819620609283,0.12917543947696686,0.1447492390871048,0.13993872702121735,0.14531244337558746,0.16758830845355988,0.12242579460144043,0.1574382334947586,0.09204679727554321,0.1425258070230484,0.07243920862674713,0.13295279443264008,0.056021567434072495,0.12413251399993896,0.11700684577226639,0.1817391812801361,0.07755318284034729,0.17804834246635437,0.051610078662633896,0.17376969754695892,0.030857346951961517,0.17069143056869507,0.12215449661016464,0.2014903724193573,0.08598531782627106,0.21100486814975739,0.06038867309689522,0.21482275426387787,0.03842617943882942,0.21707995235919952,0.13486184179782867,0.21807590126991272,0.11129134148359299,0.22932927310466766,0.09457539021968842,0.23729291558265686,0.0787428766489029,0.24502934515476227],[0.20443513989448547,0.1952492594718933,0.1902366280555725,0.1571931540966034,0.16432160139083862,0.12906962633132935,0.14498499035835266,0.13960596919059753,0.14546069502830505,0.1668829619884491,0.12276206910610199,0.15741057693958282,0.09269770979881287,0.14259907603263855,0.07315188646316528,0.13332262635231018,0.05684129521250725,0.12482758611440659,0.11749031394720078,0.18164066970348358,0.07859139144420624,0.1778588443994522,0.052848394960165024,0.17372441291809082,0.03239735960960388,0.17065222561359406,0.1225895956158638,0.20139649510383606,0.08670318871736526,0.21061943471431732,0.06121375039219856,0.21442215144634247,0.039339374750852585,0.21669895946979523,0.13514810800552368,0.21795223653316498,0.11181825399398804,0.2291848361492157,0.09497740864753723,0.23694495856761932,0.07911835610866547,0.24417145550251007],[0.2084980010986328,0.19547823071479797,0.19503894448280334,0.15681207180023193,0.169889435172081,0.12747076153755188,0.15039663016796112,0.13718876242637634,0.14979195594787598,0.1644090712070465,0.12743504345417023,0.15525496006011963,0.09708472341299057,0.14038224518299103,0.07768303900957108,0.13056433200836182,0.06141921132802963,0.12135176360607147,0.12183266133069992,0.17932793498039246,0.08288941532373428,0.17475734651088715,0.05715899541974068,0.16979333758354187,0.03678497299551964,0.16614745557308197,0.12665840983390808,0.1991480141878128,0.09060661494731903,0.2079494744539261,0.06497465074062347,0.21126247942447662,0.042991504073143005,0.2130962759256363,0.13915066421031952,0.21589098870754242,0.11548145115375519,0.22670167684555054,0.09860251098871231,0.2339814305305481,0.08235708624124527,0.24067150056362152],[0.20849545300006866,0.19428245723247528,0.19497773051261902,0.15604320168495178,0.17008747160434723,0.12748317420482635,0.15081991255283356,0.13695690035820007,0.15004830062389374,0.16357602179050446,0.12781892716884613,0.15541765093803406,0.09782274067401886,0.14066922664642334,0.07862818986177444,0.13092921674251556,0.06258394569158554,0.12179772555828094,0.12256988137960434,0.17900404334068298,0.08401982486248016,0.1746678203344345,0.058599669486284256,0.16985173523426056,0.03860186040401459,0.166365846991539,0.12759682536125183,0.19844888150691986,0.09177762269973755,0.2073644995689392,0.06640493124723434,0.21056918799877167,0.04474486783146858,0.2121347039937973,0.140147402882576,0.2150113582611084,0.11659324914216995,0.22620192170143127,0.09961443394422531,0.23347865045070648,0.08342830091714859,0.23996594548225403],[0.20878174901008606,0.19426634907722473,0.1954319179058075,0.15607774257659912,0.17087393999099731,0.12739279866218567,0.15184719860553741,0.13669826090335846,0.15079763531684875,0.1631467640399933,0.12812677025794983,0.15535849332809448,0.09818455576896667,0.14041489362716675,0.07904639840126038,0.13067497313022614,0.06297179311513901,0.12134101241827011,0.12288187444210052,0.17882706224918365,0.0844089612364769,0.17409490048885345,0.058944858610630035,0.16924934089183807,0.038838475942611694,0.1656314730644226,0.1280338019132614,0.19828516244888306,0.09213487803936005,0.20686039328575134,0.06670451164245605,0.21012061834335327,0.04496970400214195,0.21155492961406708,0.14078308641910553,0.21479076147079468,0.11732444167137146,0.2258734405040741,0.10027850419282913,0.23320871591567993,0.08402487635612488,0.23975592851638794],[0.20835144817829132,0.1944626420736313,0.19516517221927643,0.1563548743724823,0.17025133967399597,0.1275227665901184,0.15102426707744598,0.13688719272613525,0.15037067234516144,0.16361482441425323,0.12749992311000824,0.15542545914649963,0.09727326780557632,0.14066269993782043,0.07784947007894516,0.1309584677219391,0.061508044600486755,0.12183733284473419,0.12223350256681442,0.17901930212974548,0.08336684107780457,0.1743989735841751,0.05762435868382454,0.16962337493896484,0.03718828037381172,0.16594582796096802,0.1273626834154129,0.19854997098445892,0.09141470491886139,0.2076718658208847,0.06586603820323944,0.21103541553020477,0.04396698996424675,0.21263979375362396,0.14007842540740967,0.21518190205097198,0.11654886603355408,0.2264646589756012,0.09966515004634857,0.2337285429239273,0.08342401683330536,0.24026606976985931],[0.20945601165294647,0.1950094997882843,0.19602032005786896,0.1561599224805832,0.17085863649845123,0.1263640969991684,0.1515839397907257,0.13656160235404968,0.15092265605926514,0.16382256150245667,0.12802405655384064,0.1543620526790619,0.09775586426258087,0.13942302763462067,0.07826513051986694,0.12979243695735931,0.06198284029960632,0.1208076998591423,0.12273307889699936,0.1784082055091858,0.08399605005979538,0.17336885631084442,0.05820275843143463,0.16836689412593842,0.0377347469329834,0.16453203558921814,0.1279611736536026,0.1983891725540161,0.09185454249382019,0.20729100704193115,0.06621241569519043,0.21040451526641846,0.04420255124568939,0.2116810381412506,0.14099730551242828,0.21556644141674042,0.11729544401168823,0.2270604968070984,0.10014355182647705,0.23426105082035065,0.08372995257377625,0.2406115084886551]],"4":[[0.2070305198431015,0.17933286726474762,0.1912786066532135,0.14438414573669434,0.16671344637870789,0.12595807015895844,0.148456871509552,0.11322803795337677,0.13633206486701965,0.09830991923809052,0.12431833148002625,0.14918410778045654,0.0927039310336113,0.13831612467765808,0.07153765112161636,0.131564199924469,0.05263930931687355,0.12609797716140747,0.12068682163953781,0.17497743666172028,0.08083942532539368,0.17842426896095276,0.05449604615569115,0.17898866534233093,0.03164190798997879,0.18017587065696716,0.12783589959144592,0.19657021760940552,0.09296940267086029,0.21255333721637726,0.06798163801431656,0.22052346169948578,0.04533367231488228,0.22622337937355042,0.14315003156661987,0.21433889865875244,0.12224242091178894,0.236280620098114,0.10610305517911911,0.24970561265945435,0.0897730141878128,0.26086798310279846],[0.20829498767852783,0.17864921689033508,0.1929951012134552,0.14363282918930054,0.1685822606086731,0.1239423155784607,0.1497952789068222,0.11078948527574539,0.13774369657039642,0.09428460150957108,0.12491796910762787,0.14855554699897766,0.09342614561319351,0.13820789754390717,0.07234957069158554,0.13130450248718262,0.05343681573867798,0.12603414058685303,0.1212976723909378,0.1743561029434204,0.08173420280218124,0.1777062565088272,0.05569040775299072,0.17811237275600433,0.03315717726945877,0.1793871372938156,0.12832704186439514,0.19563110172748566,0.0942377820611,0.2120848149061203,0.06939446181058884,0.22073495388031006,0.046848174184560776,0.2270810902118683,0.14359040558338165,0.21298666298389435,0.12297195196151733,0.23522882163524628,0.10728530585765839,0.2491261214017868,0.0913216695189476,0.2607994079589844],[0.2083277702331543,0.17923080921173096,0.19342240691184998,0.14448454976081848,0.16931143403053284,0.12339331954717636,0.1503528207540512,0.10937149077653885,0.13816730678081512,0.09174840897321701,0.12624193727970123,0.14817263185977936,0.09528682380914688,0.13755953311920166,0.07472416758537292,0.13123351335525513,0.056237269192934036,0.12617391347885132,0.12239431589841843,0.1741199940443039,0.08348918706178665,0.17715992033481598,0.058118853718042374,0.17755356431007385,0.03608139604330063,0.17874671518802643,0.1289776861667633,0.19570814073085785,0.09531943500041962,0.21205534040927887,0.0710187554359436,0.22043156623840332,0.04893747344613075,0.22655056416988373,0.1435239613056183,0.21359528601169586,0.12236039340496063,0.23484688997268677,0.10641267150640488,0.24792039394378662,0.09027371555566788,0.25884100794792175],[0.20666533708572388,0.17948991060256958,0.19165584444999695,0.14505083858966827,0.16733255982398987,0.123609758913517,0.14830073714256287,0.10932684689760208,0.13595443964004517,0.09194747358560562,0.12466782331466675,0.14987881481647491,0.09385212510824203,0.13994771242141724,0.07360649108886719,0.13371463119983673,0.055298175662755966,0.12852419912815094,0.1210789680480957,0.17550887167453766,0.08276836574077606,0.1780415028333664,0.05759743973612785,0.17806009948253632,0.035775817930698395,0.17883898317813873,0.12775704264640808,0.1966012865304947,0.09436339139938354,0.21310113370418549,0.07013924419879913,0.22176431119441986,0.04810556024312973,0.2281620055437088,0.1422453373670578,0.21411263942718506,0.12108588963747025,0.2352439910173416,0.10519196093082428,0.24829815328121185,0.08896329998970032,0.259023517370224],[0.2081466168165207,0.17907331883907318,0.1929689645767212,0.14451740682125092,0.1690242439508438,0.12266040593385696,0.14949765801429749,0.10846930742263794,0.1366734802722931,0.09066260606050491,0.12628775835037231,0.1489819437265396,0.09547236561775208,0.13902665674686432,0.07510816305875778,0.1325245201587677,0.05677240714430809,0.12726210057735443,0.12257260084152222,0.17464333772659302,0.08425894379615784,0.1767328977584839,0.05917316675186157,0.17637360095977783,0.03756747022271156,0.17679636180400848,0.1291116327047348,0.1960008591413498,0.09594700485467911,0.21216557919979095,0.07167607545852661,0.22061806917190552,0.049707625061273575,0.22664062678813934,0.1436014324426651,0.2136405110359192,0.12255114316940308,0.2350272387266159,0.1066489964723587,0.2480865865945816,0.09042145311832428,0.2587275207042694],[0.20700938999652863,0.17902417480945587,0.1917983591556549,0.1446225345134735,0.16787856817245483,0.12273523211479187,0.14845657348632812,0.10829632729291916,0.13555383682250977,0.09076771140098572,0.1253703385591507,0.14961251616477966,0.09475278854370117,0.13990436494350433,0.07465231418609619,0.13406434655189514,0.05644617974758148,0.12926079332828522,0.12172137945890427,0.1752173900604248,0.08345253765583038,0.177353635430336,0.05842569097876549,0.177367702126503,0.03669267147779465,0.178320974111557,0.1283576935529709,0.19649483263492584,0.09511672705411911,0.21263886988162994,0.07099367678165436,0.22134974598884583,0.04909266531467438,0.22762423753738403,0.14277391135692596,0.21411709487438202,0.12170357257127762,0.23515084385871887,0.10601778328418732,0.24806074798107147,0.08999904990196228,0.258652001619339],[0.20766696333885193,0.17927727103233337,0.1928180456161499,0.1446150690317154,0.1689974069595337,0.1225811168551445,0.14923661947250366,0.10813508182764053,0.13605844974517822,0.09025668352842331,0.1266583353281021,0.14968478679656982,0.09587087482213974,0.13994775712490082,0.07560501992702484,0.13390041887760162,0.05737034231424332,0.12871471047401428,0.1229422390460968,0.1749250292778015,0.08474373072385788,0.1764487475156784,0.05974699184298515,0.17587530612945557,0.03817006200551987,0.17625132203102112,0.12933531403541565,0.19613130390644073,0.09627506136894226,0.21163415908813477,0.07213170826435089,0.21991193294525146,0.0502738319337368,0.22576847672462463,0.1434212177991867,0.21360893547534943,0.12266896665096283,0.2347472757101059,0.10694281756877899,0.24791041016578674,0.090826116502285,0.25852876901626587],[0.20742307603359222,0.17883649468421936,0.1926540583372116,0.14455646276474,0.1686728298664093,0.12255001068115234,0.14879029989242554,0.10829553008079529,0.13532495498657227,0.09080622345209122,0.12626010179519653,0.14964719116687775,0.09538237005472183,0.14024725556373596,0.0751187726855278,0.13454928994178772,0.0568644143640995,0.13007725775241852,0.12266789376735687,0.17488376796245575,0.08459540456533432,0.1768842488527298,0.05954573303461075,0.17662666738033295,0.03776850923895836,0.1772206574678421,0.12915630638599396,0.1959366798400879,0.096127450466156,0.21168434619903564,0.07201869785785675,0.2203429937362671,0.05008642002940178,0.22658689320087433,0.14331136643886566,0.21328820288181305,0.12255103886127472,0.23430588841438293,0.10693486034870148,0.24757850170135498,0.09092869609594345,0.2584066390991211],[0.20724783837795258,0.17913766205310822,0.1926058828830719,0.14438466727733612,0.16889911890029907,0.1222866103053093,0.14923503994941711,0.10773801803588867,0.13561765849590302,0.09046809375286102,0.1266927272081375,0.14955149590969086,0.09569881856441498,0.1401287317276001,0.07531697303056717,0.13429011404514313,0.05701866000890732,0.12949419021606445,0.12306366115808487,0.1748591810464859,0.08490543812513351,0.17656907439231873,0.05982016772031784,0.17608962953090668,0.038124773651361465,0.17646121978759766,0.1294974386692047,0.19605593383312225,0.09645700454711914,0.21167539060115814,0.07229189574718475,0.22000865638256073,0.050366487354040146,0.2259288877248764,0.1435178816318512,0.21353356540203094,0.12294583022594452,0.23440395295619965,0.10736221820116043,0.24765311181545258,0.0914510190486908,0.25855615735054016],[0.2072632908821106,0.1794891506433487,0.19266214966773987,0.14449360966682434,0.16869063675403595,0.12267091125249863,0.1489405483007431,0.10804564505815506,0.13550344109535217,0.09058133512735367,0.1267460435628891,0.1496969312429428,0.09548933058977127,0.14000846445560455,0.07504946738481522,0.1344251185655594,0.05672328174114227,0.12971393764019012,0.1231149211525917,0.1748977154493332,0.08494093269109726,0.17664162814617157,0.05973939225077629,0.17609424889087677,0.03779032453894615,0.1764971762895584,0.12959566712379456,0.1959749460220337,0.0965365543961525,0.21179451048374176,0.07241294533014297,0.22041034698486328,0.05046095699071884,0.22663018107414246,0.14358370006084442,0.21329525113105774,0.1229521781206131,0.2338758111000061,0.10751326382160187,0.24708673357963562,0.09168413281440735,0.25804403424263],[0.20729808509349823,0.17942118644714355,0.19252856075763702,0.14439180493354797,0.16866423189640045,0.1223941221833229,0.14894044399261475,0.1081378236413002,0.13540571928024292,0.09084337949752808,0.12673893570899963,0.14994291961193085,0.09544792026281357,0.14018011093139648,0.07501082867383957,0.13479210436344147,0.05672411620616913,0.13027766346931458,0.1232556477189064,0.17509199678897858,0.08505243062973022,0.17659804224967957,0.05969814956188202,0.17579010128974915,0.03768191859126091,0.17602720856666565,0.12968876957893372,0.19609063863754272,0.09667372703552246,0.21186906099319458,0.07239948213100433,0.22032387554645538,0.050369538366794586,0.22629213333129883,0.14370682835578918,0.21323588490486145,0.12299180775880814,0.23394198715686798,0.10740847885608673,0.24712547659873962,0.09143170714378357,0.25809863209724426],[0.20781229436397552,0.18004967272281647,0.1928042322397232,0.14474134147167206,0.1687694638967514,0.12275289744138718,0.1490759700536728,0.10856114327907562,0.1356050968170166,0.09116392582654953,0.1269242912530899,0.15024334192276,0.09549534320831299,0.14013992249965668,0.07484246045351028,0.13446035981178284,0.05640570446848869,0.1298525333404541,0.1233854740858078,0.17518487572669983,0.08492571115493774,0.17644479870796204,0.059493351727724075,0.17553472518920898,0.03749990463256836,0.17551016807556152,0.12973886728286743,0.19590596854686737,0.09658130258321762,0.21169541776180267,0.07238991558551788,0.21991169452667236,0.05038711801171303,0.2256375551223755,0.14364135265350342,0.21278639137744904,0.12314565479755402,0.23377390205860138,0.10767973959445953,0.24717994034290314,0.09189227968454361,0.25837206840515137],[0.2078574150800705,0.18024365603923798,0.19277745485305786,0.1450987458229065,0.16862241923809052,0.1231507807970047,0.14881913363933563,0.10922838747501373,0.13541050255298615,0.092100590467453,0.1266271024942398,0.15028691291809082,0.0953022688627243,0.1403898000717163,0.07476940006017685,0.13504084944725037,0.05644435063004494,0.13040322065353394,0.12299291044473648,0.17516781389713287,0.08474535495042801,0.17633002996444702,0.05935124680399895,0.17539936304092407,0.03741733357310295,0.17527121305465698,0.1293705254793167,0.19591356813907623,0.09624186903238297,0.21158121526241302,0.07195229083299637,0.21981635689735413,0.04989871755242348,0.22555284202098846,0.14340800046920776,0.21281182765960693,0.12292851507663727,0.23389700055122375,0.10729853808879852,0.24748867750167847,0.09121696650981903,0.2586614191532135],[0.20810487866401672,0.1801949441432953,0.19304817914962769,0.14525355398654938,0.16889308393001556,0.12340753525495529,0.1493729203939438,0.10925998538732529,0.1360519528388977,0.0919044017791748,0.1271020919084549,0.15030238032341003,0.09576897323131561,0.1401345431804657,0.07523175328969955,0.13454608619213104,0.056861359626054764,0.12985576689243317,0.12343338876962662,0.17510642111301422,0.0851515606045723,0.1760827898979187,0.05980704724788666,0.17500150203704834,0.03792104497551918,0.17482365667819977,0.1297232061624527,0.19579114019870758,0.09654867649078369,0.21120798587799072,0.07226256281137466,0.21930141746997833,0.05025630071759224,0.2248104065656662,0.1436130255460739,0.21273022890090942,0.12321787327528,0.23388637602329254,0.10748909413814545,0.24735531210899353,0.09137842059135437,0.258452832698822],[0.2087380737066269,0.1808978021144867,0.1940450519323349,0.14524775743484497,0.16994066536426544,0.12292531877756119,0.15027044713497162,0.10866235196590424,0.1367744505405426,0.09161189198493958,0.127883180975914,0.14995220303535461,0.09646695107221603,0.14012326300144196,0.07592792809009552,0.13421465456485748,0.05751900002360344,0.12903141975402832,0.12425888329744339,0.17474812269210815,0.08594918996095657,0.17579860985279083,0.060447096824645996,0.1747008115053177,0.03840521723031998,0.1745297908782959,0.13057178258895874,0.19560182094573975,0.09752415865659714,0.21055015921592712,0.07323188334703445,0.21816152334213257,0.051171064376831055,0.22357580065727234,0.1443372517824173,0.2127661108970642,0.12367714196443558,0.23313328623771667,0.10808815807104111,0.24636310338974,0.09219028055667877,0.2573692798614502],[0.21043719351291656,0.18131302297115326,0.19552041590213776,0.14567779004573822,0.17156392335891724,0.1231839582324028,0.1518034040927887,0.10867556184530258,0.13838651776313782,0.09091581404209137,0.12891843914985657,0.14916422963142395,0.09751389175653458,0.13858403265476227,0.07687085121870041,0.13248282670974731,0.05842527002096176,0.12733730673789978,0.12511540949344635,0.17399470508098602,0.08664283156394958,0.17471937835216522,0.061060335487127304,0.1733931601047516,0.038873497396707535,0.17295628786087036,0.13129335641860962,0.19491741061210632,0.09784574806690216,0.20989549160003662,0.07345575094223022,0.21764305233955383,0.051269564777612686,0.22311536967754364,0.1450851857662201,0.21216022968292236,0.12385303527116776,0.23286885023117065,0.10815591365098953,0.24618373811244965,0.09223689138889313,0.2572607696056366],[0.21072351932525635,0.1816973239183426,0.19600790739059448,0.14577464759349823,0.17172321677207947,0.12332618981599808,0.15186719596385956,0.10894616693258286,0.13834594190120697,0.09081947803497314,0.12921103835105896,0.14910577237606049,0.09784691780805588,0.13799913227558136,0.07728632539510727,0.13112613558769226,0.058885425329208374,0.12522923946380615,0.12540002167224884,0.17384593188762665,0.0867847353219986,0.17461726069450378,0.06106238812208176,0.17328402400016785,0.03853299096226692,0.1727624088525772,0.13160386681556702,0.19477945566177368,0.09819865971803665,0.21008636057376862,0.07374273240566254,0.21804802119731903,0.05142008140683174,0.22346830368041992,0.1454515904188156,0.21210944652557373,0.12428613752126694,0.23254698514938354,0.10869988054037094,0.2457331418991089,0.09283585846424103,0.25666916370391846]],"5":[[0.2001345157623291,0.17305625975131989,0.18894878029823303,0.13922610878944397,0.16327734291553497,0.11886527389287949,0.14460034668445587,0.10927450656890869,0.1346423327922821,0.09528768807649612,0.1358817219734192,0.1410919576883316,0.1225368082523346,0.13209916651248932,0.14143410325050354,0.13502676784992218,0.15773391723632812,0.13967864215373993,0.13598749041557312,0.16073252260684967,0.12693867087364197,0.15263798832893372,0.15156503021717072,0.1549556404352188,0.1693906933069229,0.1598832756280899,0.13867183029651642,0.1810828298330307,0.12916138768196106,0.17528140544891357,0.1527363657951355,0.17265602946281433,0.17025381326675415,0.17387177050113678,0.1429002583026886,0.2015293836593628,0.11935658007860184,0.2069939523935318,0.10402300953865051,0.20812281966209412,0.08935307711362839,0.20879271626472473],[0.20051127672195435,0.17307491600513458,0.18911844491958618,0.13918429613113403,0.1632595956325531,0.11873310804367065,0.14458344876766205,0.10890496522188187,0.134530171751976,0.0950596034526825,0.13588285446166992,0.1412576586008072,0.1227407306432724,0.13197007775306702,0.1415599137544632,0.13473734259605408,0.1577908843755722,0.13946713507175446,0.13597635924816132,0.16094893217086792,0.12724554538726807,0.152420774102211,0.1518276184797287,0.1548546850681305,0.16971546411514282,0.1599537581205368,0.13871559500694275,0.18119342625141144,0.12937436997890472,0.17499567568302155,0.1529109925031662,0.17253051698207855,0.17046214640140533,0.17383994162082672,0.14302700757980347,0.2013026475906372,0.11950089037418365,0.2067330926656723,0.10403209179639816,0.20785780251026154,0.08933892101049423,0.20857690274715424],[0.20058512687683105,0.17291012406349182,0.18935799598693848,0.13909508287906647,0.16360914707183838,0.11869718879461288,0.14496073126792908,0.1087229773402214,0.13476170599460602,0.09469124674797058,0.13606210052967072,0.14117935299873352,0.12301839143037796,0.13174064457416534,0.14181990921497345,0.13444001972675323,0.15800164639949799,0.13909576833248138,0.13609841465950012,0.16084258258342743,0.12768787145614624,0.15206649899482727,0.15235911309719086,0.15449774265289307,0.17008446156978607,0.15967848896980286,0.13891254365444183,0.18101255595684052,0.12979653477668762,0.1746637374162674,0.15328814089298248,0.17213298380374908,0.1707785427570343,0.17337606847286224,0.14329291880130768,0.20104221999645233,0.11982376873493195,0.20646773278713226,0.10442223399877548,0.20755310356616974,0.08972857147455215,0.208189457654953],[0.20079049468040466,0.1728939265012741,0.18943364918231964,0.13890908658504486,0.16363213956356049,0.11832904815673828,0.14488205313682556,0.10854320228099823,0.1348010003566742,0.09439091384410858,0.13616159558296204,0.14113986492156982,0.12293781340122223,0.13176408410072327,0.14174674451351166,0.13437911868095398,0.1579788774251938,0.13895362615585327,0.13631762564182281,0.16076600551605225,0.12753425538539886,0.15214787423610687,0.15217392146587372,0.15443789958953857,0.16995513439178467,0.15948054194450378,0.13915486633777618,0.18094724416732788,0.12989985942840576,0.17467664182186127,0.15335290133953094,0.17212246358394623,0.17079520225524902,0.17339009046554565,0.14364169538021088,0.20106738805770874,0.12012156844139099,0.20646969974040985,0.10460244864225388,0.20756499469280243,0.08985570073127747,0.20825493335723877],[0.2008659988641739,0.1729850172996521,0.1894846260547638,0.1390445977449417,0.1636865884065628,0.11870744824409485,0.14506925642490387,0.10861732810735703,0.13480183482170105,0.09474264830350876,0.1363133192062378,0.14119502902030945,0.12326771020889282,0.1315469592809677,0.14190945029258728,0.13408926129341125,0.1580585539340973,0.13859759271144867,0.13637782633304596,0.1608191430568695,0.12783591449260712,0.15177708864212036,0.15247100591659546,0.15423190593719482,0.17042455077171326,0.15938520431518555,0.13918045163154602,0.18089891970157623,0.1301548182964325,0.17426277697086334,0.15361450612545013,0.17186695337295532,0.17114846408367157,0.1732257455587387,0.1435500830411911,0.20084792375564575,0.12004229426383972,0.20628000795841217,0.10450968891382217,0.20736956596374512,0.08976329118013382,0.20793750882148743],[0.20080532133579254,0.1728517860174179,0.18936969339847565,0.13892702758312225,0.16388258337974548,0.11834835261106491,0.14532001316547394,0.10843858867883682,0.1348811835050583,0.09467939287424088,0.13631418347358704,0.1412413865327835,0.12321681529283524,0.1314953863620758,0.14197935163974762,0.1342543512582779,0.15814164280891418,0.13872259855270386,0.1365094929933548,0.16077055037021637,0.12789355218410492,0.1518581062555313,0.15242040157318115,0.15410549938678741,0.17026063799858093,0.15912951529026031,0.1393488645553589,0.18079149723052979,0.13047659397125244,0.17432892322540283,0.15387150645256042,0.17167527973651886,0.17128020524978638,0.17296412587165833,0.14380046725273132,0.20068596303462982,0.12033267319202423,0.20621950924396515,0.10483019053936005,0.20723450183868408,0.09015517681837082,0.20776382088661194],[0.2009105384349823,0.1729346215724945,0.1894286423921585,0.13906224071979523,0.1638256460428238,0.11837328970432281,0.1452520191669464,0.10836668312549591,0.13500909507274628,0.0942881852388382,0.13647368550300598,0.14100335538387299,0.1232999935746193,0.13138264417648315,0.14207951724529266,0.13411299884319305,0.1580541729927063,0.1387643814086914,0.13663609325885773,0.1605987846851349,0.1279928982257843,0.15181322395801544,0.15254071354866028,0.15402214229106903,0.17017504572868347,0.15897947549819946,0.13948988914489746,0.18069034814834595,0.13045164942741394,0.17439191043376923,0.15387456119060516,0.1715783029794693,0.1713164746761322,0.1726602017879486,0.14395706355571747,0.20065264403820038,0.12056596577167511,0.20624542236328125,0.10508110374212265,0.20723092555999756,0.09032489359378815,0.2078021764755249],[0.20078930258750916,0.17240853607654572,0.1892027109861374,0.1387554109096527,0.1635352373123169,0.11847598850727081,0.14484421908855438,0.10852859169244766,0.13442133367061615,0.09438125789165497,0.13587675988674164,0.14128823578357697,0.12296418100595474,0.13168323040008545,0.1416112333536148,0.13417531549930573,0.15778213739395142,0.13889263570308685,0.1361558735370636,0.1609347015619278,0.12770166993141174,0.15203696489334106,0.1522284597158432,0.1543409377336502,0.17010585963726044,0.15937569737434387,0.1391419619321823,0.18096263706684113,0.13025125861167908,0.174486443400383,0.15358637273311615,0.1719905436038971,0.1710250824689865,0.17334221303462982,0.1438397616147995,0.200820654630661,0.12044202536344528,0.20654013752937317,0.10492392629384995,0.20783482491970062,0.0902768075466156,0.208681121468544],[0.20085719227790833,0.17238886654376984,0.18920667469501495,0.1387280821800232,0.16340598464012146,0.11816230416297913,0.14480428397655487,0.10834228247404099,0.13446784019470215,0.09425053745508194,0.13609570264816284,0.1412413865327835,0.12288884073495865,0.13175633549690247,0.14166973531246185,0.1341882050037384,0.1577940434217453,0.13858826458454132,0.1363997608423233,0.16087712347507477,0.12793056666851044,0.15191622078418732,0.15261350572109222,0.15416356921195984,0.17042413353919983,0.1590408980846405,0.13934943079948425,0.18097534775733948,0.13049878180027008,0.17450201511383057,0.15397530794143677,0.17185568809509277,0.17133742570877075,0.1729448437690735,0.14395450055599213,0.20093728601932526,0.12051846832036972,0.20641861855983734,0.10507570952177048,0.2076110988855362,0.09043162316083908,0.2083350270986557],[0.2004828006029129,0.17204810678958893,0.18864595890045166,0.13836787641048431,0.1632148176431656,0.11795078963041306,0.14475078880786896,0.1083773747086525,0.13366325199604034,0.09486198425292969,0.13599564135074615,0.14154888689517975,0.12292328476905823,0.13194753229618073,0.14168056845664978,0.13438721001148224,0.15761908888816833,0.13901139795780182,0.1362086534500122,0.16113245487213135,0.1280648410320282,0.15203076601028442,0.15262961387634277,0.15439370274543762,0.170301154255867,0.1595047265291214,0.13921670615673065,0.18108481168746948,0.13059434294700623,0.1745174676179886,0.15396499633789062,0.17186036705970764,0.17106609046459198,0.17303511500358582,0.14384320378303528,0.20083406567573547,0.12049133330583572,0.20653901994228363,0.10517515242099762,0.20786966383457184,0.09058550000190735,0.20877979695796967],[0.200312077999115,0.17209254205226898,0.18848247826099396,0.1387406587600708,0.1628483533859253,0.11843950301408768,0.1444726437330246,0.10847721248865128,0.13315878808498383,0.09501440078020096,0.13575252890586853,0.14160236716270447,0.12283863127231598,0.13197997212409973,0.14136426150798798,0.13433893024921417,0.15732410550117493,0.1387968510389328,0.13587796688079834,0.16130277514457703,0.12772119045257568,0.1522616147994995,0.15225207805633545,0.15450958907604218,0.17001396417617798,0.15958218276500702,0.13895674049854279,0.18145383894443512,0.1302884966135025,0.17486725747585297,0.15357452630996704,0.17217683792114258,0.1708647459745407,0.1732320636510849,0.14369544386863708,0.20134729146957397,0.12044374644756317,0.20695000886917114,0.10517577081918716,0.2082127183675766,0.09071919322013855,0.20907090604305267],[0.20021775364875793,0.17238609492778778,0.1884155571460724,0.13881328701972961,0.16291984915733337,0.1182548925280571,0.14442218840122223,0.10821431130170822,0.13293178379535675,0.0947541743516922,0.13563717901706696,0.14175601303577423,0.12279914319515228,0.1319463849067688,0.1413862258195877,0.1343660205602646,0.15735261142253876,0.1390085220336914,0.13585452735424042,0.16142849624156952,0.12784254550933838,0.1520116925239563,0.15238603949546814,0.1544095128774643,0.1699904501438141,0.15951116383075714,0.1389460563659668,0.18146635591983795,0.13049955666065216,0.1747031807899475,0.15379764139652252,0.17204183340072632,0.1709604114294052,0.17319005727767944,0.14373242855072021,0.20136694610118866,0.12052807211875916,0.20686224102973938,0.10528558492660522,0.20822086930274963,0.09081559628248215,0.2091042399406433],[0.20042340457439423,0.17240139842033386,0.18872632086277008,0.13890281319618225,0.1630372405052185,0.11816959083080292,0.14459536969661713,0.10812237858772278,0.1330709308385849,0.09464804083108902,0.13579536974430084,0.1416454017162323,0.12301123142242432,0.13183438777923584,0.14160268008708954,0.13415147364139557,0.15742750465869904,0.13878470659255981,0.13595755398273468,0.16130433976650238,0.1279977560043335,0.1518905907869339,0.15257705748081207,0.15431830286979675,0.17020659148693085,0.15956172347068787,0.13904327154159546,0.181279256939888,0.130463108420372,0.17454704642295837,0.15379434823989868,0.17197561264038086,0.17099589109420776,0.17314721643924713,0.14382906258106232,0.20105892419815063,0.12070988863706589,0.20663538575172424,0.10547143220901489,0.20797927677631378,0.09098026901483536,0.20887480676174164],[0.20110984146595,0.1723581701517105,0.18919916450977325,0.1384880244731903,0.16333000361919403,0.11788611114025116,0.14471983909606934,0.10777018219232559,0.13345634937286377,0.09435446560382843,0.13640761375427246,0.14142858982086182,0.1234259232878685,0.13136330246925354,0.14210058748722076,0.13416263461112976,0.15795396268367767,0.1390117108821869,0.13659535348415375,0.16100521385669708,0.12826909124851227,0.15154574811458588,0.1527114063501358,0.1539325714111328,0.17029355466365814,0.15934161841869354,0.1395440548658371,0.18090279400348663,0.13070976734161377,0.17415976524353027,0.15401996672153473,0.1715153604745865,0.1711992472410202,0.17282022535800934,0.14424431324005127,0.20069271326065063,0.12094712257385254,0.20633190870285034,0.10562662780284882,0.20744282007217407,0.09100114554166794,0.2082531750202179],[0.20149847865104675,0.17215807735919952,0.18920151889324188,0.13853612542152405,0.16330969333648682,0.11781562864780426,0.14466188848018646,0.10769639164209366,0.13323518633842468,0.09413392096757889,0.13641110062599182,0.14122986793518066,0.12361418455839157,0.13120204210281372,0.1422487050294876,0.13387137651443481,0.15809579193592072,0.13871783018112183,0.13653580844402313,0.16097010672092438,0.12832103669643402,0.15135148167610168,0.1528310924768448,0.153872549533844,0.1704961359500885,0.15929505228996277,0.13952259719371796,0.18092763423919678,0.13088378310203552,0.17410069704055786,0.1542232781648636,0.17152447998523712,0.17138947546482086,0.17288801074028015,0.14431746304035187,0.20066583156585693,0.12112894654273987,0.2062302827835083,0.10581161081790924,0.20737136900424957,0.09122376888990402,0.2080962210893631],[0.20167483389377594,0.1722724437713623,0.18967309594154358,0.1385328620672226,0.16360588371753693,0.11768027395009995,0.14490638673305511,0.1074569895863533,0.1335088461637497,0.09402091056108475,0.13650920987129211,0.14094798266887665,0.12365224212408066,0.13104307651519775,0.14243946969509125,0.1340610533952713,0.15831150114536285,0.13912400603294373,0.13667240738868713,0.1606212556362152,0.12849457561969757,0.1511922925710678,0.1530950963497162,0.15391141176223755,0.17075182497501373,0.15947949886322021,0.13969352841377258,0.18062588572502136,0.13095897436141968,0.17397281527519226,0.15430109202861786,0.17144714295864105,0.17141936719417572,0.17281807959079742,0.14437994360923767,0.2005022168159485,0.12116938829421997,0.20580542087554932,0.10601972788572311,0.20674744248390198,0.09157237410545349,0.20732645690441132]],"6":[[0.19291843473911285,0.18094012141227722,0.18490302562713623,0.14355967938899994,0.16119739413261414,0.1159186139702797,0.1405855119228363,0.10127865523099899,0.1302644908428192,0.08381275832653046,0.12332867830991745,0.14939439296722412,0.09214852750301361,0.14937937259674072,0.07251553982496262,0.15108036994934082,0.05568443983793259,0.151297464966774,0.1242104321718216,0.17225494980812073,0.10813748091459274,0.1753361076116562,0.1338045448064804,0.17587146162986755,0.15457862615585327,0.1739330142736435,0.12786777317523956,0.1933976709842682,0.11520710587501526,0.20029912889003754,0.13745786249637604,0.1954767107963562,0.15356886386871338,0.18948020040988922,0.13255098462104797,0.21390387415885925,0.10869480669498444,0.22259274125099182,0.09563113003969193,0.2270984649658203,0.0818847045302391,0.23028679192066193],[0.19413283467292786,0.180185928940773,0.18567118048667908,0.14316438138484955,0.1620544046163559,0.11593929678201675,0.14155305922031403,0.10117252171039581,0.13180218636989594,0.08321154117584229,0.12433914840221405,0.1490115523338318,0.09343015402555466,0.14889639616012573,0.07374231517314911,0.1500651091337204,0.056905802339315414,0.14981193840503693,0.12533685564994812,0.17159028351306915,0.10880271345376968,0.1743462085723877,0.13417069613933563,0.17527440190315247,0.15508677065372467,0.17336681485176086,0.12914146482944489,0.1925887167453766,0.11639081686735153,0.19869433343410492,0.1382318139076233,0.1944837123155594,0.15416783094406128,0.1892092376947403,0.13424694538116455,0.21301066875457764,0.10992063581943512,0.2219274789094925,0.09614957869052887,0.2265195995569229,0.08183886110782623,0.2300085425376892],[0.19371157884597778,0.18165022134780884,0.18564464151859283,0.14334651827812195,0.1620718389749527,0.11502345651388168,0.14088831841945648,0.09981751441955566,0.1301204115152359,0.08228452503681183,0.12326177954673767,0.14897792041301727,0.0914582684636116,0.1487073302268982,0.07130932062864304,0.15017825365066528,0.05408656597137451,0.1504872441291809,0.12395670264959335,0.1720046103000641,0.10781748592853546,0.17573703825473785,0.1338702291250229,0.17623929679393768,0.15496975183486938,0.17419567704200745,0.12746261060237885,0.19346371293067932,0.11487879604101181,0.20118984580039978,0.1373784840106964,0.1961386799812317,0.15353895723819733,0.18983513116836548,0.13194803893566132,0.21435406804084778,0.10759862512350082,0.22293658554553986,0.09424616396427155,0.22771114110946655,0.08022964745759964,0.23122532665729523],[0.1935994029045105,0.18146537244319916,0.1852981299161911,0.1437368243932724,0.16165807843208313,0.1154949888586998,0.14075928926467896,0.10039594024419785,0.1304120272397995,0.08244035392999649,0.12362685054540634,0.14913278818130493,0.09207731485366821,0.14908535778522491,0.07212558388710022,0.15060706436634064,0.0550544410943985,0.15074922144412994,0.12448009103536606,0.1720392107963562,0.10796025395393372,0.1751369684934616,0.13379910588264465,0.1758510172367096,0.15478649735450745,0.17377649247646332,0.12814585864543915,0.19332310557365417,0.11529573798179626,0.2001303732395172,0.1374846249818802,0.19542688131332397,0.15353968739509583,0.18938583135604858,0.1329687535762787,0.21399369835853577,0.10852973163127899,0.22277140617370605,0.09497426450252533,0.22745656967163086,0.08072930574417114,0.23091624677181244],[0.19204193353652954,0.1814109981060028,0.18385231494903564,0.14405511319637299,0.15974541008472443,0.11648353189229965,0.13851825892925262,0.10143636912107468,0.1279757171869278,0.08319353312253952,0.12143241614103317,0.14969995617866516,0.08996111899614334,0.14949320256710052,0.06987202167510986,0.15139572322368622,0.052839379757642746,0.1518525928258896,0.12233716249465942,0.1726817935705185,0.10599470883607864,0.1766544133424759,0.13218824565410614,0.17800140380859375,0.1533854752779007,0.17609573900699615,0.12622371315956116,0.19405223429203033,0.11392468214035034,0.2015351802110672,0.1360623687505722,0.1972709596157074,0.15185527503490448,0.1913568675518036,0.13138733804225922,0.21474306285381317,0.1074056476354599,0.22400160133838654,0.09428940713405609,0.22923415899276733,0.08037407696247101,0.23311291635036469],[0.19106650352478027,0.1811857670545578,0.18267647922039032,0.14430378377437592,0.15864992141723633,0.11689970642328262,0.13706377148628235,0.10218506306409836,0.12593214213848114,0.08409853279590607,0.12047374248504639,0.15011605620384216,0.08906171470880508,0.15077702701091766,0.06898722797632217,0.1529756337404251,0.05196262523531914,0.15368743240833282,0.12144867330789566,0.17315976321697235,0.1055368110537529,0.17733755707740784,0.1316428780555725,0.1786627322435379,0.15280131995677948,0.17675122618675232,0.1254408210515976,0.1945577710866928,0.11343972384929657,0.20184578001499176,0.13533230125904083,0.1977003663778305,0.15118199586868286,0.19188855588436127,0.13070592284202576,0.2151816338300705,0.10707517713308334,0.22434286773204803,0.09416893124580383,0.22958427667617798,0.08064781874418259,0.23362769186496735],[0.19112305343151093,0.18118365108966827,0.18247634172439575,0.14432428777217865,0.15813018381595612,0.11673270910978317,0.13644634187221527,0.10207479447126389,0.12527815997600555,0.08388999849557877,0.12031055241823196,0.1504271775484085,0.08857554942369461,0.15110276639461517,0.0683969035744667,0.1534375101327896,0.05133359506726265,0.1539779156446457,0.12146138399839401,0.1733674854040146,0.10537385195493698,0.17729629576206207,0.13155636191368103,0.1784256100654602,0.1527186781167984,0.17621220648288727,0.12546557188034058,0.19471457600593567,0.11380892246961594,0.2020689845085144,0.1358894258737564,0.1975567638874054,0.15166930854320526,0.19133350253105164,0.13062268495559692,0.2154257744550705,0.1071740984916687,0.2245156317949295,0.09425457566976547,0.22988572716712952,0.08066313713788986,0.23400576412677765],[0.19090285897254944,0.1811593472957611,0.18204277753829956,0.14416779577732086,0.15755222737789154,0.11674059182405472,0.13574805855751038,0.1018696129322052,0.12413066625595093,0.08405184000730515,0.12041892111301422,0.15048572421073914,0.08905201405286789,0.15241630375385284,0.06907354295253754,0.15549354255199432,0.05223190039396286,0.15662826597690582,0.12159845978021622,0.17323260009288788,0.10547027736902237,0.17731791734695435,0.13136176764965057,0.1782078742980957,0.1524788737297058,0.175887793302536,0.12560991942882538,0.19446450471878052,0.1135546863079071,0.20182976126670837,0.13564005494117737,0.19722715020179749,0.15155868232250214,0.19110378623008728,0.13082535564899445,0.215068057179451,0.10732430964708328,0.22426006197929382,0.09436067193746567,0.22961877286434174,0.0807216465473175,0.23381192982196808],[0.19009344279766083,0.18182380497455597,0.18102078139781952,0.1450994461774826,0.15646740794181824,0.11769060790538788,0.13472217321395874,0.10229349136352539,0.12328215688467026,0.08453044295310974,0.12002194672822952,0.15169757604599,0.08870387077331543,0.15336501598358154,0.06871713697910309,0.15601404011249542,0.0519220344722271,0.1567954421043396,0.12122946232557297,0.17429636418819427,0.10483081638813019,0.1781228482723236,0.130402609705925,0.17880156636238098,0.1515488177537918,0.17651523649692535,0.12531323730945587,0.1952224224805832,0.11322075128555298,0.20207729935646057,0.1348523497581482,0.19761542975902557,0.15046165883541107,0.19169914722442627,0.1306437849998474,0.21559804677963257,0.10717742145061493,0.22438958287239075,0.0941164568066597,0.22924962639808655,0.08049388974905014,0.23296891152858734],[0.18957871198654175,0.18214306235313416,0.1802486777305603,0.1458279937505722,0.15553340315818787,0.11866214871406555,0.13389922678470612,0.10316487401723862,0.12266664206981659,0.08550837635993958,0.11976287513971329,0.1521269679069519,0.08862682431936264,0.15402661263942719,0.06876713782548904,0.1566198319196701,0.052075427025556564,0.15743960440158844,0.12088111788034439,0.174574613571167,0.10480262339115143,0.17852264642715454,0.1303311139345169,0.17910774052143097,0.15128543972969055,0.17687049508094788,0.12497253715991974,0.1953791081905365,0.11282754689455032,0.2023046314716339,0.13444209098815918,0.19785082340240479,0.1500701606273651,0.19201630353927612,0.1303650438785553,0.21556983888149261,0.10698725283145905,0.22421444952487946,0.09401827305555344,0.2288280725479126,0.08048762381076813,0.2323831021785736],[0.1895483434200287,0.1817271113395691,0.1801169067621231,0.14534346759319305,0.15550164878368378,0.11865931749343872,0.1338043361902237,0.10346576571464539,0.12251253426074982,0.08596362918615341,0.12007173150777817,0.15244394540786743,0.08901562541723251,0.15427030622959137,0.06931456178426743,0.15680082142353058,0.05260476842522621,0.1573861539363861,0.12130679190158844,0.17481586337089539,0.10451807826757431,0.17837119102478027,0.130197212100029,0.1790539175271988,0.1512531191110611,0.1768331229686737,0.12540461122989655,0.19545692205429077,0.1127842590212822,0.20186306536197662,0.13461874425411224,0.1973644495010376,0.15040360391139984,0.19163036346435547,0.13079288601875305,0.21563632786273956,0.107371486723423,0.22426708042621613,0.09436534345149994,0.22868067026138306,0.08063475787639618,0.23190273344516754],[0.18980655074119568,0.1818719506263733,0.18060877919197083,0.14536035060882568,0.15597005188465118,0.11845024675130844,0.13443689048290253,0.10368980467319489,0.12288466095924377,0.08642081171274185,0.12017464637756348,0.15215784311294556,0.08913984149694443,0.15358589589595795,0.06963743269443512,0.1559777557849884,0.05302412435412407,0.15633420646190643,0.12150940299034119,0.17466315627098083,0.10482046753168106,0.17791928350925446,0.1302986890077591,0.1780620813369751,0.15118826925754547,0.17552603781223297,0.12558940052986145,0.1955755352973938,0.11270362138748169,0.20210763812065125,0.1347932070493698,0.1970328390598297,0.1507602334022522,0.19078393280506134,0.13086360692977905,0.21578539907932281,0.10748420655727386,0.22476620972156525,0.09455723315477371,0.2293034791946411,0.08073911815881729,0.23255036771297455],[0.19005648791790009,0.18197613954544067,0.18083123862743378,0.14524374902248383,0.15597708523273468,0.11864713579416275,0.1341414749622345,0.10398320853710175,0.12241841107606888,0.08679840713739395,0.12010657042264938,0.15212658047676086,0.08917313069105148,0.1537494957447052,0.06971242278814316,0.15620805323123932,0.05309824272990227,0.1566232442855835,0.12148262560367584,0.1746276319026947,0.10481397807598114,0.17770597338676453,0.13027918338775635,0.1775258630514145,0.15114575624465942,0.17499695718288422,0.12553443014621735,0.19552364945411682,0.11255010217428207,0.2018391489982605,0.13484857976436615,0.19657355546951294,0.15097576379776,0.19030727446079254,0.13076052069664001,0.2159419059753418,0.10747405141592026,0.22506195306777954,0.09454096853733063,0.22966726124286652,0.0808279886841774,0.23304064571857452],[0.19022037088871002,0.18198253214359283,0.18104197084903717,0.14523768424987793,0.15633901953697205,0.11860557645559311,0.13474318385124207,0.10407467931509018,0.12326087802648544,0.08704546093940735,0.12056320160627365,0.15178602933883667,0.08953042328357697,0.1531769186258316,0.0699571743607521,0.1555795967578888,0.05322747677564621,0.15602122247219086,0.12179791182279587,0.17427237331867218,0.10500561445951462,0.1774522066116333,0.13052743673324585,0.17725831270217896,0.15145444869995117,0.17470614612102509,0.12564320862293243,0.1953047215938568,0.11241696029901505,0.20171596109867096,0.13488759100437164,0.19651953876018524,0.15124620497226715,0.19031569361686707,0.130668044090271,0.21578623354434967,0.10725433379411697,0.2249542772769928,0.09441959857940674,0.22973276674747467,0.08083014190196991,0.23335689306259155],[0.18998633325099945,0.18194778263568878,0.1808149516582489,0.14568480849266052,0.1559411883354187,0.11940006166696548,0.13473977148532867,0.10509638488292694,0.12384932488203049,0.08833002299070358,0.1203654408454895,0.1518031358718872,0.08954061567783356,0.15312033891677856,0.07023176550865173,0.15538334846496582,0.053573451936244965,0.15612660348415375,0.12153700739145279,0.17421801388263702,0.10510051250457764,0.17703990638256073,0.1308264434337616,0.17696057260036469,0.15166862308979034,0.17479807138442993,0.1253684014081955,0.1951902061700821,0.11223629117012024,0.2015863060951233,0.13481710851192474,0.19635425508022308,0.15134084224700928,0.19042474031448364,0.1303095817565918,0.21575790643692017,0.10696016997098923,0.22493161261081696,0.09410054981708527,0.2297622561454773,0.08039874583482742,0.23350735008716583],[0.18928158283233643,0.18226438760757446,0.1800898164510727,0.14585553109645844,0.15514139831066132,0.11982838809490204,0.1338847279548645,0.1056540459394455,0.12296916544437408,0.08885741233825684,0.11973154544830322,0.15225908160209656,0.08883492648601532,0.15374034643173218,0.06948257982730865,0.1560899168252945,0.05281912162899971,0.1568434238433838,0.12103285640478134,0.1745806187391281,0.10421355813741684,0.1775258183479309,0.12993963062763214,0.17735569179058075,0.15088512003421783,0.17511285841464996,0.12498932331800461,0.19560694694519043,0.11155801266431808,0.2018364816904068,0.13424021005630493,0.19659292697906494,0.15079134702682495,0.19072161614894867,0.13001078367233276,0.21606984734535217,0.10664575546979904,0.2256922721862793,0.09365005046129227,0.23048605024814606,0.079758420586586,0.2341102510690689],[0.18889480829238892,0.18189089000225067,0.17966292798519135,0.1462818682193756,0.15457837283611298,0.12093770503997803,0.13338057696819305,0.10692282766103745,0.12269419431686401,0.08999311178922653,0.11955057084560394,0.15282577276229858,0.08886300027370453,0.1544005125761032,0.06969591975212097,0.15688057243824005,0.05317799746990204,0.15761278569698334,0.12094154953956604,0.17500022053718567,0.10413678735494614,0.177819162607193,0.12974713742733002,0.1775704175233841,0.15070824325084686,0.17544157803058624,0.12492530047893524,0.19564750790596008,0.11167528480291367,0.2015109360218048,0.13436998426914215,0.19617021083831787,0.1507948487997055,0.19035786390304565,0.1298953890800476,0.21595069766044617,0.10673036426305771,0.22517377138137817,0.09390091896057129,0.22975987195968628,0.08019808679819107,0.23334062099456787],[0.18948104977607727,0.18200403451919556,0.18028417229652405,0.1461239755153656,0.1551864743232727,0.12034610658884048,0.13390393555164337,0.106082484126091,0.12314625829458237,0.08922390639781952,0.12000346928834915,0.15245883166790009,0.08929134160280228,0.15389160811901093,0.07012499123811722,0.15633654594421387,0.05353275313973427,0.15702587366104126,0.121315136551857,0.17461545765399933,0.10451705753803253,0.1774061620235443,0.13019758462905884,0.17722129821777344,0.15112033486366272,0.174900621175766,0.12516263127326965,0.19539153575897217,0.1116938441991806,0.20129357278347015,0.13451449573040009,0.19600194692611694,0.1511763632297516,0.19000846147537231,0.1301174759864807,0.21576263010501862,0.10686414688825607,0.225140780210495,0.09385848790407181,0.23003317415714264,0.08007530868053436,0.23373660445213318],[0.1887814849615097,0.18231305480003357,0.1795993596315384,0.146672785282135,0.15478907525539398,0.1214132010936737,0.1338021159172058,0.10724089294672012,0.12310994416475296,0.09059199690818787,0.1202116459608078,0.15307901799678802,0.08953697979450226,0.15437154471874237,0.07060546427965164,0.15665185451507568,0.05411624163389206,0.15724687278270721,0.12151119112968445,0.17493289709091187,0.10421684384346008,0.17761822044849396,0.12968814373016357,0.17755788564682007,0.15033580362796783,0.17531557381153107,0.12543508410453796,0.19534680247306824,0.11185038089752197,0.20091824233531952,0.13442176580429077,0.1958068311214447,0.15066447854042053,0.19007626175880432,0.13045455515384674,0.2153550088405609,0.10723123699426651,0.22463949024677277,0.0942077711224556,0.22933344542980194,0.08029737323522568,0.23287831246852875]],"7":[[0.19940267503261566,0.16945748031139374,0.19009524583816528,0.13592848181724548,0.16625232994556427,0.11129917949438095,0.147817000746727,0.09589157998561859,0.1374187171459198,0.07874852418899536,0.1290917545557022,0.14128373563289642,0.09410296380519867,0.14269304275512695,0.07274556905031204,0.14344626665115356,0.05525229871273041,0.14379462599754333,0.13219837844371796,0.1647358387708664,0.12229309976100922,0.16442172229290009,0.14828303456306458,0.1610281765460968,0.16627486050128937,0.15850204229354858,0.13892430067062378,0.18562527000904083,0.1353130042552948,0.18668384850025177,0.15775816142559052,0.17888963222503662,0.1709578037261963,0.173288956284523,0.14752034842967987,0.2058717906475067,0.1427430361509323,0.20644144713878632,0.15789160132408142,0.1971154361963272,0.16662493348121643,0.19044610857963562],[0.19907625019550323,0.16880673170089722,0.1897180676460266,0.1355980783700943,0.16578452289104462,0.11122914403676987,0.14737474918365479,0.09611274302005768,0.13698150217533112,0.07891929149627686,0.1291235089302063,0.14135827124118805,0.0943266972899437,0.1429125815629959,0.07310587167739868,0.14383509755134583,0.05577479302883148,0.1444201022386551,0.13232921063899994,0.16479358077049255,0.12197808176279068,0.16472218930721283,0.1479816883802414,0.16124185919761658,0.16602551937103271,0.1585017591714859,0.13919377326965332,0.185665100812912,0.13524115085601807,0.1867867261171341,0.1577061265707016,0.17885814607143402,0.17084373533725739,0.17322324216365814,0.14779874682426453,0.20595800876617432,0.14274223148822784,0.20660185813903809,0.15774378180503845,0.1974787712097168,0.16642248630523682,0.1909550279378891],[0.1988864541053772,0.1689162403345108,0.18953202664852142,0.13574491441249847,0.16576705873012543,0.1113431379199028,0.14724628627300262,0.09604932367801666,0.13694649934768677,0.07909815013408661,0.12926806509494781,0.14137710630893707,0.09468986839056015,0.14296485483646393,0.07359597086906433,0.14425501227378845,0.05621759593486786,0.1450822353363037,0.13251976668834686,0.16483676433563232,0.12183745950460434,0.1647685468196869,0.1477932184934616,0.16136784851551056,0.16579651832580566,0.15870261192321777,0.13932982087135315,0.18570974469184875,0.13494719564914703,0.18675555288791656,0.1574258953332901,0.17890186607837677,0.1706622689962387,0.17334361374378204,0.1479811817407608,0.20599792897701263,0.1426786184310913,0.20651426911354065,0.15758052468299866,0.19715045392513275,0.1663970947265625,0.19044382870197296],[0.19942647218704224,0.16854988038539886,0.1898500919342041,0.13556049764156342,0.16624920070171356,0.11127988249063492,0.1478385329246521,0.0961669310927391,0.13746830821037292,0.0790909081697464,0.1294022500514984,0.141070157289505,0.09477407485246658,0.14253821969032288,0.07370094954967499,0.1436031609773636,0.05634423345327377,0.14429493248462677,0.13256195187568665,0.1645713895559311,0.12243571132421494,0.16403089463710785,0.14846333861351013,0.16071158647537231,0.1664372831583023,0.15817449986934662,0.13948215544223785,0.18542134761810303,0.13568304479122162,0.18602481484413147,0.15810316801071167,0.1783665418624878,0.17129084467887878,0.17298249900341034,0.14825671911239624,0.20561248064041138,0.14346346259117126,0.20599010586738586,0.15833298861980438,0.19678892195224762,0.16685009002685547,0.19013911485671997],[0.1998448222875595,0.16850800812244415,0.19041799008846283,0.13533088564872742,0.1666710376739502,0.11089219897985458,0.14812453091144562,0.0959126353263855,0.13747873902320862,0.07855065166950226,0.129817932844162,0.14065100252628326,0.09501036256551743,0.14237210154533386,0.07375945895910263,0.14340795576572418,0.056292321532964706,0.14402733743190765,0.13305369019508362,0.164056196808815,0.12254724651575089,0.16387449204921722,0.14867933094501495,0.16061672568321228,0.16663256287574768,0.15798719227313995,0.13994798064231873,0.184829980134964,0.13588330149650574,0.18593360483646393,0.15854616463184357,0.1782335489988327,0.17155241966247559,0.1725439429283142,0.14876027405261993,0.20496435463428497,0.14358045160770416,0.2059030532836914,0.15869320929050446,0.19659578800201416,0.1672627478837967,0.1896970272064209],[0.20574648678302765,0.1671343594789505,0.19662989675998688,0.13348425924777985,0.17312975227832794,0.10696873813867569,0.1538781076669693,0.0916125550866127,0.1419408768415451,0.07431227713823318,0.13586649298667908,0.13524404168128967,0.10024049133062363,0.1344790905714035,0.07823793590068817,0.13451743125915527,0.059802111238241196,0.1346167027950287,0.13822421431541443,0.15909673273563385,0.12817265093326569,0.1564263552427292,0.1550796777009964,0.15525637567043304,0.1730162799358368,0.1547708660364151,0.14441587030887604,0.1807948499917984,0.1389385610818863,0.17903943359851837,0.1629425287246704,0.17387638986110687,0.17679676413536072,0.1706913411617279,0.15260693430900574,0.20235055685043335,0.14570565521717072,0.20193733274936676,0.16193537414073944,0.19263134896755219,0.17191539704799652,0.18637198209762573],[0.20568235218524933,0.16652268171310425,0.19661302864551544,0.13302865624427795,0.17319250106811523,0.10664001852273941,0.1539706289768219,0.09153716266155243,0.1420758068561554,0.07414504885673523,0.13578683137893677,0.13492855429649353,0.10023519396781921,0.13446930050849915,0.07830380648374557,0.1346801370382309,0.05990304797887802,0.13477326929569244,0.138058602809906,0.15897729992866516,0.12830175459384918,0.15646517276763916,0.15529346466064453,0.1553657203912735,0.1731610745191574,0.15472382307052612,0.14416790008544922,0.18069911003112793,0.13927651941776276,0.17920055985450745,0.1631312370300293,0.1739332377910614,0.17685405910015106,0.1706022471189499,0.15233442187309265,0.20227836072444916,0.1459803283214569,0.20188024640083313,0.1622852087020874,0.1926926076412201,0.17199382185935974,0.18652841448783875],[0.20575174689292908,0.16679967939853668,0.19660869240760803,0.13315755128860474,0.17314296960830688,0.10684802383184433,0.1539209485054016,0.09154920279979706,0.14186911284923553,0.07422826439142227,0.13582584261894226,0.13505655527114868,0.10014896094799042,0.13460825383663177,0.07816684246063232,0.1347668617963791,0.05974993109703064,0.13487380743026733,0.13817283511161804,0.15898367762565613,0.12842053174972534,0.1565270572900772,0.1551910638809204,0.1553419828414917,0.17302371561527252,0.15476392209529877,0.14428052306175232,0.18063844740390778,0.1391521841287613,0.17913933098316193,0.1629505306482315,0.17390942573547363,0.1767546832561493,0.17068225145339966,0.15249666571617126,0.20222647488117218,0.1459704041481018,0.20184145867824554,0.16216222941875458,0.19265000522136688,0.17195940017700195,0.18645569682121277],[0.20586633682250977,0.16674570739269257,0.19662734866142273,0.13312827050685883,0.17333118617534637,0.10669533908367157,0.1540800780057907,0.09139826893806458,0.14203906059265137,0.0742519348859787,0.1358538269996643,0.13514073193073273,0.10022961348295212,0.1345927119255066,0.07824130356311798,0.13481400907039642,0.05987846106290817,0.1349136382341385,0.13824397325515747,0.1591242104768753,0.12847283482551575,0.15626095235347748,0.1552625149488449,0.1551797091960907,0.17306101322174072,0.15477165579795837,0.1444501131772995,0.18084774911403656,0.1391233205795288,0.1788424253463745,0.16288654506206512,0.17371279001235962,0.17666271328926086,0.17065677046775818,0.15276741981506348,0.202426478266716,0.14578433334827423,0.2018217295408249,0.16196319460868835,0.19257250428199768,0.17174945771694183,0.18639212846755981],[0.20614521205425262,0.16650205850601196,0.19698603451251984,0.13312378525733948,0.17326246201992035,0.10673980414867401,0.15412868559360504,0.09133846312761307,0.14217311143875122,0.07403571903705597,0.13583968579769135,0.13512174785137177,0.10012539476156235,0.13452006876468658,0.07819651067256927,0.13471205532550812,0.059774793684482574,0.134747713804245,0.13824963569641113,0.15919652581214905,0.12832124531269073,0.1561165750026703,0.15522074699401855,0.15505361557006836,0.17314943671226501,0.15471962094306946,0.14442166686058044,0.18105438351631165,0.13896571099758148,0.1787339150905609,0.16299276053905487,0.17364013195037842,0.1769380420446396,0.17059358954429626,0.15259960293769836,0.2026623785495758,0.14560867846012115,0.2016914337873459,0.16187456250190735,0.192643404006958,0.17167258262634277,0.18662413954734802],[0.20658232271671295,0.16653908789157867,0.19733557105064392,0.1330709606409073,0.1737937182188034,0.10644588619470596,0.15441516041755676,0.09083807468414307,0.14226089417934418,0.07335461676120758,0.1359737366437912,0.13454300165176392,0.10023383796215057,0.13385820388793945,0.07831965386867523,0.13411830365657806,0.0599028654396534,0.1342354267835617,0.13826827704906464,0.15875916182994843,0.1285877823829651,0.1557278335094452,0.15564274787902832,0.15479575097560883,0.17355363070964813,0.15453654527664185,0.14447832107543945,0.18069933354854584,0.13904187083244324,0.17858587205410004,0.16327978670597076,0.17359277606010437,0.17719799280166626,0.17050516605377197,0.15275561809539795,0.20256613194942474,0.14577163755893707,0.20180203020572662,0.16223758459091187,0.1924719363451004,0.17223958671092987,0.18632258474826813],[0.2066141813993454,0.16640415787696838,0.19734755158424377,0.132986381649971,0.17365260422229767,0.10640791058540344,0.1542910635471344,0.09111890196800232,0.14231368899345398,0.07348313182592392,0.13592077791690826,0.1345577836036682,0.10014597326517105,0.1338825821876526,0.07824605703353882,0.13407257199287415,0.059871573001146317,0.13420237600803375,0.13822691142559052,0.15871654450893402,0.12845447659492493,0.15599897503852844,0.1554863154888153,0.15489034354686737,0.1734200417995453,0.15454545617103577,0.1443808674812317,0.1807493418455124,0.13904832303524017,0.1788105070590973,0.1632542610168457,0.17371802031993866,0.17706505954265594,0.17060887813568115,0.15254932641983032,0.2026205211877823,0.14560773968696594,0.20202551782131195,0.16208820044994354,0.19268161058425903,0.17209894955158234,0.18652339279651642],[0.20748592913150787,0.16666337847709656,0.19833460450172424,0.13261860609054565,0.1744292676448822,0.10564163327217102,0.15507476031780243,0.09004013985395432,0.14322997629642487,0.07246443629264832,0.1364700049161911,0.13413803279399872,0.10074856132268906,0.1328713297843933,0.07861676812171936,0.13234779238700867,0.060035355389118195,0.13178576529026031,0.1386883705854416,0.1586175560951233,0.12915900349617004,0.15473335981369019,0.1561306118965149,0.1540008783340454,0.17426709830760956,0.1541818529367447,0.14472870528697968,0.18073797225952148,0.13975819945335388,0.17783600091934204,0.1639202982187271,0.17293179035186768,0.1781238615512848,0.17017950117588043,0.1529763787984848,0.20265015959739685,0.14644847810268402,0.20109422504901886,0.1629435271024704,0.19181033968925476,0.17298990488052368,0.18585285544395447],[0.20759174227714539,0.1663493514060974,0.19834713637828827,0.13250625133514404,0.17446452379226685,0.10563141107559204,0.15505748987197876,0.09013592451810837,0.1430542916059494,0.07250744849443436,0.13670581579208374,0.13407064974308014,0.10092313587665558,0.13271111249923706,0.07876608520746231,0.1320505291223526,0.06014465168118477,0.13135795295238495,0.13889741897583008,0.15847675502300262,0.12911947071552277,0.154699444770813,0.15622054040431976,0.15396615862846375,0.17436392605304718,0.15410982072353363,0.1449747532606125,0.18054042756557465,0.13994158804416656,0.17769913375377655,0.16422685980796814,0.17294804751873016,0.17807301878929138,0.1701827198266983,0.15319371223449707,0.20247381925582886,0.146474689245224,0.2010398805141449,0.16309824585914612,0.19189059734344482,0.17303259670734406,0.18594102561473846],[0.20739318430423737,0.16630908846855164,0.19832079112529755,0.1323619782924652,0.1745079606771469,0.10583619028329849,0.15507659316062927,0.09063147008419037,0.14323312044143677,0.0729588121175766,0.13648296892642975,0.1342954784631729,0.1007140725851059,0.13288047909736633,0.07875490933656693,0.13219702243804932,0.0603458508849144,0.1313842535018921,0.13892482221126556,0.1586703360080719,0.12841227650642395,0.15510348975658417,0.15559078752994537,0.1541614979505539,0.1739557385444641,0.1540772020816803,0.1451728790998459,0.1807590126991272,0.13921895623207092,0.17807893455028534,0.16364029049873352,0.17306813597679138,0.17806272208690643,0.1702277511358261,0.1536187380552292,0.20271363854408264,0.1462930291891098,0.20140431821346283,0.16269096732139587,0.19199904799461365,0.17271095514297485,0.186021625995636],[0.20767834782600403,0.1660739779472351,0.1985435038805008,0.13237328827381134,0.17464664578437805,0.10596483945846558,0.1553625911474228,0.0904403105378151,0.1434694081544876,0.07289590686559677,0.13650941848754883,0.13411977887153625,0.10084337741136551,0.132595494389534,0.07892553508281708,0.13186120986938477,0.06056099757552147,0.13107459247112274,0.13890960812568665,0.15854547917842865,0.1286330372095108,0.154686838388443,0.1558014303445816,0.15395161509513855,0.17400844395160675,0.15415018796920776,0.14512427151203156,0.18067578971385956,0.13946186006069183,0.17795100808143616,0.16381479799747467,0.17297092080116272,0.1780187338590622,0.17024165391921997,0.15354211628437042,0.20266969501972198,0.14645034074783325,0.20123238861560822,0.16287854313850403,0.19186913967132568,0.1727883517742157,0.18601392209529877],[0.2078023999929428,0.16634923219680786,0.19852302968502045,0.13230842351913452,0.17434310913085938,0.10582273453474045,0.1549568772315979,0.090482197701931,0.1435687094926834,0.07317785173654556,0.13643398880958557,0.13442717492580414,0.1011275127530098,0.13269728422164917,0.0794115960597992,0.13195303082466125,0.06120713800191879,0.1308998018503189,0.1388038843870163,0.1588565856218338,0.12842786312103271,0.15451844036579132,0.15554179251194,0.15388014912605286,0.1739974021911621,0.15415067970752716,0.14505401253700256,0.18090780079364777,0.1394779086112976,0.17771649360656738,0.16395102441310883,0.17285825312137604,0.1781446784734726,0.17033953964710236,0.15356358885765076,0.2029058188199997,0.14604763686656952,0.20135076344013214,0.16241510212421417,0.19193989038467407,0.1725664734840393,0.18608933687210083],[0.20797789096832275,0.1660585254430771,0.19863726198673248,0.1320597380399704,0.17425838112831116,0.10564576834440231,0.15513859689235687,0.08921719342470169,0.1443312168121338,0.07084060460329056,0.13651064038276672,0.13423818349838257,0.10062488913536072,0.1330064982175827,0.07873371988534927,0.13253434002399445,0.060299042612314224,0.13173818588256836,0.13891330361366272,0.15870437026023865,0.1287299394607544,0.15481308102607727,0.15577900409698486,0.15394115447998047,0.17397424578666687,0.1539761871099472,0.14512865245342255,0.1809345781803131,0.1394679695367813,0.17790387570858002,0.16380612552165985,0.17280313372612,0.1780318021774292,0.17008890211582184,0.1536126732826233,0.20302601158618927,0.1463351547718048,0.2013511061668396,0.16253237426280975,0.1919492483139038,0.17256763577461243,0.18613392114639282]],"8":[[0.18536081910133362,0.17756867408752441,0.17682527005672455,0.15194043517112732,0.15582650899887085,0.131732776761055,0.13333295285701752,0.13522079586982727,0.11689852178096771,0.1459769904613495,0.13378925621509552,0.148628368973732,0.12451361119747162,0.13494732975959778,0.1405951827764511,0.13959315419197083,0.14224126935005188,0.15088564157485962,0.13291600346565247,0.16706110537052155,0.1222217008471489,0.1535893976688385,0.14489220082759857,0.15478765964508057,0.1449519693851471,0.16449376940727234,0.1356586068868637,0.18434762954711914,0.12601163983345032,0.17235583066940308,0.14866358041763306,0.16909493505954742,0.14962562918663025,0.1792730838060379,0.1405770629644394,0.2035328447818756,0.13410015404224396,0.1887889802455902,0.14888295531272888,0.1839735060930252,0.15041860938072205,0.1932857483625412],[0.18522797524929047,0.17741551995277405,0.17651431262493134,0.15178287029266357,0.1554465889930725,0.13161398470401764,0.1329554170370102,0.13551656901836395,0.11656486243009567,0.14632003009319305,0.13365423679351807,0.14910759031772614,0.12405402213335037,0.1354270726442337,0.1404433697462082,0.14004024863243103,0.142176553606987,0.15128253400325775,0.13285155594348907,0.16726267337799072,0.12185405939817429,0.15389521420001984,0.14456258714199066,0.15499448776245117,0.14483849704265594,0.1647704690694809,0.13554005324840546,0.18448731303215027,0.12556210160255432,0.1725487858057022,0.14834952354431152,0.16929389536380768,0.14958229660987854,0.17940625548362732,0.1404358297586441,0.20371927320957184,0.1336982399225235,0.18913140892982483,0.1485331803560257,0.1842069774866104,0.15023306012153625,0.19342964887619019],[0.18544365465641022,0.1772707998752594,0.17703764140605927,0.15190301835536957,0.15569905936717987,0.1313672959804535,0.1330508440732956,0.13497450947761536,0.11677170544862747,0.14603477716445923,0.13372384011745453,0.14888174831867218,0.12433720380067825,0.13502928614616394,0.14075510203838348,0.1400340050458908,0.1421346664428711,0.15122708678245544,0.13283762335777283,0.1672046184539795,0.12194264680147171,0.15364544093608856,0.14466597139835358,0.15502174198627472,0.14473454654216766,0.16472673416137695,0.13561518490314484,0.18442890048027039,0.12572099268436432,0.17249348759651184,0.14847630262374878,0.16925173997879028,0.14953991770744324,0.17930029332637787,0.1404300183057785,0.20357951521873474,0.13392098248004913,0.18906395137310028,0.14870163798332214,0.18420231342315674,0.15022768080234528,0.19340722262859344],[0.1854073703289032,0.17703472077846527,0.17643515765666962,0.15150319039821625,0.15539775788784027,0.13179290294647217,0.13302841782569885,0.135428324341774,0.11661266535520554,0.14607533812522888,0.1333334594964981,0.149265855550766,0.1241564005613327,0.13589419424533844,0.14032703638076782,0.1403508335351944,0.1421981006860733,0.15145525336265564,0.13255730271339417,0.16741067171096802,0.12189921736717224,0.15408335626125336,0.1445053666830063,0.15516981482505798,0.14472423493862152,0.1649063676595688,0.13532714545726776,0.18455184996128082,0.1256861835718155,0.17266055941581726,0.1483166515827179,0.16932404041290283,0.14946778118610382,0.17929863929748535,0.1403435617685318,0.20367331802845,0.1338108330965042,0.18911537528038025,0.14853721857070923,0.18422681093215942,0.1501946747303009,0.19332002103328705],[0.18489156663417816,0.17741288244724274,0.17648133635520935,0.1519826501607895,0.15532828867435455,0.13178937137126923,0.13279403746128082,0.13598155975341797,0.11646082997322083,0.1471332311630249,0.13319151103496552,0.14896969497203827,0.12363893538713455,0.13549889624118805,0.13985709846019745,0.13987822830677032,0.14222759008407593,0.1508968025445938,0.13231731951236725,0.16728977859020233,0.1215372085571289,0.15431740880012512,0.14422233402729034,0.15519174933433533,0.14476054906845093,0.16483214497566223,0.13513563573360443,0.18470342457294464,0.12543824315071106,0.1729166954755783,0.14815177023410797,0.16944357752799988,0.1495267152786255,0.17948885262012482,0.1402377337217331,0.20407085120677948,0.13365888595581055,0.18955588340759277,0.14848123490810394,0.18442396819591522,0.15024182200431824,0.19361384212970734],[0.18531380593776703,0.17726440727710724,0.17645177245140076,0.15148156881332397,0.1553470343351364,0.13187217712402344,0.1329558938741684,0.13618795573711395,0.1165577843785286,0.14712421596050262,0.13352316617965698,0.14869050681591034,0.12378236651420593,0.13580569624900818,0.1399007886648178,0.1399533599615097,0.14246368408203125,0.15079526603221893,0.1325940638780594,0.16688737273216248,0.12195327877998352,0.15445944666862488,0.1444459706544876,0.15507999062538147,0.1448730230331421,0.16460470855236053,0.13530513644218445,0.18419891595840454,0.1257190704345703,0.17286932468414307,0.14831095933914185,0.16938072443008423,0.14966405928134918,0.1791912019252777,0.14031130075454712,0.20369558036327362,0.13389952480793,0.18942004442214966,0.14871826767921448,0.18425962328910828,0.1504330337047577,0.19316016137599945],[0.1849646270275116,0.17663171887397766,0.17576193809509277,0.1512252390384674,0.15478335320949554,0.13197842240333557,0.1326913982629776,0.1361912190914154,0.11635097116231918,0.14711061120033264,0.13286744058132172,0.14966270327568054,0.12287942320108414,0.13643090426921844,0.1394026279449463,0.14015285670757294,0.14212694764137268,0.15087951719760895,0.1322004497051239,0.16775092482566833,0.12155375629663467,0.15488485991954803,0.14425595104694366,0.15536141395568848,0.14472505450248718,0.16494274139404297,0.13501960039138794,0.18497112393379211,0.1255629062652588,0.17295701801776886,0.14818990230560303,0.16957305371761322,0.1495252549648285,0.17960591614246368,0.14014828205108643,0.2042231410741806,0.13355252146720886,0.18961912393569946,0.1483868807554245,0.18460653722286224,0.15024623274803162,0.19381067156791687],[0.18450072407722473,0.17749013006687164,0.1755768209695816,0.15222571790218353,0.15472866594791412,0.1322326958179474,0.13216274976730347,0.1361999213695526,0.11575803905725479,0.1478530764579773,0.13270363211631775,0.14922703802585602,0.12315830588340759,0.1364409178495407,0.13929671049118042,0.1403220295906067,0.14165452122688293,0.15096069872379303,0.13177631795406342,0.1675979197025299,0.12147097289562225,0.15524359047412872,0.1439553201198578,0.15562842786312103,0.14427776634693146,0.16493390500545502,0.1346532702445984,0.18500246107578278,0.12498072534799576,0.17387714982032776,0.14752314984798431,0.17010347545146942,0.14900100231170654,0.17970803380012512,0.13976185023784637,0.2045770287513733,0.13321547210216522,0.19040243327617645,0.14794375002384186,0.18504120409488678,0.14984120428562164,0.19364392757415771],[0.1846354752779007,0.17732620239257812,0.1762416958808899,0.15230692923069,0.155063197016716,0.13204915821552277,0.13258205354213715,0.1355244666337967,0.11634106934070587,0.1467030644416809,0.13299088180065155,0.1496371328830719,0.12378858029842377,0.13572384417057037,0.13983656466007233,0.14020183682441711,0.14152070879936218,0.15124017000198364,0.13214142620563507,0.1680457592010498,0.12177253514528275,0.15444929897785187,0.14427000284194946,0.15531453490257263,0.14467765390872955,0.16494332253932953,0.13514968752861023,0.18522991240024567,0.1256171315908432,0.17305779457092285,0.14811846613883972,0.16939133405685425,0.14946348965168,0.1794886738061905,0.14031529426574707,0.20413538813591003,0.13376273214817047,0.18901433050632477,0.1485535055398941,0.18394754827022552,0.15030695497989655,0.19329315423965454],[0.18827688694000244,0.17531976103782654,0.17814034223556519,0.14916568994522095,0.15763936936855316,0.1301177740097046,0.13630087673664093,0.13139861822128296,0.1203206479549408,0.140986829996109,0.13451088964939117,0.15006715059280396,0.12523776292800903,0.1357961893081665,0.1419641226530075,0.13777203857898712,0.14446820318698883,0.14815716445446014,0.13403929769992828,0.16747871041297913,0.12456830590963364,0.15257617831230164,0.14734262228012085,0.15184850990772247,0.14794206619262695,0.16189545392990112,0.13703736662864685,0.18411466479301453,0.12910960614681244,0.16943643987178802,0.1515905261039734,0.16567452251911163,0.15309351682662964,0.17637893557548523,0.14254578948020935,0.20248863101005554,0.1376967430114746,0.18497727811336517,0.15240053832530975,0.1803314983844757,0.1544235795736313,0.19068092107772827],[0.18858200311660767,0.17660516500473022,0.1778002232313156,0.14968138933181763,0.15704670548439026,0.1311999410390854,0.1353750377893448,0.13227108120918274,0.11895498633384705,0.1414652168750763,0.13428060710430145,0.14973853528499603,0.12389305979013443,0.1361830085515976,0.14062577486038208,0.13751867413520813,0.1439412236213684,0.1478641927242279,0.133889839053154,0.1674852818250656,0.12377229332923889,0.1531563103199005,0.14684131741523743,0.15197452902793884,0.14753615856170654,0.16195623576641083,0.13682357966899872,0.184334859251976,0.1284993588924408,0.1701711118221283,0.15108953416347504,0.16608016192913055,0.1527830958366394,0.17685578763484955,0.14222639799118042,0.20306159555912018,0.13721181452274323,0.1858416050672531,0.1518518179655075,0.18115690350532532,0.15391619503498077,0.19169048964977264],[0.18859657645225525,0.17674079537391663,0.17837309837341309,0.15013450384140015,0.1573212444782257,0.13126932084560394,0.13499414920806885,0.13352425396442413,0.11803027987480164,0.1429644525051117,0.13423673808574677,0.1478278934955597,0.12328653037548065,0.1348603367805481,0.14004811644554138,0.1366284191608429,0.1438819169998169,0.1473473161458969,0.13358823955059052,0.1662786453962326,0.1238083690404892,0.15321865677833557,0.1470714658498764,0.15237540006637573,0.14726687967777252,0.1623678058385849,0.13648144900798798,0.18378719687461853,0.1283009648323059,0.1709723323583603,0.15101321041584015,0.16688011586666107,0.15226706862449646,0.1774815320968628,0.14192159473896027,0.20321263372898102,0.1367286592721939,0.18697983026504517,0.15175914764404297,0.1819785088300705,0.15365725755691528,0.19233833253383636],[0.18824000656604767,0.17713932693004608,0.17696937918663025,0.1497984528541565,0.15594513714313507,0.13142430782318115,0.1336478888988495,0.1343337893486023,0.11699878424406052,0.14389260113239288,0.1330917477607727,0.1485816389322281,0.12331384420394897,0.13600417971611023,0.13931681215763092,0.13734537363052368,0.14237581193447113,0.1482611894607544,0.1324516087770462,0.1670268028974533,0.12336415797472,0.1549001932144165,0.14638952910900116,0.15348966419696808,0.14577051997184753,0.16345863044261932,0.1354350596666336,0.1844828873872757,0.1273072212934494,0.1724969893693924,0.14973874390125275,0.16805364191532135,0.15062084794044495,0.17889642715454102,0.1412336379289627,0.20396116375923157,0.13562963902950287,0.18863213062286377,0.15032309293746948,0.18325893580913544,0.15202784538269043,0.19338247179985046],[0.18375112116336823,0.17840184271335602,0.17373521625995636,0.15277594327926636,0.1526201218366623,0.13401326537132263,0.1305243968963623,0.13810406625270844,0.11380017548799515,0.14858657121658325,0.13030146062374115,0.15043343603610992,0.12021254748106003,0.13826993107795715,0.13650189340114594,0.14128562808036804,0.13955247402191162,0.15218956768512726,0.12946200370788574,0.16888739168643951,0.11982481926679611,0.157106414437294,0.1426147222518921,0.15660926699638367,0.14262595772743225,0.16586308181285858,0.13239702582359314,0.18655866384506226,0.12391765415668488,0.17563854157924652,0.14660385251045227,0.1713014394044876,0.14785966277122498,0.18092884123325348,0.13797833025455475,0.20641309022903442,0.13263298571109772,0.19208158552646637,0.14757701754570007,0.18635894358158112,0.14927786588668823,0.1953117698431015],[0.1832449734210968,0.1791616678237915,0.17215509712696075,0.15335987508296967,0.15076950192451477,0.13438259065151215,0.12838785350322723,0.13898596167564392,0.11208201199769974,0.14976932108402252,0.12833964824676514,0.15111026167869568,0.11760027706623077,0.13930024206638336,0.13429264724254608,0.14133243262767792,0.13750188052654266,0.15206027030944824,0.12778633832931519,0.17008838057518005,0.11831622570753098,0.159112349152565,0.14171025156974792,0.15761244297027588,0.14111848175525665,0.16697049140930176,0.13128219544887543,0.18785686790943146,0.12278274446725845,0.1776123195886612,0.14535991847515106,0.17257973551750183,0.14620371162891388,0.1826459765434265,0.13733892142772675,0.20786261558532715,0.1319209337234497,0.19444362819194794,0.14647483825683594,0.1882445365190506,0.1477670669555664,0.19725647568702698],[0.18274995684623718,0.17864881455898285,0.1722155511379242,0.15302284061908722,0.15124213695526123,0.1343674659729004,0.1291729211807251,0.1389821171760559,0.11248460412025452,0.14985434710979462,0.1291130781173706,0.1512134075164795,0.11894688010215759,0.13880859315395355,0.13519692420959473,0.14161522686481476,0.1383858025074005,0.15252572298049927,0.12839774787425995,0.17010214924812317,0.11888191848993301,0.15837423503398895,0.1418600231409073,0.15741844475269318,0.1417701542377472,0.16665947437286377,0.13159599900245667,0.18784379959106445,0.12293839454650879,0.1769830286502838,0.14562901854515076,0.17223048210144043,0.14690710604190826,0.18218009173870087,0.1373564898967743,0.20757752656936646,0.13163843750953674,0.19326460361480713,0.14636431634426117,0.18739135563373566,0.14797018468379974,0.19674402475357056]]}} \ No newline at end of file diff --git a/game/钢琴/index.html b/game/钢琴/index.html index 542518f..697016b 100644 --- a/game/钢琴/index.html +++ b/game/钢琴/index.html @@ -334,9 +334,7 @@ '5': { name: 'A2', audio: new Audio('sounds/A2.mp3') }, '6': { name: 'B2', audio: new Audio('sounds/B2.mp3') }, '7': { name: '高音C (C3)', audio: new Audio('sounds/C3.mp3') }, - '8': { name: '空', audio: new Audio('sounds/rest.mp3') } - // 您需要在 index.html 中训练 8 个不同的手势,分别对应这些类别ID (0-7)。 - // 如果不训练足够多的手势,KNN 分类器将无法预测这些类别。 + '8': { name: '空', audio: new Audio('sounds/rest.mp3') } // 如果需要休息/不触发音符的类别 }; // 可配置项 @@ -378,7 +376,7 @@ await setupCamera(); isHandDetectionReady = true; - updateGlobalStatus('手部检测器和摄像头已就绪。请导入您的手势模型。', 'ready'); + updateGlobalStatus('手部检测器和摄像头已就绪。'); lockControls(false); startStopBtn.disabled = true; @@ -387,7 +385,7 @@ // 绑定按钮事件 importModelBtn.addEventListener('click', () => fileImporter.click()); - fileImporter.addEventListener('change', handleModelImport); + fileImporter.addEventListener('change', (event) => loadKNNModelData(event.target.files[0])); // 改为通用加载函数 startStopBtn.addEventListener('click', togglePlaying); // 预加载所有音频 @@ -396,6 +394,30 @@ // 初始更新映射UI,显示所有8个音符的映射 updateGestureMappingUI(); + // --- 新增:尝试自动从 CDN 加载 KNN 模型数据 --- + // !!! 请替换为你的实际 CDN 模型 URL !!! + const cdnJsonUrl = 'https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/models/hand-knn-model.json'; + // 如果你的 KNN 数据是分 bin 而不是直接包含在 json,你需要类似上次 script.js 那样处理两个文件 + // 但通常 KNN Classifier 的 export/import 是一个单一 JSON 文件 + + console.log(`尝试从 CDN 自动加载 KNN 模型数据: ${cdnJsonUrl}`); + updateGlobalStatus('正在尝试从 CDN 加载手势识别模型...', 'loading'); + try { + await loadKNNModelData(null, cdnJsonUrl); // 传递 CDN URL,不传文件 + updateGlobalStatus('CDN 手势识别模型加载成功!', 'success'); + isModelLoaded = true; + importModelBtn.disabled = true; // 自动加载成功后禁用手动导入 + startStopBtn.disabled = false; + } catch (cdnError) { + console.warn('CDN KNN 模型数据自动加载失败:', cdnError); + updateGlobalStatus(`CDN 模型加载失败: ${cdnError.message}。请手动导入模型。`, 'warning'); + isModelLoaded = false; + importModelBtn.disabled = false; // CDN 失败,允许手动导入 + startStopBtn.disabled = true; + } + // --- 结束 CDN 自动加载 --- + + } catch (error) { console.error("应用初始化失败:", error); updateGlobalStatus(`初始化失败: ${error.message}`, 'error'); @@ -571,91 +593,103 @@ } // ========================================================== - // 模型导入 + // 模型导入 - 改造为支持文件和 URL 两种方式 // ========================================================== - async function handleModelImport(event) { - const file = event.target.files[0]; - if (!file) return; - - updateGlobalStatus('正在导入模型...', 'loading'); + /** + * 加载 KNN 模型数据,支持从文件或 CDN URL 加载。 + * @param {File} [file] - 可选,用户选择的 KNN 模型 JSON 文件。 + * @param {string} [cdnUrl] - 可选,KNN 模型 JSON 文件的 CDN URL。 + * @returns {Promise} + */ + async function loadKNNModelData(file = null, cdnUrl = null) { + updateGlobalStatus('正在加载模型...', 'loading'); lockControls(true); try { - await loadModelFromFile(file); - updateGlobalStatus('手势模型导入成功!', 'success'); + let loadedModelData; + + if (file) { + const reader = new FileReader(); + const fileReadPromise = new Promise((resolve, reject) => { + reader.onload = e => resolve(JSON.parse(e.target.result)); + reader.onerror = error => reject(new Error('文件读取失败。')); + reader.readAsText(file); + }); + loadedModelData = await fileReadPromise; + } else if (cdnUrl) { + const response = await fetch(cdnUrl); + if (!response.ok) { + throw new Error(`无法从 ${cdnUrl} 加载模型数据: ${response.statusText}`); + } + loadedModelData = await response.json(); + } else { + throw new Error('未提供模型文件或 CDN URL。'); + } + + // 确保模型包含 classMap 和 dataset + if (!loadedModelData || !loadedModelData.dataset || !loadedModelData.classMap) { + throw new Error('模型数据结构不正确 (缺少 classMap 或 dataset)。'); + } + + classifier.clearAllClasses(); + + const dataset = {}; + let totalExamples = 0; + + for (const classId in loadedModelData.dataset) { + const classData = loadedModelData.dataset[classId]; + if (classData && classData.length > 0) { + // 验证数据格式 + if (classData.some(sample => !Array.isArray(sample) || sample.some(val => typeof val !== 'number'))) { + throw new Error(`类别 ${classId} 包含无效的样本数据 (不是数字数组)。`); + } + const tensors = classData.map(data => tf.tensor1d(data)); + const stacked = tf.stack(tensors); + dataset[classId] = stacked; + totalExamples += classData.length; + tensors.forEach(t => t.dispose()); + } else { + console.warn(`类别 ${classId} 没有样本数据。`); + } + } + + classifier.setClassifierDataset(dataset); + + // 可以在这里根据 loadedModelData.classMap 动态更新 gestureClassToAudioMap 中的 name 字段 + // 以便 UI 上的音符名称直接从训练模型中获取。 + // 例如: + // loadedModelData.classMap.forEach(item => { + // if (gestureClassToAudioMap[item.classId]) { + // gestureClassToAudioMap[item.classId].name = item.className; + // } + // }); + + updateGestureMappingUI(); // 再次调用以确保UI更新 + + console.log(`模型加载成功!共加载 ${totalExamples} 个样本。`); + console.log('导入类别映射:', loadedModelData.classMap); + isModelLoaded = true; lockControls(false); - importModelBtn.disabled = true; + importModelBtn.disabled = true; // 成功加载后应禁用手动导入,除非你想支持重新导入 startStopBtn.disabled = false; + updateGlobalStatus('手势模型加载成功!', 'success'); + } catch (error) { - console.error('模型导入失败:', error); - updateGlobalStatus(`模型导入失败: ${error.message}`, 'error'); - alert(`模型导入失败: ${error.message}\n请确保文件是正确的模型JSON文件。`); + console.error('模型加载失败:', error); + updateGlobalStatus(`模型加载失败: ${error.message}`, 'error'); + alert(`模型加载失败: ${error.message}\n请确保文件是正确的模型JSON文件或 CDN URL 可访问。`); isModelLoaded = false; lockControls(false); + importModelBtn.disabled = false; // 失败后允许手动导入 startStopBtn.disabled = true; - importModelBtn.disabled = false; + throw error; // 重新抛出错误,以便调用者(如initApp)能捕获 } finally { - fileImporter.value = ''; + fileImporter.value = ''; // 清除文件选择器的值,以便可以再次选择相同文件 } } - async function loadModelFromFile(file) { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = async (e) => { - try { - const loadedModelData = JSON.parse(e.target.result); - - // 确保模型包含 classMap 和 dataset - if (!loadedModelData || !loadedModelData.dataset || !loadedModelData.classMap) { - throw new Error('模型数据结构不正确 (缺少 classMap 或 dataset)。'); - } - - classifier.clearAllClasses(); - - const dataset = {}; - let totalExamples = 0; - - for (const classId in loadedModelData.dataset) { - const classData = loadedModelData.dataset[classId]; - if (classData && classData.length > 0) { - if (classData.some(sample => !Array.isArray(sample) || sample.some(val => typeof val !== 'number'))) { - throw new Error(`类别 ${classId} 包含无效的样本数据 (不是数字数组)。`); - } - const tensors = classData.map(data => tf.tensor1d(data)); - const stacked = tf.stack(tensors); - dataset[classId] = stacked; - totalExamples += classData.length; - tensors.forEach(t => t.dispose()); - } else { - console.warn(`类别 ${classId} 没有样本数据。`); - } - } - - classifier.setClassifierDataset(dataset); - // 您可以在这里遍历 loadedModelData.classMap 来更新 `gestureClassToAudioMap` 中的 `name` 字段 - // 以便 UI 上的音符名称直接从训练模型中获取。 - // 当前代码是直接使用 `gestureClassToAudioMap` 中预设的音符名称。 - - updateGestureMappingUI(); // 再次调用以确保UI更新 - - console.log(`模型加载成功!共加载 ${totalExamples} 个样本。`); - console.log('导入类别映射:', loadedModelData.classMap); - resolve(); - - } catch (error) { - reject(error); - } - }; - reader.onerror = (error) => { - reject(new Error('文件读取失败。')); - }; - reader.readAsText(file); - }); - } - // ========================================================== // 音频播放逻辑 // ========================================================== @@ -705,18 +739,24 @@ function updateGlobalStatus(message, type = 'info') { globalStatusDisplay.textContent = message; + // 重置颜色以便不同类型的状态信息有不同的视觉反馈 + globalStatusDisplay.style.color = '#bdc3c7'; // 默认颜色 + if (type === 'error') { globalStatusDisplay.style.color = '#e74c3c'; /* 红色 */ } else if (type === 'success') { globalStatusDisplay.style.color = '#2ecc71'; /* 绿色 */ - } else { - globalStatusDisplay.style.color = '#bdc3c7'; /* 默认灰色 */ + } else if (type === 'warning') { + globalStatusDisplay.style.color = '#f1c40f'; /* 黄色 */ } + // loading 状态可以考虑添加一个动画或特定的颜色 } function lockControls(lock) { - importModelBtn.disabled = lock; - startStopBtn.disabled = lock; + // 在某些状态下,即使不处于锁定状态,按钮也可能被特定逻辑禁用 + // 所以这里只处理整体的禁用/启用 + importModelBtn.disabled = lock || isModelLoaded; // 如果模型已加载,手动导入按钮通常也应禁用 + startStopBtn.disabled = lock || !isModelLoaded; // 必须加载模型才能开始 } function togglePlaying() { @@ -728,22 +768,23 @@ alert('已导入的模型中没有训练数据,请导入一个有效的模型文件。'); return; } - if (classifier.getNumClasses() < Object.keys(gestureClassToAudioMap).length) { - alert(`警告:导入的模型只包含 ${classifier.getNumClasses()} 个类别,但需要 ${Object.keys(gestureClassToAudioMap).length} 个音符手势。请确保导入完整的模型!`); - // 允许继续,但用户会发现部分音符无法弹奏 + // 这里的警告信息如果是在自动加载时已经给出,可以考虑不重复。 + // 考虑到用户可能会忽略,此处保留。 + if (classifier.getNumClasses() < Object.keys(gestureClassToAudioMap).length && classifier.getNumClasses() > 0) { + alert(`警告:导入的模型只包含 ${classifier.getNumClasses()} 个类别,但需要 ${Object.keys(gestureClassToAudioMap).length} 个音符手势。请确保导入完整的模型!若要继续,点击确定。`); } isPlaying = !isPlaying; if (isPlaying) { startStopBtn.textContent = '停止演奏'; startStopBtn.classList.add('playing'); - importModelBtn.disabled = true; + importModelBtn.disabled = true; // 演奏时不能切换模型 updateGlobalStatus('开始演奏,请摆出您的钢琴手势!', 'info'); // 文本修改 currentPlayingActionDisplay.textContent = '无'; } else { startStopBtn.textContent = '开始演奏'; startStopBtn.classList.remove('playing'); - importModelBtn.disabled = false; + importModelBtn.disabled = false; // 停止演奏后允许重新导入 updateGlobalStatus('已停止演奏,等待您开始。', 'ready'); currentPlayingActionDisplay.textContent = '无'; currentPlayingActionId = null; // 停止演奏时重置当前播放音符ID @@ -767,9 +808,19 @@ const noteName = orderedNoteNames[i]; const listItem = document.createElement('li'); - listItem.innerHTML = `ID ${classId}: ${noteName} → 音段 ${i + 1}`; + // 从 gestureClassToAudioMap 获取的 name 可以更准确地显示 + const mappedNoteName = gestureClassToAudioMap[classId] ? gestureClassToAudioMap[classId].name : noteName; + listItem.innerHTML = `ID ${classId}: ${mappedNoteName} → 音段 ${i + 1}`; gestureMappingList.appendChild(listItem); } + // 如果 classifier 中有额外或不同的类别,也可以在这里显示 + // for (const classId of classifier.getClassNames()) { + // if (!gestureClassToAudioMap[classId]) { + // const listItem = document.createElement('li'); + // listItem.innerHTML = `ID ${classId}: 未知/自定义手势`; + // gestureMappingList.appendChild(listItem); + // } + // } } // --- 应用启动和清理 ---