{"id":21574,"date":"2026-05-17T05:44:17","date_gmt":"2026-05-17T05:44:17","guid":{"rendered":"https:\/\/arttao.org\/?page_id=21574"},"modified":"2026-05-17T05:44:17","modified_gmt":"2026-05-17T05:44:17","slug":"%e7%ac%ac114%e8%af%be%ef%bc%9a%e8%ba%ab%e4%bd%93%e5%af%bc%e5%90%91%e7%96%97%e6%b3%95%e4%b8%ad%e7%9a%84%e6%84%9f%e8%a7%89%e8%bf%bd%e8%b8%aa-2","status":"publish","type":"page","link":"https:\/\/arttao.org\/en\/%e7%ac%ac114%e8%af%be%ef%bc%9a%e8%ba%ab%e4%bd%93%e5%af%bc%e5%90%91%e7%96%97%e6%b3%95%e4%b8%ad%e7%9a%84%e6%84%9f%e8%a7%89%e8%bf%bd%e8%b8%aa-2\/","title":{"rendered":"Lesson 114: Sensory Tracking in Body-Oriented Therapy\u201c"},"content":{"rendered":"        <article class=\"arttao-cpb-course\" data-unit=\"3\" data-lesson=\"114\">\n            <h2 class=\"arttao-cpb-main-title\">\u7b2c114\u8bfe\uff1a\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d<\/h2>\n            <p class=\"arttao-cpb-duration\"><strong>\u65f6\u957f\uff1a<\/strong>70\u5206\u949f<\/p>\n\n                            <div class=\"arttao-cpb-intro\"><p><strong>\u4e3b\u9898\u7b80\u4ecb\uff1a<\/strong>\u6050\u60e7\u6d3b\u5728\u80a9\u9888\u3001\u80c3\u3001\u540e\u80cc\u548c\u5589\u5499\u91cc\u3002\u672c\u8bfe\u7528\u611f\u89c9\u8ffd\u8e2a\u5e2e\u52a9\u4f60\u5bb9\u7eb3\u8eab\u4f53\u4e0d\u9002\uff0c\u800c\u4e0d\u662f\u7acb\u523b\u538b\u4e0b\u53bb\u3002\u7ec3\u4e60\u65f6\u8bf7\u628a\u76ee\u6807\u653e\u5c0f\uff0c\u53ea\u89c2\u5bdf\u4e00\u4e2a\u53cd\u5e94\uff0c\u5b8c\u6210\u4e00\u4e2a\u6e29\u548c\u52a8\u4f5c\u3002\u4e0d\u9700\u8981\u7acb\u523b\u6539\u53d8\u81ea\u5df1\uff0c\u53ea\u9700\u8981\u5728\u5b89\u5168\u8303\u56f4\u5185\u591a\u7406\u89e3\u4e00\u70b9\u3002\u6bcf\u4e00\u6b21\u8bb0\u5f55\u548c\u505c\u7559\uff0c\u90fd\u662f\u91cd\u65b0\u5efa\u7acb\u7a33\u5b9a\u611f\u7684\u5f00\u59cb\u3002\u7ec3\u4e60\u65f6\u8bf7\u628a\u76ee\u6807\u653e\u5c0f\uff0c\u53ea\u89c2\u5bdf\u4e00\u4e2a\u53cd\u5e94\uff0c\u5b8c\u6210\u4e00\u4e2a\u6e29\u548c\u52a8\u4f5c\u3002<\/p><\/div>\n            \n            <section class=\"arttao-cpb-section arttao-cpb-section-tts\" id=\"arttao-cpb-tts-114-333252\"><h3 class=\"arttao-cpb-section-title\">\u25cb \u8bfe\u7a0b\u4e3b\u9898\u8bed\u97f3<\/h3><div style=\"margin:12px 0;padding:14px;border:1px solid #F5DEB3;border-radius:18px;background:#F7FFFF;\"><p style=\"margin:0 0 10px;font-weight:600;color:#004494;\">\u7b2c114\u8bfe\uff1a\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d<\/p><audio id=\"arttao-cpb-tts-114-333252-audio\" controls preload=\"none\" style=\"width:100%;max-width:800px;\"><\/audio><div style=\"margin:10px 0;display:flex;gap:8px;flex-wrap:wrap;\"><button type=\"button\" id=\"arttao-cpb-tts-114-333252-btn\" style=\"cursor:pointer;border:1px solid #F5DEB3;background:#D9FFFF;color:#222;border-radius:20px;padding:8px 16px;font-size:14px;\">\u751f\u6210\u5e76\u64ad\u653e\u672c\u8bfe\u8bed\u97f3<\/button><button type=\"button\" id=\"arttao-cpb-tts-114-333252-stop\" style=\"cursor:pointer;border:1px solid #F5DEB3;background:#fff;color:#222;border-radius:20px;padding:8px 16px;font-size:14px;\">\u505c\u6b62<\/button><\/div><div id=\"arttao-cpb-tts-114-333252-status\" style=\"font-size:13px;margin-top:6px;color:#555;\">\u7b49\u5f85\u70b9\u51fb\u201c\u751f\u6210\u5e76\u64ad\u653e\u672c\u8bfe\u8bed\u97f3\u201d\u3002<\/div><details style=\"margin-top:12px;background:#fff;border:1px solid #eee;border-radius:14px;padding:10px;\"><summary style=\"cursor:pointer;color:#004494;font-weight:600;\">\u70b9\u51fb\u67e5\u770b\u6717\u8bfb\u6587\u5b57<\/summary><div style=\"padding:12px 4px;line-height:1.8;color:#444;\"><p>\u8fd9\u4e00\u8bfe\u7684\u4e3b\u9898\u662f\u201c\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d\u201d\u3002\u7279\u5b9a\u6050\u60e7\u75c7\u8bfe\u7a0b\u7684\u91cd\u70b9\uff0c\u4e0d\u662f\u7b11\u8bdd\u4f60\u7684\u5bb3\u6015\uff0c\u4e5f\u4e0d\u662f\u628a\u4f60\u7a81\u7136\u63a8\u5230\u6700\u6050\u60e7\u7684\u60c5\u5883\u91cc\uff0c\u800c\u662f\u5148\u8ba9\u4f60\u7406\u89e3\uff1a\u8eab\u4f53\u4e3a\u4ec0\u4e48\u4f1a\u628a\u67d0\u4e2a\u5bf9\u8c61\u6216\u573a\u666f\u5f53\u6210\u7acb\u523b\u5371\u9669\u3002\u6050\u60e7\u4e5f\u6d3b\u5728\u80a9\u9888\u3001\u80c3\u3001\u540e\u80cc\u548c\u5589\u5499\u91cc\u3002\u672c\u8bfe\u901a\u8fc7\u611f\u89c9\u8ffd\u8e2a\u5b66\u4e60\u5bb9\u7eb3\u4e0d\u9002\uff0c\u800c\u4e0d\u662f\u9a6c\u4e0a\u538b\u4e0b\u53bb\u3002\u5f53\u6050\u60e7\u88ab\u89e6\u53d1\u65f6\uff0c\u4f60\u53ef\u80fd\u4f1a\u5fc3\u8df3\u52a0\u901f\u3001\u624b\u53d1\u6296\u3001\u80f8\u53e3\u53d1\u7d27\u3001\u80c3\u90e8\u7ffb\u6d8c\uff0c\u751a\u81f3\u60f3\u7acb\u523b\u9003\u79bb\u3002\u8bf7\u8bb0\u4f4f\uff0c\u8fd9\u4e0d\u662f\u4f60\u4e0d\u591f\u52c7\u6562\uff0c\u800c\u662f\u674f\u4ec1\u6838\u548c\u4ea4\u611f\u795e\u7ecf\u5728\u542f\u52a8\u6c42\u751f\u7a0b\u5e8f\u3002\u8eab\u4f53\u5e76\u4e0d\u77e5\u9053\u73b0\u5728\u662f\u7ec3\u4e60\uff0c\u5b83\u53ea\u77e5\u9053\u8fc7\u53bb\u7684\u5371\u9669\u8bb0\u5fc6\u88ab\u5524\u9192\u4e86\u3002\u672c\u8bfe\u7684\u7b2c\u4e00\u6b65\uff0c\u662f\u628a\u6050\u60e7\u5177\u4f53\u5316\u3002\u4e0d\u8981\u53ea\u5199\u201c\u6211\u5f88\u6015\u201d\uff0c\u800c\u662f\u5199\u6e05\u695a\uff1a\u6211\u6015\u7684\u5bf9\u8c61\u662f\u4ec0\u4e48\uff0c\u6700\u53ef\u6015\u7684\u753b\u9762\u662f\u4ec0\u4e48\uff0c\u6211\u62c5\u5fc3\u53d1\u751f\u4ec0\u4e48\uff0c\u6211\u901a\u5e38\u4f1a\u600e\u4e48\u9003\u5f00\u3002\u628a\u6050\u60e7\u5199\u51fa\u6765\uff0c\u662f\u4e3a\u4e86\u8ba9\u5b83\u4ece\u8111\u5185\u96fe\u6c14\u53d8\u6210\u53ef\u4ee5\u89c2\u5bdf\u7684\u6750\u6599\u3002\u7b2c\u4e8c\u6b65\uff0c\u662f\u5efa\u7acb\u5b89\u5168\u8fb9\u754c\u3002\u4efb\u4f55\u66b4\u9732\u7ec3\u4e60\u90fd\u4e0d\u5e94\u8be5\u4ece\u6700\u5f3a\u573a\u666f\u5f00\u59cb\u3002\u4f60\u53ef\u4ee5\u5148\u505a\u4e00\u4e2a0\u523010\u7ea7\u7684\u7126\u8651\u5c42\u7ea7\u8868\uff0c\u4ece\u770b\u56fe\u7247\u3001\u8bf4\u51fa\u540d\u79f0\u3001\u9760\u8fd1\u4e00\u70b9\u3001\u505c\u7559\u51e0\u79d2\uff0c\u5230\u771f\u5b9e\u63a5\u89e6\uff0c\u9010\u7ea7\u5b89\u6392\u3002\u6bcf\u4e00\u7ea7\u90fd\u8981\u6709\u9000\u51fa\u4fe1\u53f7\u3001\u6062\u590d\u52a8\u4f5c\u548c\u652f\u6301\u65b9\u5f0f\u3002\u5b89\u5168\u611f\u4e0d\u662f\u8f6f\u5f31\uff0c\u5b83\u662f\u91cd\u8bad\u5927\u8111\u7684\u57fa\u7840\u3002\u7b2c\u4e09\u6b65\uff0c\u662f\u5b66\u4e60\u505c\u7559\u548c\u590d\u76d8\u3002\u5f53\u8eab\u4f53\u5347\u9ad8\u65f6\uff0c\u4e0d\u9700\u8981\u9a6c\u4e0a\u8bc1\u660e\u81ea\u5df1\u6ca1\u4e8b\uff0c\u53ea\u8981\u5728\u53ef\u627f\u53d7\u8303\u56f4\u5185\u591a\u505c\u7559\u4e00\u70b9\u70b9\uff0c\u5e76\u8bb0\u5f55\u4e8b\u5b9e\uff1a\u6211\u505c\u7559\u4e86\u591a\u4e45\uff0c\u6050\u60e7\u4ece\u51e0\u5206\u964d\u5230\u51e0\u5206\uff0c\u771f\u6b63\u53d1\u751f\u4e86\u4ec0\u4e48\u3002\u590d\u76d8\u80fd\u628a\u201c\u6211\u5dee\u70b9\u6b7b\u6389\u201d\u7684\u707e\u96be\u53d9\u4e8b\uff0c\u6162\u6162\u6539\u5199\u6210\u201c\u6211\u7ecf\u5386\u4e86\u5f3a\u70c8\u8eab\u4f53\u53cd\u5e94\uff0c\u4f46\u6211\u6d3b\u8fc7\u6765\u4e86\u201d\u3002\u5982\u679c\u7ec3\u4e60\u8ba9\u4f60\u6301\u7eed\u5931\u7720\u3001\u60ca\u6050\u5931\u63a7\u3001\u5f3a\u70c8\u60f3\u4f24\u5bb3\u81ea\u5df1\uff0c\u6216\u8fc7\u53bb\u521b\u4f24\u88ab\u660e\u663e\u89e6\u53d1\uff0c\u8bf7\u6682\u505c\u7ec3\u4e60\uff0c\u5bfb\u6c42\u5fc3\u7406\u5e08\u3001\u533b\u751f\u6216\u53ef\u4fe1\u4efb\u652f\u6301\u8005\u7684\u5e2e\u52a9\u3002\u7597\u6108\u4e0d\u662f\u628a\u81ea\u5df1\u63a8\u5230\u5d29\u6e83\u8fb9\u7f18\uff0c\u800c\u662f\u5728\u8db3\u591f\u5b89\u5168\u7684\u6761\u4ef6\u4e0b\u91cd\u65b0\u5b66\u4e60\u3002\u6700\u540e\uff0c\u8bf7\u7ed9\u81ea\u5df1\u4e00\u53e5\u7a33\u5b9a\u63d0\u9192\uff1a\u6050\u60e7\u4e0d\u662f\u6211\u7684\u5168\u90e8\uff0c\u5b83\u53ea\u662f\u8eab\u4f53\u66fe\u7ecf\u5b66\u4f1a\u7684\u4e00\u79cd\u4fdd\u62a4\u65b9\u5f0f\u3002\u4eca\u5929\u53ea\u8981\u80fd\u547d\u540d\u4e00\u4e2a\u6050\u60e7\uff0c\u5b8c\u6210\u4e00\u4e2a\u6700\u5c0f\u63a5\u89e6\uff0c\u6216\u5728\u7ec3\u4e60\u540e\u6e29\u67d4\u590d\u76d8\u4e00\u6b21\uff0c\u5c31\u5df2\u7ecf\u662f\u5728\u548c\u6050\u60e7\u5efa\u7acb\u65b0\u7684\u5173\u7cfb\u3002\u6717\u8bfb\u7ed3\u675f\u540e\uff0c\u8bf7\u5199\u4e0b\u4e00\u4e2a\u6700\u4f4e\u5f3a\u5ea6\u7684\u7ec3\u4e60\u70b9\uff0c\u4ee5\u53ca\u4e00\u4e2a\u66b4\u9732\u540e\u7684\u6062\u590d\u52a8\u4f5c\u3002\u4e0b\u6b21\u9762\u5bf9\u6050\u60e7\u65f6\uff0c\u4e0d\u5fc5\u8ffd\u6c42\u7acb\u523b\u52c7\u6562\uff0c\u53ea\u8981\u8bb0\u5f97\u547c\u5438\u3001\u505c\u7559\u3001\u8bb0\u5f55\u548c\u590d\u76d8\u3002\u4f60\u6b63\u5728\u5b66\u4e60\u7684\u4e0d\u662f\u6d88\u706d\u8eab\u4f53\u53cd\u5e94\uff0c\u800c\u662f\u5728\u8eab\u4f53\u53cd\u5e94\u51fa\u73b0\u65f6\u4ecd\u7136\u4fdd\u7559\u4e00\u70b9\u9009\u62e9\u3002\u6bcf\u4e00\u6b21\u5b89\u5168\u7684\u5c0f\u63a5\u89e6\uff0c\u90fd\u4f1a\u8ba9\u5927\u8111\u66f4\u65b0\u4e00\u70b9\u70b9\u5371\u9669\u8bc4\u4f30\u3002\u6717\u8bfb\u7ed3\u675f\u540e\uff0c\u8bf7\u5199\u4e0b\u4e00\u4e2a\u6700\u4f4e\u5f3a\u5ea6\u7684\u7ec3\u4e60\u70b9\uff0c\u4ee5\u53ca\u4e00\u4e2a\u66b4\u9732\u540e\u7684\u6062\u590d\u52a8\u4f5c\u3002\u4e0b\u6b21\u9762\u5bf9\u6050\u60e7\u65f6\uff0c\u4e0d\u5fc5\u8ffd\u6c42\u7acb\u523b\u52c7\u6562\uff0c\u53ea\u8981\u8bb0\u5f97\u547c\u5438\u3001\u505c\u7559\u3001\u8bb0\u5f55\u548c\u590d\u76d8\u3002<\/p>\n<\/div><\/details><textarea id=\"arttao-cpb-tts-114-333252-text\" style=\"display:none;\">\u8fd9\u4e00\u8bfe\u7684\u4e3b\u9898\u662f\u201c\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d\u201d\u3002\u7279\u5b9a\u6050\u60e7\u75c7\u8bfe\u7a0b\u7684\u91cd\u70b9\uff0c\u4e0d\u662f\u7b11\u8bdd\u4f60\u7684\u5bb3\u6015\uff0c\u4e5f\u4e0d\u662f\u628a\u4f60\u7a81\u7136\u63a8\u5230\u6700\u6050\u60e7\u7684\u60c5\u5883\u91cc\uff0c\u800c\u662f\u5148\u8ba9\u4f60\u7406\u89e3\uff1a\u8eab\u4f53\u4e3a\u4ec0\u4e48\u4f1a\u628a\u67d0\u4e2a\u5bf9\u8c61\u6216\u573a\u666f\u5f53\u6210\u7acb\u523b\u5371\u9669\u3002\u6050\u60e7\u4e5f\u6d3b\u5728\u80a9\u9888\u3001\u80c3\u3001\u540e\u80cc\u548c\u5589\u5499\u91cc\u3002\u672c\u8bfe\u901a\u8fc7\u611f\u89c9\u8ffd\u8e2a\u5b66\u4e60\u5bb9\u7eb3\u4e0d\u9002\uff0c\u800c\u4e0d\u662f\u9a6c\u4e0a\u538b\u4e0b\u53bb\u3002\u5f53\u6050\u60e7\u88ab\u89e6\u53d1\u65f6\uff0c\u4f60\u53ef\u80fd\u4f1a\u5fc3\u8df3\u52a0\u901f\u3001\u624b\u53d1\u6296\u3001\u80f8\u53e3\u53d1\u7d27\u3001\u80c3\u90e8\u7ffb\u6d8c\uff0c\u751a\u81f3\u60f3\u7acb\u523b\u9003\u79bb\u3002\u8bf7\u8bb0\u4f4f\uff0c\u8fd9\u4e0d\u662f\u4f60\u4e0d\u591f\u52c7\u6562\uff0c\u800c\u662f\u674f\u4ec1\u6838\u548c\u4ea4\u611f\u795e\u7ecf\u5728\u542f\u52a8\u6c42\u751f\u7a0b\u5e8f\u3002\u8eab\u4f53\u5e76\u4e0d\u77e5\u9053\u73b0\u5728\u662f\u7ec3\u4e60\uff0c\u5b83\u53ea\u77e5\u9053\u8fc7\u53bb\u7684\u5371\u9669\u8bb0\u5fc6\u88ab\u5524\u9192\u4e86\u3002\u672c\u8bfe\u7684\u7b2c\u4e00\u6b65\uff0c\u662f\u628a\u6050\u60e7\u5177\u4f53\u5316\u3002\u4e0d\u8981\u53ea\u5199\u201c\u6211\u5f88\u6015\u201d\uff0c\u800c\u662f\u5199\u6e05\u695a\uff1a\u6211\u6015\u7684\u5bf9\u8c61\u662f\u4ec0\u4e48\uff0c\u6700\u53ef\u6015\u7684\u753b\u9762\u662f\u4ec0\u4e48\uff0c\u6211\u62c5\u5fc3\u53d1\u751f\u4ec0\u4e48\uff0c\u6211\u901a\u5e38\u4f1a\u600e\u4e48\u9003\u5f00\u3002\u628a\u6050\u60e7\u5199\u51fa\u6765\uff0c\u662f\u4e3a\u4e86\u8ba9\u5b83\u4ece\u8111\u5185\u96fe\u6c14\u53d8\u6210\u53ef\u4ee5\u89c2\u5bdf\u7684\u6750\u6599\u3002\u7b2c\u4e8c\u6b65\uff0c\u662f\u5efa\u7acb\u5b89\u5168\u8fb9\u754c\u3002\u4efb\u4f55\u66b4\u9732\u7ec3\u4e60\u90fd\u4e0d\u5e94\u8be5\u4ece\u6700\u5f3a\u573a\u666f\u5f00\u59cb\u3002\u4f60\u53ef\u4ee5\u5148\u505a\u4e00\u4e2a0\u523010\u7ea7\u7684\u7126\u8651\u5c42\u7ea7\u8868\uff0c\u4ece\u770b\u56fe\u7247\u3001\u8bf4\u51fa\u540d\u79f0\u3001\u9760\u8fd1\u4e00\u70b9\u3001\u505c\u7559\u51e0\u79d2\uff0c\u5230\u771f\u5b9e\u63a5\u89e6\uff0c\u9010\u7ea7\u5b89\u6392\u3002\u6bcf\u4e00\u7ea7\u90fd\u8981\u6709\u9000\u51fa\u4fe1\u53f7\u3001\u6062\u590d\u52a8\u4f5c\u548c\u652f\u6301\u65b9\u5f0f\u3002\u5b89\u5168\u611f\u4e0d\u662f\u8f6f\u5f31\uff0c\u5b83\u662f\u91cd\u8bad\u5927\u8111\u7684\u57fa\u7840\u3002\u7b2c\u4e09\u6b65\uff0c\u662f\u5b66\u4e60\u505c\u7559\u548c\u590d\u76d8\u3002\u5f53\u8eab\u4f53\u5347\u9ad8\u65f6\uff0c\u4e0d\u9700\u8981\u9a6c\u4e0a\u8bc1\u660e\u81ea\u5df1\u6ca1\u4e8b\uff0c\u53ea\u8981\u5728\u53ef\u627f\u53d7\u8303\u56f4\u5185\u591a\u505c\u7559\u4e00\u70b9\u70b9\uff0c\u5e76\u8bb0\u5f55\u4e8b\u5b9e\uff1a\u6211\u505c\u7559\u4e86\u591a\u4e45\uff0c\u6050\u60e7\u4ece\u51e0\u5206\u964d\u5230\u51e0\u5206\uff0c\u771f\u6b63\u53d1\u751f\u4e86\u4ec0\u4e48\u3002\u590d\u76d8\u80fd\u628a\u201c\u6211\u5dee\u70b9\u6b7b\u6389\u201d\u7684\u707e\u96be\u53d9\u4e8b\uff0c\u6162\u6162\u6539\u5199\u6210\u201c\u6211\u7ecf\u5386\u4e86\u5f3a\u70c8\u8eab\u4f53\u53cd\u5e94\uff0c\u4f46\u6211\u6d3b\u8fc7\u6765\u4e86\u201d\u3002\u5982\u679c\u7ec3\u4e60\u8ba9\u4f60\u6301\u7eed\u5931\u7720\u3001\u60ca\u6050\u5931\u63a7\u3001\u5f3a\u70c8\u60f3\u4f24\u5bb3\u81ea\u5df1\uff0c\u6216\u8fc7\u53bb\u521b\u4f24\u88ab\u660e\u663e\u89e6\u53d1\uff0c\u8bf7\u6682\u505c\u7ec3\u4e60\uff0c\u5bfb\u6c42\u5fc3\u7406\u5e08\u3001\u533b\u751f\u6216\u53ef\u4fe1\u4efb\u652f\u6301\u8005\u7684\u5e2e\u52a9\u3002\u7597\u6108\u4e0d\u662f\u628a\u81ea\u5df1\u63a8\u5230\u5d29\u6e83\u8fb9\u7f18\uff0c\u800c\u662f\u5728\u8db3\u591f\u5b89\u5168\u7684\u6761\u4ef6\u4e0b\u91cd\u65b0\u5b66\u4e60\u3002\u6700\u540e\uff0c\u8bf7\u7ed9\u81ea\u5df1\u4e00\u53e5\u7a33\u5b9a\u63d0\u9192\uff1a\u6050\u60e7\u4e0d\u662f\u6211\u7684\u5168\u90e8\uff0c\u5b83\u53ea\u662f\u8eab\u4f53\u66fe\u7ecf\u5b66\u4f1a\u7684\u4e00\u79cd\u4fdd\u62a4\u65b9\u5f0f\u3002\u4eca\u5929\u53ea\u8981\u80fd\u547d\u540d\u4e00\u4e2a\u6050\u60e7\uff0c\u5b8c\u6210\u4e00\u4e2a\u6700\u5c0f\u63a5\u89e6\uff0c\u6216\u5728\u7ec3\u4e60\u540e\u6e29\u67d4\u590d\u76d8\u4e00\u6b21\uff0c\u5c31\u5df2\u7ecf\u662f\u5728\u548c\u6050\u60e7\u5efa\u7acb\u65b0\u7684\u5173\u7cfb\u3002\u6717\u8bfb\u7ed3\u675f\u540e\uff0c\u8bf7\u5199\u4e0b\u4e00\u4e2a\u6700\u4f4e\u5f3a\u5ea6\u7684\u7ec3\u4e60\u70b9\uff0c\u4ee5\u53ca\u4e00\u4e2a\u66b4\u9732\u540e\u7684\u6062\u590d\u52a8\u4f5c\u3002\u4e0b\u6b21\u9762\u5bf9\u6050\u60e7\u65f6\uff0c\u4e0d\u5fc5\u8ffd\u6c42\u7acb\u523b\u52c7\u6562\uff0c\u53ea\u8981\u8bb0\u5f97\u547c\u5438\u3001\u505c\u7559\u3001\u8bb0\u5f55\u548c\u590d\u76d8\u3002\u4f60\u6b63\u5728\u5b66\u4e60\u7684\u4e0d\u662f\u6d88\u706d\u8eab\u4f53\u53cd\u5e94\uff0c\u800c\u662f\u5728\u8eab\u4f53\u53cd\u5e94\u51fa\u73b0\u65f6\u4ecd\u7136\u4fdd\u7559\u4e00\u70b9\u9009\u62e9\u3002\u6bcf\u4e00\u6b21\u5b89\u5168\u7684\u5c0f\u63a5\u89e6\uff0c\u90fd\u4f1a\u8ba9\u5927\u8111\u66f4\u65b0\u4e00\u70b9\u70b9\u5371\u9669\u8bc4\u4f30\u3002\u6717\u8bfb\u7ed3\u675f\u540e\uff0c\u8bf7\u5199\u4e0b\u4e00\u4e2a\u6700\u4f4e\u5f3a\u5ea6\u7684\u7ec3\u4e60\u70b9\uff0c\u4ee5\u53ca\u4e00\u4e2a\u66b4\u9732\u540e\u7684\u6062\u590d\u52a8\u4f5c\u3002\u4e0b\u6b21\u9762\u5bf9\u6050\u60e7\u65f6\uff0c\u4e0d\u5fc5\u8ffd\u6c42\u7acb\u523b\u52c7\u6562\uff0c\u53ea\u8981\u8bb0\u5f97\u547c\u5438\u3001\u505c\u7559\u3001\u8bb0\u5f55\u548c\u590d\u76d8\u3002<\/textarea><\/div>\n    <script>\n    (function(){\n        var boxId = \"arttao-cpb-tts-114-333252\";\n        var restUrl = \"https:\\\/\\\/arttao.org\\\/en\\\/wp-json\\\/arttao-tts\\\/v1\\\/speech\";\n        var nonce = \"e571b9ac36\";\n\n        var btn = document.getElementById(boxId + '-btn');\n        var stopBtn = document.getElementById(boxId + '-stop');\n        var audio = document.getElementById(boxId + '-audio');\n        var statusBox = document.getElementById(boxId + '-status');\n        var textBox = document.getElementById(boxId + '-text');\n\n        if (!btn || !audio || !statusBox || !textBox) return;\n\n        function setStatus(msg, color) {\n            statusBox.innerHTML = msg;\n            statusBox.style.color = color || '#555';\n        }\n\n        function fetchAudioUrl(text, retryCount) {\n            retryCount = retryCount || 0;\n\n            if (retryCount > 20) {\n                return Promise.reject(new Error('\u751f\u6210\u8d85\u65f6\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5'));\n            }\n\n            if (retryCount === 0) {\n                setStatus('\u5df2\u70b9\u51fb\uff0c\u6b63\u5728\u8fde\u63a5 AI \u751f\u6210\u8bed\u97f3\uff0c\u8bf7\u7b49\u5f85...', '#004494');\n            }\n\n            return fetch(restUrl, {\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application\/json',\n                    'X-WP-Nonce': nonce\n                },\n                body: JSON.stringify({\n                    text: text,\n                    lang: 'auto'\n                })\n            }).then(function(response) {\n                return response.json().then(function(data) {\n\n                    if (response.ok && data && data.url) {\n                        if (data.cached) {\n                            setStatus('\u5df2\u8bfb\u53d6\u7f13\u5b58\u8bed\u97f3\uff0c\u6b63\u5728\u64ad\u653e...', '#008000');\n                        } else {\n                            setStatus('AI \u8bed\u97f3\u751f\u6210\u5b8c\u6210\uff0c\u6b63\u5728\u64ad\u653e...', '#008000');\n                        }\n                        return data.url;\n                    }\n\n                    if (response.status === 202) {\n                        var waitMs = data && data.retry_after_ms ? data.retry_after_ms : 1500;\n                        setStatus('AI \u6b63\u5728\u751f\u6210 MP3\uff0c\u8bf7\u7b49\u5f85... \u7b2c ' + (retryCount + 1) + ' \u6b21\u68c0\u67e5', '#004494');\n\n                        return new Promise(function(resolve) {\n                            setTimeout(function() {\n                                resolve();\n                            }, waitMs);\n                        }).then(function() {\n                            return fetchAudioUrl(text, retryCount + 1);\n                        });\n                    }\n\n                    throw new Error(data && data.error ? data.error : 'API \u8bf7\u6c42\u5931\u8d25');\n                });\n            });\n        }\n\n        btn.addEventListener('click', function(e) {\n            if (e && e.preventDefault) e.preventDefault();\n\n            var text = textBox.value || '';\n            text = text.replace(\/\\s+\/g, ' ').trim();\n\n            if (!text) {\n                setStatus('\u6ca1\u6709\u8bfb\u53d6\u5230\u6717\u8bfb\u6587\u5b57\u3002', '#b00020');\n                return;\n            }\n\n            btn.disabled = true;\n            btn.innerHTML = '\u6b63\u5728\u751f\u6210\uff0c\u8bf7\u7b49\u5f85...';\n\n            try {\n                audio.pause();\n                audio.removeAttribute('src');\n                audio.load();\n            } catch(err) {}\n\n            fetchAudioUrl(text, 0).then(function(url) {\n                audio.src = url;\n                audio.load();\n\n                var p = audio.play();\n\n                if (p && typeof p.catch === 'function') {\n                    p.catch(function() {\n                        setStatus('\u97f3\u9891\u5df2\u751f\u6210\u3002\u6d4f\u89c8\u5668\u963b\u6b62\u81ea\u52a8\u64ad\u653e\uff0c\u8bf7\u70b9\u51fb\u64ad\u653e\u5668\u4e0a\u7684\u64ad\u653e\u6309\u94ae\u3002', '#b00020');\n                    });\n                }\n\n                btn.disabled = false;\n                btn.innerHTML = '\u91cd\u65b0\u751f\u6210\/\u64ad\u653e\u672c\u8bfe\u8bed\u97f3';\n\n            }).catch(function(err) {\n                setStatus('\u9519\u8bef\uff1a' + (err && err.message ? err.message : err), '#b00020');\n                btn.disabled = false;\n                btn.innerHTML = '\u751f\u6210\u5e76\u64ad\u653e\u672c\u8bfe\u8bed\u97f3';\n            });\n        });\n\n        stopBtn.addEventListener('click', function(e) {\n            if (e && e.preventDefault) e.preventDefault();\n\n            try {\n                audio.pause();\n                audio.currentTime = 0;\n            } catch(err) {}\n\n            setStatus('\u5df2\u505c\u6b62\u64ad\u653e\u3002', '#555');\n        });\n\n        audio.addEventListener('ended', function() {\n            setStatus('\u64ad\u653e\u7ed3\u675f\u3002', '#555');\n        });\n\n        audio.addEventListener('error', function() {\n            setStatus('\u97f3\u9891\u64ad\u653e\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u70b9\u51fb\u751f\u6210\u3002', '#b00020');\n        });\n    })();\n    <\/script>\n\n    <\/section>\n                    <section class=\"arttao-cpb-section arttao-cpb-section-ai\">\n            <h3 class=\"arttao-cpb-section-title\">\u25cb AI\u7597\u6108\u7b54\u7591<\/h3>\n            <div class=\"arttao-cpb-section-text\"><p>\u56f4\u7ed5\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d\uff0c\u4f60\u53ef\u4ee5\u628a\u5177\u4f53\u6050\u60e7\u5bf9\u8c61\u3001\u89e6\u53d1\u573a\u666f\u3001\u8eab\u4f53\u53cd\u5e94\u548c\u6700\u5bb3\u6015\u7684\u7ed3\u679c\u544a\u8bc9AI\u3002\u6211\u4eec\u5148\u6574\u7406\u4e8b\u5b9e\u3001\u731c\u6d4b\u548c\u707e\u96be\u60f3\u8c61\uff0c\u518d\u5bfb\u627e\u6700\u4f4e\u5f3a\u5ea6\u7684\u7ec3\u4e60\u6b65\u9aa4\u3002\u8bf7\u5199\u5f97\u5177\u4f53\u4e00\u4e9b\uff0c\u4f8b\u5982\u5730\u70b9\u3001\u4eba\u7269\u3001\u8ddd\u79bb\u3001\u65f6\u957f\u548c\u4f60\u5e0c\u671b\u4fdd\u7559\u7684\u9000\u51fa\u65b9\u5f0f\u3002\u8bf7\u5199\u5f97\u5177\u4f53\u4e00\u4e9b\uff0c\u4f8b\u5982\u5730\u70b9\u3001\u4eba\u7269\u3001\u8ddd\u79bb\u3001\u65f6\u957f\u548c\u4f60\u5e0c\u671b\u4fdd\u7559\u7684\u9000\u51fa\u65b9\u5f0f\u3002<\/p><\/div>            <div class=\"arttao-cpb-shortcode\">    <div id=\"psych-ai-chat-container\">\n        <button id=\"toggle-chatbox\" style=\"font-size:1rem; background:#F0F8FF; padding:8px 20px; border: 1px solid #F5DEB3; border-radius:18px;\">\u5fc3\u7406\u7b54\u7591<\/button>\n\n    <!-- \u5bf9\u8bdd\u6846\u533a\u57df\uff1a\u9ed8\u8ba4\u9690\u85cf -->\n   \n   <div id=\"psych-ai-chat-container\" style=\"margin: 40px 0;\">\n   \n    <div id=\"psych-ai-chat\" style=\"\n        display: none;\n        margin-top: 20px;\n        border: 1px solid #F5DEB3;\n        padding: 8px;\n        background: white;\n        max-width: 750px;\n        border-radius: 30px;\n        box-shadow: 0 2px 10px rgba(0,0,0,0.05);\n    \">\n        <div id=\"chat-window\" style=\"\n            height: 300px;\n            overflow-y: auto;\n            background: #ffffff;\n            padding: 8px;\n            border: 1px solid #ddd;\n            white-space: pre-wrap;\n            font-size: 16px;\n            border-radius: 30px;\n        \"><\/div>\n\n        <div style=\"margin-top: 10px;\">\n            <textarea id=\"chat-input\" placeholder=\"\u270d \u8f93\u5165\u4f60\u7684\u95ee\u9898\u2026\" style=\"\n                width: 95%;\n                height: 60px;\n                border-radius: 20px;\n                padding: 8px;\n                font-size: 15px;\n                border: 1px solid #F5DEB3;\n            \"><\/textarea>\n            <button id=\"chat-submit\" style=\"\n                margin-top: 3px;\n                padding: 8px 16px;\n                background-color: #F0F8FF;\n                color: #2C003E;\n                border: none;\n                border-radius: 20px;\n                font-size: 14px;\n                cursor: pointer;\n            \">\u53d1\u9001<\/button>\n            \n            <!-- \u2705 \u65b0\u589e\uff1a\u4fdd\u5b58\u8bb0\u5f55\u6309\u94ae -->\n<button id=\"chat-save\" style=\"\n    margin-top: 8px;\n    padding: 8px 16px;\n    background-color: #e1ffe1;\n    color: #333;\n    border: none;\n    border-radius: 20px;\n    font-size: 14px;\n    cursor: pointer;\n\">\ud83d\udcbe \u4fdd\u5b58\u8bb0\u5f55<\/button>\n\n<!-- \u2705 \u4fdd\u5b58\u63d0\u793a\u6587\u5b57 -->\n<p id=\"save-notice\" style=\"display:none; color:green; margin-top:10px; font-weight:bold;\">\ud83d\udcbe \u6b63\u5728\u4fdd\u5b58\uff0c\u8bf7\u7a0d\u5019\u2026<\/p>\n\n\n        <\/div>\n    <\/div>\n<\/div>\n\n\n\n<script>\n\n\/\/ \u4fdd\u5b58\u8bb0\u5f55\u6309\u94ae\u903b\u8f91\nconst saveBtn = document.getElementById(\"chat-save\");\nconst saveNotice = document.getElementById(\"save-notice\");\n\nsaveBtn.addEventListener(\"click\", function () {\n    const content = document.getElementById(\"chat-window\").innerText.trim();\n    if (!content) {\n        alert(\"\u5f53\u524d\u6ca1\u6709\u5bf9\u8bdd\u5185\u5bb9\u53ef\u4fdd\u5b58\u3002\");\n        return;\n    }\n\n    saveNotice.style.display = \"block\";\n\n    const data = new URLSearchParams();\n    data.append(\"action\", \"psych_save_manual_report\");\n    data.append(\"content\", content);\n    data.append(\"nonce\", \"ad07d33073\");\n\n    fetch(\"https:\/\/arttao.org\/wp-admin\/admin-ajax.php\", {\n        method: \"POST\",\n        headers: { \"Content-Type\": \"application\/x-www-form-urlencoded\" },\n        body: data.toString()\n    })\n    .then(res => res.text())\n    .then(txt => {\n        alert(txt);\n        saveNotice.style.display = \"none\";\n    })\n    .catch(() => {\n        alert(\"\u274c \u4fdd\u5b58\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002\");\n        saveNotice.style.display = \"none\";\n    });\n});\n\n\n    document.addEventListener(\"DOMContentLoaded\", function () {\n        const toggle = document.getElementById(\"toggle-chatbox\");\n        const box = document.getElementById(\"psych-ai-chat\");\n        const win = document.getElementById(\"chat-window\");\n        const input = document.getElementById(\"chat-input\");\n        const submit = document.getElementById(\"chat-submit\");\n\n        toggle.onclick = () => {\n            box.style.display = box.style.display === \"none\" ? \"block\" : \"none\";\n        };\n\n        function append(role, text) {\n            const div = document.createElement(\"div\");\n            div.textContent = (role === 'user' ? '\ud83e\uddd1 ' : '\ud83e\udd16 ') + text;\n            div.style.margin = \"8px 0\";\n            win.appendChild(div);\n            win.scrollTop = win.scrollHeight;\n        }\n\n        submit.addEventListener(\"click\", function () {\n            const text = input.value.trim();\n            if (!text) return;\n            append('user', text);\n            input.value = \"\";\n\n            const data = new URLSearchParams();\n            data.append(\"action\", \"psych_ai_chat_ajax\");\n            data.append(\"query\", text);\n            data.append(\"nonce\", \"ad07d33073\");\n\n            fetch(\"https:\/\/arttao.org\/wp-admin\/admin-ajax.php\", {\n                method: \"POST\",\n                headers: { \"Content-Type\": \"application\/x-www-form-urlencoded\" },\n                body: data.toString()\n            })\n            .then(res => res.text())\n            .then(txt => append('ai', txt))\n            .catch(() => append('ai', '\u274c \u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002'));\n        });\n    });\n    <\/script>\n    <\/div>        <\/section>\n                            <section class=\"arttao-cpb-section arttao-cpb-section-music\">\n            <h3 class=\"arttao-cpb-section-title\">\u25cb \u97f3\u4e50\u7597\u6108\u5f15\u5bfc<\/h3>\n            <div class=\"arttao-cpb-section-text\"><p>\u5b66\u4e60\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d\u540e\uff0c\u5efa\u8bae\u9009\u62e9\u7f13\u6162\u3001\u91cd\u590d\u3001\u4f4e\u523a\u6fc0\u7684\u97f3\u4e50\u6216\u8282\u594f\uff0c\u8ba9\u5fc3\u8df3\u548c\u547c\u5438\u6162\u6162\u56de\u843d\u3002\u8046\u542c\u65f6\u4e0d\u9700\u8981\u5206\u6790\u65cb\u5f8b\uff0c\u53ea\u89c2\u5bdf\u80a9\u9888\u3001\u80f8\u53e3\u548c\u8179\u90e8\u662f\u5426\u677e\u52a8\u3002\u5982\u679c\u8eab\u4f53\u4ecd\u7136\u7d27\u7ef7\uff0c\u53ef\u4ee5\u964d\u4f4e\u97f3\u91cf\uff0c\u7f29\u77ed\u65f6\u95f4\uff0c\u8ba9\u6062\u590d\u4fdd\u6301\u53ef\u63a7\u3002\u5982\u679c\u8eab\u4f53\u4ecd\u7136\u7d27\u7ef7\uff0c\u53ef\u4ee5\u964d\u4f4e\u97f3\u91cf\uff0c\u7f29\u77ed\u65f6\u95f4\uff0c\u8ba9\u6062\u590d\u4fdd\u6301\u53ef\u63a7\u3002\u5982\u679c\u8eab\u4f53\u4ecd\u7136\u7d27\u7ef7\uff0c\u53ef\u4ee5\u964d\u4f4e\u97f3\u91cf\uff0c\u7f29\u77ed\u65f6\u95f4\uff0c\u8ba9\u6062\u590d\u4fdd\u3002<\/p><\/div>            <div class=\"arttao-cpb-shortcode\"><div style='clear: both; height: 30px;'><\/div><div style=\"text-align: left; max-width: 800px; margin: 0 auto 20px auto; font-family: Georgia, serif; padding-left: 10px;\"><div style=\"font-size: 22px; margin-bottom: 5px;\">\ud83c\udfb5 \u7b2c 114 \u8bfe\uff1a\u97f3\u9891\u64ad\u653e&nbsp;&nbsp;<\/div><div style=\"font-size: 15px; color: #444; line-height: 1.6; margin-top: 5px;\">\u58f0\u97f3\u7684\u6ce2\u52a8\uff0c\u4eff\u4f5b\u4f60\u5fc3\u8df3\u7684\u56de\u58f0\u3002<\/div><\/div><div style=\"max-width: 850px; margin: 20px auto 15px auto; padding: 20px; background-color: #ffffff; border: 1px solid #aaa; border-radius: 30px; text-align: center; box-sizing: border-box;\"><audio id=\"audio_waveform_6a10d92daeced_audio\" controls loop style=\"width: 100%; max-width: 800px; height: 30px; border-radius: 30px; display: block; margin: 0 auto; border: none;\"><source src=\"https:\/\/arttao.org\/wp-content\/uploads\/audio\/ES114.mp3\" type=\"audio\/mpeg\">\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u97f3\u9891\u64ad\u653e\u3002<\/audio><\/div><div style=\"max-width: 850px; margin: 0 auto 30px auto;\"><canvas id=\"audio_waveform_6a10d92daeced_canvas\" height=\"100\" style=\"width: 100%; background-color: white; border-radius: 8px; display: none;\"><\/canvas><\/div><script>\n    document.addEventListener('DOMContentLoaded', function () {\n        const isMobile = \/iPhone|iPad|iPod|Android\/i.test(navigator.userAgent);\n        const audio = document.getElementById('audio_waveform_6a10d92daeced_audio');\n        const canvas = document.getElementById('audio_waveform_6a10d92daeced_canvas');\n\n        if (isMobile) return;\n\n        canvas.style.display = 'block';\n        canvas.width = canvas.offsetWidth;\n        const ctx = canvas.getContext('2d');\n        let audioContext = null;\n        let analyser = null;\n        let source = null;\n        let dataArray = null;\n        let bufferLength = 0;\n        let contextInitialized = false;\n\n        function initContextAndVisualizer() {\n            if (contextInitialized) return;\n            contextInitialized = true;\n            audioContext = new (window.AudioContext || window.webkitAudioContext)();\n            analyser = audioContext.createAnalyser();\n            source = audioContext.createMediaElementSource(audio);\n            source.connect(analyser);\n            analyser.connect(audioContext.destination);\n            analyser.fftSize = 2048;\n            bufferLength = analyser.fftSize;\n            dataArray = new Uint8Array(bufferLength);\n            draw();\n        }\n\n        function draw() {\n            if (!analyser || !ctx) return;\n            requestAnimationFrame(draw);\n            analyser.getByteTimeDomainData(dataArray);\n            ctx.clearRect(0, 0, canvas.width, canvas.height);\n            ctx.lineWidth = 0.2;\n            ctx.strokeStyle = '#003344';\n            ctx.beginPath();\n            const sliceWidth = canvas.width \/ bufferLength;\n            let x = 0;\n            for (let i = 0; i < bufferLength; i++) {\n                const v = dataArray[i] \/ 128.0;\n                const y = v * canvas.height \/ 2;\n                i === 0 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\n                x += sliceWidth;\n            }\n            ctx.lineTo(canvas.width, canvas.height \/ 2);\n            ctx.stroke();\n        }\n\n        ['play', 'click', 'touchstart'].forEach(evt => {\n            audio.addEventListener(evt, () => {\n                if (!audioContext) {\n                    initContextAndVisualizer();\n                } else if (audioContext.state === 'suspended') {\n                    audioContext.resume().then(initContextAndVisualizer);\n                }\n            }, { passive: true });\n        });\n\n        audio.addEventListener('playing', () => {\n            if (!contextInitialized) initContextAndVisualizer();\n        });\n    });\n    <\/script><\/div>        <\/section>\n        \n            <section class=\"arttao-cpb-section arttao-cpb-section-tea\">\n                <h3 class=\"arttao-cpb-section-title\">\u25cb \u4e1c\u897f\u7597\u6108\u996e\u8336<\/h3>\n                <div class=\"arttao-cpb-section-text\"><p>\u672c\u8bfe\u996e\u8336\u5efa\u8bae\u9009\u62e9\u6e29\u548c\u3001\u6e05\u6de1\u3001\u4e0d\u523a\u6fc0\u7684\u70ed\u996e\uff0c\u5e2e\u52a9\u5b66\u4e60\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d\u540e\u7a33\u5b9a\u8eab\u4f53\u3002\u53ef\u9009\u62e9\u6de1\u7ea2\u8336\u3001\u6842\u82b1\u4e4c\u9f99\u3001\u6d0b\u7518\u83ca\u8336\u6216\u6e29\u6c34\uff0c\u5c11\u91cf\u6162\u996e\u3002\u996e\u7528\u65f6\u907f\u514d\u8fc7\u6d53\u3001\u8fc7\u70eb\u548c\u8fc7\u5feb\uff0c\u628a\u7b2c\u4e00\u53e3\u5f53\u4f5c\u5b89\u5168\u6682\u505c\u7684\u4fe1\u53f7\u3002\u996e\u7528\u65f6\u907f\u514d\u8fc7\u6d53\u3001\u8fc7\u70eb\u548c\u8fc7\u5feb\uff0c\u628a\u7b2c\u4e00\u53e3\u5f53\u4f5c\u5b89\u5168\u6682\u505c\u7684\u4fe1\u53f7\u3002\u996e\u7528\u65f6\u907f\u514d\u8fc7\u6d53\u3001\u8fc7\u70eb\u548c\u8fc7\u5feb\uff0c\u628a\u7b2c\u4e00\u53e3\u5f53\u4f5c\u5b89\u5168\u6682\u505c\u7684\u4fe1\u53f7\u3002<\/p><\/div>            <\/section>\n\n            <section class=\"arttao-cpb-section arttao-cpb-section-recipe\">\n                <h3 class=\"arttao-cpb-section-title\">\u25cb \u7597\u6108\u98df\u8c31<\/h3>\n                        <article class=\"arttao-cpb-recipe-card\">\n                            <h3 class=\"medit-h\">\u6843\u4ec1\u7ea2\u67a3\u7ca5<\/h3>\n                <div class=\"medit-hr\">&nbsp;<\/div>\n            \n                            <p>\u6843\u4ec1\u7ea2\u67a3\u7ca5\u9002\u5408\u4f5c\u4e3a\u672c\u8bfe\u540e\u7684\u7597\u6108\u98df\u8c31\u3002\u5b83\u4ee5\u6e29\u548c\u3001\u7a33\u5b9a\u3001\u4f4e\u8d1f\u62c5\u4e3a\u539f\u5219\uff0c\u4e3a\u5b66\u4e60\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d\u540e\u7684\u8eab\u4f53\u8865\u5145\u80fd\u91cf\uff0c\u51cf\u5c11\u7a7a\u8179\u3001\u75b2\u60eb\u548c\u7d27\u5f20\u5bf9\u7279\u5b9a\u6050\u60e7\u4f53\u9a8c\u7684\u653e\u5927\u3002\u5982\u6709\u7279\u6b8a\u4f53\u8d28\u3001\u5b55\u671f\u3001\u6162\u6027\u75c5\u6216\u7528\u836f\u60c5\u51b5\uff0c\u5efa\u8bae\u5148\u54a8\u8be2\u4e13\u4e1a\u4eba\u58eb\u3002\u8fdb\u98df\u65f6\u8bf7\u653e\u6162\u901f\u5ea6\uff0c\u89c2\u5bdf\u6050\u60e7\u5f3a\u5ea6\u3001\u547c\u5438\u3001\u9965\u997f\u3001\u6ee1\u8db3\u548c\u8eab\u4f53\u653e\u677e\u611f\u3002<\/p>\n            \n                            <div><span class=\"medit-tag\">\u7a33\u5b9a\u80fd\u91cf\u3001\u4f4e\u8d1f\u62c5\u3001\u6e29\u548c\u652f\u6301<\/span><\/div>\n            \n                    <\/article>\n                        <div class=\"arttao-cpb-shortcode\">        <div class=\"arttao-cookbook-box\" id=\"arttao_cookbook_35787\">\r\n            <button type=\"button\" class=\"arttao-cookbook-btn\">\r\n                \u6253\u5f00\u7597\u6108\u98df\u8c31            <\/button>\r\n\r\n            <div class=\"arttao-cookbook-panel\">\r\n                                    <iframe\r\n                        class=\"arttao-cookbook-frame\"\r\n                        src=\"https:\/\/arttao.org\/wp-content\/uploads\/cookbook\/114-%E6%A1%83%E4%BB%81%E7%BA%A2%E6%9E%A3%E7%B2%A5.html\"\r\n                        width=\"100%\"\r\n                        height=\"1200\"\r\n                        scrolling=\"no\"\r\n                        loading=\"lazy\">\r\n                    <\/iframe>\r\n                            <\/div>\r\n        <\/div>\r\n\r\n        <style>\r\n            #arttao_cookbook_35787.arttao-cookbook-box{\r\n                margin:18px 0;\r\n                padding:14px;\r\n                text-align:center;\r\n                border:1px solid #F5DEB3;\r\n                background:#fff;\r\n                border-radius:14px;\r\n                box-sizing:border-box;\r\n            }\r\n\r\n            #arttao_cookbook_35787 .arttao-cookbook-btn{\r\n                padding:10px 22px;\r\n                border-radius:999px;\r\n                border:1px solid #F5DEB3;\r\n                background:#FDF5E6;\r\n                color:#5a3b18;\r\n                font-size:15px;\r\n                cursor:pointer;\r\n            }\r\n\r\n            #arttao_cookbook_35787 .arttao-cookbook-panel{\r\n                display:none;\r\n                margin-top:16px;\r\n                overflow:hidden;\r\n                border:1px solid #F5DEB3;\r\n                background:#FDF5E6;\r\n                border-radius:12px;\r\n                box-sizing:border-box;\r\n            }\r\n\r\n            #arttao_cookbook_35787 .arttao-cookbook-frame{\r\n                display:block;\r\n                width:100%;\r\n                border:0;\r\n                background:#FDF5E6;\r\n                overflow:hidden;\r\n            }\r\n\r\n            #arttao_cookbook_35787 .arttao-cookbook-inline{\r\n                width:100%;\r\n                background:#FDF5E6;\r\n                text-align:left;\r\n                box-sizing:border-box;\r\n                overflow:hidden;\r\n            }\r\n\r\n            #arttao_cookbook_35787 .arttao-cookbook-error{\r\n                text-align:left;\r\n                color:#b00020;\r\n                background:#fff7f7;\r\n                border:1px solid #ffd6d6;\r\n                border-radius:10px;\r\n                padding:12px;\r\n                line-height:1.7;\r\n                font-size:13px;\r\n            }\r\n\r\n            #arttao_cookbook_35787 .arttao-cookbook-error code{\r\n                color:#555;\r\n                font-size:12px;\r\n            }\r\n        <\/style>\r\n\r\n        <script>\r\n        (function(){\r\n            var box = document.getElementById('arttao_cookbook_35787');\r\n            if(!box) return;\r\n\r\n            var btn = box.querySelector('.arttao-cookbook-btn');\r\n            var panel = box.querySelector('.arttao-cookbook-panel');\r\n            var frame = box.querySelector('.arttao-cookbook-frame');\r\n\r\n            if(!btn || !panel) return;\r\n\r\n            function resizeFrame(){\r\n                if(!frame) return;\r\n                try{\r\n                    var doc = frame.contentWindow.document;\r\n                    doc.documentElement.style.overflow = 'hidden';\r\n                    doc.body.style.overflow = 'hidden';\r\n                    doc.body.style.background = '#FDF5E6';\r\n\r\n                    var h = Math.max(\r\n                        doc.body.scrollHeight,\r\n                        doc.documentElement.scrollHeight\r\n                    );\r\n                    frame.style.height = h + 'px';\r\n                }catch(e){\r\n                    frame.style.height = '1200px';\r\n                }\r\n            }\r\n\r\n            btn.addEventListener('click', function(){\r\n                var isOpen = panel.style.display === 'block';\r\n                panel.style.display = isOpen ? 'none' : 'block';\r\n                btn.textContent = isOpen ? '\u6253\u5f00\u7597\u6108\u98df\u8c31' : '\u6536\u8d77\u7597\u6108\u98df\u8c31';\r\n\r\n                if(!isOpen && frame){\r\n                    setTimeout(resizeFrame, 500);\r\n                }\r\n            });\r\n\r\n            if(frame){\r\n                frame.addEventListener('load', resizeFrame);\r\n            }\r\n        })();\r\n        <\/script>\r\n        <\/div>            <\/section>\n\n                    <section class=\"arttao-cpb-section arttao-cpb-section-mandala\">\n            <h3 class=\"arttao-cpb-section-title\">\u25cb \u66fc\u9640\u7f57\u7597\u6108<\/h3>\n            <div class=\"arttao-cpb-section-text\"><p>\u5b8c\u6210\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d\u540e\uff0c\u8bf7\u5b89\u9759\u89c2\u770b\u66fc\u9640\u7f57\u56fe\u50cf\u3002\u4e0d\u8981\u6025\u7740\u5206\u6790\u989c\u8272\u548c\u5f62\u72b6\uff0c\u53ea\u8ba9\u89c6\u7ebf\u5728\u4e2d\u5fc3\u3001\u8fb9\u7f18\u548c\u91cd\u590d\u8282\u594f\u4e4b\u95f4\u6162\u6162\u79fb\u52a8\u3002\u5f53\u6ce8\u610f\u529b\u98d8\u8d70\u65f6\uff0c\u8f7b\u8f7b\u628a\u76ee\u5149\u5e26\u56de\u56fe\u50cf\uff0c\u8ba9\u89c2\u770b\u6210\u4e3a\u6062\u590d\u79e9\u5e8f\u7684\u7ec3\u4e60\u3002\u5f53\u6ce8\u610f\u529b\u98d8\u8d70\u65f6\uff0c\u8f7b\u8f7b\u628a\u76ee\u5149\u5e26\u56de\u56fe\u50cf\uff0c\u8ba9\u89c2\u770b\u6210\u4e3a\u6062\u590d\u79e9\u5e8f\u7684\u7ec3\u4e60\u3002\u5f53\u6ce8\u610f\u529b\u98d8\u8d70\u65f6\uff0c\u8f7b\u8f7b\u628a\u76ee\u5149\u5e26\u56de\u56fe\u50cf\uff0c\u8ba9\u89c2\u770b\u6210\u4e3a\u6062\u590d\u79e9\u5e8f\u7684\u7ec3\u4e60\u3002<\/p><\/div>            <div class=\"arttao-cpb-shortcode\">    <style>\r\n        .amc-launcher-amc_eng_6a10d92daedb3 {\r\n            max-width: 1100px; margin: 20px auto;\r\n            background: #F0F8FF;border:1px solid #AEE5E5;\r\n            border-radius: 30px; padding: 12px; text-align: center; cursor: pointer;\r\n            color: #fff; box-shadow: 0 15px 35px rgba(0,0,0,0.15); transition: all 0.4s ease;\r\n        }\r\n        .amc-launcher-amc_eng_6a10d92daedb3:hover {\r\n            transform: translateY(-3px); box-shadow: 0 18px 40px rgba(0,0,0,0.2);\r\n        }\r\n        .amc-main-container-amc_eng_6a10d92daedb3 {\r\n            max-width: 1000px; margin: 0 auto; overflow: hidden;\r\n            max-height: 0;\r\n            transition: max-height 0.8s ease;\r\n            background: #E5FFFF; border-radius: 25px;\r\n                    }\r\n        .amc-main-container-amc_eng_6a10d92daedb3.is-open {\r\n            max-height: 4000px; margin-top: 20px; border: 1px solid #FFCCFF;\r\n        }\r\n        .amc-head-bar {\r\n            display: flex; justify-content: space-between; padding: 16px 20px;\r\n            background: #AEE5E5; color: #0000FF; font-size: 13px; font-family: monospace;\r\n        }\r\n        .amc-tabs-nav {\r\n            padding: 10px; background: #f5f5f5; border-bottom: 1px solid #FFCCFF;\r\n            display: flex; gap: 6px; overflow-x: auto; white-space: nowrap;\r\n        }\r\n        .amc-tab-btn {\r\n            flex: 0 0 36px; height: 36px; background: #fff; border: 1px solid #FFCCFF;\r\n            border-radius: 10px; font-size: 12px; font-weight: bold; cursor: pointer;\r\n            display: flex; align-items: center; justify-content: center; transition: all 0.2s;\r\n        }\r\n        .amc-tab-btn:hover { background: #eee; }\r\n        .amc-tab-btn.active { background: #2A5CAA !important; color: #fff !important; border-color: #2A5CAA !important; }\r\n        .amc-body { padding: 20px; text-align: center; }\r\n        .amc-canvas-box {\r\n            width: 100%; aspect-ratio: 1\/1; background: #4682B4;\r\n            border: 1px solid rgba(198,247,247,0.22); margin-bottom: 15px; border-radius: 8px;\r\n            overflow: hidden; box-shadow: inset 0 0 24px rgba(198,247,247,0.08), 0 0 18px rgba(0,0,0,0.28);\r\n        }\r\n        .amc-canvas-box canvas { width: 100%; height: 100%; display: block; background: #4682B4; }\r\n        .amc-status-note { font-size: 12px; color: #666; margin-top: 10px; font-family: monospace; }\r\n        .amc-music-button-amc_eng_6a10d92daedb3{\r\n            margin-top:10px; padding:6px 16px; border-radius:16px; border:1px solid #FFCCFF;\r\n            background:#D9FFFF; color:#330000; cursor:pointer; font-size:12px; font-weight:bold;\r\n        }\r\n        .amc-music-button-amc_eng_6a10d92daedb3.ready{background:#AEE5E5;color:#000080;}\r\n        .amc-gate-notice{\r\n            display:none; margin:0 0 14px; padding:12px 14px;\r\n            border:1px solid #f5deb3; border-radius:14px; background:#fffaf2;\r\n            color:#7a4f01; line-height:1.6; text-align:left;\r\n        }\r\n    <\/style>\r\n\r\n   <div class=\"amc-launcher-amc_eng_6a10d92daedb3\" id=\"launch-amc_eng_6a10d92daedb3\" style=\"display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:70px;\"> \r\n    <h2 class=\"amc-main-title\" style=\"margin:0; font-size:24px; text-align:center;\">\u25cf AI \u5e73\u8861\u5fc3\u7406\u6a21\u62df\u5f15\u64ce \u25cf<\/h2>\r\n    <p class=\"amc-main-subtitle\" style=\"margin:10px 0 0; opacity:.8; font-size:13px; text-align:center; color:#8B5A2B;\">AI \u5e73\u8861\u5fc3\u7406\u6a21\u62df\u5668<\/p>\r\n<\/div>\r\n\r\n    <div class=\"amc-main-container-amc_eng_6a10d92daedb3 \" id=\"main-amc_eng_6a10d92daedb3\" data-amc-root=\"1\">\r\n        <div class=\"amc-head-bar\">\r\n            <span>STRUCTURE: <strong id=\"cur-letter-amc_eng_6a10d92daedb3\">A<\/strong><\/span>\r\n            <span style=\"cursor:pointer\" id=\"toggle-amc_eng_6a10d92daedb3\">\u8fd4\u56de\u5c01\u9762 \u2715<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"amc-tabs-nav\">\r\n                            <button type=\"button\" class=\"amc-tab-btn active\" data-letter=\"A\">\r\n                    A                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"B\">\r\n                    B                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"C\">\r\n                    C                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"D\">\r\n                    D                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"E\">\r\n                    E                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"F\">\r\n                    F                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"G\">\r\n                    G                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"H\">\r\n                    H                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"I\">\r\n                    I                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"J\">\r\n                    J                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"K\">\r\n                    K                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"L\">\r\n                    L                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"M\">\r\n                    M                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"N\">\r\n                    N                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"O\">\r\n                    O                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"P\">\r\n                    P                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"Q\">\r\n                    Q                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"R\">\r\n                    R                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"S\">\r\n                    S                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"T\">\r\n                    T                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"U\">\r\n                    U                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"V\">\r\n                    V                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"W\">\r\n                    W                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"X\">\r\n                    X                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"Y\">\r\n                    Y                <\/button>\r\n                            <button type=\"button\" class=\"amc-tab-btn \" data-letter=\"Z\">\r\n                    Z                <\/button>\r\n                    <\/div>\r\n\r\n        <div class=\"amc-body\">\r\n            <div class=\"amc-gate-notice\" id=\"notice-amc_eng_6a10d92daedb3\"><\/div>\r\n            <div class=\"amc-canvas-box\">\r\n                <canvas id=\"cv-amc_eng_6a10d92daedb3\"><\/canvas>\r\n            <\/div>\r\n            <div class=\"amc-status-note\" id=\"note-amc_eng_6a10d92daedb3\">Ready<\/div>\r\n            <button type=\"button\" class=\"amc-music-button-amc_eng_6a10d92daedb3\" id=\"music-btn-amc_eng_6a10d92daedb3\">\u5f00\u542f\u97f3\u4e50 \/ Test Music<\/button>\r\n            <audio id=\"music-amc_eng_6a10d92daedb3\" src=\"https:\/\/arttao.org\/wp-content\/uploads\/2026\/05\/ES266.mp3\" preload=\"auto\" playsinline><\/audio>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n    (function(){\r\n        \"use strict\";\r\n\r\n        var uid = \"amc_eng_6a10d92daedb3\";\r\n        var AJAX_URL = \"https:\/\/arttao.org\/wp-admin\/admin-ajax.php\";\r\n        var AJAX_NONCE = \"4398cdf297\";\r\n        var PAUSE_MS = 5000;\r\n        var MUSIC_MAP = {\"A\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES266.mp3\",\"B\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES2.mp3\",\"C\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES3.mp3\",\"D\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES4.mp3\",\"E\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES6.mp3\",\"F\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES265.mp3\",\"G\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES7.mp3\",\"H\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES9.mp3\",\"I\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES10.mp3\",\"J\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES11.mp3\",\"K\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES12.mp3\",\"L\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES13.mp3\",\"M\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES14.mp3\",\"N\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES15.mp3\",\"O\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES16.mp3\",\"P\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES17.mp3\",\"Q\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES20.mp3\",\"R\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES21.mp3\",\"S\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES22.mp3\",\"T\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES23.mp3\",\"U\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES24.mp3\",\"V\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES25.mp3\",\"W\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES264.mp3\",\"X\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES263.mp3\",\"Y\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES262.mp3\",\"Z\":\"https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ES261.mp3\"} || {};\r\n        var HAS_ANY_CUSTOM_MUSIC = true;\r\n\r\n        var launcher = document.getElementById('launch-' + uid);\r\n        var mainContainer = document.getElementById('main-' + uid);\r\n        var toggleBtn = document.getElementById('toggle-' + uid);\r\n        var canvas = document.getElementById('cv-' + uid);\r\n        var curLetterLabel = document.getElementById('cur-letter-' + uid);\r\n        var note = document.getElementById('note-' + uid);\r\n        var notice = document.getElementById('notice-' + uid);\r\n        var music = document.getElementById('music-' + uid);\r\n        var musicBtn = document.getElementById('music-btn-' + uid);\r\n\r\n        if(!canvas || !mainContainer) return;\r\n        var ctx = canvas.getContext('2d');\r\n        if(!ctx) return;\r\n\r\n        var LOGICAL = 1000;\r\n        var SPEED = 0.006;\r\n        var REPEAT_TOTAL = 3;\r\n\r\n        var BG_COLOR = \"#003344\";\r\n        var LINE_COLOR = \"#FFFF99\";\r\n        var RUNNER_COLOR = \"#FF5C7A\";\r\n        var LINEW = 1.6;\r\n\r\n        var activeLetter = \"A\";\r\n        var currentIndex = 0;\r\n        var progress = 0;\r\n        var repeatIndex = 1;\r\n        var raf = 0;\r\n        var pauseTimer = 0;\r\n        var musicReady = false;\r\n        var unlockedMusicSrc = '';\r\n        var audioUnlocked = false;\r\n        var audioCtx = null;\r\n        var builtInMusicTimers = [];\r\n        var builtInMusicNodes = [];\r\n\r\n        var unlocked = false;\r\n        var unlockPending = false;\r\n        var stopped = false;\r\n\r\n        function clearPauseTimer(){\r\n            if (pauseTimer) {\r\n                clearTimeout(pauseTimer);\r\n                pauseTimer = 0;\r\n            }\r\n        }\r\n\r\n        function getAudioContext(){\r\n            if (audioCtx) return audioCtx;\r\n            var AC = window.AudioContext || window.webkitAudioContext;\r\n            if (!AC) return null;\r\n            audioCtx = new AC();\r\n            return audioCtx;\r\n        }\r\n\r\n        function markMusicReady(text){\r\n            if (musicBtn) {\r\n                musicBtn.classList.add('ready');\r\n                musicBtn.textContent = text || '\u97f3\u4e50\u5df2\u5f00\u542f \/ Music Ready';\r\n            }\r\n        }\r\n\r\n        function unlockBuiltInMusic(){\r\n            var ac = getAudioContext();\r\n            if (!ac) return false;\r\n\r\n            function ping(){\r\n                try {\r\n                    var osc = ac.createOscillator();\r\n                    var gain = ac.createGain();\r\n                    gain.gain.setValueAtTime(0.0001, ac.currentTime);\r\n                    osc.frequency.setValueAtTime(440, ac.currentTime);\r\n                    osc.connect(gain);\r\n                    gain.connect(ac.destination);\r\n                    osc.start(ac.currentTime);\r\n                    osc.stop(ac.currentTime + 0.035);\r\n                    setTimeout(function(){\r\n                        try { osc.disconnect(); } catch(e) {}\r\n                        try { gain.disconnect(); } catch(e) {}\r\n                    }, 120);\r\n                } catch(e) {}\r\n            }\r\n\r\n            if (ac.state === 'suspended' && ac.resume) {\r\n                ac.resume().then(function(){\r\n                    audioUnlocked = true;\r\n                    ping();\r\n                    markMusicReady();\r\n                }).catch(function(){});\r\n            } else {\r\n                audioUnlocked = true;\r\n                ping();\r\n                markMusicReady();\r\n            }\r\n            return true;\r\n        }\r\n\r\n        function getCurrentMusicUrl(){\r\n            return (MUSIC_MAP && MUSIC_MAP[activeLetter]) ? MUSIC_MAP[activeLetter] : '';\r\n        }\r\n\r\n        function setCurrentMusicSrc(){\r\n            if (!music) return '';\r\n            var src = getCurrentMusicUrl();\r\n            if (src && music.getAttribute('src') !== src) {\r\n                try {\r\n                    music.pause();\r\n                    music.currentTime = 0;\r\n                } catch(e) {}\r\n                music.setAttribute('src', src);\r\n                musicReady = false;\r\n                unlockedMusicSrc = '';\r\n            }\r\n            return src;\r\n        }\r\n\r\n        function unlockCustomMusic(){\r\n            var currentSrc = setCurrentMusicSrc();\r\n            if (!music || !currentSrc || (musicReady && unlockedMusicSrc === currentSrc)) return;\r\n            try {\r\n                music.load();\r\n                music.muted = false;\r\n                music.volume = 0.01;\r\n                var p = music.play();\r\n                if (p && typeof p.then === 'function') {\r\n                    p.then(function(){\r\n                        setTimeout(function(){\r\n                            try {\r\n                                music.pause();\r\n                                music.currentTime = 0;\r\n                                music.volume = 0.85;\r\n                                musicReady = true;\r\n                                unlockedMusicSrc = currentSrc;\r\n                                markMusicReady();\r\n                            } catch(e) {}\r\n                        }, 80);\r\n                    }).catch(function(){\r\n                        \/\/ \u81ea\u5b9a\u4e49 MP3 \u88ab\u6d4f\u89c8\u5668\u62e6\u622a\u65f6\uff0c\u6700\u540e\u4f1a\u81ea\u52a8\u9000\u56de\u5185\u7f6e\u97f3\u4e50\u3002\r\n                    });\r\n                } else {\r\n                    setTimeout(function(){\r\n                        try {\r\n                            music.pause();\r\n                            music.currentTime = 0;\r\n                            music.volume = 0.85;\r\n                            musicReady = true;\r\n                            unlockedMusicSrc = currentSrc;\r\n                            markMusicReady();\r\n                        } catch(e) {}\r\n                    }, 80);\r\n                }\r\n            } catch(e) {}\r\n        }\r\n\r\n        function stopBuiltInMusic(){\r\n            builtInMusicTimers.forEach(function(t){ clearTimeout(t); });\r\n            builtInMusicTimers = [];\r\n            builtInMusicNodes.forEach(function(n){\r\n                try { n.stop(0); } catch(e) {}\r\n                try { n.disconnect(); } catch(e) {}\r\n            });\r\n            builtInMusicNodes = [];\r\n        }\r\n\r\n        function stopMusic(){\r\n            stopBuiltInMusic();\r\n            if (!music) return;\r\n            try {\r\n                music.pause();\r\n                music.currentTime = 0;\r\n            } catch(e) {}\r\n        }\r\n\r\n        function unlockMusicByFirstClick(){\r\n            if (audioUnlocked && musicReady) return;\r\n            unlockBuiltInMusic();\r\n            unlockCustomMusic();\r\n        }\r\n\r\n        function playBuiltInMusic(){\r\n            var ac = getAudioContext();\r\n            if (!ac) {\r\n                if (note) note.textContent = 'This browser does not support built-in audio.';\r\n                return false;\r\n            }\r\n\r\n            if (ac.state === 'suspended') {\r\n                if (note) note.textContent = 'Music is blocked. Click \u201c\u5f00\u542f\u97f3\u4e50 \/ Test Music\u201d, then run again.';\r\n                return false;\r\n            }\r\n\r\n            stopBuiltInMusic();\r\n\r\n            var notes = [\r\n                261.63, 329.63, 392.00, 523.25,\r\n                392.00, 329.63, 293.66, 349.23,\r\n                440.00, 392.00, 329.63, 261.63\r\n            ];\r\n            var now = ac.currentTime + 0.08;\r\n\r\n            notes.forEach(function(freq, i){\r\n                var start = now + i * 0.50;\r\n                var osc = ac.createOscillator();\r\n                var gain = ac.createGain();\r\n\r\n                osc.type = 'sine';\r\n                osc.frequency.setValueAtTime(freq, start);\r\n\r\n                gain.gain.setValueAtTime(0.0001, start);\r\n                gain.gain.exponentialRampToValueAtTime(0.32, start + 0.07);\r\n                gain.gain.exponentialRampToValueAtTime(0.0001, start + 0.46);\r\n\r\n                osc.connect(gain);\r\n                gain.connect(ac.destination);\r\n\r\n                osc.start(start);\r\n                osc.stop(start + 0.50);\r\n                builtInMusicNodes.push(osc);\r\n\r\n                var timer = setTimeout(function(){\r\n                    try { osc.disconnect(); } catch(e) {}\r\n                    try { gain.disconnect(); } catch(e) {}\r\n                }, (i * 500) + 900);\r\n                builtInMusicTimers.push(timer);\r\n            });\r\n\r\n            if (note) note.textContent = 'Simulation Complete: ' + activeLetter + ' | music playing';\r\n            return true;\r\n        }\r\n\r\n        function playCompleteMusic(){\r\n            stopBuiltInMusic();\r\n\r\n            var currentSrc = setCurrentMusicSrc();\r\n            if (currentSrc && music && music.getAttribute('src')) {\r\n                try {\r\n                    music.pause();\r\n                    music.currentTime = 0;\r\n                    music.muted = false;\r\n                    music.volume = 0.85;\r\n                    var p = music.play();\r\n                    if (p && typeof p.then === 'function') {\r\n                        p.then(function(){\r\n                            if (note) note.textContent = 'Simulation Complete: ' + activeLetter + ' | MP3 music playing';\r\n                        }).catch(function(){\r\n                            playBuiltInMusic();\r\n                        });\r\n                    }\r\n                    return;\r\n                } catch(e) {\r\n                    playBuiltInMusic();\r\n                    return;\r\n                }\r\n            }\r\n\r\n            playBuiltInMusic();\r\n        }\r\n\r\n        var TPL = {\r\n            \r\n            'A': [\r\n                {x:921,y:94},{x:386,y:642}, {x:386,y:642},{x:921,y:893},\r\n                {x:921,y:893},{x:920,y:94}, {x:920,y:94},{x:344,y:95},\r\n                {x:344,y:95},{x:628,y:346}, {x:628,y:346},{x:91,y:95},\r\n                {x:91,y:95},{x:88,y:894}, {x:88,y:894},{x:422,y:419},\r\n                {x:422,y:419},{x:91,y:96}, {x:91,y:96},{x:346,y:95},\r\n                {x:346,y:95},{x:88,y:894}, {x:88,y:894},{x:628,y:347},\r\n                {x:628,y:347},{x:88,y:894}, {x:88,y:894},{x:670,y:893},\r\n                {x:670,y:893},{x:920,y:96}, {x:920,y:96},{x:588,y:573},\r\n                {x:588,y:573},{x:920,y:893}, {x:920,y:893},{x:387,y:642},\r\n                {x:387,y:642},{x:669,y:893}\r\n            ]\r\n        };\r\nTPL['B'] = [\r\n  {x:60,y:336},{x:273,y:817}, {x:273,y:817},{x:201,y:926},\r\n  {x:201,y:926},{x:57,y:601}, {x:57,y:601},{x:132,y:496},\r\n  {x:132,y:496},{x:563,y:654}, {x:563,y:654},{x:348,y:179},\r\n  {x:348,y:179},{x:207,y:125}, {x:207,y:125},{x:60,y:334},\r\n  {x:60,y:334},{x:205,y:387}, {x:205,y:387},{x:420,y:72},\r\n  {x:420,y:72},{x:491,y:229}, {x:491,y:229},{x:419,y:336},\r\n  {x:419,y:336},{x:853,y:491}, {x:853,y:491},{x:924,y:386},\r\n  {x:924,y:386},{x:776,y:68}, {x:776,y:68},{x:706,y:175},\r\n  {x:706,y:175},{x:420,y:73}, {x:420,y:73},{x:491,y:229},\r\n  {x:491,y:229},{x:924,y:387}, {x:924,y:387},{x:854,y:491},\r\n  {x:854,y:491},{x:926,y:652}, {x:926,y:652},{x:781,y:598},\r\n  {x:781,y:598},{x:563,y:926}, {x:563,y:926},{x:130,y:763},\r\n  {x:130,y:763},{x:58,y:602}, {x:58,y:602},{x:491,y:761},\r\n  {x:491,y:761},{x:563,y:653}, {x:563,y:653},{x:638,y:816},\r\n  {x:638,y:816},{x:778,y:881}, {x:778,y:881},{x:925,y:652},\r\n  {x:925,y:652},{x:782,y:598}, {x:782,y:598},{x:705,y:437},\r\n  {x:705,y:437},{x:560,y:387}, {x:560,y:387},{x:709,y:706},\r\n  {x:709,y:706},{x:563,y:926}, {x:563,y:926},{x:275,y:284},\r\n  {x:275,y:284},{x:205,y:387}, {x:205,y:387},{x:411,y:869},\r\n  {x:563,y:926},{x:782,y:598}, {x:782,y:598},{x:706,y:438},\r\n  {x:706,y:438},{x:855,y:492}, {x:855,y:492},{x:706,y:176},\r\n  {x:706,y:176},{x:851,y:228}\r\n];\r\nTPL['C'] = [\r\n  {x:379,y:2},{x:882,y:335}, {x:882,y:335},{x:817,y:919},\r\n  {x:817,y:919},{x:187,y:920}, {x:187,y:920},{x:443,y:250},\r\n  {x:443,y:250},{x:189,y:80}, {x:189,y:80},{x:125,y:670},\r\n  {x:125,y:670},{x:377,y:840}, {x:377,y:840},{x:442,y:250},\r\n  {x:442,y:250},{x:567,y:335}, {x:567,y:335},{x:567,y:755},\r\n  {x:567,y:755},{x:629,y:168}, {x:629,y:168},{x:816,y:919},\r\n  {x:816,y:919},{x:440,y:670}, {x:440,y:670},{x:442,y:249},\r\n  {x:442,y:249},{x:190,y:80}, {x:190,y:80},{x:377,y:839},\r\n  {x:377,y:839},{x:620,y:999}, {x:620,y:999},{x:881,y:334},\r\n  {x:881,y:334},{x:818,y:918}, {x:818,y:918},{x:817,y:84},\r\n  {x:817,y:84},{x:190,y:80}, {x:190,y:80},{x:187,y:919},\r\n  {x:187,y:919},{x:567,y:755}, {x:567,y:755},{x:817,y:84},\r\n  {x:817,y:84},{x:379,y:3}, {x:379,y:3},{x:126,y:672},\r\n  {x:126,y:672},{x:250,y:755}, {x:250,y:755},{x:443,y:250},\r\n  {x:443,y:250},{x:817,y:84}, {x:817,y:84},{x:817,y:84},\r\n  {x:817,y:84},{x:818,y:87}\r\n];\r\nTPL['D'] = [\r\n  {x:180,y:68},{x:189,y:715}, {x:189,y:715},{x:311,y:715},\r\n  {x:311,y:715},{x:308,y:68}, {x:308,y:68},{x:182,y:69},\r\n  {x:182,y:69},{x:60,y:189}, {x:60,y:189},{x:61,y:762},\r\n  {x:61,y:762},{x:639,y:765}, {x:639,y:765},{x:560,y:681},\r\n  {x:560,y:681},{x:343,y:684}, {x:343,y:684},{x:313,y:715},\r\n  {x:313,y:715},{x:189,y:715}, {x:189,y:715},{x:61,y:763},\r\n  {x:61,y:763},{x:192,y:880}, {x:192,y:880},{x:638,y:882},\r\n  {x:638,y:882},{x:639,y:765}, {x:639,y:765},{x:689,y:820},\r\n  {x:689,y:820},{x:688,y:945}, {x:688,y:945},{x:812,y:946},\r\n  {x:812,y:946},{x:940,y:820}, {x:940,y:820},{x:940,y:262},\r\n  {x:940,y:262},{x:820,y:137}, {x:820,y:137},{x:359,y:137},\r\n  {x:359,y:137},{x:361,y:262}, {x:361,y:262},{x:940,y:262},\r\n  {x:940,y:262},{x:818,y:311}, {x:818,y:311},{x:812,y:946},\r\n  {x:812,y:946},{x:688,y:945}, {x:688,y:945},{x:691,y:311},\r\n  {x:691,y:311},{x:819,y:311}, {x:819,y:311},{x:691,y:311},\r\n  {x:691,y:311},{x:561,y:437}, {x:561,y:437},{x:560,y:682},\r\n  {x:560,y:682},{x:344,y:684}, {x:344,y:684},{x:435,y:594},\r\n  {x:435,y:594},{x:436,y:342}, {x:436,y:342},{x:309,y:210},\r\n  {x:309,y:210},{x:436,y:343}, {x:436,y:343},{x:659,y:343}\r\n];\r\nTPL['E'] = [\r\n  {x:150,y:406},{x:264,y:359}, {x:264,y:359},{x:261,y:144},\r\n  {x:261,y:144},{x:149,y:146}, {x:149,y:146},{x:150,y:409},\r\n  {x:150,y:409},{x:607,y:920}, {x:607,y:920},{x:350,y:308},\r\n  {x:350,y:308},{x:722,y:147}, {x:722,y:147},{x:608,y:919},\r\n  {x:608,y:919},{x:832,y:917}, {x:832,y:917},{x:723,y:147},\r\n  {x:723,y:147},{x:267,y:85}, {x:267,y:85},{x:831,y:85},\r\n  {x:831,y:85},{x:834,y:917}, {x:834,y:917},{x:155,y:916},\r\n  {x:155,y:916},{x:150,y:407}, {x:150,y:407},{x:275,y:550},\r\n  {x:275,y:550},{x:156,y:916}, {x:153,y:918},{x:150,y:145}, \r\n  {x:150,y:145},{x:264,y:84},  {x:264,y:84},{x:261,y:145}, \r\n  {x:261,y:145},{x:348,y:307}\r\n];\r\nTPL['F'] = [\r\n  {x:56,y:53},{x:949,y:56}, {x:949,y:56},{x:946,y:944},\r\n  {x:946,y:944},{x:608,y:944}, {x:608,y:944},{x:919,y:256},\r\n  {x:919,y:256},{x:412,y:29}, {x:412,y:29},{x:87,y:758},\r\n  {x:87,y:758},{x:588,y:981}, {x:588,y:981},{x:609,y:944},\r\n  {x:609,y:944},{x:56,y:946}, {x:56,y:946},{x:54,y:53},\r\n  {x:54,y:53},{x:400,y:54}, {x:400,y:54},{x:341,y:188},\r\n  {x:341,y:188},{x:84,y:322}, {x:84,y:322},{x:81,y:760},\r\n  {x:81,y:760},{x:341,y:629}, {x:341,y:629},{x:340,y:191},\r\n  {x:340,y:191},{x:665,y:335}, {x:665,y:335},{x:664,y:822},\r\n  {x:664,y:822},{x:915,y:690}, {x:915,y:690},{x:919,y:254},\r\n  {x:919,y:254},{x:665,y:386}, {x:665,y:386},{x:340,y:239},\r\n  {x:340,y:239},{x:341,y:629}, {x:341,y:629},{x:665,y:775},\r\n  {x:665,y:775},{x:665,y:822}, {x:665,y:822},{x:341,y:680},\r\n  {x:341,y:680},{x:341,y:630}\r\n];\r\nTPL['G'] = [\r\n  {x:71,y:47},{x:357,y:287}, {x:357,y:287},{x:651,y:290},\r\n  {x:651,y:290},{x:930,y:47}, {x:930,y:47},{x:73,y:47},\r\n  {x:73,y:47},{x:72,y:287}, {x:72,y:287},{x:360,y:287},\r\n  {x:360,y:287},{x:791,y:639}, {x:791,y:639},{x:789,y:836},\r\n  {x:789,y:836},{x:653,y:719}, {x:653,y:719},{x:359,y:718},\r\n  {x:359,y:718},{x:357,y:295}, {x:357,y:295},{x:73,y:295},\r\n  {x:73,y:295},{x:71,y:952}, {x:71,y:952},{x:359,y:718},\r\n  {x:359,y:718},{x:653,y:718}, {x:653,y:718},{x:652,y:47},\r\n  {x:652,y:47},{x:931,y:47}, {x:931,y:47},{x:937,y:951},\r\n  {x:937,y:951},{x:359,y:952}, {x:359,y:952},{x:359,y:835},\r\n  {x:359,y:835},{x:788,y:837}, {x:788,y:837},{x:937,y:951},\r\n  {x:937,y:951},{x:79,y:955}, {x:79,y:955},{x:359,y:728},\r\n  {x:359,y:728},{x:359,y:954}, {x:359,y:954},{x:359,y:954},\r\n  {x:359,y:954},{x:653,y:953}, {x:653,y:953},{x:654,y:719},\r\n  {x:654,y:719},{x:654,y:720}\r\n];\r\nTPL['H'] = [\r\n  {x:32,y:35},{x:964,y:35}, {x:964,y:35},{x:963,y:180},\r\n  {x:963,y:180},{x:842,y:181}, {x:842,y:181},{x:502,y:366},\r\n  {x:502,y:366},{x:501,y:637}, {x:501,y:637},{x:667,y:637},\r\n  {x:667,y:637},{x:665,y:94}, {x:665,y:94},{x:167,y:364},\r\n  {x:167,y:364},{x:503,y:365}, {x:503,y:365},{x:501,y:639},\r\n  {x:501,y:639},{x:165,y:818}, {x:165,y:818},{x:166,y:364},\r\n  {x:166,y:364},{x:30,y:364}, {x:30,y:364},{x:34,y:966},\r\n  {x:34,y:966},{x:964,y:966}, {x:964,y:966},{x:964,y:180},\r\n  {x:964,y:180},{x:843,y:181}, {x:843,y:181},{x:842,y:637},\r\n  {x:842,y:637},{x:331,y:911}, {x:331,y:911},{x:334,y:365},\r\n  {x:334,y:365},{x:666,y:365}, {x:666,y:365},{x:666,y:636},\r\n  {x:666,y:636},{x:964,y:637}, {x:964,y:637},{x:964,y:35},\r\n  {x:964,y:35},{x:30,y:35}, {x:30,y:35},{x:30,y:364},\r\n  {x:30,y:364},{x:33,y:819}, {x:33,y:819},{x:165,y:819}\r\n];\r\nTPL['I'] = [\r\n  {x:39,y:27},{x:329,y:228}, {x:329,y:228},{x:626,y:28},\r\n  {x:626,y:28},{x:41,y:27}, {x:41,y:27},{x:42,y:235},\r\n  {x:42,y:235},{x:326,y:435}, {x:326,y:435},{x:329,y:228},\r\n  {x:329,y:228},{x:624,y:441}, {x:624,y:441},{x:326,y:434},\r\n  {x:326,y:434},{x:327,y:914}, {x:327,y:914},{x:521,y:839},\r\n  {x:521,y:839},{x:521,y:761}, {x:521,y:761},{x:624,y:761},\r\n  {x:624,y:761},{x:625,y:442}, {x:625,y:442},{x:676,y:479},\r\n  {x:676,y:479},{x:677,y:919}, {x:677,y:919},{x:328,y:916},\r\n  {x:328,y:916},{x:42,y:721}, {x:42,y:721},{x:42,y:234},\r\n  {x:42,y:234},{x:41,y:977}, {x:41,y:977},{x:677,y:971},\r\n  {x:677,y:971},{x:676,y:481}, {x:676,y:481},{x:625,y:442},\r\n  {x:625,y:442},{x:710,y:442}, {x:710,y:442},{x:713,y:763},\r\n  {x:713,y:763},{x:872,y:764}, {x:872,y:764},{x:867,y:95},\r\n  {x:867,y:95},{x:798,y:44}, {x:798,y:44},{x:603,y:43},\r\n  {x:603,y:43},{x:627,y:28}, {x:627,y:28},{x:962,y:28},\r\n  {x:962,y:28},{x:962,y:970}, {x:962,y:970},{x:872,y:916},\r\n  {x:872,y:916},{x:678,y:919}, {x:678,y:919},{x:714,y:763},\r\n  {x:714,y:763},{x:873,y:763}, {x:873,y:763},{x:874,y:917},\r\n  {x:874,y:917},{x:962,y:970}, {x:962,y:970},{x:677,y:971},\r\n  {x:677,y:971},{x:678,y:970}\r\n];\r\nTPL['J'] = [\r\n  {x:93,y:164},{x:117,y:190}, {x:117,y:190},{x:887,y:188},\r\n  {x:887,y:188},{x:886,y:807}, {x:886,y:807},{x:460,y:634},\r\n  {x:460,y:634},{x:282,y:777}, {x:282,y:777},{x:202,y:738},\r\n  {x:202,y:738},{x:377,y:600}, {x:377,y:600},{x:460,y:634},\r\n  {x:460,y:634},{x:545,y:567}, {x:545,y:567},{x:804,y:672},\r\n  {x:804,y:672},{x:804,y:807}, {x:804,y:807},{x:115,y:809},\r\n  {x:115,y:809},{x:203,y:738}, {x:203,y:738},{x:202,y:223},\r\n  {x:202,y:223},{x:546,y:363}, {x:546,y:363},{x:547,y:566},\r\n  {x:547,y:566},{x:461,y:634}, {x:461,y:634},{x:460,y:432},\r\n  {x:460,y:432},{x:725,y:223}, {x:725,y:223},{x:803,y:257},\r\n  {x:803,y:257},{x:630,y:397}, {x:630,y:397},{x:546,y:363},\r\n  {x:546,y:363},{x:460,y:432}, {x:460,y:432},{x:116,y:292},\r\n  {x:116,y:292},{x:117,y:809}, {x:117,y:809},{x:804,y:807},\r\n  {x:804,y:807},{x:804,y:256}, {x:804,y:256},{x:887,y:188},\r\n  {x:887,y:188},{x:912,y:165}, {x:912,y:165},{x:910,y:833},\r\n  {x:910,y:833},{x:92,y:836}, {x:92,y:836},{x:94,y:166},\r\n  {x:94,y:166},{x:912,y:163}, {x:912,y:163},{x:910,y:715},\r\n  {x:910,y:715},{x:804,y:673}, {x:804,y:673},{x:804,y:773},\r\n  {x:804,y:773},{x:886,y:808}, {x:886,y:808},{x:804,y:806},\r\n  {x:804,y:806},{x:804,y:833}, {x:804,y:833},{x:92,y:836},\r\n  {x:92,y:836},{x:94,y:166}, {x:94,y:166},{x:117,y:190},\r\n  {x:117,y:190},{x:117,y:809}, {x:117,y:809},{x:92,y:830}\r\n];\r\nTPL['K'] = [\r\n  {x:317,y:164},{x:573,y:337}, {x:573,y:337},{x:665,y:293},\r\n  {x:665,y:293},{x:602,y:40}, {x:602,y:40},{x:126,y:250},\r\n  {x:126,y:250},{x:189,y:507}, {x:189,y:507},{x:318,y:166},\r\n  {x:318,y:166},{x:392,y:416}, {x:392,y:416},{x:188,y:507},\r\n  {x:188,y:507},{x:444,y:676}, {x:444,y:676},{x:825,y:505},\r\n  {x:825,y:505},{x:571,y:336}, {x:571,y:336},{x:189,y:508},\r\n  {x:189,y:508},{x:298,y:942}, {x:298,y:942},{x:411,y:971},\r\n  {x:411,y:971},{x:349,y:718}, {x:349,y:718},{x:445,y:677},\r\n  {x:445,y:677},{x:698,y:841}, {x:698,y:841},{x:410,y:971},\r\n  {x:410,y:971},{x:887,y:755}, {x:887,y:755},{x:824,y:506},\r\n  {x:824,y:506},{x:700,y:841}, {x:700,y:841},{x:620,y:597},\r\n  {x:620,y:597},{x:824,y:504}, {x:824,y:504},{x:717,y:77},\r\n  {x:717,y:77},{x:602,y:40}\r\n];\r\nTPL['L'] = [\r\n  {x:692,y:443},{x:793,y:41}, {x:793,y:41},{x:443,y:192},\r\n  {x:443,y:192},{x:561,y:500}, {x:561,y:500},{x:911,y:348},\r\n  {x:911,y:348},{x:794,y:808}, {x:794,y:808},{x:443,y:959},\r\n  {x:443,y:959},{x:410,y:873}, {x:410,y:873},{x:210,y:960},\r\n  {x:210,y:960},{x:310,y:558}, {x:310,y:558},{x:90,y:654},\r\n  {x:90,y:654},{x:208,y:193}, {x:208,y:193},{x:559,y:41},\r\n  {x:559,y:41},{x:594,y:127}, {x:594,y:127},{x:443,y:192},\r\n  {x:443,y:192},{x:443,y:500}, {x:443,y:500},{x:309,y:559},\r\n  {x:309,y:559},{x:443,y:500}, {x:443,y:500},{x:561,y:809},\r\n  {x:561,y:809},{x:410,y:873}, {x:410,y:873},{x:443,y:960},\r\n  {x:443,y:960},{x:472,y:847}, {x:472,y:847},{x:561,y:809},\r\n  {x:561,y:809},{x:561,y:501}, {x:561,y:501},{x:443,y:192},\r\n  {x:443,y:192},{x:531,y:154}, {x:531,y:154},{x:559,y:42},\r\n  {x:559,y:42},{x:559,y:42}\r\n];\r\n\r\nTPL['M'] = [\r\n  {x:432,y:189},{x:432,y:506}, {x:432,y:506},{x:141,y:593},\r\n  {x:141,y:593},{x:256,y:111}, {x:256,y:111},{x:551,y:25},\r\n  {x:551,y:25},{x:672,y:350}, {x:672,y:350},{x:376,y:436},\r\n  {x:376,y:436},{x:264,y:121}, {x:264,y:121},{x:149,y:604},\r\n  {x:149,y:604},{x:260,y:923}, {x:260,y:923},{x:397,y:880},\r\n  {x:397,y:880},{x:320,y:676}, {x:320,y:676},{x:610,y:590},\r\n  {x:610,y:590},{x:729,y:102}, {x:729,y:102},{x:433,y:188},\r\n  {x:433,y:188},{x:551,y:506}, {x:551,y:506},{x:841,y:422},\r\n  {x:841,y:422},{x:729,y:102}, {x:729,y:102},{x:610,y:590},\r\n  {x:610,y:590},{x:552,y:608}, {x:552,y:608},{x:552,y:505},\r\n  {x:552,y:505},{x:552,y:836}, {x:552,y:836},{x:398,y:882},\r\n  {x:398,y:882},{x:439,y:994}, {x:439,y:994},{x:731,y:912},\r\n  {x:731,y:912},{x:840,y:422}, {x:840,y:422},{x:731,y:914},\r\n  {x:731,y:914},{x:610,y:590}, {x:610,y:590},{x:479,y:630},\r\n  {x:479,y:630},{x:552,y:836}, {x:552,y:836},{x:433,y:505},\r\n  {x:433,y:505},{x:433,y:420}, {x:433,y:420},{x:378,y:436},\r\n  {x:378,y:436},{x:261,y:922}\r\n];\r\nTPL['N'] = [\r\n  {x:191,y:836},{x:569,y:671}, {x:569,y:671},{x:440,y:336},\r\n  {x:440,y:336},{x:65,y:87}, {x:65,y:87},{x:64,y:752},\r\n  {x:64,y:752},{x:316,y:919}, {x:316,y:919},{x:319,y:84},\r\n  {x:319,y:84},{x:694,y:84}, {x:694,y:84},{x:692,y:755},\r\n  {x:692,y:755},{x:940,y:920}, {x:940,y:920},{x:942,y:254},\r\n  {x:942,y:254},{x:694,y:84}, {x:694,y:84},{x:818,y:168},\r\n  {x:818,y:168},{x:441,y:335}, {x:441,y:335},{x:569,y:671},\r\n  {x:569,y:671},{x:693,y:756}, {x:693,y:756},{x:317,y:920}\r\n];\r\nTPL['O'] = [\r\n  {x:831,y:134},{x:505,y:11}, {x:505,y:11},{x:339,y:377},\r\n  {x:339,y:377},{x:175,y:255}, {x:175,y:255},{x:505,y:379},\r\n  {x:505,y:379},{x:667,y:499}, {x:667,y:499},{x:831,y:132},\r\n  {x:831,y:132},{x:995,y:378}, {x:995,y:378},{x:830,y:746},\r\n  {x:830,y:746},{x:666,y:623}, {x:666,y:623},{x:502,y:992},\r\n  {x:502,y:992},{x:172,y:869}, {x:172,y:869},{x:339,y:502},\r\n  {x:339,y:502},{x:503,y:623}, {x:503,y:623},{x:831,y:746},\r\n  {x:831,y:746},{x:666,y:623}, {x:666,y:623},{x:340,y:502},\r\n  {x:340,y:502},{x:174,y:869}, {x:174,y:869},{x:8,y:623},\r\n  {x:8,y:623},{x:342,y:749}, {x:342,y:749},{x:480,y:431},\r\n  {x:480,y:431},{x:665,y:499}, {x:665,y:499},{x:339,y:379},\r\n  {x:339,y:379},{x:573,y:464}, {x:573,y:464},{x:669,y:256},\r\n  {x:669,y:256},{x:995,y:378}, {x:995,y:378},{x:672,y:256},\r\n  {x:672,y:256},{x:504,y:11}, {x:504,y:11},{x:340,y:378},\r\n  {x:340,y:378},{x:174,y:254}, {x:174,y:254},{x:7,y:623},\r\n  {x:7,y:623},{x:344,y:751}, {x:344,y:751},{x:501,y:993},\r\n  {x:501,y:993},{x:402,y:841}, {x:402,y:841},{x:670,y:254},\r\n  {x:670,y:254},{x:670,y:254}\r\n];\r\nTPL['P'] = [\r\n  {x:319,y:170},{x:252,y:747}, {x:252,y:747},{x:505,y:914},\r\n  {x:505,y:914},{x:570,y:337}, {x:570,y:337},{x:319,y:170},\r\n  {x:319,y:170},{x:127,y:253}, {x:127,y:253},{x:314,y:996},\r\n  {x:314,y:996},{x:695,y:832}, {x:695,y:832},{x:442,y:668},\r\n  {x:442,y:668},{x:320,y:170}, {x:320,y:170},{x:509,y:88},\r\n  {x:509,y:88},{x:761,y:255}, {x:761,y:255},{x:695,y:832},\r\n  {x:695,y:832},{x:442,y:668}, {x:442,y:668},{x:509,y:88},\r\n  {x:509,y:88},{x:696,y:7}, {x:696,y:7},{x:763,y:255},\r\n  {x:763,y:255},{x:571,y:337}, {x:571,y:337},{x:696,y:832},\r\n  {x:696,y:832},{x:893,y:747}, {x:893,y:747},{x:764,y:254},\r\n  {x:764,y:254},{x:570,y:338}, {x:570,y:338},{x:487,y:282},\r\n  {x:487,y:282},{x:442,y:668}, {x:442,y:668},{x:252,y:748}\r\n];\r\nTPL['Q'] = [\r\n  {x:203,y:53},{x:101,y:662}, {x:101,y:662},{x:45,y:612},\r\n  {x:45,y:612},{x:51,y:53}, {x:51,y:53},{x:473,y:53},\r\n  {x:473,y:53},{x:611,y:167}, {x:611,y:167},{x:956,y:167},\r\n  {x:956,y:167},{x:954,y:863}, {x:954,y:863},{x:588,y:865},\r\n  {x:588,y:865},{x:675,y:339}, {x:675,y:339},{x:413,y:118},\r\n  {x:413,y:118},{x:265,y:120}, {x:265,y:120},{x:173,y:638},\r\n  {x:173,y:638},{x:435,y:863}, {x:435,y:863},{x:458,y:752},\r\n  {x:458,y:752},{x:761,y:754}, {x:761,y:754},{x:849,y:232},\r\n  {x:849,y:232},{x:391,y:230}, {x:391,y:230},{x:326,y:641},\r\n  {x:326,y:641},{x:589,y:865}, {x:589,y:865},{x:435,y:863},\r\n  {x:435,y:863},{x:418,y:940}, {x:418,y:940},{x:102,y:661},\r\n  {x:102,y:661},{x:56,y:941}, {x:56,y:941},{x:798,y:938},\r\n  {x:798,y:938},{x:942,y:54}, {x:942,y:54},{x:475,y:54}\r\n];\r\nTPL['R'] = [\r\n  {x:623,y:577},{x:745,y:271}, {x:745,y:271},{x:924,y:197},\r\n  {x:924,y:197},{x:684,y:47}, {x:684,y:47},{x:320,y:198},\r\n  {x:320,y:198},{x:198,y:122}, {x:198,y:122},{x:380,y:46},\r\n  {x:380,y:46},{x:198,y:499}, {x:198,y:499},{x:77,y:424},\r\n  {x:77,y:424},{x:200,y:122}, {x:200,y:122},{x:379,y:46},\r\n  {x:379,y:46},{x:684,y:47}, {x:684,y:47},{x:562,y:348},\r\n  {x:562,y:348},{x:198,y:500}, {x:198,y:500},{x:75,y:801},\r\n  {x:75,y:801},{x:257,y:725}, {x:257,y:725},{x:379,y:425},\r\n  {x:379,y:425},{x:505,y:500}, {x:505,y:500},{x:316,y:954},\r\n  {x:316,y:954},{x:76,y:803}, {x:76,y:803},{x:257,y:725},\r\n  {x:257,y:725},{x:318,y:575}, {x:318,y:575},{x:441,y:653},\r\n  {x:441,y:653},{x:804,y:497}, {x:804,y:497},{x:925,y:575},\r\n  {x:925,y:575},{x:803,y:877}, {x:803,y:877},{x:620,y:954},\r\n  {x:620,y:954},{x:315,y:955}, {x:315,y:955},{x:683,y:804},\r\n  {x:683,y:804},{x:803,y:878}, {x:803,y:878},{x:622,y:953},\r\n  {x:622,y:953},{x:924,y:198}, {x:924,y:198},{x:805,y:498},\r\n  {x:805,y:498},{x:562,y:348}\r\n];\r\nTPL['S'] = [\r\n  {x:69,y:169},{x:440,y:336}, {x:440,y:336},{x:687,y:170},\r\n  {x:687,y:170},{x:689,y:586}, {x:689,y:586},{x:934,y:419},\r\n  {x:934,y:419},{x:935,y:835}, {x:935,y:835},{x:565,y:669},\r\n  {x:565,y:669},{x:316,y:835}, {x:316,y:835},{x:316,y:419},\r\n  {x:316,y:419},{x:68,y:586}, {x:68,y:586},{x:69,y:170},\r\n  {x:69,y:170},{x:315,y:5}, {x:315,y:5},{x:687,y:170},\r\n  {x:687,y:170},{x:687,y:308}, {x:687,y:308},{x:934,y:420},\r\n  {x:934,y:420},{x:689,y:586}, {x:689,y:586},{x:317,y:419},\r\n  {x:317,y:419},{x:69,y:585}, {x:69,y:585},{x:316,y:696},\r\n  {x:316,y:696},{x:316,y:835}, {x:316,y:835},{x:688,y:995},\r\n  {x:688,y:995},{x:934,y:834}\r\n];\r\nTPL['T'] = [\r\n  {x:687,y:1},{x:118,y:250}, {x:118,y:250},{x:313,y:999},\r\n  {x:313,y:999},{x:880,y:746}, {x:880,y:746},{x:687,y:2},\r\n  {x:687,y:2},{x:562,y:331}, {x:562,y:331},{x:247,y:332},\r\n  {x:247,y:332},{x:310,y:167}, {x:310,y:167},{x:625,y:166},\r\n  {x:625,y:166},{x:755,y:665}, {x:755,y:665},{x:440,y:669},\r\n  {x:440,y:669},{x:309,y:168}, {x:309,y:168},{x:247,y:332},\r\n  {x:247,y:332},{x:377,y:836}, {x:377,y:836},{x:692,y:830},\r\n  {x:692,y:830},{x:562,y:331}, {x:562,y:331},{x:625,y:167},\r\n  {x:625,y:167},{x:247,y:332}, {x:247,y:332},{x:183,y:499},\r\n  {x:183,y:499},{x:181,y:81}, {x:181,y:81},{x:815,y:79},\r\n  {x:815,y:79},{x:820,y:916}, {x:820,y:916},{x:187,y:919},\r\n  {x:187,y:919},{x:182,y:498}, {x:182,y:498},{x:187,y:920},\r\n  {x:187,y:920},{x:502,y:81}, {x:502,y:81},{x:814,y:79},\r\n  {x:814,y:79},{x:495,y:918}, {x:495,y:918},{x:313,y:998},\r\n  {x:313,y:998},{x:441,y:669}, {x:441,y:669},{x:756,y:664},\r\n  {x:756,y:664},{x:378,y:836}, {x:378,y:836},{x:694,y:831},\r\n  {x:694,y:831},{x:818,y:501}\r\n];\r\nTPL['U'] = [\r\n  {x:670,y:129},{x:915,y:131}, {x:915,y:131},{x:904,y:888},\r\n  {x:904,y:888},{x:78,y:881}, {x:78,y:881},{x:91,y:123},\r\n  {x:91,y:123},{x:668,y:129}, {x:668,y:129},{x:2,y:375},\r\n  {x:2,y:375},{x:327,y:882}, {x:327,y:882},{x:990,y:638},\r\n  {x:990,y:638},{x:667,y:130}, {x:667,y:130},{x:171,y:312},\r\n  {x:171,y:312},{x:86,y:501}, {x:86,y:501},{x:663,y:445},\r\n  {x:663,y:445},{x:749,y:258}, {x:749,y:258},{x:338,y:251},\r\n  {x:338,y:251},{x:164,y:627}, {x:164,y:627},{x:745,y:572},\r\n  {x:745,y:572},{x:663,y:446}, {x:663,y:446},{x:250,y:440},\r\n  {x:250,y:440},{x:829,y:384}, {x:829,y:384},{x:659,y:760},\r\n  {x:659,y:760},{x:247,y:757}, {x:247,y:757},{x:826,y:699},\r\n  {x:826,y:699},{x:909,y:514}, {x:909,y:514},{x:332,y:568},\r\n  {x:332,y:568},{x:171,y:314}, {x:171,y:314},{x:749,y:258},\r\n  {x:749,y:258},{x:663,y:446}, {x:663,y:446},{x:745,y:572},\r\n  {x:745,y:572},{x:332,y:569}, {x:332,y:569},{x:247,y:757},\r\n  {x:247,y:757},{x:825,y:699}, {x:825,y:699},{x:744,y:570}\r\n];\r\nTPL['V'] = [\r\n  {x:203,y:496},{x:53,y:316}, {x:53,y:316},{x:56,y:51},\r\n  {x:56,y:51},{x:950,y:54}, {x:950,y:54},{x:953,y:496},\r\n  {x:953,y:496},{x:882,y:497}, {x:882,y:497},{x:653,y:228},\r\n  {x:653,y:228},{x:277,y:228}, {x:277,y:228},{x:278,y:587},\r\n  {x:278,y:587},{x:427,y:759}, {x:427,y:759},{x:808,y:762},\r\n  {x:808,y:762},{x:804,y:139}, {x:804,y:139},{x:203,y:139},\r\n  {x:203,y:139},{x:204,y:496}, {x:204,y:496},{x:278,y:583},\r\n  {x:278,y:583},{x:281,y:853}, {x:281,y:853},{x:878,y:853},\r\n  {x:878,y:853},{x:881,y:496}, {x:881,y:496},{x:654,y:497},\r\n  {x:654,y:497},{x:655,y:945}, {x:655,y:945},{x:951,y:945},\r\n  {x:951,y:945},{x:953,y:496}, {x:953,y:496},{x:804,y:139},\r\n  {x:804,y:139},{x:202,y:139}, {x:202,y:139},{x:53,y:316},\r\n  {x:53,y:316},{x:55,y:943}, {x:55,y:943},{x:655,y:945},\r\n  {x:655,y:945},{x:654,y:853}, {x:654,y:853},{x:205,y:854},\r\n  {x:205,y:854},{x:203,y:496}, {x:203,y:496},{x:56,y:943},\r\n  {x:56,y:943},{x:205,y:854}, {x:205,y:854},{x:205,y:943},\r\n  {x:205,y:943},{x:951,y:945}, {x:951,y:945},{x:807,y:762},\r\n  {x:807,y:762},{x:806,y:497}, {x:806,y:497},{x:203,y:497},\r\n  {x:203,y:497},{x:653,y:228}, {x:653,y:228},{x:654,y:497},\r\n  {x:654,y:497},{x:429,y:760}\r\n];\r\nTPL['W'] = [\r\n  {x:453,y:109},{x:452,y:752}, {x:452,y:752},{x:218,y:827},\r\n  {x:218,y:827},{x:220,y:254}, {x:220,y:254},{x:564,y:200},\r\n  {x:564,y:200},{x:563,y:891}, {x:563,y:891},{x:218,y:827},\r\n  {x:218,y:827},{x:453,y:752}, {x:453,y:752},{x:564,y:774},\r\n  {x:564,y:774},{x:792,y:702}, {x:792,y:702},{x:463,y:647},\r\n  {x:463,y:647},{x:462,y:108}, {x:462,y:108},{x:780,y:56},\r\n  {x:780,y:56},{x:783,y:690}, {x:783,y:690},{x:473,y:637},\r\n  {x:473,y:637},{x:472,y:223}, {x:472,y:223},{x:891,y:156},\r\n  {x:891,y:156},{x:896,y:832}, {x:896,y:832},{x:575,y:777},\r\n  {x:575,y:777},{x:571,y:198}, {x:571,y:198},{x:792,y:163},\r\n  {x:792,y:163},{x:793,y:703}, {x:793,y:703},{x:555,y:663},\r\n  {x:555,y:663},{x:554,y:763}, {x:554,y:763},{x:227,y:706},\r\n  {x:227,y:706},{x:232,y:262}, {x:232,y:262},{x:442,y:228},\r\n  {x:442,y:228},{x:441,y:743}, {x:441,y:743},{x:115,y:687},\r\n  {x:115,y:687},{x:118,y:159}, {x:118,y:159},{x:454,y:110}\r\n];\r\nTPL['X'] = [\r\n  {x:502,y:415},{x:754,y:79}, {x:754,y:79},{x:753,y:417},\r\n  {x:753,y:417},{x:375,y:415}, {x:375,y:415},{x:377,y:76},\r\n  {x:377,y:76},{x:120,y:416}, {x:120,y:416},{x:119,y:753},\r\n  {x:119,y:753},{x:505,y:246}, {x:505,y:246},{x:878,y:250},\r\n  {x:878,y:250},{x:880,y:590}, {x:880,y:590},{x:624,y:929},\r\n  {x:624,y:929},{x:626,y:587}, {x:626,y:587},{x:248,y:583},\r\n  {x:248,y:583},{x:246,y:923}, {x:246,y:923},{x:499,y:586},\r\n  {x:499,y:586},{x:627,y:587}, {x:627,y:587},{x:877,y:250},\r\n  {x:877,y:250},{x:506,y:246}, {x:506,y:246},{x:119,y:754},\r\n  {x:119,y:754},{x:498,y:757}, {x:498,y:757},{x:626,y:588}\r\n];\r\nTPL['Y'] = [\r\n  {x:319,y:165},{x:825,y:504}, {x:825,y:504},{x:698,y:841},\r\n  {x:698,y:841},{x:189,y:507}, {x:189,y:507},{x:666,y:294},\r\n  {x:666,y:294},{x:602,y:39}, {x:602,y:39},{x:318,y:165},\r\n  {x:318,y:165},{x:189,y:507}, {x:189,y:507},{x:313,y:1000},\r\n  {x:313,y:1000},{x:341,y:1000}, {x:341,y:1000},{x:888,y:755},\r\n  {x:888,y:755},{x:698,y:1}, {x:698,y:1},{x:687,y:1},\r\n  {x:687,y:1},{x:126,y:251}, {x:126,y:251},{x:313,y:1000},\r\n  {x:313,y:1000},{x:344,y:998}, {x:344,y:998},{x:411,y:968},\r\n  {x:411,y:968},{x:348,y:717}, {x:348,y:717},{x:825,y:504}\r\n];\r\nTPL['Z'] = [\r\n  {x:112,y:752},{x:178,y:500}, {x:178,y:500},{x:435,y:334},\r\n  {x:435,y:334},{x:563,y:670}, {x:563,y:670},{x:822,y:507},\r\n  {x:822,y:507},{x:885,y:257}, {x:885,y:257},{x:344,y:12},\r\n  {x:344,y:12},{x:285,y:12}, {x:285,y:12},{x:55,y:161},\r\n  {x:55,y:161},{x:630,y:420}, {x:630,y:420},{x:887,y:257},\r\n  {x:887,y:257},{x:565,y:673}, {x:565,y:673},{x:370,y:587},\r\n  {x:370,y:587},{x:113,y:751}, {x:113,y:751},{x:645,y:987},\r\n  {x:645,y:987},{x:720,y:987}, {x:720,y:987},{x:945,y:841},\r\n  {x:945,y:841},{x:565,y:673}, {x:565,y:673},{x:630,y:419},\r\n  {x:630,y:419},{x:437,y:333}, {x:437,y:333},{x:370,y:587},\r\n  {x:370,y:587},{x:178,y:500}, {x:178,y:500},{x:56,y:161},\r\n  {x:56,y:161},{x:113,y:750}, {x:113,y:750},{x:646,y:988},\r\n  {x:646,y:988},{x:719,y:987}, {x:719,y:987},{x:945,y:841},\r\n  {x:945,y:841},{x:886,y:256}, {x:886,y:256},{x:821,y:507},\r\n  {x:821,y:507},{x:945,y:841}, {x:945,y:841},{x:945,y:841}\r\n];\r\n\r\n        \"BCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\").forEach(function(k){\r\n            if(!TPL[k]) TPL[k] = TPL['A'];\r\n        });\r\n\r\n        function showNotice(msg, html){\r\n            if(!notice) return;\r\n            notice.style.display = 'block';\r\n            notice.innerHTML = html ? html : String(msg || 'Access denied.');\r\n        }\r\n\r\n        function stopFeature(msg, html){\r\n            stopped = true;\r\n            if (raf) cancelAnimationFrame(raf);\r\n            showNotice(msg, html);\r\n\r\n            mainContainer.querySelectorAll('.amc-tab-btn').forEach(function(btn){\r\n                btn.disabled = true;\r\n                btn.style.pointerEvents = 'none';\r\n                btn.style.opacity = '0.55';\r\n            });\r\n\r\n            canvas.style.pointerEvents = 'none';\r\n            canvas.style.opacity = '0.55';\r\n            note.textContent = 'Access blocked';\r\n        }\r\n\r\n        function requestUnlock(done){\r\n            if (unlockPending || unlocked || stopped) return;\r\n            unlockPending = true;\r\n\r\n            fetch(AJAX_URL, {\r\n                method: 'POST',\r\n                credentials: 'same-origin',\r\n                headers: {'Content-Type': 'application\/x-www-form-urlencoded; charset=UTF-8'},\r\n                body: new URLSearchParams({\r\n                    action: 'arttao_mandala_crawler_unlock',\r\n                    nonce: AJAX_NONCE\r\n                }).toString()\r\n            })\r\n            .then(function(r){ return r.json(); })\r\n            .then(function(res){\r\n                unlockPending = false;\r\n\r\n                if (res && res.success) {\r\n                    unlocked = true;\r\n                    if (notice) {\r\n                        notice.style.display = 'none';\r\n                        notice.innerHTML = '';\r\n                    }\r\n                    if (typeof done === 'function') done();\r\n                    return;\r\n                }\r\n\r\n                stopFeature(\r\n                    res && res.data && res.data.message ? res.data.message : 'Access denied.',\r\n                    res && res.data && res.data.upgrade_html ? res.data.upgrade_html : ''\r\n                );\r\n            })\r\n            .catch(function(){\r\n                unlockPending = false;\r\n                stopFeature('Request failed.');\r\n            });\r\n        }\r\n\r\n        function ensureUnlocked(run){\r\n            if (stopped) return;\r\n            if (unlocked) {\r\n                run();\r\n                return;\r\n            }\r\n            requestUnlock(run);\r\n        }\r\n\r\n        function fitCanvas(){\r\n            var dpr = window.devicePixelRatio || 1;\r\n            var css = canvas.getBoundingClientRect();\r\n            if (css.width < 4 || css.height < 4) return false;\r\n\r\n            canvas.width = Math.round(css.width * dpr);\r\n            canvas.height = Math.round(css.height * dpr);\r\n\r\n            ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n            ctx.scale(css.width \/ LOGICAL, css.height \/ LOGICAL);\r\n            return true;\r\n        }\r\n\r\n        function clearCanvas(){\r\n            if (!fitCanvas()) return false;\r\n            ctx.clearRect(0, 0, LOGICAL, LOGICAL);\r\n            ctx.fillStyle = BG_COLOR;\r\n            ctx.fillRect(0, 0, LOGICAL, LOGICAL);\r\n            return true;\r\n        }\r\n\r\n        function drawGlowPoint(x, y){\r\n            ctx.save();\r\n\r\n            ctx.beginPath();\r\n            ctx.fillStyle = \"rgba(255,51,102,0.18)\";\r\n            ctx.arc(x, y, 12, 0, Math.PI * 2);\r\n            ctx.fill();\r\n\r\n            ctx.beginPath();\r\n            ctx.shadowColor = RUNNER_COLOR;\r\n            ctx.shadowBlur = 18;\r\n            ctx.fillStyle = RUNNER_COLOR;\r\n            ctx.arc(x, y, 4.2, 0, Math.PI * 2);\r\n            ctx.fill();\r\n\r\n            ctx.beginPath();\r\n            ctx.fillStyle = \"#FFD6E2\";\r\n            ctx.arc(x, y, 1.5, 0, Math.PI * 2);\r\n            ctx.fill();\r\n\r\n            ctx.restore();\r\n        }\r\n\r\n        function strokeLine(s, e, t){\r\n            var x = s.x + (e.x - s.x) * t;\r\n            var y = s.y + (e.y - s.y) * t;\r\n\r\n            ctx.save();\r\n            ctx.beginPath();\r\n            ctx.strokeStyle = LINE_COLOR;\r\n            ctx.lineWidth = LINEW;\r\n            ctx.shadowColor = \"rgba(198,247,247,0.45)\";\r\n            ctx.shadowBlur = 8;\r\n            ctx.lineCap = \"round\";\r\n            ctx.lineJoin = \"round\";\r\n            ctx.moveTo(s.x, s.y);\r\n            ctx.lineTo(x, y);\r\n            ctx.stroke();\r\n            ctx.restore();\r\n\r\n            drawGlowPoint(x, y);\r\n        }\r\n\r\n        function drawFinishedLines(points){\r\n            ctx.save();\r\n            ctx.strokeStyle = LINE_COLOR;\r\n            ctx.lineWidth = LINEW;\r\n            ctx.shadowColor = \"rgba(198,247,247,0.38)\";\r\n            ctx.shadowBlur = 7;\r\n            ctx.lineCap = \"round\";\r\n            ctx.lineJoin = \"round\";\r\n\r\n            for (var i = 0; i < currentIndex; i += 2) {\r\n                if(!points[i+1]) break;\r\n                ctx.beginPath();\r\n                ctx.moveTo(points[i].x, points[i].y);\r\n                ctx.lineTo(points[i+1].x, points[i+1].y);\r\n                ctx.stroke();\r\n            }\r\n\r\n            ctx.restore();\r\n        }\r\n\r\n        function draw(){\r\n            if (!clearCanvas()) {\r\n                raf = requestAnimationFrame(draw);\r\n                return;\r\n            }\r\n\r\n            var points = TPL[activeLetter] || [];\r\n            drawFinishedLines(points);\r\n\r\n            if (currentIndex < points.length - 1) {\r\n                var s = points[currentIndex];\r\n                var e = points[currentIndex + 1];\r\n\r\n                strokeLine(s, e, progress);\r\n\r\n                progress += SPEED;\r\n                if (progress >= 1) {\r\n                    progress = 0;\r\n                    currentIndex += 2;\r\n                }\r\n\r\n                note.textContent = \"Simulating: \" + activeLetter + \" | repeat \" + repeatIndex + \"\/\" + REPEAT_TOTAL;\r\n                raf = requestAnimationFrame(draw);\r\n                return;\r\n            }\r\n\r\n            if (repeatIndex < REPEAT_TOTAL) {\r\n                raf = 0;\r\n                var nextRepeat = repeatIndex + 1;\r\n                note.textContent = \"Pause \" + Math.round(PAUSE_MS \/ 1000) + \" seconds: \" + activeLetter + \" | next repeat \" + nextRepeat + \"\/\" + REPEAT_TOTAL;\r\n\r\n                clearPauseTimer();\r\n                pauseTimer = setTimeout(function(){\r\n                    if (stopped) return;\r\n                    repeatIndex = nextRepeat;\r\n                    currentIndex = 0;\r\n                    progress = 0;\r\n                    note.textContent = \"Restart: \" + activeLetter + \" | repeat \" + repeatIndex + \"\/\" + REPEAT_TOTAL;\r\n                    raf = requestAnimationFrame(draw);\r\n                }, PAUSE_MS);\r\n                return;\r\n            }\r\n\r\n            note.textContent = \"Simulation Complete: \" + activeLetter + \" | repeated \" + REPEAT_TOTAL + \" times | music playing\";\r\n            raf = 0;\r\n            clearPauseTimer();\r\n            playCompleteMusic();\r\n        }\r\n\r\n        function startAnimation(){\r\n            if(stopped) return;\r\n            if(raf) cancelAnimationFrame(raf);\r\n            clearPauseTimer();\r\n            stopMusic();\r\n\r\n            currentIndex = 0;\r\n            progress = 0;\r\n            repeatIndex = 1;\r\n\r\n            clearCanvas();\r\n            note.textContent = \"Simulating: \" + activeLetter + \" | repeat 1\/\" + REPEAT_TOTAL;\r\n            raf = requestAnimationFrame(draw);\r\n        }\r\n\r\n        function openPanel(){\r\n            launcher.style.display = 'none';\r\n            mainContainer.classList.add('is-open');\r\n\r\n            setTimeout(function(){\r\n                clearCanvas();\r\n            }, 80);\r\n        }\r\n\r\n        function closePanel(){\r\n            mainContainer.classList.remove('is-open');\r\n            setTimeout(function(){ launcher.style.display = 'block'; }, 600);\r\n            if(raf) cancelAnimationFrame(raf);\r\n            clearPauseTimer();\r\n            stopMusic();\r\n            raf = 0;\r\n            note.textContent = \"Ready\";\r\n        }\r\n\r\n        document.addEventListener('pointerdown', unlockMusicByFirstClick, {passive:true});\r\n        document.addEventListener('keydown', unlockMusicByFirstClick);\r\n\r\n        if (musicBtn) {\r\n            musicBtn.addEventListener('click', function(e){\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                unlockMusicByFirstClick();\r\n                playCompleteMusic();\r\n            });\r\n        }\r\n\r\n        launcher.addEventListener('click', function(e){\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            unlockMusicByFirstClick();\r\n            openPanel();\r\n        });\r\n\r\n        toggleBtn.addEventListener('click', function(e){\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            closePanel();\r\n        });\r\n\r\n        mainContainer.querySelectorAll('.amc-tab-btn').forEach(function(btn){\r\n            btn.addEventListener('click', function(){\r\n                ensureUnlocked(function(){\r\n                    activeLetter = btn.getAttribute('data-letter');\r\n                    curLetterLabel.textContent = activeLetter;\r\n\r\n                    mainContainer.querySelectorAll('.amc-tab-btn').forEach(function(b){\r\n                        b.classList.remove('active');\r\n                    });\r\n\r\n                    btn.classList.add('active');\r\n                    unlockMusicByFirstClick();\r\n                    startAnimation();\r\n                });\r\n            });\r\n        });\r\n\r\n        window.addEventListener('resize', function(){\r\n            if(mainContainer.classList.contains('is-open')) {\r\n                clearCanvas();\r\n            }\r\n        });\r\n\r\n            })();\r\n    <\/script>\r\n    <\/div>            <div class=\"arttao-cpb-shortcode arttao-cpb-color-engine\"><style>#ace_xTFsddSW-box{max-width:860px;margin:20px auto;font-family:Arial,Helvetica,sans-serif;}#ace_xTFsddSW-summary{list-style:none;width:100%;background:#CCFFFF;border-radius:28px;font-size:24px;padding:16px;border:1px solid #FFCCFF;text-align:center;cursor:pointer;color:#fff;box-shadow:0 15px 35px rgba(0,0,0,0.15);box-sizing:border-box;display:block;user-select:none;}#ace_xTFsddSW-summary::-webkit-details-marker{display:none;}#ace_xTFsddSW-title{display:block;margin:0;font-size:24px;font-weight:400;line-height:1.35;color:#330000;}#ace_xTFsddSW-panel{margin-top:20px;background:#fff;border-radius:20px;border:1px solid #ddd;overflow:hidden;}#ace_xTFsddSW-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:#CCFFFF;color:#fff;font-size:13px;}#ace_xTFsddSW-tabs{padding:10px;background:#f5f5f5;border-bottom:1px solid #eee;display:flex;gap:6px;overflow-x:auto;white-space:nowrap;}#ace_xTFsddSW-tabs button{flex:0 0 36px;height:36px;background:#F0FFFF;border:1px solid #FFCCFF;border-radius:8px;font-size:12px;font-weight:bold;cursor:pointer;display:flex;align-items:center;justify-content:center;}#ace_xTFsddSW-tabs button.active{background:#2A5CAA!important;color:#fff!important;border-color:#2A5CAA!important;}#ace_xTFsddSW-body{padding:20px;text-align:center;}#ace_xTFsddSW-notice{display:none;margin-bottom:12px;padding:12px 14px;border:1px solid #f5deb3;border-radius:14px;background:#fffaf2;color:#7a4f01;text-align:left;line-height:1.6;}#ace_xTFsddSW-canvasbox{width:100%;aspect-ratio:1\/1;background:#f0f0f0;border:1px solid #eee;margin-bottom:16px;border-radius:10px;overflow:hidden;position:relative;}#ace_xTFsddSW-cv{width:100%;height:100%;display:block;cursor:crosshair;}#ace_xTFsddSW-loading{display:none;position:absolute;inset:0;background:rgba(255,255,255,0.75);align-items:center;justify-content:center;font-size:14px;color:#555;}#ace_xTFsddSW-palette{display:grid;grid-template-columns:repeat(20,1fr);gap:4px;margin-bottom:16px;background:#f9f9f9;padding:10px;border-radius:10px;}#ace_xTFsddSW-palette button{aspect-ratio:1\/1;min-height:22px;max-width:28px;border-radius:10px;cursor:pointer;border:1px solid rgba(0,0,0,0.15);padding:0;}#ace_xTFsddSW-palette button.active{outline:2px solid #000;outline-offset:1px;transform:scale(1.08);}#ace_xTFsddSW-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;}#ace_xTFsddSW-btns button{padding:10px 28px;border-radius:8px;border:1px solid #ddd;background:#fff;cursor:pointer;font-weight:bold;}#ace_xTFsddSW-status{font-size:12px;color:#666;margin-top:12px;min-height:18px;font-family:monospace;}<\/style><div id=\"ace_xTFsddSW-box\" class=\"arttao-color-engine notranslate\" translate=\"no\" data-ace-uid=\"ace_xTFsddSW\" data-ace-ajax=\"https:\/\/arttao.org\/wp-admin\/admin-ajax.php\" data-ace-nonce=\"18871b8864\" data-ace-proxy=\"edd2d59409\" data-ace-map=\"{&quot;A&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_24.png&quot;,&quot;B&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_23.png&quot;,&quot;C&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_25.png&quot;,&quot;D&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_26.png&quot;,&quot;E&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_27.png&quot;,&quot;F&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_28.png&quot;,&quot;G&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_29.png&quot;,&quot;H&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_30.png&quot;,&quot;I&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_31.png&quot;,&quot;J&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_32.png&quot;,&quot;K&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_33.png&quot;,&quot;L&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_35.png&quot;,&quot;M&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_36.png&quot;,&quot;N&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_37.png&quot;,&quot;O&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_38.png&quot;,&quot;P&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_39.png&quot;,&quot;Q&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_40.png&quot;,&quot;R&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_22.png&quot;,&quot;S&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_21.png&quot;,&quot;T&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_47-scaled.png&quot;,&quot;U&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_53-scaled.png&quot;,&quot;V&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_59-scaled.png&quot;,&quot;W&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_98.png&quot;,&quot;X&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_125-scaled.png&quot;,&quot;Y&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_132-scaled.png&quot;,&quot;Z&quot;:&quot;https:\\\/\\\/arttao.org\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/mandala_135.png&quot;}\" data-ace-cs=\"800\"><details id=\"ace_xTFsddSW-details\"><summary id=\"ace_xTFsddSW-summary\"><span id=\"ace_xTFsddSW-title\" class=\"notranslate\" translate=\"no\">AI Mandala Color Healing Engine<\/span><p style=\"margin:10px 0 0;opacity:.9;font-size:10px;color:#8B5A2B;\">A-Z Image Coloring \u00b7 40 Colors<\/p><\/summary><div id=\"ace_xTFsddSW-panel\"><div id=\"ace_xTFsddSW-head\"><span>Structure: <strong id=\"ace_xTFsddSW-cur\">A<\/strong><\/span><span id=\"ace_xTFsddSW-close\" style=\"cursor:pointer;\">Close &#x2715;<\/span><\/div><div id=\"ace_xTFsddSW-tabs\" class=\"notranslate\" translate=\"no\"><button type=\"button\" class=\"active notranslate\" data-letter=\"A\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('A'); return false;\">A<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"B\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('B'); return false;\">B<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"C\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('C'); return false;\">C<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"D\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('D'); return false;\">D<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"E\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('E'); return false;\">E<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"F\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('F'); return false;\">F<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"G\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('G'); return false;\">G<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"H\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('H'); return false;\">H<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"I\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('I'); return false;\">I<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"J\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('J'); return false;\">J<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"K\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('K'); return false;\">K<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"L\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('L'); return false;\">L<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"M\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('M'); return false;\">M<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"N\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('N'); return false;\">N<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"O\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('O'); return false;\">O<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"P\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('P'); return false;\">P<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"Q\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('Q'); return false;\">Q<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"R\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('R'); return false;\">R<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"S\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('S'); return false;\">S<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"T\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('T'); return false;\">T<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"U\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('U'); return false;\">U<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"V\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('V'); return false;\">V<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"W\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('W'); return false;\">W<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"X\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('X'); return false;\">X<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"Y\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('Y'); return false;\">Y<\/button><button type=\"button\" class=\"notranslate\" data-letter=\"Z\" translate=\"no\" onclick=\"window['ace_xTFsddSW_switch']('Z'); return false;\">Z<\/button><\/div><div id=\"ace_xTFsddSW-body\"><div id=\"ace_xTFsddSW-notice\"><\/div><div id=\"ace_xTFsddSW-canvasbox\"><canvas id=\"ace_xTFsddSW-cv\" width=\"800\" height=\"800\"><\/canvas><div id=\"ace_xTFsddSW-loading\">Loading...<\/div><\/div><div id=\"ace_xTFsddSW-palette\"><button type=\"button\" class=\"active\" style=\"background:#F44336;\" title=\"#F44336\" data-color=\"#F44336\" onclick=\"window['ace_xTFsddSW_pickColor']('#F44336'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#E91E63;\" title=\"#E91E63\" data-color=\"#E91E63\" onclick=\"window['ace_xTFsddSW_pickColor']('#E91E63'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#FF3366;\" title=\"#FF3366\" data-color=\"#FF3366\" onclick=\"window['ace_xTFsddSW_pickColor']('#FF3366'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#FF5C7A;\" title=\"#FF5C7A\" data-color=\"#FF5C7A\" onclick=\"window['ace_xTFsddSW_pickColor']('#FF5C7A'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#FF6699;\" title=\"#FF6699\" data-color=\"#FF6699\" onclick=\"window['ace_xTFsddSW_pickColor']('#FF6699'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#9C27B0;\" title=\"#9C27B0\" data-color=\"#9C27B0\" onclick=\"window['ace_xTFsddSW_pickColor']('#9C27B0'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#673AB7;\" title=\"#673AB7\" data-color=\"#673AB7\" onclick=\"window['ace_xTFsddSW_pickColor']('#673AB7'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#3F51B5;\" title=\"#3F51B5\" data-color=\"#3F51B5\" onclick=\"window['ace_xTFsddSW_pickColor']('#3F51B5'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#2196F3;\" title=\"#2196F3\" data-color=\"#2196F3\" onclick=\"window['ace_xTFsddSW_pickColor']('#2196F3'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#03A9F4;\" title=\"#03A9F4\" data-color=\"#03A9F4\" onclick=\"window['ace_xTFsddSW_pickColor']('#03A9F4'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#00BCD4;\" title=\"#00BCD4\" data-color=\"#00BCD4\" onclick=\"window['ace_xTFsddSW_pickColor']('#00BCD4'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#009688;\" title=\"#009688\" data-color=\"#009688\" onclick=\"window['ace_xTFsddSW_pickColor']('#009688'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#4CAF50;\" title=\"#4CAF50\" data-color=\"#4CAF50\" onclick=\"window['ace_xTFsddSW_pickColor']('#4CAF50'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#8BC34A;\" title=\"#8BC34A\" data-color=\"#8BC34A\" onclick=\"window['ace_xTFsddSW_pickColor']('#8BC34A'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#CDDC39;\" title=\"#CDDC39\" data-color=\"#CDDC39\" onclick=\"window['ace_xTFsddSW_pickColor']('#CDDC39'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#FFEB3B;\" title=\"#FFEB3B\" data-color=\"#FFEB3B\" onclick=\"window['ace_xTFsddSW_pickColor']('#FFEB3B'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#FFF44F;\" title=\"#FFF44F\" data-color=\"#FFF44F\" onclick=\"window['ace_xTFsddSW_pickColor']('#FFF44F'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#FFFF66;\" title=\"#FFFF66\" data-color=\"#FFFF66\" onclick=\"window['ace_xTFsddSW_pickColor']('#FFFF66'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#FFC107;\" title=\"#FFC107\" data-color=\"#FFC107\" onclick=\"window['ace_xTFsddSW_pickColor']('#FFC107'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#FF9800;\" title=\"#FF9800\" data-color=\"#FF9800\" onclick=\"window['ace_xTFsddSW_pickColor']('#FF9800'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#FF5722;\" title=\"#FF5722\" data-color=\"#FF5722\" onclick=\"window['ace_xTFsddSW_pickColor']('#FF5722'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#795548;\" title=\"#795548\" data-color=\"#795548\" onclick=\"window['ace_xTFsddSW_pickColor']('#795548'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#9E9E9E;\" title=\"#9E9E9E\" data-color=\"#9E9E9E\" onclick=\"window['ace_xTFsddSW_pickColor']('#9E9E9E'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#607D8B;\" title=\"#607D8B\" data-color=\"#607D8B\" onclick=\"window['ace_xTFsddSW_pickColor']('#607D8B'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#000000;\" title=\"#000000\" data-color=\"#000000\" onclick=\"window['ace_xTFsddSW_pickColor']('#000000'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#FFFFFF;\" title=\"#FFFFFF\" data-color=\"#FFFFFF\" onclick=\"window['ace_xTFsddSW_pickColor']('#FFFFFF'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#F5F5DC;\" title=\"#F5F5DC\" data-color=\"#F5F5DC\" onclick=\"window['ace_xTFsddSW_pickColor']('#F5F5DC'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#F2D7B6;\" title=\"#F2D7B6\" data-color=\"#F2D7B6\" onclick=\"window['ace_xTFsddSW_pickColor']('#F2D7B6'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#D7CCC8;\" title=\"#D7CCC8\" data-color=\"#D7CCC8\" onclick=\"window['ace_xTFsddSW_pickColor']('#D7CCC8'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#BCAAA4;\" title=\"#BCAAA4\" data-color=\"#BCAAA4\" onclick=\"window['ace_xTFsddSW_pickColor']('#BCAAA4'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#8D6E63;\" title=\"#8D6E63\" data-color=\"#8D6E63\" onclick=\"window['ace_xTFsddSW_pickColor']('#8D6E63'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#5D4037;\" title=\"#5D4037\" data-color=\"#5D4037\" onclick=\"window['ace_xTFsddSW_pickColor']('#5D4037'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#263238;\" title=\"#263238\" data-color=\"#263238\" onclick=\"window['ace_xTFsddSW_pickColor']('#263238'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#0D47A1;\" title=\"#0D47A1\" data-color=\"#0D47A1\" onclick=\"window['ace_xTFsddSW_pickColor']('#0D47A1'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#000080;\" title=\"#000080\" data-color=\"#000080\" onclick=\"window['ace_xTFsddSW_pickColor']('#000080'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#082D19;\" title=\"#082D19\" data-color=\"#082D19\" onclick=\"window['ace_xTFsddSW_pickColor']('#082D19'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#083845;\" title=\"#083845\" data-color=\"#083845\" onclick=\"window['ace_xTFsddSW_pickColor']('#083845'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#0A3A4A;\" title=\"#0A3A4A\" data-color=\"#0A3A4A\" onclick=\"window['ace_xTFsddSW_pickColor']('#0A3A4A'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#C6F7F7;\" title=\"#C6F7F7\" data-color=\"#C6F7F7\" onclick=\"window['ace_xTFsddSW_pickColor']('#C6F7F7'); return false;\"><\/button><button type=\"button\" class=\"\" style=\"background:#AEE5E5;\" title=\"#AEE5E5\" data-color=\"#AEE5E5\" onclick=\"window['ace_xTFsddSW_pickColor']('#AEE5E5'); return false;\"><\/button><\/div><div id=\"ace_xTFsddSW-btns\"><button type=\"button\" id=\"ace_xTFsddSW-undo\"  style=\"background:#D9FFFF;color:#330000;border:none;\">Undo<\/button><button type=\"button\" id=\"ace_xTFsddSW-reset\">Reset<\/button><button type=\"button\" id=\"ace_xTFsddSW-save\"  style=\"background:#CCFFFF;color:#330000;border:none;\">Save<\/button><\/div><div id=\"ace_xTFsddSW-status\">Loading...<\/div><\/div><\/div><\/details><\/div><\/div>        <\/section>\n                            <section class=\"arttao-cpb-section arttao-cpb-section-calligraphy\">\n            <h3 class=\"arttao-cpb-section-title\">\u25cb \u4e66\u5199\u6977\u523b\u7597\u6108\u7ec3\u4e60<\/h3>\n            <div class=\"arttao-cpb-section-text\"><p>\u672c\u8bfe\u4e66\u5199\u7ec3\u4e60\u56f4\u7ed5\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d\u5c55\u5f00\u3002\u9009\u62e9\u4e00\u4e2a\u8bcd\uff0c\u5982\u5b89\u5168\u3001\u505c\u7559\u3001\u8fb9\u754c\u3001\u547c\u5438\u6216\u56de\u6765\uff0c\u7528\u7f13\u6162\u7b14\u753b\u53cd\u590d\u4e66\u5199\u3002\u4e0d\u8ffd\u6c42\u5b57\u4f53\u6f02\u4eae\uff0c\u53ea\u89c2\u5bdf\u624b\u8155\u3001\u7b14\u5c16\u548c\u547c\u5438\u7684\u7a33\u5b9a\uff0c\u8ba9\u6050\u60e7\u88ab\u653e\u56de\u7eb8\u9762\u3002\u4e0d\u8ffd\u6c42\u5b57\u4f53\u6f02\u4eae\uff0c\u53ea\u89c2\u5bdf\u624b\u8155\u3001\u7b14\u5c16\u548c\u547c\u5438\u7684\u7a33\u5b9a\uff0c\u8ba9\u6050\u60e7\u88ab\u653e\u56de\u7eb8\u9762\u3002\u4e0d\u8ffd\u6c42\u5b57\u4f53\u6f02\u4eae\uff0c\u53ea\u89c2\u5bdf\u624b\u8155\u3001\u7b14\u5c16\u548c\u547c\u5438\u7684\u7a33\u5b9a\uff0c\u8ba9\u6050\u60e7\u88ab\u653e\u56de\u7eb8\u9762\u3002<\/p><\/div>            <div class=\"arttao-cpb-shortcode\">\n    <div style=\"text-align: center; margin-top: 20px;\">\n        <button id=\"toggleBtn114\" onclick=\"toggleCalligraphy114()\" style=\"\n            font-size: 15px;\n            color: #333;\n            margin-bottom: 10px;\n            padding: 12px 20px;\n            border: 1px solid #CCFFFF;\n            display: inline-block;\n            border-radius: 30px;\n            background:#FFF9FF;\n            cursor: pointer;\n        \">\u5b57\u4f53\u793a\u8303<\/button>\n        <div id=\"calligraphyImage114\" style=\"display: none; margin-top: 15px;\">\n            \n            <img decoding=\"async\" src=\"https:\/\/arttao.org\/wp-content\/uploads\/calligraphy-images\/class114.png\" alt=\"\u4e66\u6cd5\u793a\u8303\" style=\"max-width: 800px; width: 100%; border: 1px solid #ccc; border-radius: 8px;\">\n            \n        <\/div>\n        <script>\n            function toggleCalligraphy114() {\n                var img = document.getElementById(\"calligraphyImage114\");\n                var btn = document.getElementById(\"toggleBtn114\");\n                if (img.style.display === \"none\") {\n                    img.style.display = \"block\";\n                    btn.innerText = \"\u8fd4\u56de\";\n                } else {\n                    img.style.display = \"none\";\n                    btn.innerText = \"\u5b57\u4f53\u793a\u8303\";\n                }\n            }\n        <\/script>\n    <\/div><\/div>        <\/section>\n                            <section class=\"arttao-cpb-section arttao-cpb-section-painting\">\n            <h3 class=\"arttao-cpb-section-title\">\u25cb \u7ed8\u753b\u7597\u6108\u5f15\u5bfc<\/h3>\n            <div class=\"arttao-cpb-section-text\"><p>\u7ed8\u753b\u7ec3\u4e60\u53ef\u628a\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d\u4e2d\u7684\u6050\u60e7\u5bf9\u8c61\u3001\u8eab\u4f53\u611f\u53d7\u6216\u707e\u96be\u753b\u9762\u753b\u6210\u7ebf\u6761\u3001\u8272\u5757\u548c\u8ddd\u79bb\u3002\u4e0d\u8981\u753b\u5f97\u50cf\uff0c\u53ea\u8981\u753b\u51fa\u771f\u5b9e\u611f\u89c9\u3002\u53ef\u7528\u6df1\u8272\u8868\u793a\u538b\u529b\uff0c\u7528\u6d45\u8272\u8868\u793a\u5b89\u5168\u533a\uff0c\u8ba9\u56fe\u50cf\u5e2e\u52a9\u4f60\u770b\u89c1\u6050\u60e7\u4e0d\u662f\u5168\u90e8\u7684\u81ea\u5df1\u3002\u53ef\u7528\u6df1\u8272\u8868\u793a\u538b\u529b\uff0c\u7528\u6d45\u8272\u8868\u793a\u5b89\u5168\u533a\uff0c\u8ba9\u56fe\u50cf\u5e2e\u52a9\u4f60\u770b\u89c1\u6050\u60e7\u4e0d\u662f\u5168\u90e8\u7684\u81ea\u5df1\u3002\u53ef\u7528\u6df1\u8272\u8868\u793a\u538b\u529b\uff0c\u7528\u6d45\u8272\u8868\u793a\u5b89\u5168\u533a\uff0c\u8ba9\u56fe\u50cf\u5e2e\u52a9\u4f60\u770b\u3002<\/p><\/div>            <div class=\"arttao-cpb-shortcode\"><p style=\"color:#a00;\">\u8bf7\u5148\u767b\u5f55\u518d\u63d0\u4ea4\u7ed8\u753b\u4e0e\u611f\u53d7\u3002<\/p><\/div>        <\/section>\n                            <section class=\"arttao-cpb-section arttao-cpb-section-diary\">\n            <h3 class=\"arttao-cpb-section-title\">\u25cb \u65e5\u5fd7\u7597\u6108\u5efa\u8bae<\/h3>\n            <div class=\"arttao-cpb-section-text\"><p>\u65e5\u5fd7\u7ec3\u4e60\u8bf7\u56f4\u7ed5\u8eab\u4f53\u5bfc\u5411\u7597\u6cd5\u4e2d\u7684\u201c\u611f\u89c9\u8ffd\u8e2a\u201d\u5199\u4e0b\u4e09\u70b9\uff1a\u4eca\u5929\u6700\u89e6\u52a8\u7684\u4e00\u53e5\u8bdd\u3001\u8eab\u4f53\u6700\u660e\u663e\u7684\u53cd\u5e94\u3001\u613f\u610f\u5c1d\u8bd5\u7684\u4e00\u4e2a\u5c0f\u6b65\u9aa4\u3002\u4e0d\u8981\u5199\u6210\u68c0\u8ba8\u4e66\uff0c\u53ea\u8981\u8bda\u5b9e\u8bb0\u5f55\u6b64\u523b\u72b6\u6001\uff0c\u6700\u540e\u8865\u4e00\u53e5\u652f\u6301\u81ea\u5df1\u7684\u8bdd\u3002\u4e0d\u8981\u5199\u6210\u68c0\u8ba8\u4e66\uff0c\u53ea\u8981\u8bda\u5b9e\u8bb0\u5f55\u6b64\u523b\u72b6\u6001\uff0c\u6700\u540e\u8865\u4e00\u53e5\u652f\u6301\u81ea\u5df1\u7684\u8bdd\u3002\u4e0d\u8981\u5199\u6210\u68c0\u8ba8\u4e66\uff0c\u53ea\u8981\u8bda\u5b9e\u8bb0\u5f55\u6b64\u523b\u72b6\u6001\uff0c\u6700\u540e\u8865\u4e00\u53e5\u652f\u6301\u81ea\u5df1\u7684\u8bdd\u3002<\/p><\/div>            <div class=\"arttao-cpb-shortcode\"><p style=\"text-align:center;color:#a00;\">\u8bf7\u767b\u5f55\u540e\u4f7f\u7528\u3002<\/p><\/div>        <\/section>\n        \n                            <p class=\"arttao-cpb-ending\">\u5b8c\u6210\u611f\u89c9\u8ffd\u8e2a\u5b66\u4e60\u4e4b\u540e\uff0c\u8bf7\u63d0\u9192\u81ea\u5df1\uff1a\u6211\u53ef\u4ee5\u89c2\u5bdf\u8eab\u4f53\u4e0d\u9002\uff0c\u800c\u4e0d\u662f\u7acb\u523b\u548c\u5b83\u5bf9\u6297\u3002<\/p>\n                    <\/article>\n        \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-21574","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/arttao.org\/en\/wp-json\/wp\/v2\/pages\/21574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arttao.org\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/arttao.org\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/arttao.org\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/arttao.org\/en\/wp-json\/wp\/v2\/comments?post=21574"}],"version-history":[{"count":1,"href":"https:\/\/arttao.org\/en\/wp-json\/wp\/v2\/pages\/21574\/revisions"}],"predecessor-version":[{"id":22671,"href":"https:\/\/arttao.org\/en\/wp-json\/wp\/v2\/pages\/21574\/revisions\/22671"}],"wp:attachment":[{"href":"https:\/\/arttao.org\/en\/wp-json\/wp\/v2\/media?parent=21574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}